summaryrefslogtreecommitdiff
path: root/.gitlab/ci
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-07 18:09:03 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-07 18:09:03 +0000
commitd7ce7307dca551759ffa972015875f8ebe476927 (patch)
tree7cb8c211b737de7120dd2f1e825852e77ac5d380 /.gitlab/ci
parente43077ab4742ba5083a01a1e5341db1a1b7a1701 (diff)
downloadgitlab-ce-d7ce7307dca551759ffa972015875f8ebe476927.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to '.gitlab/ci')
-rw-r--r--.gitlab/ci/dev-fixtures.gitlab-ci.yml60
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml565
2 files changed, 396 insertions, 229 deletions
diff --git a/.gitlab/ci/dev-fixtures.gitlab-ci.yml b/.gitlab/ci/dev-fixtures.gitlab-ci.yml
index a5dab5d8708..a0b5100992b 100644
--- a/.gitlab/ci/dev-fixtures.gitlab-ci.yml
+++ b/.gitlab/ci/dev-fixtures.gitlab-ci.yml
@@ -1,6 +1,54 @@
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-not-ee: &if-not-ee
+ if: '$CI_PROJECT_NAME !~ /^gitlab(-ee)?$/'
+
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-default-refs: &if-default-refs
+ if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG'
+
+# Make sure to update all the similar patterns in other CI config files if you modify these patterns
+.code-backstage-patterns: &code-backstage-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
+ # Backstage changes
+ - "Dangerfile"
+ - "danger/**/*"
+ - "{,ee/}fixtures/**/*"
+ - "{,ee/}rubocop/**/*"
+ - "{,ee/}spec/**/*"
+ - "doc/README.md" # Some RSpec test rely on this file
+
+.dev-fixtures:rules:ee-and-foss:
+ rules:
+ - <<: *if-default-refs
+ changes: *code-backstage-patterns
+ when: on_success
+
+.dev-fixtures:rules:ee-only:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-default-refs
+ changes: *code-backstage-patterns
+ when: on_success
+
.run-dev-fixtures:
extends:
- - .only-code-rails-job-base
+ - .default-tags
+ - .default-retry
+ - .default-cache
+ - .default-before_script
- .use-pg9
stage: test
needs: ["setup-test-env"]
@@ -13,17 +61,19 @@
SIZE: 0 # number of external projects to fork, requires network connection
# SEED_NESTED_GROUPS: "false" # requires network connection
-run-dev-fixtures-foss:
- extends: .run-dev-fixtures
+run-dev-fixtures:
+ extends:
+ - .run-dev-fixtures
+ - .dev-fixtures:rules:ee-and-foss
script:
- scripts/gitaly-test-spawn
- RAILS_ENV=test bundle exec rake db:seed_fu
run-dev-fixtures-ee:
extends:
- - .only-ee
- - .use-pg9-ee
- .run-dev-fixtures
+ - .dev-fixtures:rules:ee-only
+ - .use-pg9-ee
script:
- scripts/gitaly-test-spawn
- cp ee/db/fixtures/development/* $FIXTURE_PATH
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 03685d1f6a8..3d890dfea7e 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -1,41 +1,120 @@
-.only-master:
- only:
- refs:
- - master
-
-.rake-exec:
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-not-ee: &if-not-ee
+ if: '$CI_PROJECT_NAME !~ /^gitlab(-ee)?$/'
+
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-master-refs: &if-master-refs
+ if: '$CI_COMMIT_REF_NAME == "master"'
+
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-default-refs: &if-default-refs
+ if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG'
+
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-merge-request: &if-merge-request
+ if: '$CI_MERGE_REQUEST_IID'
+
+# Make sure to update all the similar patterns in other CI config files if you modify these patterns
+.code-backstage-patterns: &code-backstage-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
+ # Backstage changes
+ - "Dangerfile"
+ - "danger/**/*"
+ - "{,ee/}fixtures/**/*"
+ - "{,ee/}rubocop/**/*"
+ - "{,ee/}spec/**/*"
+ - "doc/README.md" # Some RSpec test rely on this file
+
+# Make sure to update all the similar patterns in other CI config files if you modify these patterns
+.code-backstage-qa-patterns: &code-backstage-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
+ # Backstage changes
+ - "Dangerfile"
+ - "danger/**/*"
+ - "{,ee/}fixtures/**/*"
+ - "{,ee/}rubocop/**/*"
+ - "{,ee/}spec/**/*"
+ - "doc/README.md" # Some RSpec test rely on this file
+ # QA changes
+ - ".dockerignore"
+ - "qa/**/*"
+
+.rails:rules:ee-and-foss:
+ rules:
+ - <<: *if-default-refs
+ changes: *code-backstage-patterns
+ when: on_success
+
+.rails:rules:default-refs-code-backstage-qa:
+ rules:
+ - <<: *if-default-refs
+ changes: *code-backstage-qa-patterns
+ when: on_success
+
+.rails:rules:master-refs:
+ rules:
+ - <<: *if-master-refs
+ when: on_success
+
+.rails:rules:master-refs-ee-only:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-master-refs
+ when: on_success
+
+.rails:rules:ee-only:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-default-refs
+ changes: *code-backstage-patterns
+ when: on_success
+
+.rails:needs:setup-and-assets:
+ needs:
+ - job: setup-test-env
+ artifacts: true
+ - job: compile-assets pull-cache
+ artifacts: true
+
+.rails-job-base:
extends:
- .default-tags
- .default-retry
- .default-cache
- - .default-only
- .default-before_script
- variables:
- SETUP_DB: "false"
- script:
- - bundle exec rake $CI_JOB_NAME
-
-.only-code-rails-job-base:
- extends:
- - .default-tags
- - .default-retry
- - .default-cache
- - .default-only
- - .default-before_script
- - .only:changes-code-backstage
-
-.only-code-qa-rails-job-base:
- extends:
- - .default-tags
- - .default-retry
- - .default-cache
- - .default-only
- - .default-before_script
- - .only:changes-code-backstage-qa
+####################
+# ee and foss jobs #
setup-test-env:
extends:
- - .only-code-qa-rails-job-base
+ - .rails-job-base
+ - .rails:rules:default-refs-code-backstage-qa
- .use-pg9
stage: prepare
script:
@@ -50,11 +129,48 @@ setup-test-env:
cache:
policy: pull-push
+static-analysis:
+ extends:
+ - .rails-job-base
+ - .rails:rules:default-refs-code-backstage-qa
+ - .rails:needs:setup-and-assets
+ stage: test
+ variables:
+ SETUP_DB: "false"
+ parallel: 2
+ script:
+ - scripts/static-analysis
+ cache:
+ key: "debian-stretch-ruby-2.6-and-rubocop"
+ paths:
+ - vendor/ruby
+ - tmp/rubocop_cache
+ policy: pull-push
+
+downtime_check:
+ extends:
+ - .rails-job-base
+ - .rails:needs:setup-and-assets
+ stage: test
+ rules:
+ - <<: *if-merge-request
+ changes: *code-backstage-patterns
+ when: on_success
+ variables:
+ SETUP_DB: "false"
+ script:
+ - bundle exec rake downtime_check
+
.rspec-base:
- extends: .only-code-rails-job-base
+ extends: .rails-job-base
stage: test
- needs: ["setup-test-env", "retrieve-tests-metadata", "compile-assets pull-cache"]
- dependencies: ["setup-test-env", "retrieve-tests-metadata", "compile-assets pull-cache"]
+ needs:
+ - job: setup-test-env
+ artifacts: true
+ - job: retrieve-tests-metadata
+ artifacts: true
+ - job: compile-assets pull-cache
+ artifacts: true
script:
- source scripts/rspec_helpers.sh
- rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"
@@ -72,26 +188,22 @@ setup-test-env:
reports:
junit: junit_rspec.xml
-.rspec-base-foss:
- extends: [".rspec-base", ".only-ee-as-if-foss"]
- needs: ["setup-test-env", "retrieve-tests-metadata", "compile-assets pull-cache foss"]
- dependencies: ["setup-test-env", "retrieve-tests-metadata", "compile-assets pull-cache foss"]
-
-.rspec-base-pg9:
+.rspec-base-quarantine:
extends:
- .rspec-base
- .use-pg9
+ variables:
+ RSPEC_OPTS: "--tag quarantine -- spec/"
+ script:
+ - source scripts/rspec_helpers.sh
+ - rspec_simple_job "${RSPEC_OPTS}"
+ allow_failure: true
-.rspec-base-pg9-foss:
- extends:
- - .rspec-base-foss
- - .use-pg9
-
-.rspec-base-pg10:
+.rspec-base-pg9:
extends:
- .rspec-base
- - .use-pg10
- - .only-master
+ - .rails:rules:ee-and-foss
+ - .use-pg9
.rspec-base-migration:
script:
@@ -104,200 +216,33 @@ rspec migration pg9:
- .rspec-base-migration
parallel: 5
-rspec migration pg9-foss:
- extends:
- - .rspec-base-pg9-foss
- - .rspec-base-migration
- parallel: 5
-
rspec unit pg9:
extends: .rspec-base-pg9
parallel: 20
-rspec unit pg9-foss:
- extends: .rspec-base-pg9-foss
- parallel: 20
-
rspec integration pg9:
extends: .rspec-base-pg9
parallel: 8
-rspec integration pg9-foss:
- extends: .rspec-base-pg9-foss
- parallel: 8
-
rspec system pg9:
extends: .rspec-base-pg9
parallel: 24
-rspec system pg9-foss:
- extends: .rspec-base-pg9-foss
- parallel: 24
-
-rspec unit pg10:
- extends: .rspec-base-pg10
- parallel: 20
-
-rspec integration pg10:
- extends: .rspec-base-pg10
- parallel: 8
-
-rspec system pg10:
- extends: .rspec-base-pg10
- parallel: 24
-
-.rspec-ee-base-pg9:
- extends:
- - .rspec-base
- - .only-ee
- - .use-pg9-ee
-
-.rspec-ee-base-pg10:
- extends:
- - .rspec-base
- - .only-ee
- - .use-pg10-ee
-
-rspec-ee migration pg9:
- extends:
- - .rspec-ee-base-pg9
- - .rspec-base-migration
- parallel: 2
-
-rspec-ee unit pg9:
- extends: .rspec-ee-base-pg9
- parallel: 10
-
-rspec-ee integration pg9:
- extends: .rspec-ee-base-pg9
- parallel: 4
-
-rspec-ee system pg9:
- extends: .rspec-ee-base-pg9
- parallel: 6
-
-rspec-ee migration pg10:
- extends:
- - .rspec-ee-base-pg10
- - .rspec-base-migration
- - .only-master
- parallel: 2
-
-rspec-ee unit pg10:
- extends:
- - .rspec-ee-base-pg10
- - .only-master
- parallel: 10
-
-rspec-ee integration pg10:
- extends:
- - .rspec-ee-base-pg10
- - .only-master
- parallel: 3
-
-rspec-ee system pg10:
- extends:
- - .rspec-ee-base-pg10
- - .only-master
- parallel: 5
-
-.rspec-ee-base-geo:
- extends:
- - .rspec-base
- - .only-ee
- script:
- - source scripts/rspec_helpers.sh
- - scripts/prepare_postgres_fdw.sh
- - rspec_paralellized_job "--tag ~quarantine --tag geo"
-
-.rspec-ee-base-geo-pg9:
- extends:
- - .rspec-ee-base-geo
- - .use-pg9-ee
-
-.rspec-ee-base-geo-pg10:
- extends:
- - .rspec-ee-base-geo
- - .use-pg10-ee
-
-rspec-ee unit pg9 geo:
- extends: .rspec-ee-base-geo-pg9
- parallel: 2
-
-rspec-ee integration pg9 geo:
- extends: .rspec-ee-base-geo-pg9
-
-rspec-ee system pg9 geo:
- extends: .rspec-ee-base-geo-pg9
-
-rspec-ee unit pg10 geo:
- extends: .rspec-ee-base-geo-pg10
- parallel: 2
-
-rspec-ee integration pg10 geo:
- extends: .rspec-ee-base-geo-pg10
-
-rspec-ee system pg10 geo:
- extends: .rspec-ee-base-geo-pg10
-
-rspec quarantine pg9:
- extends:
- - .rspec-base-pg9
- - .only-master
- variables:
- RSPEC_OPTS: "--tag quarantine -- spec/"
- script:
- - source scripts/rspec_helpers.sh
- - rspec_simple_job "${RSPEC_OPTS}"
- allow_failure: true
-
-rspec-ee quarantine pg9:
- extends:
- - rspec quarantine pg9
- - .only-ee
- variables:
- RSPEC_OPTS: "--tag quarantine -- ee/spec/"
-
rspec fast_spec_helper:
extends: .rspec-base-pg9
script:
- bin/rspec spec/fast_spec_helper.rb
-static-analysis:
- extends: .only-code-qa-rails-job-base
- stage: test
- needs: ["setup-test-env", "compile-assets pull-cache"]
- dependencies: ["setup-test-env", "compile-assets pull-cache"]
- variables:
- SETUP_DB: "false"
- parallel: 2
- script:
- - scripts/static-analysis
- cache:
- key: "debian-stretch-ruby-2.6-and-rubocop"
- paths:
- - vendor/ruby
- - tmp/rubocop_cache
- policy: pull-push
-
-downtime_check:
- extends:
- - .rake-exec
- - .only:changes-code-backstage
- - .except:refs-master-tags-stable-deploy
- stage: test
- needs: ["setup-test-env"]
- dependencies: ["setup-test-env"]
-
.db-job-base:
extends:
- - .only-code-rails-job-base
+ - .rails-job-base
+ - .rails:rules:ee-and-foss
- .use-pg9
stage: test
- needs: ["setup-test-env"]
- dependencies: ["setup-test-env"]
+ needs:
+ - job: setup-test-env
+ artifacts: true
-# DB migration, rollback, and seed jobs
db:migrate:reset:
extends: .db-job-base
script:
@@ -358,12 +303,14 @@ gitlab:setup:
- log/development.log
coverage:
- extends: .only-code-rails-job-base
- cache:
- policy: pull
+ extends:
+ - .rails-job-base
+ - .rails:rules:ee-and-foss
+ stage: post-test
variables:
SETUP_DB: "false"
- stage: post-test
+ cache:
+ policy: pull
script:
- bundle exec scripts/merge-simplecov
- bundle exec scripts/gather-test-memory-data
@@ -375,11 +322,181 @@ coverage:
- coverage/index.html
- coverage/assets/
- tmp/memory_test/
+# ee and foss jobs #
+####################
+
+####################
+# master-only jobs #
+rspec quarantine pg9:
+ extends:
+ - .rspec-base-quarantine
+ - .rails:rules:master-refs
+
+.rspec-base-pg10:
+ extends:
+ - .rspec-base
+ - .rails:rules:master-refs
+ - .use-pg10
+
+rspec unit pg10:
+ extends: .rspec-base-pg10
+ parallel: 20
+
+rspec integration pg10:
+ extends: .rspec-base-pg10
+ parallel: 8
+
+rspec system pg10:
+ extends: .rspec-base-pg10
+ parallel: 24
+# master-only jobs #
+####################
+
+#########################
+# ee + master-only jobs #
+rspec-ee quarantine pg9:
+ extends:
+ - .rspec-base-quarantine
+ - .rails:rules:master-refs-ee-only
+ variables:
+ RSPEC_OPTS: "--tag quarantine -- ee/spec/"
+
+rspec-ee migration pg10:
+ extends:
+ - .rspec-ee-base-pg10
+ - .rspec-base-migration
+ - .rails:rules:master-refs
+ parallel: 2
+
+rspec-ee unit pg10:
+ extends:
+ - .rspec-ee-base-pg10
+ - .rails:rules:master-refs
+ parallel: 10
+
+rspec-ee integration pg10:
+ extends:
+ - .rspec-ee-base-pg10
+ - .rails:rules:master-refs
+ parallel: 3
+
+rspec-ee system pg10:
+ extends:
+ - .rspec-ee-base-pg10
+ - .rails:rules:master-refs
+ parallel: 5
+# ee + master-only jobs #
+#########################
+
+#################
+# ee-only jobs #
+.rspec-base-ee:
+ extends:
+ - .rspec-base
+ - .rails:rules:ee-only
+
+.rspec-base-pg9-as-if-foss:
+ extends:
+ - .rspec-base-ee
+ - .as-if-foss
+ - .use-pg9
+ needs:
+ - job: setup-test-env
+ artifacts: true
+ - job: retrieve-tests-metadata
+ artifacts: true
+ - job: compile-assets pull-cache foss
+ artifacts: true
+
+.rspec-ee-base-pg9:
+ extends:
+ - .rspec-base-ee
+ - .use-pg9-ee
+
+.rspec-ee-base-pg10:
+ extends:
+ - .rspec-base-ee
+ - .use-pg10-ee
+
+rspec migration pg9-as-if-foss:
+ extends:
+ - .rspec-base-pg9-as-if-foss
+ - .rspec-base-migration
+ parallel: 5
+
+rspec unit pg9-as-if-foss:
+ extends: .rspec-base-pg9-as-if-foss
+ parallel: 20
+
+rspec integration pg9-as-if-foss:
+ extends: .rspec-base-pg9-as-if-foss
+ parallel: 8
+
+rspec system pg9-as-if-foss:
+ extends: .rspec-base-pg9-as-if-foss
+ parallel: 24
+
+rspec-ee migration pg9:
+ extends:
+ - .rspec-ee-base-pg9
+ - .rspec-base-migration
+ parallel: 2
+
+rspec-ee unit pg9:
+ extends: .rspec-ee-base-pg9
+ parallel: 10
+
+rspec-ee integration pg9:
+ extends: .rspec-ee-base-pg9
+ parallel: 4
+
+rspec-ee system pg9:
+ extends: .rspec-ee-base-pg9
+ parallel: 6
+
+.rspec-ee-base-geo:
+ extends: .rspec-base-ee
+ script:
+ - source scripts/rspec_helpers.sh
+ - scripts/prepare_postgres_fdw.sh
+ - rspec_paralellized_job "--tag ~quarantine --tag geo"
+
+.rspec-ee-base-geo-pg9:
+ extends:
+ - .rspec-ee-base-geo
+ - .use-pg9-ee
+
+.rspec-ee-base-geo-pg10:
+ extends:
+ - .rspec-ee-base-geo
+ - .use-pg10-ee
+
+rspec-ee unit pg9 geo:
+ extends: .rspec-ee-base-geo-pg9
+ parallel: 2
+
+rspec-ee integration pg9 geo:
+ extends: .rspec-ee-base-geo-pg9
+
+rspec-ee system pg9 geo:
+ extends: .rspec-ee-base-geo-pg9
+
+rspec-ee unit pg10 geo:
+ extends: .rspec-ee-base-geo-pg10
+ parallel: 2
+
+rspec-ee integration pg10 geo:
+ extends: .rspec-ee-base-geo-pg10
+
+rspec-ee system pg10 geo:
+ extends: .rspec-ee-base-geo-pg10
db:rollback geo:
extends:
- db:rollback
- - .only-ee
+ - .rails:rules:ee-only
script:
- bundle exec rake geo:db:migrate VERSION=20170627195211
- bundle exec rake geo:db:migrate
+# ee-only jobs #
+################