From bca0f6055f59b99f2578f31fa11c052224c86b21 Mon Sep 17 00:00:00 2001
From: Kyle Wiebers <kwiebers@gitlab.com>
Date: Wed, 28 Aug 2019 16:07:54 -0500
Subject: [PATCH] Add DAG to setup-test-env jobs and review-cng-base to speed
 up pipeline

Add needs for all jobs which require setup-test-env and
move review-build-cng to additional stage review-prepare
to decrease wait time for jobs in pipeline
---
 .gitlab-ci.yml                    |  1 +
 .gitlab/ci/frontend.gitlab-ci.yml |  9 ++++-----
 .gitlab/ci/rails.gitlab-ci.yml    | 12 ++++++++++++
 .gitlab/ci/review.gitlab-ci.yml   |  6 ++++--
 .gitlab/ci/setup.gitlab-ci.yml    |  2 ++
 5 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5b5527284d385..b3b6beb10680c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,6 +5,7 @@ stages:
   - prepare
   - quick-test
   - test
+  - review-prepare
   - review
   - qa
   - post-test
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 0720ea3e056ef..a20215694c091 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -13,7 +13,9 @@
     - .default-before_script
     - .except-docs
   image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-git-2.22-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-18.06.1
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   services:
     - docker:19.03.0-dind
   variables:
@@ -42,10 +44,6 @@
     - time scripts/build_assets_image
     - scripts/clean-old-cached-assets
     - rm -f /etc/apt/sources.list.d/google*.list  # We don't need to update Chrome here
-    # Play dependent manual jobs
-    - install_api_client_dependencies_with_apt
-    - play_job "review-build-cng" || true  # this job might not exist so ignore the failure if it cannot be played
-    - play_job "schedule:review-build-cng" || true  # this job might not exist so ignore the failure if it cannot be played
   only:
     - /.+/@gitlab-org/gitlab-ce
     - /.+/@gitlab-org/gitlab-ee
@@ -186,7 +184,8 @@ jest:
     - .default-retry
     - .default-cache
     - .except-docs
-  dependencies: ["setup-test-env"]
+  dependencies: []
+  stage: test
   variables:
     SETUP_DB: "false"
   before_script:
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 2e8b197829b4f..878be25c39b85 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -165,7 +165,9 @@ downtime_check:
       - /^[\d-]+-stable(-ee)?$/
       - /(^docs[\/-].+|.+-docs$)/
       - /(^qa[\/-].*|.*-qa$)/
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
 
 ee_compat_check:
   extends: .rake-exec
@@ -195,7 +197,9 @@ db:migrate:reset:
     - .default-before_script
     - .use-pg
     - .except-docs-qa
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   script:
     - bundle exec rake db:migrate:reset
 
@@ -207,7 +211,9 @@ db:check-schema:
     - .default-before_script
     - .use-pg
     - .except-docs-qa
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   script:
     - source scripts/schema_changed.sh
 
@@ -219,7 +225,9 @@ db:migrate-from-v11.11.0:
     - .default-before_script
     - .use-pg
     - .except-docs-qa
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   variables:
     SETUP_DB: "false"
   script:
@@ -248,7 +256,9 @@ db:rollback:
     - .default-before_script
     - .use-pg
     - .except-docs-qa
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   script:
     - bundle exec rake db:migrate VERSION=20180101160629
     - bundle exec rake db:migrate SKIP_SCHEMA_VERSION_CHECK=true
@@ -261,7 +271,9 @@ gitlab:setup:
     - .default-before_script
     - .use-pg
     - .except-docs-qa
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   variables:
     SETUP_DB: "false"
   script:
diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml
index 6695404653c36..6f1505b5c0d01 100644
--- a/.gitlab/ci/review.gitlab-ci.yml
+++ b/.gitlab/ci/review.gitlab-ci.yml
@@ -53,8 +53,7 @@ build-qa-image:
 
 .review-build-cng-base:
   image: ruby:2.6-alpine
-  stage: test
-  when: manual
+  stage: review-prepare
   before_script:
     - source scripts/utils.sh
     - install_api_client_dependencies_with_apk
@@ -67,17 +66,20 @@ review-build-cng:
   extends:
     - .review-build-cng-base
     - .review-only
+  needs: ["gitlab:assets:compile pull-cache"]
 
 schedule:review-build-cng:
   extends:
     - .review-build-cng-base
     - .review-schedules-only
+  needs: ["gitlab:assets:compile"]
 
 review-deploy:
   extends: .review-base
   allow_failure: true
   retry: 1
   stage: review
+  needs: ["review-build-cng"]
   variables:
     HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
     DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml
index d9384780356e8..cd7ca4d30bf50 100644
--- a/.gitlab/ci/setup.gitlab-ci.yml
+++ b/.gitlab/ci/setup.gitlab-ci.yml
@@ -7,7 +7,9 @@ cache gems:
     - .default-cache
     - .default-before_script
     - .except-docs
+  stage: test
   dependencies: ["setup-test-env"]
+  needs: ["setup-test-env"]
   variables:
     SETUP_DB: "false"
   script:
-- 
GitLab