.rails:needs:setup-and-assets: needs: ["setup-test-env pg9", "compile-assets pull-cache"] .rails-job-base: extends: - .default-retry - .default-cache - .default-before_script ####################################################### # EE/FOSS: default refs (MRs, master, schedules) jobs # .base-setup-test-env: extends: - .rails-job-base stage: prepare script: - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' - scripts/gitaly-test-build # Do not use 'bundle exec' here artifacts: expire_in: 7d paths: - tmp/tests - config/secrets.yml - vendor/gitaly-ruby cache: policy: pull-push setup-test-env pg11: extends: - .base-setup-test-env - .rails:rules:master-push--master-schedule-2-hourly--code-backstage - .use-pg11 setup-test-env pg10: extends: - .base-setup-test-env - .rails:rules:master-schedule-nightly--code-backstage - .use-pg10 setup-test-env pg9: extends: - .base-setup-test-env - .rails:rules:default-refs-code-backstage-qa - .use-pg9 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: "ruby-2.6.5-pg9-rubocop" paths: - vendor/ruby - tmp/rubocop_cache policy: pull-push downtime_check: extends: - .rails-job-base - .rails:needs:setup-and-assets - .rails:rules:downtime_check stage: test variables: SETUP_DB: "false" script: - bundle exec rake downtime_check .rspec-base: extends: .rails-job-base stage: test needs: ["setup-test-env pg9", "retrieve-tests-metadata", "compile-assets pull-cache"] script: - source scripts/rspec_helpers.sh - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration" artifacts: expire_in: 31d when: always paths: - coverage/ - knapsack/ - rspec_flaky/ - rspec_profiling/ - tmp/capybara/ - tmp/memory_test/ - junit_rspec.xml reports: junit: junit_rspec.xml .rspec-base-pg9: extends: - .rspec-base - .rails:rules:ee-and-foss - .use-pg9 .rspec-base-migration: script: - source scripts/rspec_helpers.sh - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" rspec migration pg9: extends: - .rspec-base-pg9 - .rspec-base-migration parallel: 5 rspec unit pg9: extends: .rspec-base-pg9 parallel: 20 rspec integration pg9: extends: .rspec-base-pg9 parallel: 8 rspec system pg9: extends: .rspec-base-pg9 parallel: 24 rspec fast_spec_helper: extends: .rspec-base-pg9 script: - bin/rspec spec/fast_spec_helper.rb .db-job-base: extends: - .rails-job-base - .rails:rules:ee-and-foss - .use-pg9 stage: test needs: ["setup-test-env pg9"] db:migrate:reset: extends: .db-job-base script: - bundle exec rake db:migrate:reset db:check-schema: extends: .db-job-base script: - source scripts/schema_changed.sh db:migrate-from-v11.11.0: extends: .db-job-base variables: SETUP_DB: "false" script: - export PROJECT_TO_CHECKOUT="gitlab-foss" - export TAG_TO_CHECKOUT="v11.11.0" - '[[ ! -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"' - '[[ ! -d "ee/" ]] || export TAG_TO_CHECKOUT="v11.11.0-ee"' - git fetch https://gitlab.com/gitlab-org/$PROJECT_TO_CHECKOUT.git $TAG_TO_CHECKOUT - git checkout -f FETCH_HEAD - sed -i "s/gem 'oj', '~> 2.17.4'//" Gemfile - sed -i "s/gem 'bootsnap', '~> 1.0.0'/gem 'bootsnap'/" Gemfile - bundle update google-protobuf grpc bootsnap - bundle install $BUNDLE_INSTALL_FLAGS - date - cp config/gitlab.yml.example config/gitlab.yml - bundle exec rake db:drop db:create db:schema:load db:seed_fu - date - git checkout -f $CI_COMMIT_SHA - bundle install $BUNDLE_INSTALL_FLAGS - date - . scripts/prepare_build.sh - date - bundle exec rake db:migrate db:rollback: extends: .db-job-base script: - bundle exec rake db:migrate VERSION=20180101160629 - bundle exec rake db:migrate SKIP_SCHEMA_VERSION_CHECK=true gitlab:setup: extends: .db-job-base variables: SETUP_DB: "false" script: # Manually clone gitlab-test and only seed this project in # db/fixtures/development/04_project.rb thanks to SIZE=1 below - git clone https://gitlab.com/gitlab-org/gitlab-test.git /home/git/repositories/gitlab-org/gitlab-test.git - scripts/gitaly-test-spawn - force=yes SIZE=1 FIXTURE_PATH="db/fixtures/development" bundle exec rake gitlab:setup artifacts: when: on_failure expire_in: 1d paths: - log/development.log rspec:coverage: extends: - .rails-job-base - .rails:rules:ee-mr-and-master-only stage: post-test # We cannot use needs since it would mean needing 84 jobs (since most are parallelized) # so we use `dependencies` here. dependencies: - setup-test-env pg9 - rspec migration pg9 - rspec unit pg9 - rspec integration pg9 - rspec system pg9 - rspec-ee migration pg9 - rspec-ee unit pg9 - rspec-ee integration pg9 - rspec-ee system pg9 - rspec-ee unit pg9 geo - rspec-ee integration pg9 geo - rspec-ee system pg9 geo - memory-static - memory-on-boot variables: SETUP_DB: "false" cache: policy: pull script: - bundle exec scripts/merge-simplecov - bundle exec scripts/gather-test-memory-data coverage: '/LOC \((\d+\.\d+%)\) covered.$/' artifacts: name: coverage expire_in: 31d paths: - coverage/index.html - coverage/assets/ - tmp/memory_test/ # EE/FOSS: default refs (MRs, master, schedules) jobs # ####################################################### ################################################## # EE: default refs (MRs, master, schedules) 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: ["setup-test-env pg9", "retrieve-tests-metadata", "compile-assets pull-cache as-if-foss"] .rspec-ee-base-pg9: extends: - .rspec-base-ee - .use-pg9-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 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 db:rollback geo: extends: - db:rollback - .rails:rules:ee-only script: - bundle exec rake geo:db:migrate VERSION=20170627195211 - bundle exec rake geo:db:migrate # EE: default refs (MRs, master, schedules) jobs # ################################################## #################################################################### # EE/FOSS: master non-scheduled and master 2-hourly scheduled jobs # .rspec-base-pg11: extends: - .rspec-base - .rails:rules:master-push--master-schedule-2-hourly--code-backstage - .use-pg11 needs: ["setup-test-env pg11", "retrieve-tests-metadata", "compile-assets pull-cache"] rspec migration pg11: extends: - .rspec-base-pg11 - .rspec-base-migration parallel: 5 rspec unit pg11: extends: .rspec-base-pg11 parallel: 20 rspec integration pg11: extends: .rspec-base-pg11 parallel: 8 rspec system pg11: extends: .rspec-base-pg11 parallel: 24 # EE/FOSS: master non-scheduled and master 2-hourly scheduled jobs # #################################################################### ############################################################### # EE: master non-scheduled and master 2-hourly scheduled jobs # .rspec-ee-base-pg11: extends: - .rspec-base-ee - .use-pg11-ee needs: ["setup-test-env pg11", "retrieve-tests-metadata", "compile-assets pull-cache"] rspec-ee migration pg11: extends: - .rspec-ee-base-pg11 - .rspec-base-migration - .rails:rules:master-push--master-schedule-2-hourly--code-backstage parallel: 2 rspec-ee unit pg11: extends: - .rspec-ee-base-pg11 - .rails:rules:master-push--master-schedule-2-hourly--code-backstage parallel: 10 rspec-ee integration pg11: extends: - .rspec-ee-base-pg11 - .rails:rules:master-push--master-schedule-2-hourly--code-backstage parallel: 4 rspec-ee system pg11: extends: - .rspec-ee-base-pg11 - .rails:rules:master-push--master-schedule-2-hourly--code-backstage parallel: 6 # EE: master non-scheduled and master 2-hourly scheduled jobs # ############################################################### ########################################## # EE/FOSS: master nightly scheduled jobs # .rspec-base-pg10: extends: - .rspec-base - .rails:rules:master-schedule-nightly--code-backstage - .use-pg10 needs: ["setup-test-env pg10", "retrieve-tests-metadata", "compile-assets pull-cache"] rspec migration pg10: extends: - .rspec-base-pg10 - .rspec-base-migration parallel: 5 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 # EE/FOSS: master nightly scheduled jobs # ########################################## ############################## # EE: nightly scheduled jobs # .rspec-ee-base-geo-pg10: extends: - .rspec-ee-base-geo - .use-pg10-ee - .rails:rules:master-schedule-nightly--code-backstage-ee-only needs: ["setup-test-env pg10", "retrieve-tests-metadata", "compile-assets pull-cache"] 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 # EE: nightly scheduled jobs # ##############################