diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-07 18:09:03 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-07 18:09:03 +0000 |
commit | d7ce7307dca551759ffa972015875f8ebe476927 (patch) | |
tree | 7cb8c211b737de7120dd2f1e825852e77ac5d380 /.gitlab/ci | |
parent | e43077ab4742ba5083a01a1e5341db1a1b7a1701 (diff) | |
download | gitlab-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.yml | 60 | ||||
-rw-r--r-- | .gitlab/ci/rails.gitlab-ci.yml | 565 |
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 # +################ |