diff --git a/README.md b/README.md
index 0bfe958f83c7a9209ca838d949890d12ad708c5a..620aa2dbcf50221ff66b0cc685626f45ebeae122 100644
--- a/README.md
+++ b/README.md
@@ -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` |
 
diff --git a/kicker.json b/kicker.json
index 4547c744a79c50899cdfd730592a0cce4f28c264..f6f40a251fa225bafa62e2f6fa0124079cad1110 100644
--- a/kicker.json
+++ b/kicker.json
@@ -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._"
diff --git a/templates/gitlab-ci-helm.yml b/templates/gitlab-ci-helm.yml
index 697c1b5e357d64f45d5ab1f512bb9b0386b8c532..e3216e8993ff993b258d7eec87c932c45d2e4342 100644
--- a/templates/gitlab-ci-helm.yml
+++ b/templates/gitlab-ci-helm.yml
@@ -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