app_versions.json 83 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117
  1. {
  2. "1.2.19": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/jenkins/1.2.19",
  7. "last_update": "2025-03-05 14:27:33",
  8. "required_features": [
  9. "normalize/ixVolume",
  10. "definitions/certificate",
  11. "definitions/timezone",
  12. "normalize/acl"
  13. ],
  14. "human_version": "2.492.1_1.2.19",
  15. "version": "1.2.19",
  16. "chart_metadata": {
  17. "name": "jenkins",
  18. "description": "Jenkins is a leading open source automation server,",
  19. "annotations": {
  20. "title": "Jenkins"
  21. },
  22. "type": "application",
  23. "version": "1.2.19",
  24. "apiVersion": "v2",
  25. "appVersion": "2.492.1",
  26. "kubeVersion": ">=1.16.0-0",
  27. "maintainers": [
  28. {
  29. "name": "truenas",
  30. "url": "https://www.truenas.com/",
  31. "email": "dev@ixsystems.com"
  32. }
  33. ],
  34. "dependencies": [
  35. {
  36. "name": "common",
  37. "repository": "file://../../../common",
  38. "version": "1.2.9"
  39. }
  40. ],
  41. "home": "https://www.jenkins.io/",
  42. "icon": "https://media.sys.truenas.net/apps/jenkins/icons/icon.svg",
  43. "sources": [
  44. "https://hub.docker.com/r/jenkins/jenkins",
  45. "https://github.com/truenas/charts/tree/master/community/jenkins",
  46. "https://github.com/jenkinsci/jenkins",
  47. "https://www.jenkins.io/"
  48. ],
  49. "keywords": [
  50. "automation",
  51. "ci/cd"
  52. ]
  53. },
  54. "app_metadata": {
  55. "runAsContext": [
  56. {
  57. "userName": "jenkins",
  58. "groupName": "jenkins",
  59. "gid": 1000,
  60. "uid": 1000,
  61. "description": "Jenkins runs as a non-root user."
  62. }
  63. ],
  64. "capabilities": [],
  65. "hostMounts": []
  66. },
  67. "schema": {
  68. "groups": [
  69. {
  70. "name": "Jenkins Configuration",
  71. "description": "Configure Jenkins"
  72. },
  73. {
  74. "name": "User and Group Configuration",
  75. "description": "Configure User and Group for Jenkins"
  76. },
  77. {
  78. "name": "Network Configuration",
  79. "description": "Configure Network for Jenkins"
  80. },
  81. {
  82. "name": "Storage Configuration",
  83. "description": "Configure Storage for Jenkins"
  84. },
  85. {
  86. "name": "Resources Configuration",
  87. "description": "Configure Resources for Jenkins"
  88. }
  89. ],
  90. "portals": {
  91. "web_portal": {
  92. "protocols": [
  93. "$kubernetes-resource_configmap_portal_protocol"
  94. ],
  95. "host": [
  96. "$kubernetes-resource_configmap_portal_host"
  97. ],
  98. "ports": [
  99. "$kubernetes-resource_configmap_portal_port"
  100. ],
  101. "path": "$kubernetes-resource_configmap_portal_path"
  102. }
  103. },
  104. "questions": [
  105. {
  106. "variable": "TZ",
  107. "group": "Jenkins Configuration",
  108. "label": "Timezone",
  109. "schema": {
  110. "type": "string",
  111. "default": "America/Los_Angeles",
  112. "required": true,
  113. "$ref": [
  114. "definitions/timezone"
  115. ],
  116. "enum": [
  117. {
  118. "value": "Asia/Damascus",
  119. "description": "'Asia/Damascus' timezone"
  120. },
  121. {
  122. "value": "Asia/Saigon",
  123. "description": "'Asia/Saigon' timezone"
  124. }
  125. ]
  126. }
  127. },
  128. {
  129. "variable": "jenkinsConfig",
  130. "label": "",
  131. "group": "Jenkins Configuration",
  132. "schema": {
  133. "type": "dict",
  134. "attrs": [
  135. {
  136. "variable": "jenkinsJavaOpts",
  137. "label": "Additional Jenkins Java Options",
  138. "description": "Configure additional jenkins java options for Jenkins.</br>\nSee https://www.jenkins.io/doc/book/managing/system-properties\n",
  139. "schema": {
  140. "type": "list",
  141. "default": [],
  142. "items": [
  143. {
  144. "variable": "jenkinsJavaOpt",
  145. "label": "Jenkins Java Option",
  146. "schema": {
  147. "type": "dict",
  148. "attrs": [
  149. {
  150. "variable": "property",
  151. "label": "Property",
  152. "description": "The property to set, see https://www.jenkins.io/doc/book/managing/system-properties </br>\nThe prefix [-D] is automatically added.\n",
  153. "schema": {
  154. "type": "string",
  155. "required": true
  156. }
  157. },
  158. {
  159. "variable": "value",
  160. "description": "The value to set for the property.</br>\n",
  161. "label": "Value",
  162. "schema": {
  163. "type": "string",
  164. "required": true
  165. }
  166. }
  167. ]
  168. }
  169. }
  170. ]
  171. }
  172. },
  173. {
  174. "variable": "jenkinsOpts",
  175. "label": "Additional Jenkins Options",
  176. "description": "Configure additional jenkins options for Jenkins. </br>\nsee https://www.jenkins.io/doc/book/installing/initial-settings\n",
  177. "schema": {
  178. "type": "list",
  179. "default": [],
  180. "items": [
  181. {
  182. "variable": "jenkinsOption",
  183. "label": "Jenkins Option",
  184. "description": "The option to set, see https://www.jenkins.io/doc/book/installing/initial-settings </br>\nThe prefix [--] is automatically added.\n",
  185. "schema": {
  186. "type": "string",
  187. "required": true
  188. }
  189. }
  190. ]
  191. }
  192. },
  193. {
  194. "variable": "additionalEnvs",
  195. "label": "Additional Environment Variables",
  196. "description": "Configure additional environment variables for Jenkins.",
  197. "schema": {
  198. "type": "list",
  199. "default": [],
  200. "items": [
  201. {
  202. "variable": "env",
  203. "label": "Environment Variable",
  204. "schema": {
  205. "type": "dict",
  206. "attrs": [
  207. {
  208. "variable": "name",
  209. "label": "Name",
  210. "schema": {
  211. "type": "string",
  212. "required": true
  213. }
  214. },
  215. {
  216. "variable": "value",
  217. "label": "Value",
  218. "schema": {
  219. "type": "string",
  220. "required": true
  221. }
  222. }
  223. ]
  224. }
  225. }
  226. ]
  227. }
  228. }
  229. ]
  230. }
  231. },
  232. {
  233. "variable": "jenkinsNetwork",
  234. "label": "",
  235. "group": "Network Configuration",
  236. "schema": {
  237. "type": "dict",
  238. "attrs": [
  239. {
  240. "variable": "webPort",
  241. "label": "Web Port",
  242. "description": "The port for the Jenkins Web UI.",
  243. "schema": {
  244. "type": "int",
  245. "default": 30036,
  246. "min": 9000,
  247. "max": 65535,
  248. "required": true
  249. }
  250. },
  251. {
  252. "variable": "certificateID",
  253. "label": "Certificate",
  254. "description": "The certificate to use for HTTPS.",
  255. "schema": {
  256. "type": "int",
  257. "null": true,
  258. "$ref": [
  259. "definitions/certificate"
  260. ],
  261. "enum": [
  262. {
  263. "value": null,
  264. "description": "No Certificate"
  265. }
  266. ],
  267. "default": null
  268. }
  269. },
  270. {
  271. "variable": "agent",
  272. "label": "Enable Agent",
  273. "description": "Enable Agent Port for Jenkins.",
  274. "schema": {
  275. "type": "boolean",
  276. "default": false
  277. }
  278. },
  279. {
  280. "variable": "agentPort",
  281. "label": "Agent Port",
  282. "description": "The port for the Jenkins Agent.",
  283. "schema": {
  284. "type": "int",
  285. "show_if": [
  286. [
  287. "agent",
  288. "=",
  289. true
  290. ]
  291. ],
  292. "default": 50000,
  293. "min": 9000,
  294. "max": 65535,
  295. "required": true
  296. }
  297. },
  298. {
  299. "variable": "hostNetwork",
  300. "label": "Host Network",
  301. "description": "Bind to the host network. It's recommended to keep this disabled.</br>\n",
  302. "schema": {
  303. "type": "boolean",
  304. "default": false
  305. }
  306. }
  307. ]
  308. }
  309. },
  310. {
  311. "variable": "jenkinsStorage",
  312. "label": "",
  313. "group": "Storage Configuration",
  314. "schema": {
  315. "type": "dict",
  316. "attrs": [
  317. {
  318. "variable": "home",
  319. "label": "Jenkins Home Storage",
  320. "description": "The path to store Jenkins Home Directory.",
  321. "schema": {
  322. "type": "dict",
  323. "attrs": [
  324. {
  325. "variable": "type",
  326. "label": "Type",
  327. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  328. "schema": {
  329. "type": "string",
  330. "required": true,
  331. "immutable": true,
  332. "default": "ixVolume",
  333. "enum": [
  334. {
  335. "value": "hostPath",
  336. "description": "Host Path (Path that already exists on the system)"
  337. },
  338. {
  339. "value": "ixVolume",
  340. "description": "ixVolume (Dataset created automatically by the system)"
  341. }
  342. ]
  343. }
  344. },
  345. {
  346. "variable": "ixVolumeConfig",
  347. "label": "ixVolume Configuration",
  348. "description": "The configuration for the ixVolume dataset.",
  349. "schema": {
  350. "type": "dict",
  351. "show_if": [
  352. [
  353. "type",
  354. "=",
  355. "ixVolume"
  356. ]
  357. ],
  358. "$ref": [
  359. "normalize/ixVolume"
  360. ],
  361. "attrs": [
  362. {
  363. "variable": "aclEnable",
  364. "label": "Enable ACL",
  365. "description": "Enable ACL for the dataset.",
  366. "schema": {
  367. "type": "boolean",
  368. "default": false
  369. }
  370. },
  371. {
  372. "variable": "datasetName",
  373. "label": "Dataset Name",
  374. "description": "The name of the dataset to use for storage.",
  375. "schema": {
  376. "type": "string",
  377. "required": true,
  378. "immutable": true,
  379. "hidden": true,
  380. "default": "home"
  381. }
  382. },
  383. {
  384. "variable": "aclEntries",
  385. "label": "ACL Configuration",
  386. "schema": {
  387. "type": "dict",
  388. "show_if": [
  389. [
  390. "aclEnable",
  391. "=",
  392. true
  393. ]
  394. ],
  395. "attrs": [
  396. {
  397. "variable": "path",
  398. "label": "Path",
  399. "description": "Path to perform ACL",
  400. "schema": {
  401. "type": "string",
  402. "hidden": true
  403. }
  404. },
  405. {
  406. "variable": "entries",
  407. "label": "ACL Entries",
  408. "description": "ACL Entries",
  409. "schema": {
  410. "type": "list",
  411. "items": [
  412. {
  413. "variable": "aclEntry",
  414. "label": "ACL Entry",
  415. "schema": {
  416. "type": "dict",
  417. "attrs": [
  418. {
  419. "variable": "id_type",
  420. "label": "ID Type",
  421. "schema": {
  422. "type": "string",
  423. "enum": [
  424. {
  425. "value": "USER",
  426. "description": "Entry is for a USER"
  427. },
  428. {
  429. "value": "GROUP",
  430. "description": "Entry is for a GROUP"
  431. }
  432. ],
  433. "default": "USER"
  434. }
  435. },
  436. {
  437. "variable": "id",
  438. "label": "ID",
  439. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  440. "schema": {
  441. "type": "int",
  442. "required": true,
  443. "min": 0
  444. }
  445. },
  446. {
  447. "variable": "access",
  448. "label": "Access",
  449. "schema": {
  450. "type": "string",
  451. "enum": [
  452. {
  453. "value": "READ",
  454. "description": "Read Access"
  455. },
  456. {
  457. "value": "MODIFY",
  458. "description": "Modify Access"
  459. },
  460. {
  461. "value": "FULL_CONTROL",
  462. "description": "FULL_CONTROL Access"
  463. }
  464. ]
  465. }
  466. }
  467. ]
  468. }
  469. }
  470. ]
  471. }
  472. }
  473. ]
  474. }
  475. }
  476. ]
  477. }
  478. },
  479. {
  480. "variable": "hostPathConfig",
  481. "label": "Host Path Configuration",
  482. "schema": {
  483. "type": "dict",
  484. "show_if": [
  485. [
  486. "type",
  487. "=",
  488. "hostPath"
  489. ]
  490. ],
  491. "attrs": [
  492. {
  493. "variable": "aclEnable",
  494. "label": "Enable ACL",
  495. "description": "Enable ACL for the dataset.",
  496. "schema": {
  497. "type": "boolean",
  498. "default": false
  499. }
  500. },
  501. {
  502. "variable": "acl",
  503. "label": "ACL Configuration",
  504. "schema": {
  505. "type": "dict",
  506. "show_if": [
  507. [
  508. "aclEnable",
  509. "=",
  510. true
  511. ]
  512. ],
  513. "attrs": [
  514. {
  515. "variable": "path",
  516. "label": "Host Path",
  517. "description": "Host Path to perform ACL",
  518. "schema": {
  519. "type": "hostpath",
  520. "required": true,
  521. "empty": false
  522. }
  523. },
  524. {
  525. "variable": "entries",
  526. "label": "ACL Entries",
  527. "description": "ACL Entries",
  528. "schema": {
  529. "type": "list",
  530. "items": [
  531. {
  532. "variable": "aclEntry",
  533. "label": "ACL Entry",
  534. "schema": {
  535. "type": "dict",
  536. "attrs": [
  537. {
  538. "variable": "id_type",
  539. "label": "ID Type",
  540. "schema": {
  541. "type": "string",
  542. "enum": [
  543. {
  544. "value": "USER",
  545. "description": "Entry is for a USER"
  546. },
  547. {
  548. "value": "GROUP",
  549. "description": "Entry is for a GROUP"
  550. }
  551. ],
  552. "default": "USER"
  553. }
  554. },
  555. {
  556. "variable": "id",
  557. "label": "ID",
  558. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  559. "schema": {
  560. "type": "int",
  561. "required": true,
  562. "min": 0
  563. }
  564. },
  565. {
  566. "variable": "access",
  567. "label": "Access",
  568. "schema": {
  569. "type": "string",
  570. "enum": [
  571. {
  572. "value": "READ",
  573. "description": "Read Access"
  574. },
  575. {
  576. "value": "MODIFY",
  577. "description": "Modify Access"
  578. },
  579. {
  580. "value": "FULL_CONTROL",
  581. "description": "FULL_CONTROL Access"
  582. }
  583. ]
  584. }
  585. }
  586. ]
  587. }
  588. }
  589. ]
  590. }
  591. },
  592. {
  593. "variable": "options",
  594. "label": "ACL Options",
  595. "schema": {
  596. "type": "dict",
  597. "attrs": [
  598. {
  599. "variable": "force",
  600. "label": "Force Flag",
  601. "description": "Enabling `Force` applies ACL even if the path has existing data",
  602. "schema": {
  603. "type": "boolean",
  604. "default": false
  605. }
  606. }
  607. ]
  608. }
  609. }
  610. ],
  611. "$ref": [
  612. "normalize/acl"
  613. ]
  614. }
  615. },
  616. {
  617. "variable": "hostPath",
  618. "label": "Host Path",
  619. "description": "The host path to use for storage.",
  620. "schema": {
  621. "type": "hostpath",
  622. "show_if": [
  623. [
  624. "aclEnable",
  625. "=",
  626. false
  627. ]
  628. ],
  629. "required": true
  630. }
  631. }
  632. ]
  633. }
  634. }
  635. ]
  636. }
  637. },
  638. {
  639. "variable": "additionalStorages",
  640. "label": "Additional Storage",
  641. "description": "Additional storage for Jenkins.",
  642. "schema": {
  643. "type": "list",
  644. "default": [],
  645. "items": [
  646. {
  647. "variable": "storageEntry",
  648. "label": "Storage Entry",
  649. "schema": {
  650. "type": "dict",
  651. "attrs": [
  652. {
  653. "variable": "type",
  654. "label": "Type",
  655. "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 a persistent volume claim.\n",
  656. "schema": {
  657. "type": "string",
  658. "required": true,
  659. "default": "ixVolume",
  660. "immutable": true,
  661. "enum": [
  662. {
  663. "value": "hostPath",
  664. "description": "Host Path (Path that already exists on the system)"
  665. },
  666. {
  667. "value": "ixVolume",
  668. "description": "ixVolume (Dataset created automatically by the system)"
  669. },
  670. {
  671. "value": "smb-pv-pvc",
  672. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  673. }
  674. ]
  675. }
  676. },
  677. {
  678. "variable": "readOnly",
  679. "label": "Read Only",
  680. "description": "Mount the volume as read only.",
  681. "schema": {
  682. "type": "boolean",
  683. "default": false
  684. }
  685. },
  686. {
  687. "variable": "mountPath",
  688. "label": "Mount Path",
  689. "description": "The path inside the container to mount the storage.",
  690. "schema": {
  691. "type": "path",
  692. "required": true
  693. }
  694. },
  695. {
  696. "variable": "hostPathConfig",
  697. "label": "Host Path Configuration",
  698. "schema": {
  699. "type": "dict",
  700. "show_if": [
  701. [
  702. "type",
  703. "=",
  704. "hostPath"
  705. ]
  706. ],
  707. "attrs": [
  708. {
  709. "variable": "aclEnable",
  710. "label": "Enable ACL",
  711. "description": "Enable ACL for the dataset.",
  712. "schema": {
  713. "type": "boolean",
  714. "default": false
  715. }
  716. },
  717. {
  718. "variable": "acl",
  719. "label": "ACL Configuration",
  720. "schema": {
  721. "type": "dict",
  722. "show_if": [
  723. [
  724. "aclEnable",
  725. "=",
  726. true
  727. ]
  728. ],
  729. "attrs": [
  730. {
  731. "variable": "path",
  732. "label": "Host Path",
  733. "description": "Host Path to perform ACL",
  734. "schema": {
  735. "type": "hostpath",
  736. "required": true,
  737. "empty": false
  738. }
  739. },
  740. {
  741. "variable": "entries",
  742. "label": "ACL Entries",
  743. "description": "ACL Entries",
  744. "schema": {
  745. "type": "list",
  746. "items": [
  747. {
  748. "variable": "aclEntry",
  749. "label": "ACL Entry",
  750. "schema": {
  751. "type": "dict",
  752. "attrs": [
  753. {
  754. "variable": "id_type",
  755. "label": "ID Type",
  756. "schema": {
  757. "type": "string",
  758. "enum": [
  759. {
  760. "value": "USER",
  761. "description": "Entry is for a USER"
  762. },
  763. {
  764. "value": "GROUP",
  765. "description": "Entry is for a GROUP"
  766. }
  767. ],
  768. "default": "USER"
  769. }
  770. },
  771. {
  772. "variable": "id",
  773. "label": "ID",
  774. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  775. "schema": {
  776. "type": "int",
  777. "required": true,
  778. "min": 0
  779. }
  780. },
  781. {
  782. "variable": "access",
  783. "label": "Access",
  784. "schema": {
  785. "type": "string",
  786. "enum": [
  787. {
  788. "value": "READ",
  789. "description": "Read Access"
  790. },
  791. {
  792. "value": "MODIFY",
  793. "description": "Modify Access"
  794. },
  795. {
  796. "value": "FULL_CONTROL",
  797. "description": "FULL_CONTROL Access"
  798. }
  799. ]
  800. }
  801. }
  802. ]
  803. }
  804. }
  805. ]
  806. }
  807. },
  808. {
  809. "variable": "options",
  810. "label": "ACL Options",
  811. "schema": {
  812. "type": "dict",
  813. "attrs": [
  814. {
  815. "variable": "force",
  816. "label": "Force Flag",
  817. "description": "Enabling `Force` applies ACL even if the path has existing data",
  818. "schema": {
  819. "type": "boolean",
  820. "default": false
  821. }
  822. }
  823. ]
  824. }
  825. }
  826. ],
  827. "$ref": [
  828. "normalize/acl"
  829. ]
  830. }
  831. },
  832. {
  833. "variable": "hostPath",
  834. "label": "Host Path",
  835. "description": "The host path to use for storage.",
  836. "schema": {
  837. "type": "hostpath",
  838. "show_if": [
  839. [
  840. "aclEnable",
  841. "=",
  842. false
  843. ]
  844. ],
  845. "required": true
  846. }
  847. }
  848. ]
  849. }
  850. },
  851. {
  852. "variable": "ixVolumeConfig",
  853. "label": "ixVolume Configuration",
  854. "description": "The configuration for the ixVolume dataset.",
  855. "schema": {
  856. "type": "dict",
  857. "show_if": [
  858. [
  859. "type",
  860. "=",
  861. "ixVolume"
  862. ]
  863. ],
  864. "$ref": [
  865. "normalize/ixVolume"
  866. ],
  867. "attrs": [
  868. {
  869. "variable": "aclEnable",
  870. "label": "Enable ACL",
  871. "description": "Enable ACL for the dataset.",
  872. "schema": {
  873. "type": "boolean",
  874. "default": false
  875. }
  876. },
  877. {
  878. "variable": "datasetName",
  879. "label": "Dataset Name",
  880. "description": "The name of the dataset to use for storage.",
  881. "schema": {
  882. "type": "string",
  883. "required": true,
  884. "immutable": true,
  885. "default": "storage_entry"
  886. }
  887. },
  888. {
  889. "variable": "aclEntries",
  890. "label": "ACL Configuration",
  891. "schema": {
  892. "type": "dict",
  893. "show_if": [
  894. [
  895. "aclEnable",
  896. "=",
  897. true
  898. ]
  899. ],
  900. "attrs": [
  901. {
  902. "variable": "path",
  903. "label": "Path",
  904. "description": "Path to perform ACL",
  905. "schema": {
  906. "type": "string",
  907. "hidden": true
  908. }
  909. },
  910. {
  911. "variable": "entries",
  912. "label": "ACL Entries",
  913. "description": "ACL Entries",
  914. "schema": {
  915. "type": "list",
  916. "items": [
  917. {
  918. "variable": "aclEntry",
  919. "label": "ACL Entry",
  920. "schema": {
  921. "type": "dict",
  922. "attrs": [
  923. {
  924. "variable": "id_type",
  925. "label": "ID Type",
  926. "schema": {
  927. "type": "string",
  928. "enum": [
  929. {
  930. "value": "USER",
  931. "description": "Entry is for a USER"
  932. },
  933. {
  934. "value": "GROUP",
  935. "description": "Entry is for a GROUP"
  936. }
  937. ],
  938. "default": "USER"
  939. }
  940. },
  941. {
  942. "variable": "id",
  943. "label": "ID",
  944. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  945. "schema": {
  946. "type": "int",
  947. "required": true,
  948. "min": 0
  949. }
  950. },
  951. {
  952. "variable": "access",
  953. "label": "Access",
  954. "schema": {
  955. "type": "string",
  956. "enum": [
  957. {
  958. "value": "READ",
  959. "description": "Read Access"
  960. },
  961. {
  962. "value": "MODIFY",
  963. "description": "Modify Access"
  964. },
  965. {
  966. "value": "FULL_CONTROL",
  967. "description": "FULL_CONTROL Access"
  968. }
  969. ]
  970. }
  971. }
  972. ]
  973. }
  974. }
  975. ]
  976. }
  977. }
  978. ]
  979. }
  980. }
  981. ]
  982. }
  983. },
  984. {
  985. "variable": "smbConfig",
  986. "label": "SMB Share Configuration",
  987. "description": "The configuration for the SMB Share.",
  988. "schema": {
  989. "type": "dict",
  990. "show_if": [
  991. [
  992. "type",
  993. "=",
  994. "smb-pv-pvc"
  995. ]
  996. ],
  997. "attrs": [
  998. {
  999. "variable": "server",
  1000. "label": "Server",
  1001. "description": "The server for the SMB share.",
  1002. "schema": {
  1003. "type": "string",
  1004. "required": true
  1005. }
  1006. },
  1007. {
  1008. "variable": "share",
  1009. "label": "Share",
  1010. "description": "The share name for the SMB share.",
  1011. "schema": {
  1012. "type": "string",
  1013. "required": true
  1014. }
  1015. },
  1016. {
  1017. "variable": "domain",
  1018. "label": "Domain (Optional)",
  1019. "description": "The domain for the SMB share.",
  1020. "schema": {
  1021. "type": "string"
  1022. }
  1023. },
  1024. {
  1025. "variable": "username",
  1026. "label": "Username",
  1027. "description": "The username for the SMB share.",
  1028. "schema": {
  1029. "type": "string",
  1030. "required": true
  1031. }
  1032. },
  1033. {
  1034. "variable": "password",
  1035. "label": "Password",
  1036. "description": "The password for the SMB share.",
  1037. "schema": {
  1038. "type": "string",
  1039. "required": true,
  1040. "private": true
  1041. }
  1042. },
  1043. {
  1044. "variable": "size",
  1045. "label": "Size (in Gi)",
  1046. "description": "The size of the volume quota.",
  1047. "schema": {
  1048. "type": "int",
  1049. "required": true,
  1050. "min": 1,
  1051. "default": 1
  1052. }
  1053. }
  1054. ]
  1055. }
  1056. }
  1057. ]
  1058. }
  1059. }
  1060. ]
  1061. }
  1062. }
  1063. ]
  1064. }
  1065. },
  1066. {
  1067. "variable": "resources",
  1068. "group": "Resources Configuration",
  1069. "label": "",
  1070. "schema": {
  1071. "type": "dict",
  1072. "attrs": [
  1073. {
  1074. "variable": "limits",
  1075. "label": "Limits",
  1076. "schema": {
  1077. "type": "dict",
  1078. "attrs": [
  1079. {
  1080. "variable": "cpu",
  1081. "label": "CPU",
  1082. "description": "CPU limit for Jenkins.",
  1083. "schema": {
  1084. "type": "string",
  1085. "max_length": 6,
  1086. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  1087. "valid_chars_error": "Valid CPU limit formats are</br>\n- Plain Integer - eg. 1</br>\n- Float - eg. 0.5</br>\n- Milicpu - eg. 500m\n",
  1088. "default": "4000m",
  1089. "required": true
  1090. }
  1091. },
  1092. {
  1093. "variable": "memory",
  1094. "label": "Memory",
  1095. "description": "Memory limit for Jenkins.",
  1096. "schema": {
  1097. "type": "string",
  1098. "max_length": 12,
  1099. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  1100. "valid_chars_error": "Valid Memory limit formats are</br>\n- Suffixed with E/P/T/G/M/K - eg. 1G</br>\n- Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>\n- Plain Integer in bytes - eg. 1024</br>\n- Exponent - eg. 134e6\n",
  1101. "default": "8Gi",
  1102. "required": true
  1103. }
  1104. }
  1105. ]
  1106. }
  1107. }
  1108. ]
  1109. }
  1110. }
  1111. ]
  1112. },
  1113. "app_readme": "<h1>Jenkins</h1>\n<p><a href=\"https://www.jenkins.io/\">Jenkins</a>. The leading open source automation server, Jenkins provides hundreds of\nplugins to support building, deploying and automating any project.</p>\n<blockquote>\n<p>When application is installed and on each startup, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>Jenkins</code> directories.\nAfterward, the <code>Jenkins</code> container will run as a <strong>non</strong>-root user (<code>1000</code>).\nAll mounted storage(s) will be <code>chown</code>ed only if the parent directory does not match the user and group (<code>1000</code>).</p>\n</blockquote>",
  1114. "detailed_readme": "<h1>Jenkins</h1>\n<p><a href=\"https://www.jenkins.io/\">Jenkins</a>. The leading open source automation server, Jenkins provides hundreds of\nplugins to support building, deploying and automating any project.</p>\n<blockquote>\n<p>When application is installed and on each startup, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>Jenkins</code> directories.\nAfterward, the <code>Jenkins</code> container will run as a <strong>non</strong>-root user (<code>1000</code>).\nAll mounted storage(s) will be <code>chown</code>ed only if the parent directory does not match the user and group (<code>1000</code>).</p>\n</blockquote>",
  1115. "changelog": null
  1116. }
  1117. }