| Giorgi Lekveishvili | 3598266 | 2024-04-05 13:05:40 +0400 | [diff] [blame] | 1 | # Jenkins |
| 2 | |
| 3 | ## Configuration |
| 4 | |
| 5 | The following tables list the configurable parameters of the Jenkins chart and their default values. |
| 6 | |
| 7 | ## Values |
| 8 | |
| 9 | | Key | Type | Description | Default | |
| 10 | |:----|:-----|:---------|:------------| |
| gio | 20157e8 | 2026-07-22 13:10:48 +0400 | [diff] [blame^] | 11 | | [additionalAgents](./values.yaml#L1262) | object | Configure additional | `{}` | |
| 12 | | [additionalClouds](./values.yaml#L1287) | object | | `{}` | |
| 13 | | [agent.TTYEnabled](./values.yaml#L1167) | bool | Allocate pseudo tty to the side container | `false` | |
| 14 | | [agent.addMasterProxyEnvVars](./values.yaml#L972) | bool | Add the environment proxy settings form jenkins controller to the agents. | `false` | |
| 15 | | [agent.additionalContainers](./values.yaml#L1215) | list | Add additional containers to the agents | `[]` | |
| 16 | | [agent.alwaysPullImage](./values.yaml#L1060) | bool | Always pull agent container image before build | `false` | |
| 17 | | [agent.annotations](./values.yaml#L1211) | object | Annotations to apply to the pod | `{}` | |
| 18 | | [agent.args](./values.yaml#L1161) | string | Arguments passed to command to execute | `"${computer.jnlpmac} ${computer.name}"` | |
| 19 | | [agent.command](./values.yaml#L1159) | string | Command to execute when side container starts | `nil` | |
| 20 | | [agent.componentName](./values.yaml#L1028) | string | | `"jenkins-agent"` | |
| 21 | | [agent.connectTimeout](./values.yaml#L1209) | int | Timeout in seconds for an agent to be online | `100` | |
| 22 | | [agent.containerCap](./values.yaml#L1169) | int | Max number of agents to launch for a whole cluster. | `10` | |
| 23 | | [agent.customJenkinsLabels](./values.yaml#L1025) | list | Append Jenkins labels to the agent | `[]` | |
| 24 | | [agent.defaultsProviderTemplate](./values.yaml#L977) | string | The name of the pod template to use for providing default values | `""` | |
| 25 | | [agent.directConnection](./values.yaml#L1031) | bool | | `false` | |
| 26 | | [agent.disableDefaultAgent](./values.yaml#L1233) | bool | Disable the default Jenkins Agent configuration | `false` | |
| 27 | | [agent.enabled](./values.yaml#L975) | bool | Enable Kubernetes plugin jnlp-agent podTemplate | `true` | |
| 28 | | [agent.envVars](./values.yaml#L1142) | list | Environment variables for the agent Pod | `[]` | |
| 29 | | [agent.garbageCollection.enabled](./values.yaml#L1178) | bool | When enabled, Jenkins will periodically check for orphan pods that have not been touched for the given timeout period and delete them. | `false` | |
| 30 | | [agent.garbageCollection.namespaces](./values.yaml#L1180) | string | Namespaces to look at for garbage collection, in addition to the default namespace defined for the cloud. One namespace per line. | `""` | |
| 31 | | [agent.garbageCollection.timeout](./values.yaml#L1185) | int | Timeout value for orphaned pods | `300` | |
| 32 | | [agent.hostNetworking](./values.yaml#L1039) | bool | Enables the agent to use the host network | `false` | |
| 33 | | [agent.idleMinutes](./values.yaml#L1188) | int | Allows the Pod to remain active for reuse until the configured number of minutes has passed since the last step was executed on it | `0` | |
| 34 | | [agent.image.registry](./values.yaml#L1016) | string | Registry to pull the agent jnlp image from | `""` | |
| 35 | | [agent.image.repository](./values.yaml#L1018) | string | Repository to pull the agent jnlp image from | `"jenkins/inbound-agent"` | |
| 36 | | [agent.image.tag](./values.yaml#L1020) | string | Tag of the image to pull | `"3383.vc8881d4b_0e76-1"` | |
| 37 | | [agent.imagePullSecretName](./values.yaml#L1027) | string | Name of the secret to be used to pull the image | `nil` | |
| 38 | | [agent.inheritYamlMergeStrategy](./values.yaml#L1207) | bool | Controls whether the defined yaml merge strategy will be inherited if another defined pod template is configured to inherit from the current one | `false` | |
| 39 | | [agent.instanceCap](./values.yaml#L1171) | int | Max number of agents to launch for this type of agent | `2147483647` | |
| 40 | | [agent.jenkinsTunnel](./values.yaml#L993) | string | Overrides the Kubernetes Jenkins tunnel | `nil` | |
| 41 | | [agent.jenkinsUrl](./values.yaml#L989) | string | Overrides the Kubernetes Jenkins URL | `nil` | |
| 42 | | [agent.jnlpregistry](./values.yaml#L1013) | string | Custom registry used to pull the agent jnlp image from | `nil` | |
| 43 | | [agent.kubernetesConnectTimeout](./values.yaml#L999) | int | The connection timeout in seconds for connections to Kubernetes API. The minimum value is 5 | `5` | |
| 44 | | [agent.kubernetesReadTimeout](./values.yaml#L1001) | int | The read timeout in seconds for connections to Kubernetes API. The minimum value is 15 | `15` | |
| 45 | | [agent.livenessProbe](./values.yaml#L1050) | object | | `{}` | |
| 46 | | [agent.maxRequestsPerHostStr](./values.yaml#L1003) | string | The maximum concurrent connections to Kubernetes API | `"32"` | |
| 47 | | [agent.namespace](./values.yaml#L1009) | string | Namespace in which the Kubernetes agents should be launched | `nil` | |
| 48 | | [agent.nodeSelector](./values.yaml#L1153) | object | Node labels for pod assignment | `{}` | |
| 49 | | [agent.nodeUsageMode](./values.yaml#L1023) | string | | `"NORMAL"` | |
| 50 | | [agent.podLabels](./values.yaml#L1011) | object | Custom Pod labels (an object with `label-key: label-value` pairs) | `{}` | |
| 51 | | [agent.podName](./values.yaml#L1173) | string | Agent Pod base name | `"default"` | |
| 52 | | [agent.podRetention](./values.yaml#L1069) | string | | `"Never"` | |
| 53 | | [agent.podTemplates](./values.yaml#L1243) | object | Configures extra pod templates for the default kubernetes cloud | `{}` | |
| 54 | | [agent.privileged](./values.yaml#L1033) | bool | Agent privileged container | `false` | |
| 55 | | [agent.resources](./values.yaml#L1041) | object | Resources allocation (Requests and Limits) | `{"limits":{"cpu":"512m","memory":"512Mi"},"requests":{"cpu":"512m","memory":"512Mi"}}` | |
| 56 | | [agent.restrictedPssSecurityContext](./values.yaml#L1066) | bool | Set a restricted securityContext on jnlp containers | `false` | |
| 57 | | [agent.retentionTimeout](./values.yaml#L1005) | int | Time in minutes after which the Kubernetes cloud plugin will clean up an idle worker that has not already terminated | `5` | |
| 58 | | [agent.runAsGroup](./values.yaml#L1037) | string | Configure container group | `nil` | |
| 59 | | [agent.runAsUser](./values.yaml#L1035) | string | Configure container user | `nil` | |
| 60 | | [agent.secretEnvVars](./values.yaml#L1146) | list | Mount a secret as environment variable | `[]` | |
| 61 | | [agent.serviceAccount](./values.yaml#L985) | string | Override the default service account | `serviceAccountAgent.name` if `agent.useDefaultServiceAccount` is `true` | |
| 62 | | [agent.showRawYaml](./values.yaml#L1073) | bool | | `true` | |
| 63 | | [agent.sideContainerName](./values.yaml#L1163) | string | Side container name | `"jnlp"` | |
| 64 | | [agent.skipTlsVerify](./values.yaml#L995) | bool | Disables the verification of the controller certificate on remote connection. This flag correspond to the "Disable https certificate check" flag in kubernetes plugin UI | `false` | |
| 65 | | [agent.usageRestricted](./values.yaml#L997) | bool | Enable the possibility to restrict the usage of this agent to specific folder. This flag correspond to the "Restrict pipeline support to authorized folders" flag in kubernetes plugin UI | `false` | |
| 66 | | [agent.useDefaultServiceAccount](./values.yaml#L981) | bool | Use `serviceAccountAgent.name` as the default value for defaults template `serviceAccount` | `true` | |
| 67 | | [agent.volumes](./values.yaml#L1080) | list | Additional volumes | `[]` | |
| 68 | | [agent.waitForPodSec](./values.yaml#L1007) | int | Seconds to wait for pod to be running | `600` | |
| 69 | | [agent.websocket](./values.yaml#L1030) | bool | Enables agent communication via websockets | `false` | |
| 70 | | [agent.workingDir](./values.yaml#L1022) | string | Configure working directory for default agent | `"/home/jenkins/agent"` | |
| 71 | | [agent.workspaceVolume](./values.yaml#L1115) | object | Workspace volume (defaults to EmptyDir) | `{}` | |
| 72 | | [agent.yamlMergeStrategy](./values.yaml#L1205) | string | Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates. Possible values: "merge" or "override" | `"override"` | |
| 73 | | [agent.yamlTemplate](./values.yaml#L1194) | string | The raw yaml of a Pod API Object to merge into the agent spec | `""` | |
| 74 | | [awsSecurityGroupPolicies.enabled](./values.yaml#L1420) | bool | | `false` | |
| 75 | | [awsSecurityGroupPolicies.policies[0].name](./values.yaml#L1422) | string | | `""` | |
| 76 | | [awsSecurityGroupPolicies.policies[0].podSelector](./values.yaml#L1424) | object | | `{}` | |
| 77 | | [awsSecurityGroupPolicies.policies[0].securityGroupIds](./values.yaml#L1423) | list | | `[]` | |
| 78 | | [checkDeprecation](./values.yaml#L1417) | bool | Checks if any deprecated values are used | `true` | |
| Giorgi Lekveishvili | 3598266 | 2024-04-05 13:05:40 +0400 | [diff] [blame] | 79 | | [clusterZone](./values.yaml#L21) | string | Override the cluster name for FQDN resolving | `"cluster.local"` | |
| gio | 20157e8 | 2026-07-22 13:10:48 +0400 | [diff] [blame^] | 80 | | [controller.JCasC.authorizationStrategy](./values.yaml#L558) | string | Jenkins Config as Code Authorization Strategy-section | `"loggedInUsersCanDoAnything:\n allowAnonymousRead: false"` | |
| 81 | | [controller.JCasC.configMapAnnotations](./values.yaml#L563) | object | Annotations for the JCasC ConfigMap | `{}` | |
| 82 | | [controller.JCasC.configScripts](./values.yaml#L532) | object | List of Jenkins Config as Code scripts | `{}` | |
| 83 | | [controller.JCasC.configUrls](./values.yaml#L529) | list | Remote URLs for configuration files. | `[]` | |
| 84 | | [controller.JCasC.defaultConfig](./values.yaml#L523) | bool | Enables default Jenkins configuration via configuration as code plugin | `true` | |
| 85 | | [controller.JCasC.overwriteConfiguration](./values.yaml#L527) | bool | Whether Jenkins Config as Code should overwrite any existing configuration | `false` | |
| 86 | | [controller.JCasC.security](./values.yaml#L539) | object | Jenkins Config as Code security-section | `{"apiToken":{"creationOfLegacyTokenEnabled":false,"tokenGenerationOnCreationEnabled":false,"usageStatisticsEnabled":true}}` | |
| 87 | | [controller.JCasC.securityRealm](./values.yaml#L547) | string | Jenkins Config as Code Security Realm-section | `"local:\n allowsSignup: false\n enableCaptcha: false\n users:\n - id: \"${chart-admin-username}\"\n name: \"Jenkins Admin\"\n password: \"${chart-admin-password}\""` | |
| 88 | | [controller.additionalExistingSecrets](./values.yaml#L484) | list | List of additional existing secrets to mount | `[]` | |
| 89 | | [controller.additionalPlugins](./values.yaml#L434) | list | List of plugins to install in addition to those listed in controller.installPlugins | `[]` | |
| 90 | | [controller.additionalSecrets](./values.yaml#L493) | list | List of additional secrets to create and mount | `[]` | |
| 91 | | [controller.admin.createSecret](./values.yaml#L100) | bool | Create secret for admin user | `true` | |
| 92 | | [controller.admin.existingSecret](./values.yaml#L103) | string | The name of an existing secret containing the admin credentials | `""` | |
| 93 | | [controller.admin.password](./values.yaml#L90) | string | Admin password created as a secret if `controller.admin.createSecret` is true | `<random password>` | |
| 94 | | [controller.admin.passwordKey](./values.yaml#L95) | string | The key in the existing admin secret containing the password | `"jenkins-admin-password"` | |
| 95 | | [controller.admin.userKey](./values.yaml#L93) | string | The key in the existing admin secret containing the username | `"jenkins-admin-user"` | |
| 96 | | [controller.admin.username](./values.yaml#L87) | string | Admin username created as a secret if `controller.admin.createSecret` is true | `"admin"` | |
| 97 | | [controller.affinity](./values.yaml#L689) | object | Affinity settings | `{}` | |
| 98 | | [controller.agentListenerEnabled](./values.yaml#L343) | bool | Create Agent listener service | `true` | |
| 99 | | [controller.agentListenerExternalTrafficPolicy](./values.yaml#L353) | string | Traffic Policy of for the agentListener service | `nil` | |
| 100 | | [controller.agentListenerHostPort](./values.yaml#L347) | string | Host port to listen for agents | `nil` | |
| 101 | | [controller.agentListenerLoadBalancerIP](./values.yaml#L383) | string | Static IP for the agentListener LoadBalancer | `nil` | |
| 102 | | [controller.agentListenerLoadBalancerSourceRanges](./values.yaml#L355) | list | Allowed inbound IP for the agentListener service | `["0.0.0.0/0"]` | |
| 103 | | [controller.agentListenerNodePort](./values.yaml#L349) | string | Node port to listen for agents | `nil` | |
| 104 | | [controller.agentListenerPort](./values.yaml#L345) | int | Listening port for agents | `50000` | |
| 105 | | [controller.agentListenerServiceAnnotations](./values.yaml#L378) | object | Annotations for the agentListener service | `{}` | |
| 106 | | [controller.agentListenerServiceType](./values.yaml#L375) | string | Defines how to expose the agentListener service | `"ClusterIP"` | |
| 107 | | [controller.backendconfig.annotations](./values.yaml#L811) | object | backendconfig annotations | `{}` | |
| 108 | | [controller.backendconfig.apiVersion](./values.yaml#L805) | string | backendconfig API version | `"extensions/v1beta1"` | |
| 109 | | [controller.backendconfig.enabled](./values.yaml#L803) | bool | Enables backendconfig | `false` | |
| 110 | | [controller.backendconfig.labels](./values.yaml#L809) | object | backendconfig labels | `{}` | |
| 111 | | [controller.backendconfig.name](./values.yaml#L807) | string | backendconfig name | `nil` | |
| 112 | | [controller.backendconfig.spec](./values.yaml#L813) | object | backendconfig spec | `{}` | |
| 113 | | [controller.cloudName](./values.yaml#L512) | string | Name of default cloud configuration. | `"kubernetes"` | |
| 114 | | [controller.clusterIp](./values.yaml#L238) | string | k8s service clusterIP. Only used if serviceType is ClusterIP | `nil` | |
| 115 | | [controller.componentName](./values.yaml#L40) | string | Used for label app.kubernetes.io/component | `"jenkins-controller"` | |
| 116 | | [controller.containerEnv](./values.yaml#L165) | list | Environment variables for Jenkins Container | `[]` | |
| 117 | | [controller.containerEnvFrom](./values.yaml#L162) | list | Environment variable sources for Jenkins Container | `[]` | |
| 118 | | [controller.containerSecurityContext](./values.yaml#L223) | object | Allow controlling the securityContext for the jenkins container | `{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsUser":1000}` | |
| 119 | | [controller.csrf.defaultCrumbIssuer.enabled](./values.yaml#L364) | bool | Enable the default CSRF Crumb issuer | `true` | |
| 120 | | [controller.csrf.defaultCrumbIssuer.proxyCompatability](./values.yaml#L366) | bool | Enable proxy compatibility. This setting is ignored if you are not on the current LTS release and will be dropped with the next LTS. | `true` | |
| 121 | | [controller.customInitContainers](./values.yaml#L566) | list | Custom init-container specification in raw-yaml format | `[]` | |
| 122 | | [controller.customJenkinsLabels](./values.yaml#L78) | list | Append Jenkins labels to the controller | `[]` | |
| 123 | | [controller.disableRememberMe](./values.yaml#L69) | bool | Disable use of remember me | `false` | |
| 124 | | [controller.disabledAgentProtocols](./values.yaml#L358) | list | Disabled agent protocols | `["JNLP-connect","JNLP2-connect"]` | |
| 125 | | [controller.dnsConfig](./values.yaml#L709) | object | DNS config for the pod | `{}` | |
| 126 | | [controller.enableRawHtmlMarkupFormatter](./values.yaml#L454) | bool | Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter) | `false` | |
| 127 | | [controller.enableServiceLinks](./values.yaml#L139) | bool | | `false` | |
| 128 | | [controller.executorMode](./values.yaml#L75) | string | Sets the executor mode of the Jenkins node. Possible values are "NORMAL" or "EXCLUSIVE" | `"NORMAL"` | |
| 129 | | [controller.existingSecret](./values.yaml#L481) | string | | `nil` | |
| 130 | | [controller.extraPorts](./values.yaml#L413) | list | Optionally configure other ports to expose in the controller container | `[]` | |
| 131 | | [controller.fsGroup](./values.yaml#L201) | int | Deprecated in favor of `controller.podSecurityContextOverride`. uid that will be used for persistent volume. | `1000` | |
| 132 | | [controller.fsGroupChangePolicy](./values.yaml#L204) | string | | `"OnRootMismatch"` | |
| 133 | | [controller.googlePodMonitor.enabled](./values.yaml#L893) | bool | | `false` | |
| 134 | | [controller.googlePodMonitor.scrapeEndpoint](./values.yaml#L898) | string | | `"/prometheus"` | |
| 135 | | [controller.googlePodMonitor.scrapeInterval](./values.yaml#L896) | string | | `"60s"` | |
| 136 | | [controller.healthProbes](./values.yaml#L273) | bool | Enable Kubernetes Probes configuration configured in `controller.probes` | `true` | |
| 137 | | [controller.hostAliases](./values.yaml#L846) | list | Allows for adding entries to Pod /etc/hosts | `[]` | |
| 138 | | [controller.hostNetworking](./values.yaml#L80) | bool | | `false` | |
| 139 | | [controller.httpRoute.annotations](./values.yaml#L843) | object | HTTPRoute annotations | `{}` | |
| 140 | | [controller.httpRoute.apiVersion](./values.yaml#L830) | string | | `"gateway.networking.k8s.io/v1"` | |
| 141 | | [controller.httpRoute.enabled](./values.yaml#L829) | bool | | `false` | |
| 142 | | [controller.httpRoute.extraRules](./values.yaml#L841) | list | | `[]` | |
| 143 | | [controller.httpRoute.hostnames](./values.yaml#L839) | list | | `[]` | |
| 144 | | [controller.httpRoute.kind](./values.yaml#L831) | string | | `"HTTPRoute"` | |
| 145 | | [controller.httpRoute.parentRefs](./values.yaml#L833) | list | | `[]` | |
| 146 | | [controller.httpRoute.reuseIngressConfiguration](./values.yaml#L837) | bool | | `false` | |
| 147 | | [controller.httpsKeyStore.disableSecretMount](./values.yaml#L914) | bool | | `false` | |
| 148 | | [controller.httpsKeyStore.enable](./values.yaml#L905) | bool | Enables HTTPS keystore on jenkins controller | `false` | |
| 149 | | [controller.httpsKeyStore.fileName](./values.yaml#L922) | string | Jenkins keystore filename which will appear under controller.httpsKeyStore.path | `"keystore.jks"` | |
| 150 | | [controller.httpsKeyStore.httpPort](./values.yaml#L918) | int | HTTP Port that Jenkins should listen to along with HTTPS, it also serves as the liveness and readiness probes port. | `8081` | |
| 151 | | [controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretKey](./values.yaml#L913) | string | Name of the key in the secret that contains the JKS password | `"https-jks-password"` | |
| 152 | | [controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretName](./values.yaml#L911) | string | Name of the secret that contains the JKS password, if it is not in the same secret as the JKS file | `""` | |
| 153 | | [controller.httpsKeyStore.jenkinsHttpsJksSecretKey](./values.yaml#L909) | string | Name of the key in the secret that already has SSL keystore | `"jenkins-jks-file"` | |
| 154 | | [controller.httpsKeyStore.jenkinsHttpsJksSecretName](./values.yaml#L907) | string | Name of the secret that already has SSL keystore | `""` | |
| 155 | | [controller.httpsKeyStore.jenkinsKeyStoreBase64Encoded](./values.yaml#L927) | string | Base64 encoded Keystore content. Keystore must be converted to base64 then being pasted here | `nil` | |
| 156 | | [controller.httpsKeyStore.password](./values.yaml#L924) | string | Jenkins keystore password | `"password"` | |
| 157 | | [controller.httpsKeyStore.path](./values.yaml#L920) | string | Path of HTTPS keystore file | `"/var/jenkins_keystore"` | |
| 158 | | [controller.image.pullPolicy](./values.yaml#L53) | string | Controller image pull policy | `"Always"` | |
| 159 | | [controller.image.registry](./values.yaml#L43) | string | Controller image registry | `"docker.io"` | |
| 160 | | [controller.image.repository](./values.yaml#L45) | string | Controller image repository | `"jenkins/jenkins"` | |
| 161 | | [controller.image.tag](./values.yaml#L48) | string | Controller image tag override; i.e., tag: "2.440.1-jdk21" | `nil` | |
| 162 | | [controller.image.tagLabel](./values.yaml#L51) | string | Controller image tag label | `"jdk21"` | |
| 163 | | [controller.imagePullSecretName](./values.yaml#L59) | string | Controller image pull secret | `nil` | |
| 164 | | [controller.ingress.annotations](./values.yaml#L737) | object | Primary Ingress annotations | `{}` | |
| 165 | | [controller.ingress.apiVersion](./values.yaml#L733) | string | Primary Ingress API version | `"networking.k8s.io/v1"` | |
| 166 | | [controller.ingress.enabled](./values.yaml#L713) | bool | Enables the Primary ingress | `false` | |
| 167 | | [controller.ingress.hostName](./values.yaml#L753) | string | Primary Ingress hostname | `nil` | |
| 168 | | [controller.ingress.ingressClassName](./values.yaml#L745) | string | Primary Ingress ingressClassName | `nil` | |
| 169 | | [controller.ingress.labels](./values.yaml#L735) | object | Primary Ingress labels | `{}` | |
| 170 | | [controller.ingress.path](./values.yaml#L749) | string | Primary Ingress path | `nil` | |
| 171 | | [controller.ingress.pathType](./values.yaml#L728) | string | Primary Ingress rule pathType, choices are: Exact, ImplementationSpecific, Prefix | `"ImplementationSpecific"` | |
| 172 | | [controller.ingress.paths](./values.yaml#L717) | list | Override for the default Primary Ingress paths | `[]` | |
| 173 | | [controller.ingress.resourceRootUrl](./values.yaml#L755) | string | Primary Hostname to serve assets from | `nil` | |
| 174 | | [controller.ingress.tls](./values.yaml#L757) | list | Primary Ingress TLS configuration | `[]` | |
| 175 | | [controller.initConfigMap](./values.yaml#L471) | string | Name of the existing ConfigMap that contains init scripts | `nil` | |
| 176 | | [controller.initContainerEnv](./values.yaml#L156) | list | Environment variables for Init Container | `[]` | |
| 177 | | [controller.initContainerEnvFrom](./values.yaml#L152) | list | Environment variable sources for Init Container | `[]` | |
| 178 | | [controller.initContainerResources](./values.yaml#L143) | object | Resources allocation (Requests and Limits) for Init Container | `{}` | |
| 179 | | [controller.initScripts](./values.yaml#L467) | object | Map of groovy init scripts to be executed during Jenkins controller start | `{}` | |
| 180 | | [controller.initializeOnce](./values.yaml#L439) | bool | Initialize only on first installation. Ensures plugins do not get updated inadvertently. Requires `persistence.enabled` to be set to `true` | `false` | |
| 181 | | [controller.installLatestPlugins](./values.yaml#L428) | bool | Download the minimum required version or latest version of all dependencies | `true` | |
| 182 | | [controller.installLatestSpecifiedPlugins](./values.yaml#L431) | bool | Set to true to download the latest version of any plugin that is requested to have the latest version | `false` | |
| 183 | | [controller.installPlugins](./values.yaml#L420) | list | List of Jenkins plugins to install. If you don't want to install plugins, set it to `false` | `["kubernetes:4467.vf26561292824","workflow-aggregator:608.v67378e9d3db_1","git:5.10.1","configuration-as-code:2100.vb_fd699d2a_09c"]` | |
| 184 | | [controller.javaOpts](./values.yaml#L171) | string | Append to `JAVA_OPTS` env var | `nil` | |
| 185 | | [controller.jenkinsAdminEmail](./values.yaml#L105) | string | Email address for the administrator of the Jenkins instance | `nil` | |
| 186 | | [controller.jenkinsHome](./values.yaml#L110) | string | Custom Jenkins home path | `"/var/jenkins_home"` | |
| 187 | | [controller.jenkinsOpts](./values.yaml#L173) | string | Append to `JENKINS_OPTS` env var | `nil` | |
| 188 | | [controller.jenkinsRef](./values.yaml#L115) | string | Custom Jenkins reference path | `"/usr/share/jenkins/ref"` | |
| 189 | | [controller.jenkinsUriPrefix](./values.yaml#L188) | string | Root URI Jenkins will be served on | `nil` | |
| 190 | | [controller.jenkinsUrl](./values.yaml#L183) | string | Set Jenkins URL if you are not using the ingress definitions provided by the chart | `nil` | |
| 191 | | [controller.jenkinsUrlProtocol](./values.yaml#L180) | string | Set protocol for Jenkins URL; `https` if `controller.ingress.tls`, `http` otherwise | `nil` | |
| 192 | | [controller.jenkinsWar](./values.yaml#L118) | string | | `"/usr/share/jenkins/jenkins.war"` | |
| 193 | | [controller.jmxPort](./values.yaml#L410) | string | Open a port, for JMX stats | `nil` | |
| 194 | | [controller.legacyRemotingSecurityEnabled](./values.yaml#L386) | bool | Whether legacy remoting security should be enabled | `false` | |
| 195 | | [controller.lifecycle](./values.yaml#L61) | object | Lifecycle specification for controller-container | `{}` | |
| 196 | | [controller.loadBalancerIP](./values.yaml#L401) | string | Optionally assign a known public LB IP | `nil` | |
| 197 | | [controller.loadBalancerSourceRanges](./values.yaml#L397) | list | Allowed inbound IP addresses | `["0.0.0.0/0"]` | |
| 198 | | [controller.markupFormatter](./values.yaml#L458) | string | Yaml of the markup formatter to use | `"plainText"` | |
| 199 | | [controller.nodePort](./values.yaml#L244) | string | k8s node port. Only used if serviceType is NodePort | `nil` | |
| 200 | | [controller.nodeSelector](./values.yaml#L676) | object | Node labels for pod assignment | `{}` | |
| 201 | | [controller.numExecutors](./values.yaml#L72) | int | Set Number of executors | `0` | |
| 202 | | [controller.overwritePlugins](./values.yaml#L443) | bool | Overwrite installed plugins on start | `false` | |
| 203 | | [controller.overwritePluginsFromImage](./values.yaml#L447) | bool | Overwrite plugins that are already installed in the controller image | `true` | |
| 204 | | [controller.podAnnotations](./values.yaml#L697) | object | Annotations for controller pod | `{}` | |
| 205 | | [controller.podDisruptionBudget.annotations](./values.yaml#L337) | object | | `{}` | |
| 206 | | [controller.podDisruptionBudget.apiVersion](./values.yaml#L335) | string | Policy API version | `"policy/v1beta1"` | |
| 207 | | [controller.podDisruptionBudget.enabled](./values.yaml#L330) | bool | Enable Kubernetes Pod Disruption Budget configuration | `false` | |
| 208 | | [controller.podDisruptionBudget.labels](./values.yaml#L338) | object | | `{}` | |
| 209 | | [controller.podDisruptionBudget.maxUnavailable](./values.yaml#L340) | string | Number of pods that can be unavailable. Either an absolute number or a percentage | `"0"` | |
| 210 | | [controller.podLabels](./values.yaml#L266) | object | Custom Pod labels (an object with `label-key: label-value` pairs) | `{}` | |
| 211 | | [controller.podSecurityContextOverride](./values.yaml#L220) | string | Completely overwrites the contents of the pod security context, ignoring the values provided for `runAsUser`, `fsGroup`, and `securityContextCapabilities` | `nil` | |
| 212 | | [controller.priorityClassName](./values.yaml#L694) | string | The name of a `priorityClass` to apply to the controller pod | `nil` | |
| 213 | | [controller.probes.livenessProbe.failureThreshold](./values.yaml#L291) | int | Set the failure threshold for the liveness probe | `5` | |
| 214 | | [controller.probes.livenessProbe.httpGet.path](./values.yaml#L294) | string | Set the Pod's HTTP path for the liveness probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` | |
| 215 | | [controller.probes.livenessProbe.httpGet.port](./values.yaml#L296) | string | Set the Pod's HTTP port to use for the liveness probe | `"http"` | |
| 216 | | [controller.probes.livenessProbe.initialDelaySeconds](./values.yaml#L305) | string | Set the initial delay for the liveness probe in seconds | `nil` | |
| 217 | | [controller.probes.livenessProbe.periodSeconds](./values.yaml#L298) | int | Set the time interval between two liveness probes executions in seconds | `10` | |
| 218 | | [controller.probes.livenessProbe.timeoutSeconds](./values.yaml#L300) | int | Set the timeout for the liveness probe in seconds | `5` | |
| 219 | | [controller.probes.readinessProbe.failureThreshold](./values.yaml#L309) | int | Set the failure threshold for the readiness probe | `3` | |
| 220 | | [controller.probes.readinessProbe.httpGet.path](./values.yaml#L312) | string | Set the Pod's HTTP path for the liveness probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` | |
| 221 | | [controller.probes.readinessProbe.httpGet.port](./values.yaml#L314) | string | Set the Pod's HTTP port to use for the readiness probe | `"http"` | |
| 222 | | [controller.probes.readinessProbe.initialDelaySeconds](./values.yaml#L323) | string | Set the initial delay for the readiness probe in seconds | `nil` | |
| 223 | | [controller.probes.readinessProbe.periodSeconds](./values.yaml#L316) | int | Set the time interval between two readiness probes executions in seconds | `10` | |
| 224 | | [controller.probes.readinessProbe.timeoutSeconds](./values.yaml#L318) | int | Set the timeout for the readiness probe in seconds | `5` | |
| 225 | | [controller.probes.startupProbe.failureThreshold](./values.yaml#L278) | int | Set the failure threshold for the startup probe | `12` | |
| 226 | | [controller.probes.startupProbe.httpGet.path](./values.yaml#L281) | string | Set the Pod's HTTP path for the startup probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` | |
| 227 | | [controller.probes.startupProbe.httpGet.port](./values.yaml#L283) | string | Set the Pod's HTTP port to use for the startup probe | `"http"` | |
| 228 | | [controller.probes.startupProbe.periodSeconds](./values.yaml#L285) | int | Set the time interval between two startup probes executions in seconds | `10` | |
| 229 | | [controller.probes.startupProbe.timeoutSeconds](./values.yaml#L287) | int | Set the timeout for the startup probe in seconds | `5` | |
| 230 | | [controller.projectNamingStrategy](./values.yaml#L450) | string | | `"standard"` | |
| 231 | | [controller.prometheus.alertingRulesAdditionalLabels](./values.yaml#L879) | object | Additional labels to add to the PrometheusRule object | `{}` | |
| 232 | | [controller.prometheus.alertingrules](./values.yaml#L877) | list | Array of prometheus alerting rules | `[]` | |
| 233 | | [controller.prometheus.enabled](./values.yaml#L862) | bool | Enables prometheus service monitor | `false` | |
| 234 | | [controller.prometheus.metricRelabelings](./values.yaml#L889) | list | | `[]` | |
| 235 | | [controller.prometheus.prometheusRuleNamespace](./values.yaml#L881) | string | Set a custom namespace where to deploy PrometheusRule resource | `""` | |
| 236 | | [controller.prometheus.relabelings](./values.yaml#L887) | list | | `[]` | |
| 237 | | [controller.prometheus.scrapeEndpoint](./values.yaml#L872) | string | The endpoint prometheus should get metrics from | `"/prometheus"` | |
| 238 | | [controller.prometheus.scrapeInterval](./values.yaml#L868) | string | How often prometheus should scrape metrics | `"60s"` | |
| 239 | | [controller.prometheus.serviceMonitorAdditionalLabels](./values.yaml#L864) | object | Additional labels to add to the service monitor object | `{}` | |
| 240 | | [controller.prometheus.serviceMonitorNamespace](./values.yaml#L866) | string | Set a custom namespace where to deploy ServiceMonitor resource | `nil` | |
| 241 | | [controller.publishNotReadyAddresses](./values.yaml#L252) | string | | `nil` | |
| 242 | | [controller.replicas](./values.yaml#L56) | int | Number of replicas. Max 1. Can be set to 0 for maintenance scenarios. | `1` | |
| 243 | | [controller.resources](./values.yaml#L124) | object | Resource allocation (Requests and Limits) | `{"limits":{"cpu":"2000m","memory":"4096Mi"},"requests":{"cpu":"50m","memory":"256Mi"}}` | |
| 244 | | [controller.route.annotations](./values.yaml#L822) | object | Route annotations | `{}` | |
| 245 | | [controller.route.enabled](./values.yaml#L818) | bool | Enables openshift route | `false` | |
| 246 | | [controller.route.labels](./values.yaml#L820) | object | Route labels | `{}` | |
| 247 | | [controller.route.path](./values.yaml#L824) | string | Route path | `nil` | |
| 248 | | [controller.runAsUser](./values.yaml#L198) | int | Deprecated in favor of `controller.podSecurityContextOverride`. uid that jenkins runs with. | `1000` | |
| 249 | | [controller.schedulerName](./values.yaml#L672) | string | Name of the Kubernetes scheduler to use | `""` | |
| 250 | | [controller.scriptApproval](./values.yaml#L462) | list | List of groovy functions to approve | `[]` | |
| 251 | | [controller.secondaryingress.annotations](./values.yaml#L782) | object | Secondary Ingress annotations | `{}` | |
| 252 | | [controller.secondaryingress.apiVersion](./values.yaml#L778) | string | Secondary Ingress API version | `"networking.k8s.io/v1"` | |
| 253 | | [controller.secondaryingress.enabled](./values.yaml#L768) | bool | Enables the Secondary Ingress | `false` | |
| 254 | | [controller.secondaryingress.hostName](./values.yaml#L791) | string | Secondary Ingress hostname | `nil` | |
| 255 | | [controller.secondaryingress.ingressClassName](./values.yaml#L788) | string | Secondary Ingress ingressClassName | `nil` | |
| 256 | | [controller.secondaryingress.labels](./values.yaml#L780) | object | Secondary Ingress labels | `{}` | |
| 257 | | [controller.secondaryingress.pathType](./values.yaml#L774) | string | Secondary Ingress rule pathType, choices are: Exact, ImplementationSpecific, Prefix | `"ImplementationSpecific"` | |
| 258 | | [controller.secondaryingress.paths](./values.yaml#L772) | list | Secondary Ingress paths | `[]` | |
| 259 | | [controller.secondaryingress.tls](./values.yaml#L793) | string | Secondary Ingress TLS configuration | `nil` | |
| 260 | | [controller.secretClaims](./values.yaml#L505) | list | List of `SecretClaim` resources to create | `[]` | |
| 261 | | [controller.securityContextCapabilities](./values.yaml#L210) | object | | `{}` | |
| 262 | | [controller.serviceAnnotations](./values.yaml#L255) | object | Jenkins controller service annotations | `{}` | |
| 263 | | [controller.serviceEnabled](./values.yaml#L230) | bool | enable or disable the controller k8s service | `true` | |
| 264 | | [controller.serviceExternalTrafficPolicy](./values.yaml#L248) | string | | `nil` | |
| 265 | | [controller.serviceLabels](./values.yaml#L261) | object | Labels for the Jenkins controller-service | `{}` | |
| 266 | | [controller.servicePort](./values.yaml#L240) | int | k8s service port | `8080` | |
| 267 | | [controller.serviceType](./values.yaml#L235) | string | k8s service type | `"ClusterIP"` | |
| 268 | | [controller.shareProcessNamespace](./values.yaml#L133) | bool | | `false` | |
| 269 | | [controller.sidecars.additionalSidecarContainers](./values.yaml#L654) | list | Configures additional sidecar container(s) for the Jenkins controller | `[]` | |
| 270 | | [controller.sidecars.configAutoReload.additionalVolumeMounts](./values.yaml#L599) | list | Enables additional volume mounts for the config auto-reload container | `[]` | |
| 271 | | [controller.sidecars.configAutoReload.containerSecurityContext](./values.yaml#L649) | object | Enable container security context | `{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true}` | |
| 272 | | [controller.sidecars.configAutoReload.enabled](./values.yaml#L579) | bool | Enable Jenkins Config as Code auto-reload | `true` | |
| 273 | | [controller.sidecars.configAutoReload.env](./values.yaml#L631) | list | Environment variables for the Jenkins Config as Code auto-reload container | `[]` | |
| 274 | | [controller.sidecars.configAutoReload.envFrom](./values.yaml#L629) | list | Environment variable sources for the Jenkins Config as Code auto-reload container | `[]` | |
| 275 | | [controller.sidecars.configAutoReload.folder](./values.yaml#L642) | string | | `"/var/jenkins_home/casc_configs"` | |
| 276 | | [controller.sidecars.configAutoReload.healthPort](./values.yaml#L589) | int | Port for sidecar health probes | `8060` | |
| 277 | | [controller.sidecars.configAutoReload.image.registry](./values.yaml#L582) | string | Registry for the image that triggers the reload | `"docker.io"` | |
| 278 | | [controller.sidecars.configAutoReload.image.repository](./values.yaml#L584) | string | Repository of the image that triggers the reload | `"kiwigrid/k8s-sidecar"` | |
| 279 | | [controller.sidecars.configAutoReload.image.tag](./values.yaml#L586) | string | Tag for the image that triggers the reload | `"2.8.1"` | |
| 280 | | [controller.sidecars.configAutoReload.imagePullPolicy](./values.yaml#L587) | string | | `"IfNotPresent"` | |
| 281 | | [controller.sidecars.configAutoReload.logging](./values.yaml#L606) | object | Config auto-reload logging settings | `{"configuration":{"backupCount":3,"formatter":"JSON","logLevel":"INFO","logToConsole":true,"logToFile":false,"maxBytes":1024,"override":false}}` | |
| 282 | | [controller.sidecars.configAutoReload.logging.configuration.override](./values.yaml#L610) | bool | Enables custom log config utilizing using the settings below. | `false` | |
| 283 | | [controller.sidecars.configAutoReload.reqRetryConnect](./values.yaml#L624) | int | How many connection-related errors to retry on | `10` | |
| 284 | | [controller.sidecars.configAutoReload.resources](./values.yaml#L590) | object | | `{}` | |
| 285 | | [controller.sidecars.configAutoReload.scheme](./values.yaml#L619) | string | The scheme to use when connecting to the Jenkins configuration as code endpoint | `"http"` | |
| 286 | | [controller.sidecars.configAutoReload.skipTlsVerify](./values.yaml#L621) | bool | Skip TLS verification when connecting to the Jenkins configuration as code endpoint | `false` | |
| 287 | | [controller.sidecars.configAutoReload.sleepTime](./values.yaml#L626) | string | How many seconds to wait before updating config-maps/secrets (sets METHOD=SLEEP on the sidecar) | `nil` | |
| 288 | | [controller.sidecars.configAutoReload.sshTcpPort](./values.yaml#L640) | int | | `1044` | |
| 289 | | [controller.statefulSetAnnotations](./values.yaml#L699) | object | Annotations for controller StatefulSet | `{}` | |
| 290 | | [controller.statefulSetLabels](./values.yaml#L257) | object | Jenkins controller custom labels for the StatefulSet | `{}` | |
| 291 | | [controller.targetPort](./values.yaml#L242) | int | k8s target port | `8080` | |
| 292 | | [controller.terminationGracePeriodSeconds](./values.yaml#L682) | string | Set TerminationGracePeriodSeconds | `nil` | |
| 293 | | [controller.terminationMessagePath](./values.yaml#L684) | string | Set the termination message path | `nil` | |
| 294 | | [controller.terminationMessagePolicy](./values.yaml#L686) | string | Set the termination message policy | `nil` | |
| 295 | | [controller.testEnabled](./values.yaml#L901) | bool | Can be used to disable rendering controller test resources when using helm template | `true` | |
| 296 | | [controller.tolerations](./values.yaml#L680) | list | Toleration labels for pod assignment | `[]` | |
| 297 | | [controller.topologySpreadConstraints](./values.yaml#L706) | list | Topology spread constraints | `[]` | |
| 298 | | [controller.updateStrategy](./values.yaml#L703) | object | Update strategy for StatefulSet | `{}` | |
| 299 | | [controller.usePodSecurityContext](./values.yaml#L191) | bool | Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set) | `true` | |
| Giorgi Lekveishvili | 3598266 | 2024-04-05 13:05:40 +0400 | [diff] [blame] | 300 | | [credentialsId](./values.yaml#L27) | string | The Jenkins credentials to access the Kubernetes API server. For the default cluster it is not needed. | `nil` | |
| gio | 20157e8 | 2026-07-22 13:10:48 +0400 | [diff] [blame^] | 301 | | [extraLabels](./values.yaml#L33) | object | Configures extra labels for the agent all objects | `{}` | |
| 302 | | [extraObjects](./values.yaml#L36) | string | Configures extra manifests | `nil` | |
| Giorgi Lekveishvili | 3598266 | 2024-04-05 13:05:40 +0400 | [diff] [blame] | 303 | | [fullnameOverride](./values.yaml#L13) | string | Override the full resource names | `jenkins-(release-name)` or `jenkins` if the release-name is `jenkins` | |
| gio | 20157e8 | 2026-07-22 13:10:48 +0400 | [diff] [blame^] | 304 | | [helmtest.bats.image.registry](./values.yaml#L1433) | string | Registry of the image used to test the framework | `"docker.io"` | |
| 305 | | [helmtest.bats.image.repository](./values.yaml#L1435) | string | Repository of the image used to test the framework | `"bats/bats"` | |
| 306 | | [helmtest.bats.image.tag](./values.yaml#L1437) | string | Tag of the image to test the framework | `"1.13.0"` | |
| Giorgi Lekveishvili | 3598266 | 2024-04-05 13:05:40 +0400 | [diff] [blame] | 307 | | [kubernetesURL](./values.yaml#L24) | string | The URL of the Kubernetes API server | `"https://kubernetes.default"` | |
| 308 | | [nameOverride](./values.yaml#L10) | string | Override the resource name prefix | `Chart.Name` | |
| 309 | | [namespaceOverride](./values.yaml#L16) | string | Override the deployment namespace | `Release.Namespace` | |
| gio | 20157e8 | 2026-07-22 13:10:48 +0400 | [diff] [blame^] | 310 | | [networkPolicy.apiVersion](./values.yaml#L1356) | string | NetworkPolicy ApiVersion | `"networking.k8s.io/v1"` | |
| 311 | | [networkPolicy.enabled](./values.yaml#L1351) | bool | Enable the creation of NetworkPolicy resources | `false` | |
| 312 | | [networkPolicy.externalAgents.except](./values.yaml#L1371) | list | A list of IP sub-ranges to be excluded from the allowlisted IP range | `[]` | |
| 313 | | [networkPolicy.externalAgents.ipCIDR](./values.yaml#L1369) | string | The IP range from which external agents are allowed to connect to controller, i.e., 172.17.0.0/16 | `nil` | |
| 314 | | [networkPolicy.internalAgents.allowed](./values.yaml#L1360) | bool | Allow internal agents (from the same cluster) to connect to controller. Agent pods will be filtered based on PodLabels | `true` | |
| 315 | | [networkPolicy.internalAgents.namespaceLabels](./values.yaml#L1364) | object | A map of labels (keys/values) that agents namespaces must have to be able to connect to controller | `{}` | |
| 316 | | [networkPolicy.internalAgents.podLabels](./values.yaml#L1362) | object | A map of labels (keys/values) that agent pods must have to be able to connect to controller | `{}` | |
| 317 | | [persistence.accessMode](./values.yaml#L1326) | string | The PVC access mode | `"ReadWriteOnce"` | |
| 318 | | [persistence.annotations](./values.yaml#L1322) | object | Annotations for the PVC | `{}` | |
| 319 | | [persistence.dataSource](./values.yaml#L1332) | object | Existing data source to clone PVC from | `{}` | |
| 320 | | [persistence.enabled](./values.yaml#L1306) | bool | Enable the use of a Jenkins PVC | `true` | |
| 321 | | [persistence.existingClaim](./values.yaml#L1312) | string | Provide the name of a PVC | `nil` | |
| 322 | | [persistence.labels](./values.yaml#L1324) | object | Labels for the PVC | `{}` | |
| 323 | | [persistence.mounts](./values.yaml#L1344) | list | Additional mounts | `[]` | |
| 324 | | [persistence.size](./values.yaml#L1328) | string | The size of the PVC | `"8Gi"` | |
| 325 | | [persistence.storageClass](./values.yaml#L1320) | string | Storage class for the PVC | `nil` | |
| 326 | | [persistence.subPath](./values.yaml#L1337) | string | SubPath for jenkins-home mount | `nil` | |
| 327 | | [persistence.volumes](./values.yaml#L1339) | list | Additional volumes | `[]` | |
| 328 | | [rbac.create](./values.yaml#L1378) | bool | Whether RBAC resources are created | `true` | |
| 329 | | [rbac.readSecrets](./values.yaml#L1380) | bool | Whether the Jenkins service account should be able to read Kubernetes secrets | `false` | |
| 330 | | [rbac.useOpenShiftNonRootSCC](./values.yaml#L1382) | bool | Whether the Jenkins service account should be able to use the OpenShift "nonroot" Security Context Constraints | `false` | |
| Giorgi Lekveishvili | 3598266 | 2024-04-05 13:05:40 +0400 | [diff] [blame] | 331 | | [renderHelmLabels](./values.yaml#L30) | bool | Enables rendering of the helm.sh/chart label to the annotations | `true` | |
| gio | 20157e8 | 2026-07-22 13:10:48 +0400 | [diff] [blame^] | 332 | | [serviceAccount.annotations](./values.yaml#L1392) | object | Configures annotations for the ServiceAccount | `{}` | |
| 333 | | [serviceAccount.automountServiceAccountToken](./values.yaml#L1398) | bool | Auto-mount ServiceAccount token | `true` | |
| 334 | | [serviceAccount.create](./values.yaml#L1386) | bool | Configures if a ServiceAccount with this name should be created | `true` | |
| 335 | | [serviceAccount.extraLabels](./values.yaml#L1394) | object | Configures extra labels for the ServiceAccount | `{}` | |
| 336 | | [serviceAccount.imagePullSecretName](./values.yaml#L1396) | string | Controller ServiceAccount image pull secret | `nil` | |
| 337 | | [serviceAccount.name](./values.yaml#L1390) | string | | `nil` | |
| 338 | | [serviceAccountAgent.annotations](./values.yaml#L1408) | object | Configures annotations for the agent ServiceAccount | `{}` | |
| 339 | | [serviceAccountAgent.automountServiceAccountToken](./values.yaml#L1414) | bool | Auto-mount ServiceAccount token | `true` | |
| 340 | | [serviceAccountAgent.create](./values.yaml#L1402) | bool | Configures if an agent ServiceAccount should be created | `false` | |
| 341 | | [serviceAccountAgent.extraLabels](./values.yaml#L1410) | object | Configures extra labels for the agent ServiceAccount | `{}` | |
| 342 | | [serviceAccountAgent.imagePullSecretName](./values.yaml#L1412) | string | Agent ServiceAccount image pull secret | `nil` | |
| 343 | | [serviceAccountAgent.name](./values.yaml#L1406) | string | The name of the agent ServiceAccount to be used by access-controlled resources | `nil` | |