Newer
Older
"description": "Build your Helm Charts and/or deploy your application to a Kubernetes platform using [Helm](https://helm.sh/)",
"template_path": "templates/gitlab-ci-helm.yml",
"kind": "hosting",
"variables": [
{
"name": "HELM_CLI_IMAGE",
"description": "The Docker image used to run Helm - **set the version required by your Kubernetes server**",
"default": "registry.hub.docker.com/alpine/helm:latest"
"description": "The folder where the Helm chart is located",
"default": "."
},
{
"name": "HELM_SCRIPTS_DIR",
"description": "The folder where hook scripts are located",
{
"name": "HELM_COMMON_VALUES",
"description": "Common values file (used for all environments, overridden by specific per-env values files)"
},
{
"name": "HELM_DEPLOY_CHART",
"description": "The Helm [chart](https://helm.sh/docs/topics/charts/) to deploy. _Only required if you want to deploy an **external** chart._"
},
{
"name": "HELM_REPOS",
Pierre Smeyers
committed
"description": "The Helm [chart repositories](https://helm.sh/docs/topics/chart_repository/) to use (formatted as `repo_name_1@repo_url_1 repo_name_2@repo_url_2 ...`)",
"default": "stable@https://charts.helm.sh/stable bitnami@https://charts.bitnami.com/bitnami"
},
{
"name": "KUBE_NAMESPACE",
"description": "The default Kubernetes namespace to use. _Leave default if [GitLab Kubernetes integration](https://docs.gitlab.com/ee/user/project/clusters/index.html) is enabled._"
},
{
"name": "HELM_DEFAULT_KUBE_CONFIG",
"description": "The default kubeconfig content to use. Automatically set if GitLab Kubernetes integration is enabled.",
"default": "$KUBECONFIG",
"secret": true
},
{
"name": "HELM_BASE_APP_NAME",
"description": "Base application name",
"default": "$CI_PROJECT_NAME",
"advanced": true
},
{
"name": "HELM_ENVIRONMENT_URL",
"type": "url",
"description": "The default environments url _(only define for static environment URLs declaration)_\n\n_supports late variable expansion (ex: `https://%{environment_name}.helm.acme.com`)_"
},
{
"name": "HELM_DEPLOY_ARGS",
"description": "The Helm [command with options](https://helm.sh/docs/helm/helm_upgrade/) to deploy the application (_without dynamic arguments such as release name and chart_)",
"default": "upgrade --install --atomic --timeout 120s",
"advanced": true
},
{
"name": "HELM_DELETE_ARGS",
"description": "The Helm [command with options](https://helm.sh/docs/helm/helm_uninstall/) to cleanup the application (_without dynamic arguments such as release name_)",
"default": "uninstall",
"advanced": true
},
{
"name": "HELM_DEPENDENCY_ARGS",
"description": "The Helm [command with options](https://helm.sh/docs/helm/helm_dependency_update/) to update on-disk the chart dependencies (_without dynamic arguments such as the chart path_)",
"default": "dependency update",
"advanced": true
},
{
"name": "HELM_ENV_VALUE_NAME",
Pierre Smeyers
committed
"description": "The name of the Helm [value](https://helm.sh/docs/chart_best_practices/values/) containing the _environment type_",
"default": "environmentType",
"advanced": true
},
{
"name": "HELM_HOSTNAME_VALUE_NAME",
Pierre Smeyers
committed
"description": "The name of the Helm [value](https://helm.sh/docs/chart_best_practices/values/) containing the _environment hostname_ (extracted from the environment URL)",
"default": "hostname",
"advanced": true
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
}
],
"features": [
{
"id": "lint",
"name": "Helm Lint",
"description": "Static code analysis of your Helm chart with [Helm Lint](https://helm.sh/docs/helm/helm_lint/)",
"disable_with": "HELM_LINT_DISABLED",
"variables": [
{
"name": "HELM_LINT_ARGS",
"description": "The Helm [command with options](https://helm.sh/docs/helm/helm_lint/) to trigger the analysis (_without dynamic arguments such as the chart path_)",
"default": "lint --strict",
"advanced": true
}
]
},
{
"id": "test",
"name": "Helm Test",
"description": "Acceptance test of your Helm chart with [Helm Test](https://helm.sh/docs/helm/helm_test/)",
"enable_with": "HELM_TEST_ENABLED",
"variables": [
{
"name": "HELM_TEST_ARGS",
"description": "The Helm [command with options](https://helm.sh/docs/helm/helm_test/) to perform acceptance test (_without dynamic arguments such as release name_)",
"default": "test",
"advanced": true
}
]
},
{
"id": "yamllint",
"name": "Yaml Lint",
"description": "[Yaml Lint](https://github.com/adrienverge/yamllint) of your Helm [values file](https://helm.sh/docs/chart_template_guide/values_files/)",
"disable_with": "HELM_YAMLLINT_DISABLED",
"variables": [
{
"name": "HELM_YAMLLINT_IMAGE",
"description": "The Docker image used to run YamlLint test",
"default": "registry.hub.docker.com/cytopia/yamllint"
},
{
"name": "HELM_YAMLLINT_CONFIG",
"description": "Config used with the yamllint tool",
"default": "{ extends: relaxed, rules: { line-length: { max: 160 } } }",
"advanced": true
},
{
"name": "HELM_YAMLLINT_ARGS",
"description": "Arguments used by the lint job",
"default": "-f colored --strict",
"advanced": true
}
]
},
{
"id": "kube-score",
"name": "Kube-Score",
"description": "Run [Kube-Score](https://kube-score.com/) on the resources to be created by Helm",
"disable_with": "HELM_KUBE_SCORE_DISABLED",
"variables": [
{
"name": "HELM_KUBE_SCORE_IMAGE",
"description": "The Docker image used to run [Kube-Score](https://kube-score.com/)",
"default": "registry.hub.docker.com/zegl/kube-score"
},
{
"name": "HELM_KUBE_SCORE_ARGS",
"description": "Arguments used by the kube-score job",
"advanced": true
},
{
"name": "HELM_K8S_VERSION",
"description": "Kubernetes version (_so that `.Capabilities.KubeVersion.Version` can be correctly interpreted_). \n\n Expected format: `vX.YY`",
"advanced": true
}
]
},
{
"id": "package",
"name": "Package your chart",
"description": "[Package](https://helm.sh/docs/helm/helm_package/) your Helm chart",
"variables": [
{
"name": "HELM_PACKAGE_ARGS",
"description": "The Helm [command with options](https://helm.sh/docs/helm/helm_package/) to perform the packaging (_without dynamic arguments such as the chart path_)",
"default": "package --dependency-update",
"advanced": true
{
"name": "HELM_PUBLISH_SNAPSHOT_ENABLED",
"description": "Set to `true` to enable publishing the snapshot (untested) chart during the packaging step",
"type": "boolean",
"advanced": true
},
{
"name": "HELM_SEMREL_RELEASE_DISABLED",
"description": "Disable semantic-release integration",
"type": "boolean",
"advanced": true
}
]
},
{
"id": "publish",
"name": "Publish your chart",
Pierre Smeyers
committed
"description": "Publishes the chart to a [Helm repository](https://helm.sh/docs/topics/chart_repository/) or [OCI-based registry](https://helm.sh/docs/topics/registries/)",
"name": "HELM_PUBLISH_URL",
"description": "The URL of the Helm repository to publish your Helm package",
Pierre Smeyers
committed
"default": "oci://$CI_REGISTRY/$CI_PROJECT_PATH/charts"
},
{
"name": "HELM_PUBLISH_METHOD",
"description": "HTTP method to use to push the package",
"default": "auto",
"type": "enum",
"values": ["auto", "push", "post", "put", "custom", "disabled"],
"name": "HELM_PUBLISH_USER",
"description": "Helm repository username",
"default": "$CI_REGISTRY_USER",
"secret": true
"name": "HELM_PUBLISH_PASSWORD",
"description": "Helm repository password",
"default": "$CI_REGISTRY_PASSWORD",
"secret": true
{
"name": "HELM_PUBLISH_ON",
"description": "Defines on which branch(es) the publish job shall be enabled",
"default": "prod",
"type": "enum",
"values": ["prod", "protected", "all"]
},
"name": "HELM_PUBLISH_STRATEGY",
"description": "Defines the publish strategy.",
"type": "enum",
"values": ["none", "manual", "auto"],
"default": "manual"
},
{
Pierre Smeyers
committed
"name": "HELM_CM_PUSH_PLUGIN_VERSION",
"description": "cm-push plugin version to install (only when using `push` method with a regular chart [repository](https://helm.sh/docs/topics/chart_repository/)",
}
]
},
{
"id": "review",
"name": "Review",
"description": "Dynamic review environments for your topic branches (see GitLab [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/))",
"enable_with": "HELM_REVIEW_ENABLED",
"variables": [
{
"name": "HELM_REVIEW_APP_NAME",
"description": "The application name for `review` env _(only define to override default)_",
"default": "${HELM_BASE_APP_NAME}-${CI_ENVIRONMENT_SLUG}",
"advanced": true
},
{
"name": "HELM_REVIEW_ENVIRONMENT_URL",
"type": "url",
"description": "The review environments url _(only define for static environment URLs declaration and if different from default)_",
"advanced": true
},
{
"name": "HELM_REVIEW_VALUES",
"description": "The Values file to use with `review` environment"
},
{
"name": "HELM_REVIEW_NAMESPACE",
"description": "The Kubernetes namespace to use for `review` env _(only define to override default)_",
"default": "$KUBE_NAMESPACE",
"advanced": true
},
{
"name": "HELM_REVIEW_KUBE_CONFIG",
"description": "Specific kubeconfig for review env (only define to override default)",
"default": "$HELM_DEFAULT_KUBE_CONFIG",
"advanced": true,
"secret": true
}
]
},
{
"id": "integration",
"name": "Integration",
"description": "A continuous-integration environment associated to your integration branch (`develop` by default)",
"enable_with": "HELM_INTEG_ENABLED",
"variables": [
{
"name": "HELM_INTEG_APP_NAME",
"description": "The application name for `integration` env _(only define to override default)_",
"default": "${HELM_BASE_APP_NAME}-integration",
"advanced": true
},
{
"name": "HELM_INTEG_ENVIRONMENT_URL",
"type": "url",
"description": "The integration environment url _(only define for static environment URLs declaration and if different from default)_",
"advanced": true
},
{
"name": "HELM_INTEG_VALUES",
"description": "The Values file to use with `integration` environment"
},
{
"name": "HELM_INTEG_NAMESPACE",
"description": "The Kubernetes namespace to use for `integration` env _(only define to override default)_",
"default": "$KUBE_NAMESPACE",
"advanced": true
},
{
"name": "HELM_INTEG_KUBE_CONFIG",
"description": "Specific kubeconfig for integration env (only define to override default)",
"default": "$HELM_DEFAULT_KUBE_CONFIG",
"advanced": true,
"secret": true
}
]
},
{
"id": "staging",
"name": "Staging",
"description": "An iso-prod environment meant for testing and validation purpose on your production branch (`master` by default)",
"enable_with": "HELM_STAGING_ENABLED",
"variables": [
{
"name": "HELM_STAGING_APP_NAME",
"description": "The application name for `staging` env _(only define to override default)_",
"default": "${HELM_BASE_APP_NAME}-staging",
"advanced": true
},
{
"name": "HELM_STAGING_ENVIRONMENT_URL",
"type": "url",
"description": "The staging environment url _(only define for static environment URLs declaration and if different from default)_",
"advanced": true
},
{
"name": "HELM_STAGING_VALUES",
"description": "The Values file to use with `staging` environment"
},
{
"name": "HELM_STAGING_NAMESPACE",
"description": "The Kubernetes namespace to use for `staging` env _(only define to override default)_",
"default": "$KUBE_NAMESPACE",
"advanced": true
},
{
"name": "HELM_STAGING_KUBE_CONFIG",
"description": "Specific kubeconfig for staging env (only define to override default)",
"default": "$HELM_DEFAULT_KUBE_CONFIG",
"advanced": true,
"secret": true
}
]
},
{
"id": "prod",
"name": "Production",
"description": "The production environment",
"enable_with": "HELM_PROD_ENABLED",
"name": "HELM_PROD_DEPLOY_STRATEGY",
"description": "Defines the deployment to production strategy.",
"type": "enum",
"values": ["manual", "auto"],
"default": "manual"
},
{
"name": "HELM_PROD_APP_NAME",
"description": "The application name for `production` env _(only define to override default)_",
"default": "${HELM_BASE_APP_NAME}",
"advanced": true
},
{
"name": "HELM_PROD_ENVIRONMENT_URL",
"type": "url",
"description": "The production environment url _(only define for static environment URLs declaration and if different from default)_",
"advanced": true
},
{
"name": "HELM_PROD_VALUES",
"description": "The Values file to use with `production` environment"
},
{
"name": "HELM_PROD_NAMESPACE",
"description": "The Kubernetes namespace to use for `production` env _(only define to override default)_",
"default": "$KUBE_NAMESPACE",
"advanced": true
},
{
"name": "HELM_PROD_KUBE_CONFIG",
"description": "Specific kubeconfig for production env (only define to override default)",
"default": "$HELM_DEFAULT_KUBE_CONFIG",
"advanced": true,
"secret": true
}
]
}
],
"variants": [
{
"id": "vault",
"name": "Vault",
"description": "Retrieve secrets from a [Vault](https://www.vaultproject.io/) server",
"template_path": "templates/gitlab-ci-helm-vault.yml",
"variables": [
{
"name": "TBC_VAULT_IMAGE",
"description": "The [Vault Secrets Provider](https://gitlab.com/to-be-continuous/tools/vault-secrets-provider) image to use",
"default": "$CI_REGISTRY/to-be-continuous/tools/vault-secrets-provider:master",
"advanced": true
},
{
"name": "VAULT_BASE_URL",
"description": "The Vault server base API url"
},
{
"name": "VAULT_ROLE_ID",
"description": "The [AppRole](https://www.vaultproject.io/docs/auth/approle) RoleID",
"mandatory": true,
"secret": true
},
{
"name": "VAULT_SECRET_ID",
"description": "The [AppRole](https://www.vaultproject.io/docs/auth/approle) SecretID",
"mandatory": true,
"secret": true
}
]
}
]
}