# Make sure to update all the similar conditions in other CI config files if you modify these conditions
.if-canonical-gitlab-schedule : &if-canonical-gitlab-schedule
if : ' $CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"'
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
.if-canonical-gitlab-merge-request : &if-canonical-gitlab-merge-request
if : ' $CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_MERGE_REQUEST_IID'
# Make sure to update all the similar patterns in other CI config files if you modify these patterns
.code-qa-patterns : &code-qa-patterns
- " .gitlab/ci/**/*"
- " .{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
- " .{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,scss-lint}.yml"
- " .csscomb.json"
- " Dockerfile.assets"
- " *_VERSION"
- " Gemfile{,.lock}"
- " Rakefile"
- " {babel.config,jest.config}.js"
- " config.ru"
- " {package.json,yarn.lock}"
- " {,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- " doc/api/graphql/reference/*" # Files in this folder are auto-generated
# QA changes
- " .dockerignore"
- " qa/**/*"
.review-docker :
.review-docker :
extends :
extends :
- .default-tags
- .default-tags
- .default-retry
- .default-retry
- .default-only
image : registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine
image : registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine
services :
services :
- docker:19.03.0-dind
- docker:19.03.0-dind
... @@ -15,12 +41,14 @@
... @@ -15,12 +41,14 @@
GITLAB_EDITION : " ce"
GITLAB_EDITION : " ce"
build-qa-image :
build-qa-image :
extends :
extends : .review-docker
- .review-docker
- .only:variables-canonical-dot-com
- .except:refs-deploy
- .only:changes-code-qa
stage : prepare
stage : prepare
rules :
- << : *if-canonical-gitlab-merge-request
changes : *code-qa-patterns
when : on_success
- << : *if-canonical-gitlab-schedule
when : on_success
script :
script :
- ' [[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
- ' [[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
- export QA_MASTER_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:master"
- export QA_MASTER_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:master"
... @@ -90,7 +118,6 @@ schedule:review-build-cng:
... @@ -90,7 +118,6 @@ schedule:review-build-cng:
extends :
extends :
- .default-tags
- .default-tags
- .default-retry
- .default-retry
- .default-only
image : registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base
image : registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base
dependencies : []
dependencies : []
variables :
variables :
... @@ -130,10 +157,11 @@ schedule:review-build-cng:
... @@ -130,10 +157,11 @@ schedule:review-build-cng:
when : always
when : always
review-deploy :
review-deploy :
extends :
extends : .review-deploy-base
- .review-deploy-base
rules :
- .only-review
- << : *if-canonical-gitlab-merge-request
- .only:changes-code-qa
changes : *code-qa-patterns
when : on_success
schedule:review-deploy :
schedule:review-deploy :
extends :
extends :
... @@ -141,43 +169,45 @@ schedule:review-deploy:
... @@ -141,43 +169,45 @@ schedule:review-deploy:
- .only-review-schedules
- .only-review-schedules
.base-review-stop :
.base-review-stop :
extends :
extends : .review-workflow-base
- .review-workflow-base
- .only-review
- .only:changes-code-qa
environment :
environment :
action : stop
action : stop
variables :
variables :
GIT_STRATEGY : none
# We're cloning the repo instead of downloading the script for now
# because some repos are private and CI_JOB_TOKEN cannot access files.
# See https://gitlab.com/gitlab-org/gitlab/issues/191273
GIT_DEPTH : 1
before_script :
before_script :
# We don't clone the repo by using GIT_STRATEGY: none and only download the
# single script we need here so it's much faster than cloning.
- apk add --update openssl
- apk add --update openssl
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/review_apps/review-apps.sh
- source ./scripts/utils.sh
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/utils.sh
- source ./scripts/review_apps/review-apps.sh
- source utils.sh
- source review-apps.sh
review-stop-failed-deployment :
review-stop-failed-deployment :
extends : .base-review-stop
extends : .base-review-stop
stage : prepare
stage : prepare
rules :
- << : *if-canonical-gitlab-merge-request
changes : *code-qa-patterns
when : on_success
script :
script :
- delete_failed_release
- delete_failed_release
review-stop :
review-stop :
extends : .base-review-stop
extends : .base-review-stop
stage : review
stage : review
rules :
- << : *if-canonical-gitlab-merge-request
changes : *code-qa-patterns
when : manual
when : manual
allow_failure : true
allow_failure : true
script :
script :
- delete_release
- delete_release
.review-qa-base :
.review-qa-base :
extends :
extends : .review-docker
- .review-docker
- .only-review
- .only:changes-code-qa
stage : qa
stage : qa
needs : [ " review-deploy" ]
dependencies : [ " review-deploy" ]
allow_failure : true
allow_failure : true
variables :
variables :
QA_ARTIFACTS_DIR : " ${CI_PROJECT_DIR}/qa"
QA_ARTIFACTS_DIR : " ${CI_PROJECT_DIR}/qa"
... @@ -189,13 +219,6 @@ review-stop:
... @@ -189,13 +219,6 @@ review-stop:
GITLAB_ADMIN_PASSWORD : " ${REVIEW_APPS_ROOT_PASSWORD}"
GITLAB_ADMIN_PASSWORD : " ${REVIEW_APPS_ROOT_PASSWORD}"
GITHUB_ACCESS_TOKEN : " ${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}"
GITHUB_ACCESS_TOKEN : " ${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}"
EE_LICENSE : " ${REVIEW_APPS_EE_LICENSE}"
EE_LICENSE : " ${REVIEW_APPS_EE_LICENSE}"
needs : [ " review-deploy" ]
dependencies : [ " review-deploy" ]
artifacts :
paths :
- ./qa/gitlab-qa-run-*
expire_in : 7 days
when : always
before_script :
before_script :
- ' [[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
- ' [[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
- export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:${CI_COMMIT_REF_SLUG}"
- export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:${CI_COMMIT_REF_SLUG}"
... @@ -205,14 +228,26 @@ review-stop:
... @@ -205,14 +228,26 @@ review-stop:
- source scripts/utils.sh
- source scripts/utils.sh
- install_api_client_dependencies_with_apk
- install_api_client_dependencies_with_apk
- gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}}
- gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}}
artifacts :
paths :
- ./qa/gitlab-qa-run-*
expire_in : 7 days
when : always
review-qa-smoke :
review-qa-smoke :
extends : .review-qa-base
extends : .review-qa-base
rules :
- << : *if-canonical-gitlab-merge-request
changes : *code-qa-patterns
when : on_success
script :
script :
- gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}"
- gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}"
review-qa-all :
review-qa-all :
extends : .review-qa-base
extends : .review-qa-base
rules :
- << : *if-canonical-gitlab-merge-request
changes : *code-qa-patterns
when : manual
when : manual
parallel : 5
parallel : 5
script :
script :
... @@ -241,10 +276,11 @@ review-qa-all:
... @@ -241,10 +276,11 @@ review-qa-all:
performance : performance.json
performance : performance.json
review-performance :
review-performance :
extends :
extends : .review-performance-base
- .review-performance-base
rules :
- .only-review
- << : *if-canonical-gitlab-merge-request
- .only:changes-code-qa
changes : *code-qa-patterns
when : on_success
needs : [ " review-deploy" ]
needs : [ " review-deploy" ]
dependencies : [ " review-deploy" ]
dependencies : [ " review-deploy" ]
before_script :
before_script :
...
...
... ...