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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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_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_HOSTNAME_VALUE_NAME`      | The hostname variable set to helm | `hostname` |

+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@
      "description": "The folder in which is stored the Helm chart",
      "default": "."
    },
    {
      "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._"
+32 −5
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ variables:
#  KUBE_NAMESPACE: "default"
#  KUBECONFIG: ""

#  HELM_COMMON_VALUES: "values-common.yml"

#  HELM_REVIEW_DISABLED: "true"
#  HELM_REVIEW_VALUES: "values-review.yml"
#  HELM_REVIEW_NAMESPACE: ""
@@ -351,10 +353,16 @@ stages:

    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
      log_info "--- using \\e[32mvalues\\e[0m file: \\e[33;1m${values_files}\\e[0m"
      awkenvsubst < "$values_files" > generated-values.yml
      helm_values_opt="--values generated-values.yml"
      helm_values_opt="$helm_values_opt --values generated-values.yml"
    fi

    if [ -f "$CI_PROJECT_DIR/.kubeconfig" ]; then
@@ -529,6 +537,17 @@ helm-lint:
        - "**/Chart.yaml"

# 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:
  extends: .helm-values-lint
  script:
@@ -576,8 +595,10 @@ helm-values-prod-lint:
helm-review-score:
  extends: .helm-score
  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
    - 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:
    # exclude merge requests
    - if: $CI_MERGE_REQUEST_ID
@@ -594,8 +615,10 @@ helm-review-score:
helm-integration-score:
  extends: .helm-score
  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
    - 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:
    # exclude merge requests
    - if: $CI_MERGE_REQUEST_ID
@@ -612,8 +635,10 @@ helm-integration-score:
helm-staging-score:
  extends: .helm-score
  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
    - 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:
    # exclude merge requests
    - if: $CI_MERGE_REQUEST_ID
@@ -630,8 +655,10 @@ helm-staging-score:
helm-prod-score:
  extends: .helm-score
  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
    - 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:
    # exclude merge requests
    - if: $CI_MERGE_REQUEST_ID