From a85074be485bf311bcb1be24c476fe601707a16b Mon Sep 17 00:00:00 2001 From: jenkins-x-bot Date: Thu, 12 Dec 2024 16:34:19 +0000 Subject: [PATCH] chore: release 1.22.0 --- changelog.md | 6 + charts/lighthouse/Chart.yaml | 4 +- charts/lighthouse/README.md | 334 ++++++++++++------------ charts/lighthouse/lighthouse-1.22.0.tgz | Bin 0 -> 16605 bytes charts/lighthouse/values.yaml | 161 +----------- 5 files changed, 177 insertions(+), 328 deletions(-) create mode 100644 changelog.md create mode 100644 charts/lighthouse/lighthouse-1.22.0.tgz diff --git a/changelog.md b/changelog.md new file mode 100644 index 000000000..21a575f31 --- /dev/null +++ b/changelog.md @@ -0,0 +1,6 @@ + +## Changes in version 1.22.0 + +### New Features + +* adding support for securityContext in helm chart (MÃ¥rten Svantesson) diff --git a/charts/lighthouse/Chart.yaml b/charts/lighthouse/Chart.yaml index edc18364e..18dc571a1 100644 --- a/charts/lighthouse/Chart.yaml +++ b/charts/lighthouse/Chart.yaml @@ -3,6 +3,6 @@ description: | This chart bootstraps installation of [Lighthouse](https://github.com/jenkins-x/lighthouse). icon: https://raw.githubusercontent.com/jenkins-x/jenkins-x-website/master/images/logo/jenkinsx-icon-color.svg name: lighthouse -version: 0.1.0-SNAPSHOT +version: 1.22.0 home: https://github.com/jenkins-x/lighthouse - +appVersion: 1.22.0 diff --git a/charts/lighthouse/README.md b/charts/lighthouse/README.md index 02adf02a9..1dcf579ed 100644 --- a/charts/lighthouse/README.md +++ b/charts/lighthouse/README.md @@ -42,172 +42,172 @@ helm uninstall my-lighthouse --namespace lighthouse ## Values -| Key | Type | Description | Default | -|-----------------------------------------------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| -| `cluster.crds.create` | bool | Create custom resource definitions | `true` | -| `configMaps.config` | string | Raw `config.yaml` content | `nil` | -| `configMaps.configUpdater` | object | Settings used to configure the `config-updater` plugin | `{"orgAndRepo":"","path":""}` | -| `configMaps.create` | bool | Enables creation of `config.yaml` and `plugins.yaml` config maps | `false` | -| `configMaps.plugins` | string | Raw `plugins.yaml` content | `nil` | -| `engines.jenkins` | bool | Enables the Jenkins engine | `false` | -| `engines.jx` | bool | Enables the jx engine | `true` | -| `engines.tekton` | bool | Enables the tekton engine | `false` | -| `env` | object | Environment variables | `{"JX_DEFAULT_IMAGE":""}` | -| `externalPlugins[0].name` | string | | `"cd-indicators"` | -| `externalPlugins[0].requiredResources[0].kind` | string | | `"Service"` | -| `externalPlugins[0].requiredResources[0].name` | string | | `"cd-indicators"` | -| `externalPlugins[0].requiredResources[0].namespace` | string | | `"jx"` | -| `externalPlugins[1].name` | string | | `"lighthouse-webui-plugin"` | -| `externalPlugins[1].requiredResources[0].kind` | string | | `"Service"` | -| `externalPlugins[1].requiredResources[0].name` | string | | `"lighthouse-webui-plugin"` | -| `externalPlugins[1].requiredResources[0].namespace` | string | | `"jx"` | -| `foghorn.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the foghorn pods | `{}` | -| `foghorn.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the foghorn containers | `{}` | -| `foghorn.image.pullPolicy` | string | Template for computing the foghorn controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `foghorn.image.repository` | string | Template for computing the foghorn controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-foghorn"` | -| `foghorn.image.tag` | string | Template for computing the foghorn controller docker image tag | `"{{ .Values.image.tag }}"` | -| `foghorn.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `foghorn.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the foghorn pods | `{}` | -| `foghorn.replicaCount` | int | Number of replicas | `1` | -| `foghorn.resources.limits` | object | Resource limits applied to the foghorn pods | `{"cpu":"100m","memory":"256Mi"}` | -| `foghorn.resources.requests` | object | Resource requests applied to the foghorn pods | `{"cpu":"80m","memory":"128Mi"}` | -| `foghorn.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the foghorn pods | `{}` | -| `foghorn.terminationGracePeriodSeconds` | int | Termination grace period for foghorn pods | `180` | -| `foghorn.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the foghorn pods | `[]` | -| `gcJobs.backoffLimit` | int | Drives the job's backoff limit | `6` | -| `gcJobs.concurrencyPolicy` | string | Drives the job's concurrency policy | `"Forbid"` | -| `gcJobs.failedJobsHistoryLimit` | int | Drives the failed jobs history limit | `1` | -| `gcJobs.image.pullPolicy` | string | Template for computing the gc job docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `gcJobs.image.repository` | string | Template for computing the gc job docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-gc-jobs"` | -| `gcJobs.image.tag` | string | Template for computing the gc job docker image tag | `"{{ .Values.image.tag }}"` | -| `gcJobs.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `gcJobs.maxAge` | string | Max age from which `LighthouseJob`s will be deleted | `"168h"` | -| `gcJobs.schedule` | string | Cron expression to periodically delete `LighthouseJob`s | `"0/30 * * * *"` | -| `gcJobs.successfulJobsHistoryLimit` | int | Drives the successful jobs history limit | `3` | -| `git.kind` | string | Git SCM provider (`github`, `gitlab`, `stash`) | `"github"` | -| `git.server` | string | Git server URL | `""` | -| `githubApp.enabled` | bool | Enables GitHub app authentication | `false` | -| `githubApp.username` | string | GitHub app user name | `"jenkins-x[bot]"` | -| `hmacSecretName` | string | Existing hmac secret to use for webhooks | `""` | -| `hmacToken` | string | Secret used for webhooks | `""` | -| `hmacTokenEnabled` | bool | Enables the use of a hmac token. This should always be enabled if possible - though some git providers don't support it such as bitbucket cloud | `true` | -| `hmacTokenVolumeMount` | object | Mount hmac token as a volume instead of using an environment variable Secret reference | `{"enabled":false}` | -| `image.parentRepository` | string | Docker registry to pull images from | `"ghcr.io/jenkins-x"` | -| `image.pullPolicy` | string | Image pull policy | `"IfNotPresent"` | -| `image.tag` | string | Docker images tag the following tag is latest on the main branch, it's a specific version on a git tag | `"latest"` | -| `jenkinscontroller.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the jenkins controller pods | `{}` | -| `jenkinscontroller.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the jenkins controller containers | `{}` | -| `jenkinscontroller.image.pullPolicy` | string | Template for computing the jenkins controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `jenkinscontroller.image.repository` | string | Template for computing the Jenkins controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-jenkins-controller"` | -| `jenkinscontroller.image.tag` | string | Template for computing the jenkins controller docker image tag | `"{{ .Values.image.tag }}"` | -| `jenkinscontroller.jenkinsToken` | string | The token for authenticating the Jenkins user | `nil` | -| `jenkinscontroller.jenkinsURL` | string | The URL of the Jenkins instance | `nil` | -| `jenkinscontroller.jenkinsUser` | string | The username for the Jenkins user | `nil` | -| `jenkinscontroller.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `jenkinscontroller.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the jenkins controller pods | `{}` | -| `jenkinscontroller.podAnnotations` | object | Annotations applied to the jenkins controller pods | `{}` | -| `jenkinscontroller.resources.limits` | object | Resource limits applied to the jenkins controller pods | `{"cpu":"100m","memory":"256Mi"}` | -| `jenkinscontroller.resources.requests` | object | Resource requests applied to the jenkins controller pods | `{"cpu":"80m","memory":"128Mi"}` | -| `jenkinscontroller.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the jenkins controller pods | `{}` | -| `jenkinscontroller.service` | object | Service settings for the jenkins controller | `{"annotations":{}}` | -| `jenkinscontroller.terminationGracePeriodSeconds` | int | Termination grace period for jenkins controller pods | `180` | -| `jenkinscontroller.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the jenkins controller pods | `[]` | -| `keeper.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the keeper pods | `{}` | -| `keeper.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the keeper containers | `{}` | -| `keeper.datadog.enabled` | string | Enables datadog | `"true"` | -| `keeper.env` | object | Lets you define keeper specific environment variables | `{}` | -| `keeper.image.pullPolicy` | string | Template for computing the keeper controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `keeper.image.repository` | string | Template for computing the keeper controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-keeper"` | -| `keeper.image.tag` | string | Template for computing the keeper controller docker image tag | `"{{ .Values.image.tag }}"` | -| `keeper.livenessProbe` | object | Liveness probe configuration | `{"initialDelaySeconds":120,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | -| `keeper.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `keeper.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the keeper pods | `{}` | -| `keeper.podAnnotations` | object | Annotations applied to the keeper pods | `{}` | -| `keeper.probe` | object | Liveness and readiness probes settings | `{"path":"/"}` | -| `keeper.readinessProbe` | object | Readiness probe configuration | `{"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | -| `keeper.replicaCount` | int | Number of replicas | `1` | -| `keeper.resources.limits` | object | Resource limits applied to the keeper pods | `{"cpu":"400m","memory":"512Mi"}` | -| `keeper.resources.requests` | object | Resource requests applied to the keeper pods | `{"cpu":"100m","memory":"128Mi"}` | -| `keeper.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the keeper pods | `{}` | -| `keeper.service` | object | Service settings for the keeper controller | `{"externalPort":80,"internalPort":8888,"type":"ClusterIP"}` | -| `keeper.statusContextLabel` | string | Label used to report status to git provider | `"Lighthouse Merge Status"` | -| `keeper.terminationGracePeriodSeconds` | int | Termination grace period for keeper pods | `30` | -| `keeper.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the keeper pods | `[]` | -| `lighthouseJobNamespace` | string | Namespace where `LighthouseJob`s and `Pod`s are created | Deployment namespace | -| `logFormat` | string | Log format either json or stackdriver | `"json"` | -| `logService` | string | The name of the service registered with logging | `""` | -| `logStackSkip` | string | Comma separated stack frames to skip from the log | `""` | -| `oauthSecretName` | string | Existing Git token secret | `""` | -| `oauthToken` | string | Git token (used when GitHub app authentication is not enabled) | `""` | -| `oauthTokenVolumeMount` | object | Mount Git token as a volume instead of using an environment variable Secret reference (used when GitHub app authentication is not enabled) | `{"enabled":false}` | -| `poller.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the poller pods | `{}` | -| `poller.contextMatchPattern` | string | Regex pattern to use to match commit status context | `""` | -| `poller.datadog.enabled` | string | Enables datadog | `"true"` | -| `poller.enabled` | bool | Whether to enable or disable the poller component | `false` | -| `poller.env` | object | Lets you define poller specific environment variables | `{"POLL_HOOK_ENDPOINT":"http://hook/hook/poll","POLL_PERIOD":"20s"}` | -| `poller.image.pullPolicy` | string | Template for computing the poller controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `poller.image.repository` | string | Template for computing the poller controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-poller"` | -| `poller.image.tag` | string | Template for computing the poller controller docker image tag | `"{{ .Values.image.tag }}"` | -| `poller.internalPort` | int | | `8888` | -| `poller.livenessProbe` | object | Liveness probe configuration | `{"initialDelaySeconds":120,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | -| `poller.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `poller.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the poller pods | `{}` | -| `poller.podAnnotations` | object | Annotations applied to the poller pods | `{}` | -| `poller.probe` | object | Liveness and readiness probes settings | `{"path":"/"}` | -| `poller.readinessProbe` | object | Readiness probe configuration | `{"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | -| `poller.replicaCount` | int | Number of replicas | `1` | -| `poller.requireReleaseSuccess` | bool | Keep polling releases until the most recent commit status is successful | `false` | -| `poller.resources.limits` | object | Resource limits applied to the poller pods | `{"cpu":"400m","memory":"512Mi"}` | -| `poller.resources.requests` | object | Resource requests applied to the poller pods | `{"cpu":"100m","memory":"128Mi"}` | -| `poller.terminationGracePeriodSeconds` | int | Termination grace period for poller pods | `30` | -| `poller.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the poller pods | `[]` | -| `scope` | string | limit permissions to namespace privileges | `"cluster"` | -| `tektoncontroller.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the tekton controller pods | `{}` | -| `tektoncontroller.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the tekton controller containers | `{}` | -| `tektoncontroller.dashboardTemplate` | string | Go template expression for URLs in the dashboard if not using Tekton dashboard | `""` | -| `tektoncontroller.dashboardURL` | string | the dashboard URL (e.g. Tekton dashboard) | `""` | -| `tektoncontroller.enableRerunStatusUpdate` | bool | Enable updating the status at the git provider when PipelineRuns are rerun | `false` | -| `tektoncontroller.image.pullPolicy` | string | Template for computing the tekton controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `tektoncontroller.image.repository` | string | Template for computing the tekton controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-tekton-controller"` | -| `tektoncontroller.image.tag` | string | Template for computing the tekton controller docker image tag | `"{{ .Values.image.tag }}"` | -| `tektoncontroller.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `tektoncontroller.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the tekton controller pods | `{}` | -| `tektoncontroller.podAnnotations` | object | Annotations applied to the tekton controller pods | `{}` | -| `tektoncontroller.replicaCount` | int | Number of replicas | `1` | -| `tektoncontroller.resources.limits` | object | Resource limits applied to the tekton controller pods | `{"cpu":"100m","memory":"256Mi"}` | -| `tektoncontroller.resources.requests` | object | Resource requests applied to the tekton controller pods | `{"cpu":"80m","memory":"128Mi"}` | -| `tektoncontroller.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the tekton controller pods | `{}` | -| `tektoncontroller.service` | object | Service settings for the tekton controller | `{"annotations":{}}` | -| `tektoncontroller.terminationGracePeriodSeconds` | int | Termination grace period for tekton controller pods | `180` | -| `tektoncontroller.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the tekton controller pods | `[]` | -| `user` | string | Git user name (used when GitHub app authentication is not enabled) | `""` | -| `webhooks.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the webhooks pods | `{}` | -| `webhooks.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the webhooks containers | `{}` | -| `webhooks.customDeploymentTriggerCommand` | string | deployments can configure the ability to allow custom lighthouse triggers using their own unique chat prefix, for example extending the default `/test` trigger prefix let them specify `customDeploymentTriggerPrefix: foo` which means they can also use their own custom trigger /foo mycoolthing | `""` | -| `webhooks.image.pullPolicy` | string | Template for computing the webhooks controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | -| `webhooks.image.repository` | string | Template for computing the webhooks controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-webhooks"` | -| `webhooks.image.tag` | string | Template for computing the webhooks controller docker image tag | `"{{ .Values.image.tag }}"` | -| `webhooks.ingress.annotations` | object | Webhooks ingress annotations | `{}` | -| `webhooks.ingress.enabled` | bool | Enable webhooks ingress | `false` | -| `webhooks.ingress.hosts` | list | Webhooks ingress host names | `[]` | -| `webhooks.ingress.ingressClassName` | string | Webhooks ingress ingressClassName | `nil` | -| `webhooks.ingress.tls.enabled` | bool | Enable webhooks ingress tls | `false` | -| `webhooks.ingress.tls.secretName` | string | Specify webhooks ingress tls secretName | `""` | -| `webhooks.labels` | object | allow optional labels to be added to the webhook deployment | `{}` | -| `webhooks.livenessProbe` | object | Liveness probe configuration | `{"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | -| `webhooks.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | -| `webhooks.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the webhooks pods | `{}` | -| `webhooks.podAnnotations` | object | Annotations applied to the webhooks pods | `{}` | -| `webhooks.podLabels` | object | | `{}` | -| `webhooks.probe` | object | Liveness and readiness probes settings | `{"path":"/"}` | -| `webhooks.readinessProbe` | object | Readiness probe configuration | `{"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | -| `webhooks.replicaCount` | int | Number of replicas | `1` | -| `webhooks.resources.limits` | object | Resource limits applied to the webhooks pods | `{"cpu":"100m","memory":"512Mi"}` | -| `webhooks.resources.requests` | object | Resource requests applied to the webhooks pods | `{"cpu":"80m","memory":"128Mi"}` | -| `webhooks.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the webhooks pods | `{}` | -| `webhooks.service` | object | Service settings for the webhooks controller | `{"annotations":{},"externalPort":80,"internalPort":8080,"type":"ClusterIP"}` | -| `webhooks.serviceName` | string | Allows overriding the service name, this is here for compatibility reasons, regular users should clear this out | `"hook"` | -| `webhooks.terminationGracePeriodSeconds` | int | Termination grace period for webhooks pods | `180` | -| `webhooks.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the webhooks pods | `[]` | +| Key | Type | Description | Default | +|-----|------|-------------|---------| +| `cluster.crds.create` | bool | Create custom resource definitions | `true` | +| `configMaps.config` | string | Raw `config.yaml` content | `nil` | +| `configMaps.configUpdater` | object | Settings used to configure the `config-updater` plugin | `{"orgAndRepo":"","path":""}` | +| `configMaps.create` | bool | Enables creation of `config.yaml` and `plugins.yaml` config maps | `false` | +| `configMaps.plugins` | string | Raw `plugins.yaml` content | `nil` | +| `engines.jenkins` | bool | Enables the Jenkins engine | `false` | +| `engines.jx` | bool | Enables the jx engine | `true` | +| `engines.tekton` | bool | Enables the tekton engine | `false` | +| `env` | object | Environment variables | `{"JX_DEFAULT_IMAGE":""}` | +| `externalPlugins[0].name` | string | | `"cd-indicators"` | +| `externalPlugins[0].requiredResources[0].kind` | string | | `"Service"` | +| `externalPlugins[0].requiredResources[0].name` | string | | `"cd-indicators"` | +| `externalPlugins[0].requiredResources[0].namespace` | string | | `"jx"` | +| `externalPlugins[1].name` | string | | `"lighthouse-webui-plugin"` | +| `externalPlugins[1].requiredResources[0].kind` | string | | `"Service"` | +| `externalPlugins[1].requiredResources[0].name` | string | | `"lighthouse-webui-plugin"` | +| `externalPlugins[1].requiredResources[0].namespace` | string | | `"jx"` | +| `foghorn.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the foghorn pods | `{}` | +| `foghorn.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the foghorn containers | `{}` | +| `foghorn.image.pullPolicy` | string | Template for computing the foghorn controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `foghorn.image.repository` | string | Template for computing the foghorn controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-foghorn"` | +| `foghorn.image.tag` | string | Template for computing the foghorn controller docker image tag | `"{{ .Values.image.tag }}"` | +| `foghorn.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `foghorn.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the foghorn pods | `{}` | +| `foghorn.replicaCount` | int | Number of replicas | `1` | +| `foghorn.resources.limits` | object | Resource limits applied to the foghorn pods | `{"cpu":"100m","memory":"256Mi"}` | +| `foghorn.resources.requests` | object | Resource requests applied to the foghorn pods | `{"cpu":"80m","memory":"128Mi"}` | +| `foghorn.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the foghorn pods | `{}` | +| `foghorn.terminationGracePeriodSeconds` | int | Termination grace period for foghorn pods | `180` | +| `foghorn.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the foghorn pods | `[]` | +| `gcJobs.backoffLimit` | int | Drives the job's backoff limit | `6` | +| `gcJobs.concurrencyPolicy` | string | Drives the job's concurrency policy | `"Forbid"` | +| `gcJobs.failedJobsHistoryLimit` | int | Drives the failed jobs history limit | `1` | +| `gcJobs.image.pullPolicy` | string | Template for computing the gc job docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `gcJobs.image.repository` | string | Template for computing the gc job docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-gc-jobs"` | +| `gcJobs.image.tag` | string | Template for computing the gc job docker image tag | `"{{ .Values.image.tag }}"` | +| `gcJobs.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `gcJobs.maxAge` | string | Max age from which `LighthouseJob`s will be deleted | `"168h"` | +| `gcJobs.schedule` | string | Cron expression to periodically delete `LighthouseJob`s | `"0/30 * * * *"` | +| `gcJobs.successfulJobsHistoryLimit` | int | Drives the successful jobs history limit | `3` | +| `git.kind` | string | Git SCM provider (`github`, `gitlab`, `stash`) | `"github"` | +| `git.server` | string | Git server URL | `""` | +| `githubApp.enabled` | bool | Enables GitHub app authentication | `false` | +| `githubApp.username` | string | GitHub app user name | `"jenkins-x[bot]"` | +| `hmacSecretName` | string | Existing hmac secret to use for webhooks | `""` | +| `hmacToken` | string | Secret used for webhooks | `""` | +| `hmacTokenEnabled` | bool | Enables the use of a hmac token. This should always be enabled if possible - though some git providers don't support it such as bitbucket cloud | `true` | +| `hmacTokenVolumeMount` | object | Mount hmac token as a volume instead of using an environment variable Secret reference | `{"enabled":false}` | +| `image.parentRepository` | string | Docker registry to pull images from | `"ghcr.io/jenkins-x"` | +| `image.pullPolicy` | string | Image pull policy | `"IfNotPresent"` | +| `image.tag` | string | Docker images tag the following tag is latest on the main branch, it's a specific version on a git tag | `"latest"` | +| `jenkinscontroller.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the jenkins controller pods | `{}` | +| `jenkinscontroller.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the jenkins controller containers | `{}` | +| `jenkinscontroller.image.pullPolicy` | string | Template for computing the jenkins controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `jenkinscontroller.image.repository` | string | Template for computing the Jenkins controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-jenkins-controller"` | +| `jenkinscontroller.image.tag` | string | Template for computing the jenkins controller docker image tag | `"{{ .Values.image.tag }}"` | +| `jenkinscontroller.jenkinsToken` | string | The token for authenticating the Jenkins user | `nil` | +| `jenkinscontroller.jenkinsURL` | string | The URL of the Jenkins instance | `nil` | +| `jenkinscontroller.jenkinsUser` | string | The username for the Jenkins user | `nil` | +| `jenkinscontroller.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `jenkinscontroller.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the jenkins controller pods | `{}` | +| `jenkinscontroller.podAnnotations` | object | Annotations applied to the jenkins controller pods | `{}` | +| `jenkinscontroller.resources.limits` | object | Resource limits applied to the jenkins controller pods | `{"cpu":"100m","memory":"256Mi"}` | +| `jenkinscontroller.resources.requests` | object | Resource requests applied to the jenkins controller pods | `{"cpu":"80m","memory":"128Mi"}` | +| `jenkinscontroller.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the jenkins controller pods | `{}` | +| `jenkinscontroller.service` | object | Service settings for the jenkins controller | `{"annotations":{}}` | +| `jenkinscontroller.terminationGracePeriodSeconds` | int | Termination grace period for jenkins controller pods | `180` | +| `jenkinscontroller.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the jenkins controller pods | `[]` | +| `keeper.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the keeper pods | `{}` | +| `keeper.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the keeper containers | `{}` | +| `keeper.datadog.enabled` | string | Enables datadog | `"true"` | +| `keeper.env` | object | Lets you define keeper specific environment variables | `{}` | +| `keeper.image.pullPolicy` | string | Template for computing the keeper controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `keeper.image.repository` | string | Template for computing the keeper controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-keeper"` | +| `keeper.image.tag` | string | Template for computing the keeper controller docker image tag | `"{{ .Values.image.tag }}"` | +| `keeper.livenessProbe` | object | Liveness probe configuration | `{"initialDelaySeconds":120,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | +| `keeper.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `keeper.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the keeper pods | `{}` | +| `keeper.podAnnotations` | object | Annotations applied to the keeper pods | `{}` | +| `keeper.probe` | object | Liveness and readiness probes settings | `{"path":"/"}` | +| `keeper.readinessProbe` | object | Readiness probe configuration | `{"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | +| `keeper.replicaCount` | int | Number of replicas | `1` | +| `keeper.resources.limits` | object | Resource limits applied to the keeper pods | `{"cpu":"400m","memory":"512Mi"}` | +| `keeper.resources.requests` | object | Resource requests applied to the keeper pods | `{"cpu":"100m","memory":"128Mi"}` | +| `keeper.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the keeper pods | `{}` | +| `keeper.service` | object | Service settings for the keeper controller | `{"externalPort":80,"internalPort":8888,"type":"ClusterIP"}` | +| `keeper.statusContextLabel` | string | Label used to report status to git provider | `"Lighthouse Merge Status"` | +| `keeper.terminationGracePeriodSeconds` | int | Termination grace period for keeper pods | `30` | +| `keeper.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the keeper pods | `[]` | +| `lighthouseJobNamespace` | string | Namespace where `LighthouseJob`s and `Pod`s are created | Deployment namespace | +| `logFormat` | string | Log format either json or stackdriver | `"json"` | +| `logService` | string | The name of the service registered with logging | `""` | +| `logStackSkip` | string | Comma separated stack frames to skip from the log | `""` | +| `oauthSecretName` | string | Existing Git token secret | `""` | +| `oauthToken` | string | Git token (used when GitHub app authentication is not enabled) | `""` | +| `oauthTokenVolumeMount` | object | Mount Git token as a volume instead of using an environment variable Secret reference (used when GitHub app authentication is not enabled) | `{"enabled":false}` | +| `poller.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the poller pods | `{}` | +| `poller.contextMatchPattern` | string | Regex pattern to use to match commit status context | `""` | +| `poller.datadog.enabled` | string | Enables datadog | `"true"` | +| `poller.enabled` | bool | Whether to enable or disable the poller component | `false` | +| `poller.env` | object | Lets you define poller specific environment variables | `{"POLL_HOOK_ENDPOINT":"http://hook/hook/poll","POLL_PERIOD":"20s"}` | +| `poller.image.pullPolicy` | string | Template for computing the poller controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `poller.image.repository` | string | Template for computing the poller controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-poller"` | +| `poller.image.tag` | string | Template for computing the poller controller docker image tag | `"{{ .Values.image.tag }}"` | +| `poller.internalPort` | int | | `8888` | +| `poller.livenessProbe` | object | Liveness probe configuration | `{"initialDelaySeconds":120,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | +| `poller.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `poller.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the poller pods | `{}` | +| `poller.podAnnotations` | object | Annotations applied to the poller pods | `{}` | +| `poller.probe` | object | Liveness and readiness probes settings | `{"path":"/"}` | +| `poller.readinessProbe` | object | Readiness probe configuration | `{"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | +| `poller.replicaCount` | int | Number of replicas | `1` | +| `poller.requireReleaseSuccess` | bool | Keep polling releases until the most recent commit status is successful | `false` | +| `poller.resources.limits` | object | Resource limits applied to the poller pods | `{"cpu":"400m","memory":"512Mi"}` | +| `poller.resources.requests` | object | Resource requests applied to the poller pods | `{"cpu":"100m","memory":"128Mi"}` | +| `poller.terminationGracePeriodSeconds` | int | Termination grace period for poller pods | `30` | +| `poller.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the poller pods | `[]` | +| `scope` | string | limit permissions to namespace privileges | `"cluster"` | +| `tektoncontroller.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the tekton controller pods | `{}` | +| `tektoncontroller.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the tekton controller containers | `{}` | +| `tektoncontroller.dashboardTemplate` | string | Go template expression for URLs in the dashboard if not using Tekton dashboard | `""` | +| `tektoncontroller.dashboardURL` | string | the dashboard URL (e.g. Tekton dashboard) | `""` | +| `tektoncontroller.enableRerunStatusUpdate` | bool | Enable updating the status at the git provider when PipelineRuns are rerun | `false` | +| `tektoncontroller.image.pullPolicy` | string | Template for computing the tekton controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `tektoncontroller.image.repository` | string | Template for computing the tekton controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-tekton-controller"` | +| `tektoncontroller.image.tag` | string | Template for computing the tekton controller docker image tag | `"{{ .Values.image.tag }}"` | +| `tektoncontroller.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `tektoncontroller.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the tekton controller pods | `{}` | +| `tektoncontroller.podAnnotations` | object | Annotations applied to the tekton controller pods | `{}` | +| `tektoncontroller.replicaCount` | int | Number of replicas | `1` | +| `tektoncontroller.resources.limits` | object | Resource limits applied to the tekton controller pods | `{"cpu":"100m","memory":"256Mi"}` | +| `tektoncontroller.resources.requests` | object | Resource requests applied to the tekton controller pods | `{"cpu":"80m","memory":"128Mi"}` | +| `tektoncontroller.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the tekton controller pods | `{}` | +| `tektoncontroller.service` | object | Service settings for the tekton controller | `{"annotations":{}}` | +| `tektoncontroller.terminationGracePeriodSeconds` | int | Termination grace period for tekton controller pods | `180` | +| `tektoncontroller.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the tekton controller pods | `[]` | +| `user` | string | Git user name (used when GitHub app authentication is not enabled) | `""` | +| `webhooks.affinity` | object | [Affinity rules](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) applied to the webhooks pods | `{}` | +| `webhooks.containerSecurityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the webhooks containers | `{}` | +| `webhooks.customDeploymentTriggerCommand` | string | deployments can configure the ability to allow custom lighthouse triggers using their own unique chat prefix, for example extending the default `/test` trigger prefix let them specify `customDeploymentTriggerPrefix: foo` which means they can also use their own custom trigger /foo mycoolthing | `""` | +| `webhooks.image.pullPolicy` | string | Template for computing the webhooks controller docker image pull policy | `"{{ .Values.image.pullPolicy }}"` | +| `webhooks.image.repository` | string | Template for computing the webhooks controller docker image repository | `"{{ .Values.image.parentRepository }}/lighthouse-webhooks"` | +| `webhooks.image.tag` | string | Template for computing the webhooks controller docker image tag | `"{{ .Values.image.tag }}"` | +| `webhooks.ingress.annotations` | object | Webhooks ingress annotations | `{}` | +| `webhooks.ingress.enabled` | bool | Enable webhooks ingress | `false` | +| `webhooks.ingress.hosts` | list | Webhooks ingress host names | `[]` | +| `webhooks.ingress.ingressClassName` | string | Webhooks ingress ingressClassName | `nil` | +| `webhooks.ingress.tls.enabled` | bool | Enable webhooks ingress tls | `false` | +| `webhooks.ingress.tls.secretName` | string | Specify webhooks ingress tls secretName | `""` | +| `webhooks.labels` | object | allow optional labels to be added to the webhook deployment | `{}` | +| `webhooks.livenessProbe` | object | Liveness probe configuration | `{"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | +| `webhooks.logLevel` | string | The logging level: trace, debug, info, warn, error, panic, fatal | `"info"` | +| `webhooks.nodeSelector` | object | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) applied to the webhooks pods | `{}` | +| `webhooks.podAnnotations` | object | Annotations applied to the webhooks pods | `{}` | +| `webhooks.podLabels` | object | | `{}` | +| `webhooks.probe` | object | Liveness and readiness probes settings | `{"path":"/"}` | +| `webhooks.readinessProbe` | object | Readiness probe configuration | `{"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | +| `webhooks.replicaCount` | int | Number of replicas | `1` | +| `webhooks.resources.limits` | object | Resource limits applied to the webhooks pods | `{"cpu":"100m","memory":"512Mi"}` | +| `webhooks.resources.requests` | object | Resource requests applied to the webhooks pods | `{"cpu":"80m","memory":"128Mi"}` | +| `webhooks.securityContext` | object | [Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) applied to the webhooks pods | `{}` | +| `webhooks.service` | object | Service settings for the webhooks controller | `{"annotations":{},"externalPort":80,"internalPort":8080,"type":"ClusterIP"}` | +| `webhooks.serviceName` | string | Allows overriding the service name, this is here for compatibility reasons, regular users should clear this out | `"hook"` | +| `webhooks.terminationGracePeriodSeconds` | int | Termination grace period for webhooks pods | `180` | +| `webhooks.tolerations` | list | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) applied to the webhooks pods | `[]` | You can look directly at the [values.yaml](./values.yaml) file to look at the options and their default values. diff --git a/charts/lighthouse/lighthouse-1.22.0.tgz b/charts/lighthouse/lighthouse-1.22.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..811e7248fedcab4ba6c6f900803fd164dc0d76ef GIT binary patch literal 16605 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 gQ<+^qsF1f!+q6yF