app_versions.json 79 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301
  1. {
  2. "1.0.16": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/concourse/1.0.16",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "7.14.1_1.0.16",
  10. "version": "1.0.16",
  11. "app_metadata": {
  12. "app_version": "7.14.1",
  13. "capabilities": [],
  14. "categories": [
  15. "productivity"
  16. ],
  17. "changelog_url": "https://github.com/concourse/concourse/releases",
  18. "date_added": "2025-04-30",
  19. "description": "Concourse is a container-based automation system written in Go.",
  20. "home": "https://concourse-ci.org",
  21. "host_mounts": [
  22. {
  23. "description": "Docker socket",
  24. "host_path": "/var/run/docker.sock"
  25. }
  26. ],
  27. "icon": "https://media.sys.truenas.net/apps/concourse/icons/icon.svg",
  28. "keywords": [
  29. "automation",
  30. "ci"
  31. ],
  32. "lib_version": "2.1.49",
  33. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  34. "maintainers": [
  35. {
  36. "email": "dev@ixsystems.com",
  37. "name": "truenas",
  38. "url": "https://www.truenas.com/"
  39. }
  40. ],
  41. "name": "concourse",
  42. "run_as_context": [
  43. {
  44. "description": "Concourse runs as root user.",
  45. "gid": 0,
  46. "group_name": "root",
  47. "uid": 0,
  48. "user_name": "root"
  49. },
  50. {
  51. "description": "Postgres runs as non-root user.",
  52. "gid": 999,
  53. "group_name": "postgres",
  54. "uid": 999,
  55. "user_name": "postgres"
  56. }
  57. ],
  58. "screenshots": [],
  59. "sources": [
  60. "https://concourse-ci.org",
  61. "https://github.com/concourse/concourse",
  62. "https://hub.docker.com/r/concourse/concourse"
  63. ],
  64. "title": "Concourse",
  65. "train": "community",
  66. "version": "1.0.16"
  67. },
  68. "schema": {
  69. "groups": [
  70. {
  71. "name": "Concourse Configuration",
  72. "description": "Configure Concourse"
  73. },
  74. {
  75. "name": "Network Configuration",
  76. "description": "Configure Network for Concourse"
  77. },
  78. {
  79. "name": "Storage Configuration",
  80. "description": "Configure Storage for Concourse"
  81. },
  82. {
  83. "name": "Labels Configuration",
  84. "description": "Configure Labels for Concourse"
  85. },
  86. {
  87. "name": "Resources Configuration",
  88. "description": "Configure Resources for Concourse"
  89. }
  90. ],
  91. "questions": [
  92. {
  93. "variable": "TZ",
  94. "group": "Concourse Configuration",
  95. "label": "Timezone",
  96. "schema": {
  97. "type": "string",
  98. "default": "Etc/UTC",
  99. "required": true,
  100. "$ref": [
  101. "definitions/timezone"
  102. ]
  103. }
  104. },
  105. {
  106. "variable": "concourse",
  107. "label": "",
  108. "group": "Concourse Configuration",
  109. "schema": {
  110. "type": "dict",
  111. "attrs": [
  112. {
  113. "variable": "postgres_image_selector",
  114. "label": "Postgres Image (CAUTION)",
  115. "description": "If you are changing this after the postgres directory has been initialized,</br>\nSTOP! and make sure you have a backup of your data.</br>\nChanging this will trigger an one way database upgrade.</br>\nYou can only select newer versions of postgres.</br>\nSelecting an older version will refuse to start.</br>\nIf something goes wrong, you will have to restore from backup.\n",
  116. "schema": {
  117. "type": "string",
  118. "default": "postgres_17_image",
  119. "required": true,
  120. "enum": [
  121. {
  122. "value": "postgres_17_image",
  123. "description": "Postgres 17"
  124. }
  125. ]
  126. }
  127. },
  128. {
  129. "variable": "db_password",
  130. "label": "Database Password",
  131. "description": "The password for Concourse Database.",
  132. "schema": {
  133. "type": "string",
  134. "default": "",
  135. "required": true,
  136. "private": true
  137. }
  138. },
  139. {
  140. "variable": "external_url",
  141. "label": "External URL",
  142. "description": "The URL that Concourse will be accessible from.</br>\nExample: </br>\n- http://server.ip:30152</br>\n- https://server.ip:30153</br>\n- https://concourse.example.com\n",
  143. "schema": {
  144. "type": "uri",
  145. "default": "",
  146. "required": true
  147. }
  148. },
  149. {
  150. "variable": "users",
  151. "label": "Users",
  152. "schema": {
  153. "type": "list",
  154. "default": [],
  155. "items": [
  156. {
  157. "variable": "user",
  158. "label": "User",
  159. "schema": {
  160. "type": "dict",
  161. "attrs": [
  162. {
  163. "variable": "username",
  164. "label": "Username",
  165. "schema": {
  166. "type": "string",
  167. "required": true
  168. }
  169. },
  170. {
  171. "variable": "password",
  172. "label": "Password",
  173. "schema": {
  174. "type": "string",
  175. "required": true,
  176. "private": true
  177. }
  178. },
  179. {
  180. "variable": "is_admin",
  181. "label": "Add to the Main Team",
  182. "schema": {
  183. "type": "boolean",
  184. "default": false
  185. }
  186. }
  187. ]
  188. }
  189. }
  190. ]
  191. }
  192. },
  193. {
  194. "variable": "web_additional_envs",
  195. "label": "Additional Environment Variables for Web Container",
  196. "schema": {
  197. "type": "list",
  198. "default": [],
  199. "items": [
  200. {
  201. "variable": "env",
  202. "label": "Environment Variable",
  203. "schema": {
  204. "type": "dict",
  205. "attrs": [
  206. {
  207. "variable": "name",
  208. "label": "Name",
  209. "schema": {
  210. "type": "string",
  211. "required": true
  212. }
  213. },
  214. {
  215. "variable": "value",
  216. "label": "Value",
  217. "schema": {
  218. "type": "string"
  219. }
  220. }
  221. ]
  222. }
  223. }
  224. ]
  225. }
  226. },
  227. {
  228. "variable": "worker_additional_envs",
  229. "label": "Additional Environment Variables for Worker Container",
  230. "schema": {
  231. "type": "list",
  232. "default": [],
  233. "items": [
  234. {
  235. "variable": "env",
  236. "label": "Environment Variable",
  237. "schema": {
  238. "type": "dict",
  239. "attrs": [
  240. {
  241. "variable": "name",
  242. "label": "Name",
  243. "schema": {
  244. "type": "string",
  245. "required": true
  246. }
  247. },
  248. {
  249. "variable": "value",
  250. "label": "Value",
  251. "schema": {
  252. "type": "string"
  253. }
  254. }
  255. ]
  256. }
  257. }
  258. ]
  259. }
  260. }
  261. ]
  262. }
  263. },
  264. {
  265. "variable": "network",
  266. "label": "",
  267. "group": "Network Configuration",
  268. "schema": {
  269. "type": "dict",
  270. "attrs": [
  271. {
  272. "variable": "http_port",
  273. "label": "HTTP Port",
  274. "schema": {
  275. "type": "dict",
  276. "attrs": [
  277. {
  278. "variable": "bind_mode",
  279. "label": "Port Bind Mode",
  280. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  281. "schema": {
  282. "type": "string",
  283. "default": "published",
  284. "enum": [
  285. {
  286. "value": "published",
  287. "description": "Publish port on the host for external access"
  288. },
  289. {
  290. "value": "exposed",
  291. "description": "Expose port for inter-container communication"
  292. },
  293. {
  294. "value": "",
  295. "description": "None"
  296. }
  297. ]
  298. }
  299. },
  300. {
  301. "variable": "port_number",
  302. "label": "Port Number",
  303. "schema": {
  304. "type": "int",
  305. "default": 30152,
  306. "min": 1,
  307. "max": 65535,
  308. "required": true
  309. }
  310. },
  311. {
  312. "variable": "host_ips",
  313. "label": "Host IPs",
  314. "description": "IPs on the host to bind this port",
  315. "schema": {
  316. "type": "list",
  317. "show_if": [
  318. [
  319. "bind_mode",
  320. "=",
  321. "published"
  322. ]
  323. ],
  324. "default": [],
  325. "items": [
  326. {
  327. "variable": "host_ip",
  328. "label": "Host IP",
  329. "schema": {
  330. "type": "string",
  331. "required": true,
  332. "$ref": [
  333. "definitions/node_bind_ip"
  334. ]
  335. }
  336. }
  337. ]
  338. }
  339. }
  340. ]
  341. }
  342. },
  343. {
  344. "variable": "https_port",
  345. "label": "HTTPS Port",
  346. "schema": {
  347. "type": "dict",
  348. "show_if": [
  349. [
  350. "certificate_id",
  351. "!=",
  352. null
  353. ]
  354. ],
  355. "attrs": [
  356. {
  357. "variable": "bind_mode",
  358. "label": "Port Bind Mode",
  359. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  360. "schema": {
  361. "type": "string",
  362. "default": "published",
  363. "enum": [
  364. {
  365. "value": "published",
  366. "description": "Publish port on the host for external access"
  367. },
  368. {
  369. "value": "exposed",
  370. "description": "Expose port for inter-container communication"
  371. },
  372. {
  373. "value": "",
  374. "description": "None"
  375. }
  376. ]
  377. }
  378. },
  379. {
  380. "variable": "port_number",
  381. "label": "Port Number",
  382. "schema": {
  383. "type": "int",
  384. "default": 30153,
  385. "min": 1,
  386. "max": 65535,
  387. "required": true
  388. }
  389. },
  390. {
  391. "variable": "host_ips",
  392. "label": "Host IPs",
  393. "description": "IPs on the host to bind this port",
  394. "schema": {
  395. "type": "list",
  396. "show_if": [
  397. [
  398. "bind_mode",
  399. "=",
  400. "published"
  401. ]
  402. ],
  403. "default": [],
  404. "items": [
  405. {
  406. "variable": "host_ip",
  407. "label": "Host IP",
  408. "schema": {
  409. "type": "string",
  410. "required": true,
  411. "$ref": [
  412. "definitions/node_bind_ip"
  413. ]
  414. }
  415. }
  416. ]
  417. }
  418. }
  419. ]
  420. }
  421. },
  422. {
  423. "variable": "certificate_id",
  424. "label": "Certificate",
  425. "description": "The certificate to use for Concourse.",
  426. "schema": {
  427. "type": "int",
  428. "null": true,
  429. "$ref": [
  430. "definitions/certificate"
  431. ]
  432. }
  433. }
  434. ]
  435. }
  436. },
  437. {
  438. "variable": "storage",
  439. "label": "",
  440. "group": "Storage Configuration",
  441. "schema": {
  442. "type": "dict",
  443. "attrs": [
  444. {
  445. "variable": "postgres_data",
  446. "label": "Postgres Data Storage",
  447. "description": "The path to store Postgres Data.",
  448. "schema": {
  449. "type": "dict",
  450. "attrs": [
  451. {
  452. "variable": "type",
  453. "label": "Type",
  454. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  455. "schema": {
  456. "type": "string",
  457. "required": true,
  458. "default": "ix_volume",
  459. "enum": [
  460. {
  461. "value": "host_path",
  462. "description": "Host Path (Path that already exists on the system)"
  463. },
  464. {
  465. "value": "ix_volume",
  466. "description": "ixVolume (Dataset created automatically by the system)"
  467. }
  468. ]
  469. }
  470. },
  471. {
  472. "variable": "ix_volume_config",
  473. "label": "ixVolume Configuration",
  474. "description": "The configuration for the ixVolume dataset.",
  475. "schema": {
  476. "type": "dict",
  477. "show_if": [
  478. [
  479. "type",
  480. "=",
  481. "ix_volume"
  482. ]
  483. ],
  484. "$ref": [
  485. "normalize/ix_volume"
  486. ],
  487. "attrs": [
  488. {
  489. "variable": "acl_enable",
  490. "label": "Enable ACL",
  491. "description": "Enable ACL for the storage.",
  492. "schema": {
  493. "type": "boolean",
  494. "default": false
  495. }
  496. },
  497. {
  498. "variable": "dataset_name",
  499. "label": "Dataset Name",
  500. "description": "The name of the dataset to use for storage.",
  501. "schema": {
  502. "type": "string",
  503. "required": true,
  504. "hidden": true,
  505. "default": "pg_data"
  506. }
  507. },
  508. {
  509. "variable": "acl_entries",
  510. "label": "ACL Configuration",
  511. "schema": {
  512. "type": "dict",
  513. "show_if": [
  514. [
  515. "acl_enable",
  516. "=",
  517. true
  518. ]
  519. ],
  520. "attrs": []
  521. }
  522. }
  523. ]
  524. }
  525. },
  526. {
  527. "variable": "host_path_config",
  528. "label": "Host Path Configuration",
  529. "schema": {
  530. "type": "dict",
  531. "show_if": [
  532. [
  533. "type",
  534. "=",
  535. "host_path"
  536. ]
  537. ],
  538. "attrs": [
  539. {
  540. "variable": "acl_enable",
  541. "label": "Enable ACL",
  542. "description": "Enable ACL for the storage.",
  543. "schema": {
  544. "type": "boolean",
  545. "default": false
  546. }
  547. },
  548. {
  549. "variable": "acl",
  550. "label": "ACL Configuration",
  551. "schema": {
  552. "type": "dict",
  553. "show_if": [
  554. [
  555. "acl_enable",
  556. "=",
  557. true
  558. ]
  559. ],
  560. "attrs": [],
  561. "$ref": [
  562. "normalize/acl"
  563. ]
  564. }
  565. },
  566. {
  567. "variable": "path",
  568. "label": "Host Path",
  569. "description": "The host path to use for storage.",
  570. "schema": {
  571. "type": "hostpath",
  572. "show_if": [
  573. [
  574. "acl_enable",
  575. "=",
  576. false
  577. ]
  578. ],
  579. "required": true
  580. }
  581. },
  582. {
  583. "variable": "auto_permissions",
  584. "label": "Automatic Permissions",
  585. "description": "Automatically set permissions for the host path.\nEnabling this, will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
  586. "schema": {
  587. "type": "boolean",
  588. "default": false,
  589. "show_if": [
  590. [
  591. "acl_enable",
  592. "=",
  593. false
  594. ]
  595. ]
  596. }
  597. }
  598. ]
  599. }
  600. }
  601. ]
  602. }
  603. },
  604. {
  605. "variable": "workspace",
  606. "label": "Concourse Workspace Storage",
  607. "schema": {
  608. "type": "dict",
  609. "attrs": [
  610. {
  611. "variable": "type",
  612. "label": "Type",
  613. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  614. "schema": {
  615. "type": "string",
  616. "required": true,
  617. "default": "ix_volume",
  618. "enum": [
  619. {
  620. "value": "host_path",
  621. "description": "Host Path (Path that already exists on the system)"
  622. },
  623. {
  624. "value": "ix_volume",
  625. "description": "ixVolume (Dataset created automatically by the system)"
  626. }
  627. ]
  628. }
  629. },
  630. {
  631. "variable": "ix_volume_config",
  632. "label": "ixVolume Configuration",
  633. "description": "The configuration for the ixVolume dataset.",
  634. "schema": {
  635. "type": "dict",
  636. "show_if": [
  637. [
  638. "type",
  639. "=",
  640. "ix_volume"
  641. ]
  642. ],
  643. "$ref": [
  644. "normalize/ix_volume"
  645. ],
  646. "attrs": [
  647. {
  648. "variable": "acl_enable",
  649. "label": "Enable ACL",
  650. "description": "Enable ACL for the storage.",
  651. "schema": {
  652. "type": "boolean",
  653. "default": false
  654. }
  655. },
  656. {
  657. "variable": "dataset_name",
  658. "label": "Dataset Name",
  659. "description": "The name of the dataset to use for storage.",
  660. "schema": {
  661. "type": "string",
  662. "required": true,
  663. "hidden": true,
  664. "default": "workspace"
  665. }
  666. },
  667. {
  668. "variable": "acl_entries",
  669. "label": "ACL Configuration",
  670. "schema": {
  671. "type": "dict",
  672. "show_if": [
  673. [
  674. "acl_enable",
  675. "=",
  676. true
  677. ]
  678. ],
  679. "attrs": []
  680. }
  681. }
  682. ]
  683. }
  684. },
  685. {
  686. "variable": "host_path_config",
  687. "label": "Host Path Configuration",
  688. "schema": {
  689. "type": "dict",
  690. "show_if": [
  691. [
  692. "type",
  693. "=",
  694. "host_path"
  695. ]
  696. ],
  697. "attrs": [
  698. {
  699. "variable": "acl_enable",
  700. "label": "Enable ACL",
  701. "description": "Enable ACL for the storage.",
  702. "schema": {
  703. "type": "boolean",
  704. "default": false
  705. }
  706. },
  707. {
  708. "variable": "acl",
  709. "label": "ACL Configuration",
  710. "schema": {
  711. "type": "dict",
  712. "show_if": [
  713. [
  714. "acl_enable",
  715. "=",
  716. true
  717. ]
  718. ],
  719. "attrs": [],
  720. "$ref": [
  721. "normalize/acl"
  722. ]
  723. }
  724. },
  725. {
  726. "variable": "path",
  727. "label": "Host Path",
  728. "description": "The host path to use for storage.",
  729. "schema": {
  730. "type": "hostpath",
  731. "show_if": [
  732. [
  733. "acl_enable",
  734. "=",
  735. false
  736. ]
  737. ],
  738. "required": true
  739. }
  740. }
  741. ]
  742. }
  743. }
  744. ]
  745. }
  746. },
  747. {
  748. "variable": "keystore",
  749. "label": "Concourse Keystore Storage",
  750. "schema": {
  751. "type": "dict",
  752. "attrs": [
  753. {
  754. "variable": "type",
  755. "label": "Type",
  756. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  757. "schema": {
  758. "type": "string",
  759. "required": true,
  760. "default": "ix_volume",
  761. "enum": [
  762. {
  763. "value": "host_path",
  764. "description": "Host Path (Path that already exists on the system)"
  765. },
  766. {
  767. "value": "ix_volume",
  768. "description": "ixVolume (Dataset created automatically by the system)"
  769. }
  770. ]
  771. }
  772. },
  773. {
  774. "variable": "ix_volume_config",
  775. "label": "ixVolume Configuration",
  776. "description": "The configuration for the ixVolume dataset.",
  777. "schema": {
  778. "type": "dict",
  779. "show_if": [
  780. [
  781. "type",
  782. "=",
  783. "ix_volume"
  784. ]
  785. ],
  786. "$ref": [
  787. "normalize/ix_volume"
  788. ],
  789. "attrs": [
  790. {
  791. "variable": "acl_enable",
  792. "label": "Enable ACL",
  793. "description": "Enable ACL for the storage.",
  794. "schema": {
  795. "type": "boolean",
  796. "default": false
  797. }
  798. },
  799. {
  800. "variable": "dataset_name",
  801. "label": "Dataset Name",
  802. "description": "The name of the dataset to use for storage.",
  803. "schema": {
  804. "type": "string",
  805. "required": true,
  806. "hidden": true,
  807. "default": "keystore"
  808. }
  809. },
  810. {
  811. "variable": "acl_entries",
  812. "label": "ACL Configuration",
  813. "schema": {
  814. "type": "dict",
  815. "show_if": [
  816. [
  817. "acl_enable",
  818. "=",
  819. true
  820. ]
  821. ],
  822. "attrs": []
  823. }
  824. }
  825. ]
  826. }
  827. },
  828. {
  829. "variable": "host_path_config",
  830. "label": "Host Path Configuration",
  831. "schema": {
  832. "type": "dict",
  833. "show_if": [
  834. [
  835. "type",
  836. "=",
  837. "host_path"
  838. ]
  839. ],
  840. "attrs": [
  841. {
  842. "variable": "acl_enable",
  843. "label": "Enable ACL",
  844. "description": "Enable ACL for the storage.",
  845. "schema": {
  846. "type": "boolean",
  847. "default": false
  848. }
  849. },
  850. {
  851. "variable": "acl",
  852. "label": "ACL Configuration",
  853. "schema": {
  854. "type": "dict",
  855. "show_if": [
  856. [
  857. "acl_enable",
  858. "=",
  859. true
  860. ]
  861. ],
  862. "attrs": [],
  863. "$ref": [
  864. "normalize/acl"
  865. ]
  866. }
  867. },
  868. {
  869. "variable": "path",
  870. "label": "Host Path",
  871. "description": "The host path to use for storage.",
  872. "schema": {
  873. "type": "hostpath",
  874. "show_if": [
  875. [
  876. "acl_enable",
  877. "=",
  878. false
  879. ]
  880. ],
  881. "required": true
  882. }
  883. }
  884. ]
  885. }
  886. }
  887. ]
  888. }
  889. },
  890. {
  891. "variable": "additional_storage",
  892. "label": "Additional Storage",
  893. "schema": {
  894. "type": "list",
  895. "default": [],
  896. "items": [
  897. {
  898. "variable": "storageEntry",
  899. "label": "Storage Entry",
  900. "schema": {
  901. "type": "dict",
  902. "attrs": [
  903. {
  904. "variable": "type",
  905. "label": "Type",
  906. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
  907. "schema": {
  908. "type": "string",
  909. "required": true,
  910. "default": "ix_volume",
  911. "enum": [
  912. {
  913. "value": "host_path",
  914. "description": "Host Path (Path that already exists on the system)"
  915. },
  916. {
  917. "value": "ix_volume",
  918. "description": "ixVolume (Dataset created automatically by the system)"
  919. },
  920. {
  921. "value": "cifs",
  922. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  923. }
  924. ]
  925. }
  926. },
  927. {
  928. "variable": "read_only",
  929. "label": "Read Only",
  930. "description": "Mount the volume as read only.",
  931. "schema": {
  932. "type": "boolean",
  933. "default": false
  934. }
  935. },
  936. {
  937. "variable": "mount_path",
  938. "label": "Mount Path",
  939. "description": "The path inside the container to mount the storage.",
  940. "schema": {
  941. "type": "path",
  942. "required": true
  943. }
  944. },
  945. {
  946. "variable": "host_path_config",
  947. "label": "Host Path Configuration",
  948. "schema": {
  949. "type": "dict",
  950. "show_if": [
  951. [
  952. "type",
  953. "=",
  954. "host_path"
  955. ]
  956. ],
  957. "attrs": [
  958. {
  959. "variable": "acl_enable",
  960. "label": "Enable ACL",
  961. "description": "Enable ACL for the storage.",
  962. "schema": {
  963. "type": "boolean",
  964. "default": false
  965. }
  966. },
  967. {
  968. "variable": "acl",
  969. "label": "ACL Configuration",
  970. "schema": {
  971. "type": "dict",
  972. "show_if": [
  973. [
  974. "acl_enable",
  975. "=",
  976. true
  977. ]
  978. ],
  979. "attrs": [],
  980. "$ref": [
  981. "normalize/acl"
  982. ]
  983. }
  984. },
  985. {
  986. "variable": "path",
  987. "label": "Host Path",
  988. "description": "The host path to use for storage.",
  989. "schema": {
  990. "type": "hostpath",
  991. "show_if": [
  992. [
  993. "acl_enable",
  994. "=",
  995. false
  996. ]
  997. ],
  998. "required": true
  999. }
  1000. }
  1001. ]
  1002. }
  1003. },
  1004. {
  1005. "variable": "ix_volume_config",
  1006. "label": "ixVolume Configuration",
  1007. "description": "The configuration for the ixVolume dataset.",
  1008. "schema": {
  1009. "type": "dict",
  1010. "show_if": [
  1011. [
  1012. "type",
  1013. "=",
  1014. "ix_volume"
  1015. ]
  1016. ],
  1017. "$ref": [
  1018. "normalize/ix_volume"
  1019. ],
  1020. "attrs": [
  1021. {
  1022. "variable": "acl_enable",
  1023. "label": "Enable ACL",
  1024. "description": "Enable ACL for the storage.",
  1025. "schema": {
  1026. "type": "boolean",
  1027. "default": false
  1028. }
  1029. },
  1030. {
  1031. "variable": "dataset_name",
  1032. "label": "Dataset Name",
  1033. "description": "The name of the dataset to use for storage.",
  1034. "schema": {
  1035. "type": "string",
  1036. "required": true,
  1037. "default": "storage_entry"
  1038. }
  1039. },
  1040. {
  1041. "variable": "acl_entries",
  1042. "label": "ACL Configuration",
  1043. "schema": {
  1044. "type": "dict",
  1045. "show_if": [
  1046. [
  1047. "acl_enable",
  1048. "=",
  1049. true
  1050. ]
  1051. ],
  1052. "attrs": [],
  1053. "$ref": [
  1054. "normalize/acl"
  1055. ]
  1056. }
  1057. }
  1058. ]
  1059. }
  1060. },
  1061. {
  1062. "variable": "cifs_config",
  1063. "label": "SMB Configuration",
  1064. "description": "The configuration for the SMB dataset.",
  1065. "schema": {
  1066. "type": "dict",
  1067. "show_if": [
  1068. [
  1069. "type",
  1070. "=",
  1071. "cifs"
  1072. ]
  1073. ],
  1074. "attrs": [
  1075. {
  1076. "variable": "server",
  1077. "label": "Server",
  1078. "description": "The server to mount the SMB share.",
  1079. "schema": {
  1080. "type": "string",
  1081. "required": true
  1082. }
  1083. },
  1084. {
  1085. "variable": "path",
  1086. "label": "Path",
  1087. "description": "The path to mount the SMB share.",
  1088. "schema": {
  1089. "type": "string",
  1090. "required": true
  1091. }
  1092. },
  1093. {
  1094. "variable": "username",
  1095. "label": "Username",
  1096. "description": "The username to use for the SMB share.",
  1097. "schema": {
  1098. "type": "string",
  1099. "required": true
  1100. }
  1101. },
  1102. {
  1103. "variable": "password",
  1104. "label": "Password",
  1105. "description": "The password to use for the SMB share.",
  1106. "schema": {
  1107. "type": "string",
  1108. "required": true,
  1109. "private": true
  1110. }
  1111. },
  1112. {
  1113. "variable": "domain",
  1114. "label": "Domain",
  1115. "description": "The domain to use for the SMB share.",
  1116. "schema": {
  1117. "type": "string"
  1118. }
  1119. }
  1120. ]
  1121. }
  1122. }
  1123. ]
  1124. }
  1125. }
  1126. ]
  1127. }
  1128. }
  1129. ]
  1130. }
  1131. },
  1132. {
  1133. "variable": "labels",
  1134. "label": "",
  1135. "group": "Labels Configuration",
  1136. "schema": {
  1137. "type": "list",
  1138. "default": [],
  1139. "items": [
  1140. {
  1141. "variable": "label",
  1142. "label": "Label",
  1143. "schema": {
  1144. "type": "dict",
  1145. "attrs": [
  1146. {
  1147. "variable": "key",
  1148. "label": "Key",
  1149. "schema": {
  1150. "type": "string",
  1151. "required": true
  1152. }
  1153. },
  1154. {
  1155. "variable": "value",
  1156. "label": "Value",
  1157. "schema": {
  1158. "type": "string",
  1159. "required": true
  1160. }
  1161. },
  1162. {
  1163. "variable": "containers",
  1164. "label": "Containers",
  1165. "description": "Containers where the label should be applied",
  1166. "schema": {
  1167. "type": "list",
  1168. "items": [
  1169. {
  1170. "variable": "container",
  1171. "label": "Container",
  1172. "schema": {
  1173. "type": "string",
  1174. "required": true,
  1175. "enum": [
  1176. {
  1177. "value": "web",
  1178. "description": "web"
  1179. },
  1180. {
  1181. "value": "worker",
  1182. "description": "worker"
  1183. },
  1184. {
  1185. "value": "postgres",
  1186. "description": "postgres"
  1187. }
  1188. ]
  1189. }
  1190. }
  1191. ]
  1192. }
  1193. }
  1194. ]
  1195. }
  1196. }
  1197. ]
  1198. }
  1199. },
  1200. {
  1201. "variable": "resources",
  1202. "label": "",
  1203. "group": "Resources Configuration",
  1204. "schema": {
  1205. "type": "dict",
  1206. "attrs": [
  1207. {
  1208. "variable": "limits",
  1209. "label": "Limits",
  1210. "schema": {
  1211. "type": "dict",
  1212. "attrs": [
  1213. {
  1214. "variable": "cpus",
  1215. "label": "CPUs",
  1216. "description": "CPUs limit for Concourse.",
  1217. "schema": {
  1218. "type": "int",
  1219. "default": 2,
  1220. "required": true
  1221. }
  1222. },
  1223. {
  1224. "variable": "memory",
  1225. "label": "Memory (in MB)",
  1226. "description": "Memory limit for Concourse.",
  1227. "schema": {
  1228. "type": "int",
  1229. "default": 4096,
  1230. "required": true
  1231. }
  1232. }
  1233. ]
  1234. }
  1235. }
  1236. ]
  1237. }
  1238. }
  1239. ]
  1240. },
  1241. "readme": "<h1>Concourse</h1> <p><a href=\"https://concourse-ci.org\">Concourse</a> is a container-based automation system written in Go.</p>",
  1242. "changelog": null,
  1243. "chart_metadata": {
  1244. "app_version": "7.14.1",
  1245. "capabilities": [],
  1246. "categories": [
  1247. "productivity"
  1248. ],
  1249. "changelog_url": "https://github.com/concourse/concourse/releases",
  1250. "date_added": "2025-04-30",
  1251. "description": "Concourse is a container-based automation system written in Go.",
  1252. "home": "https://concourse-ci.org",
  1253. "host_mounts": [
  1254. {
  1255. "description": "Docker socket",
  1256. "host_path": "/var/run/docker.sock"
  1257. }
  1258. ],
  1259. "icon": "https://media.sys.truenas.net/apps/concourse/icons/icon.svg",
  1260. "keywords": [
  1261. "automation",
  1262. "ci"
  1263. ],
  1264. "lib_version": "2.1.49",
  1265. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1266. "maintainers": [
  1267. {
  1268. "email": "dev@ixsystems.com",
  1269. "name": "truenas",
  1270. "url": "https://www.truenas.com/"
  1271. }
  1272. ],
  1273. "name": "concourse",
  1274. "run_as_context": [
  1275. {
  1276. "description": "Concourse runs as root user.",
  1277. "gid": 0,
  1278. "group_name": "root",
  1279. "uid": 0,
  1280. "user_name": "root"
  1281. },
  1282. {
  1283. "description": "Postgres runs as non-root user.",
  1284. "gid": 999,
  1285. "group_name": "postgres",
  1286. "uid": 999,
  1287. "user_name": "postgres"
  1288. }
  1289. ],
  1290. "screenshots": [],
  1291. "sources": [
  1292. "https://concourse-ci.org",
  1293. "https://github.com/concourse/concourse",
  1294. "https://hub.docker.com/r/concourse/concourse"
  1295. ],
  1296. "title": "Concourse",
  1297. "train": "community",
  1298. "version": "1.0.16"
  1299. }
  1300. }
  1301. }