From 1e367810dc3277338f5dfdf38c27923de9eafab0 Mon Sep 17 00:00:00 2001
From: Thong Kuah <tkuah@gitlab.com>
Date: Fri, 9 Nov 2018 17:01:35 +1300
Subject: [PATCH] Use except:variables to fix multiple variable jobs

As `only:variables` has the effect of being satisfied by any one of
variable expression - this will create a situation where e.g. the dast
job will be active even if there's no cluster.

So use `except:variables which requires each and every variable
expression to be satisfied.
---
 .../ci/templates/Auto-DevOps.gitlab-ci.yml    | 36 +++++++++----------
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml
index 1e26d0a2d6a8..e50c46f3f3f2 100644
--- a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml
@@ -147,11 +147,10 @@ performance:
   only:
     refs:
       - branches
-    variables:
-      - $KUBECONFIG
   except:
     variables:
       - $PERFORMANCE_DISABLED
+      - $KUBECONFIG == null
 
 sast:
   stage: test
@@ -226,8 +225,6 @@ dast:
   only:
     refs:
       - branches
-    variables:
-      - $KUBECONFIG
     variables:
       - $GITLAB_FEATURES =~ /\bdast\b/
   except:
@@ -235,6 +232,7 @@ dast:
       - master
     variables:
       - $DAST_DISABLED
+      - $KUBECONFIG == null
 
 review:
   stage: review
@@ -256,13 +254,12 @@ review:
   only:
     refs:
       - branches
-    variables:
-      - $KUBECONFIG
   except:
     refs:
       - master
     variables:
       - $REVIEW_DISABLED
+      - $KUBECONFIG == null
 
 stop_review:
   stage: cleanup
@@ -280,13 +277,12 @@ stop_review:
   only:
     refs:
       - branches
-    variables:
-      - $KUBECONFIG
   except:
     refs:
       - master
     variables:
       - $REVIEW_DISABLED
+      - $KUBECONFIG == null
 
 # Staging deploys are disabled by default since
 # continuous deployment to production is enabled by default
@@ -310,10 +306,11 @@ staging:
   only:
     refs:
       - master
-    variables:
-      - $KUBECONFIG
     variables:
       - $STAGING_ENABLED
+  except:
+    variables:
+      - $KUBECONFIG == null
 
 # Canaries are also disabled by default, but if you want them,
 # and know what the downsides are, you can enable this by setting
@@ -336,10 +333,11 @@ canary:
   only:
     refs:
       - master
-    variables:
-      - $KUBECONFIG
     variables:
       - $CANARY_ENABLED
+  except:
+    variables:
+      - $KUBECONFIG == null
 
 .production: &production_template
   stage: production
@@ -365,14 +363,13 @@ production:
   only:
     refs:
       - master
-    variables:
-      - $KUBECONFIG
   except:
     variables:
       - $STAGING_ENABLED
       - $CANARY_ENABLED
       - $INCREMENTAL_ROLLOUT_ENABLED
       - $INCREMENTAL_ROLLOUT_MODE
+      - $KUBECONFIG == null
 
 production_manual:
   <<: *production_template
@@ -381,8 +378,6 @@ production_manual:
   only:
     refs:
       - master
-    variables:
-      - $KUBECONFIG
     variables:
       - $STAGING_ENABLED
       - $CANARY_ENABLED
@@ -390,6 +385,7 @@ production_manual:
     variables:
       - $INCREMENTAL_ROLLOUT_ENABLED
       - $INCREMENTAL_ROLLOUT_MODE
+      - $KUBECONFIG == null
 
 # This job implements incremental rollout on for every push to `master`.
 
@@ -419,14 +415,13 @@ production_manual:
   only:
     refs:
       - master
-    variables:
-      - $KUBECONFIG
     variables:
       - $INCREMENTAL_ROLLOUT_MODE == "manual"
       - $INCREMENTAL_ROLLOUT_ENABLED
   except:
     variables:
       - $INCREMENTAL_ROLLOUT_MODE == "timed"
+      - $KUBECONFIG == null
 
 .timed_rollout_template: &timed_rollout_template
   <<: *rollout_template
@@ -435,10 +430,11 @@ production_manual:
   only:
     refs:
       - master
-    variables:
-      - $KUBECONFIG
     variables:
       - $INCREMENTAL_ROLLOUT_MODE == "timed"
+  except:
+    variables:
+      - $KUBECONFIG == null
 
 timed rollout 10%:
   <<: *timed_rollout_template
-- 
GitLab