Skip to content
Snippets Groups Projects
Commit 420b2e92 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

Merge branch 'common-values' into 'master'

feat: add support for a common value file

Closes #15

See merge request to-be-continuous/helm!19
parents 11e6a226 53c02104
No related branches found
No related tags found
No related merge requests found
...@@ -62,6 +62,7 @@ The Helm template uses some global configuration used throughout all jobs. ...@@ -62,6 +62,7 @@ The Helm template uses some global configuration used throughout all jobs.
| --------------------- | -------------------------------------- | ----------------- | | --------------------- | -------------------------------------- | ----------------- |
| `HELM_CLI_IMAGE` | The Docker image used to run Helm <br/>:warning: **set the version required by your Kubernetes server** | `alpine/helm:latest` | | `HELM_CLI_IMAGE` | The Docker image used to run Helm <br/>:warning: **set the version required by your Kubernetes server** | `alpine/helm:latest` |
| `HELM_CHART_DIR` | The folder in which is stored the Helm chart | `.` | | `HELM_CHART_DIR` | The folder in which is stored the Helm chart | `.` |
| `HELM_COMMON_VALUES` | Common values file (used for all environments, overridden by specific per-env values files) | undefined (none) |
| `HELM_ENV_VALUE_NAME` | The environment type variable set to helm | `env` | | `HELM_ENV_VALUE_NAME` | The environment type variable set to helm | `env` |
| `HELM_HOSTNAME_VALUE_NAME` | The hostname variable set to helm | `hostname` | | `HELM_HOSTNAME_VALUE_NAME` | The hostname variable set to helm | `hostname` |
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
"description": "The folder in which is stored the Helm chart", "description": "The folder in which is stored the Helm chart",
"default": "." "default": "."
}, },
{
"name": "HELM_COMMON_VALUES",
"description": "Common values file (used for all environments, overridden by specific per-env values files)"
},
{ {
"name": "HELM_DEPLOY_CHART", "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._" "description": "The Helm [chart](https://helm.sh/docs/topics/charts/) to deploy. _Only required if you want to deploy an **external** chart._"
......
...@@ -40,6 +40,8 @@ variables: ...@@ -40,6 +40,8 @@ variables:
# KUBE_NAMESPACE: "default" # KUBE_NAMESPACE: "default"
# KUBECONFIG: "" # KUBECONFIG: ""
# HELM_COMMON_VALUES: "values-common.yml"
# HELM_REVIEW_DISABLED: "true" # HELM_REVIEW_DISABLED: "true"
# HELM_REVIEW_VALUES: "values-review.yml" # HELM_REVIEW_VALUES: "values-review.yml"
# HELM_REVIEW_NAMESPACE: "" # HELM_REVIEW_NAMESPACE: ""
...@@ -351,10 +353,16 @@ stages: ...@@ -351,10 +353,16 @@ stages:
helm_opts=$(get_helm_config_opt) helm_opts=$(get_helm_config_opt)
if [ -n "$HELM_COMMON_VALUES" ]; then
log_info "--- using \\e[32mcommon values\\e[0m file: \\e[33;1m${HELM_COMMON_VALUES}\\e[0m"
awkenvsubst < "$HELM_COMMON_VALUES" > generated-values-common.yml
helm_values_opt="--values generated-values-common.yml"
fi
if [ -n "$values_files" ]; then if [ -n "$values_files" ]; then
log_info "--- using \\e[32mvalues\\e[0m file: \\e[33;1m${values_files}\\e[0m" log_info "--- using \\e[32mvalues\\e[0m file: \\e[33;1m${values_files}\\e[0m"
awkenvsubst < "$values_files" > generated-values.yml awkenvsubst < "$values_files" > generated-values.yml
helm_values_opt="--values generated-values.yml" helm_values_opt="$helm_values_opt --values generated-values.yml"
fi fi
if [ -f "$CI_PROJECT_DIR/.kubeconfig" ]; then if [ -f "$CI_PROJECT_DIR/.kubeconfig" ]; then
...@@ -529,6 +537,17 @@ helm-lint: ...@@ -529,6 +537,17 @@ helm-lint:
- "**/Chart.yaml" - "**/Chart.yaml"
# yamllint-job is used to check the syntax of the values files. # yamllint-job is used to check the syntax of the values files.
helm-values-common-lint:
extends: .helm-values-lint
script:
- awkenvsubst < "$HELM_COMMON_VALUES" > generated-values-common.yml
- yamllint -d "$HELM_YAMLLINT_CONFIG" $HELM_YAMLLINT_ARGS generated-values-common.yml
rules:
- if: '$CI_MERGE_REQUEST_ID || $HELM_YAMLLINT_DISABLED == "true"'
when: never
- if: '$HELM_COMMON_VALUES'
helm-values-review-lint: helm-values-review-lint:
extends: .helm-values-lint extends: .helm-values-lint
script: script:
...@@ -576,8 +595,10 @@ helm-values-prod-lint: ...@@ -576,8 +595,10 @@ helm-values-prod-lint:
helm-review-score: helm-review-score:
extends: .helm-score extends: .helm-score
script: script:
- if [ -z "$HELM_COMMON_VALUES" ]; then HELM_COMMON_VALUES=/dev/null; fi
- awkenvsubst < "$HELM_COMMON_VALUES" > generated-values-common.yml
- awkenvsubst < "$HELM_REVIEW_VALUES" > generated-values-review.yml - awkenvsubst < "$HELM_REVIEW_VALUES" > generated-values-review.yml
- helm template $HELM_CHART_DIR --values generated-values-review.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} - - helm template $HELM_CHART_DIR --values generated-values-common.yml --values generated-values-review.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} -
rules: rules:
# exclude merge requests # exclude merge requests
- if: $CI_MERGE_REQUEST_ID - if: $CI_MERGE_REQUEST_ID
...@@ -594,8 +615,10 @@ helm-review-score: ...@@ -594,8 +615,10 @@ helm-review-score:
helm-integration-score: helm-integration-score:
extends: .helm-score extends: .helm-score
script: script:
- if [ -z "$HELM_COMMON_VALUES" ]; then HELM_COMMON_VALUES=/dev/null; fi
- awkenvsubst < "$HELM_COMMON_VALUES" > generated-values-common.yml
- awkenvsubst < "$HELM_INTEG_VALUES" > generated-values-integration.yml - awkenvsubst < "$HELM_INTEG_VALUES" > generated-values-integration.yml
- helm template $HELM_CHART_DIR --values generated-values-integration.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} - - helm template $HELM_CHART_DIR --values generated-values-common.yml --values generated-values-integration.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} -
rules: rules:
# exclude merge requests # exclude merge requests
- if: $CI_MERGE_REQUEST_ID - if: $CI_MERGE_REQUEST_ID
...@@ -612,8 +635,10 @@ helm-integration-score: ...@@ -612,8 +635,10 @@ helm-integration-score:
helm-staging-score: helm-staging-score:
extends: .helm-score extends: .helm-score
script: script:
- if [ -z "$HELM_COMMON_VALUES" ]; then HELM_COMMON_VALUES=/dev/null; fi
- awkenvsubst < "$HELM_COMMON_VALUES" > generated-values-common.yml
- awkenvsubst < "$HELM_STAGING_VALUES" > generated-values-staging.yml - awkenvsubst < "$HELM_STAGING_VALUES" > generated-values-staging.yml
- helm template $HELM_CHART_DIR --values generated-values-staging.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} - - helm template $HELM_CHART_DIR --values generated-values-common.yml --values generated-values-staging.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} -
rules: rules:
# exclude merge requests # exclude merge requests
- if: $CI_MERGE_REQUEST_ID - if: $CI_MERGE_REQUEST_ID
...@@ -630,8 +655,10 @@ helm-staging-score: ...@@ -630,8 +655,10 @@ helm-staging-score:
helm-prod-score: helm-prod-score:
extends: .helm-score extends: .helm-score
script: script:
- if [ -z "$HELM_COMMON_VALUES" ]; then HELM_COMMON_VALUES=/dev/null; fi
- awkenvsubst < "$HELM_COMMON_VALUES" > generated-values-common.yml
- awkenvsubst < "$HELM_PROD_VALUES" > generated-values-prod.yml - awkenvsubst < "$HELM_PROD_VALUES" > generated-values-prod.yml
- helm template $HELM_CHART_DIR --values generated-values-prod.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} - - helm template $HELM_CHART_DIR --values generated-values-common.yml --values generated-values-prod.yml | kube-score score ${HELM_KUBE_SCORE_ARGS} -
rules: rules:
# exclude merge requests # exclude merge requests
- if: $CI_MERGE_REQUEST_ID - if: $CI_MERGE_REQUEST_ID
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment