.rails-job-base: extends: - .default-retry - .default-before_script - .rails-cache ####################################################### # EE/FOSS: default refs (MRs, master, schedules) jobs # setup-test-env: extends: - .rails-job-base - .rails:rules:default-refs-code-backstage-qa - .use-pg11 stage: prepare variables: GITLAB_TEST_EAGER_LOAD: "0" script: - run_timed_command "bundle exec ruby -I. -e 'require \"config/environment\"; TestEnv.init'" - run_timed_command "scripts/gitaly-test-build" # Do not use 'bundle exec' here - rm tmp/tests/gitaly/.ruby-bundle # This file prevents gems from being installed even if vendor/gitaly-ruby is missing artifacts: expire_in: 7d paths: - config/secrets.yml - tmp/tests/gitaly - tmp/tests/gitlab-elasticsearch-indexer - tmp/tests/gitlab-shell - tmp/tests/gitlab-test-fork - tmp/tests/gitlab-test-fork_bare - tmp/tests/gitlab-test - tmp/tests/gitlab-workhorse - tmp/tests/repositories - tmp/tests/second_storage when: always update-rails-cache: extends: - setup-test-env - .shared:rules:update-cache artifacts: {} # This job's purpose is only to update the cache. cache: policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .static-analysis-base: extends: - .default-retry - .default-before_script - .static-analysis-cache needs: [] variables: SETUP_DB: "false" ENABLE_SPRING: "1" update-static-analysis-cache: extends: - .static-analysis-base - .shared:rules:update-cache stage: prepare script: - rm -rf ./node_modules # We remove node_modules because there's no mechanism to remove stall entries. - run_timed_command "retry yarn install --frozen-lockfile" - bundle exec rubocop --parallel # For the moment we only cache `vendor/ruby/`, `node_modules/`, and `tmp/rubocop_cache` so we don't need to run all the tasks, cache: # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up but RuboCop has a mechanism # for keeping only the N latest cache files, so we take advantage of it with `pull-push` and removing `node_modules` at the start of the job. policy: pull-push static-analysis: extends: - .static-analysis-base - .rails:rules:default-refs-code-backstage-qa stage: test parallel: 4 script: - run_timed_command "retry yarn install --frozen-lockfile" - scripts/static-analysis downtime_check: extends: - .rails-job-base - .rails:rules:downtime_check needs: [] stage: test variables: SETUP_DB: "false" script: - bundle exec rake downtime_check .rspec-base: extends: .rails-job-base stage: test needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] script: - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" - 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/ - log/*.log reports: junit: junit_rspec.xml .rspec-base-pg11: extends: - .rspec-base - .use-pg11 .rspec-base-migration: extends: .rails:rules:ee-and-foss-migration script: - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" - source scripts/rspec_helpers.sh - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" rspec migration pg11: extends: - .rspec-base-pg11 - .rspec-base-migration parallel: 5 rspec unit pg11: extends: - .rspec-base-pg11 - .rails:rules:ee-and-foss-unit parallel: 20 rspec integration pg11: extends: - .rspec-base-pg11 - .rails:rules:ee-and-foss-integration parallel: 8 rspec system pg11: extends: - .rspec-base-pg11 - .rails:rules:ee-and-foss-system parallel: 24 rspec fast_spec_helper: extends: - .rspec-base-pg11 - .rails:rules:ee-and-foss-fast_spec_helper script: - bin/rspec spec/fast_spec_helper.rb .db-job-base: extends: - .rails-job-base - .rails:rules:ee-and-foss-migration - .use-pg11 stage: test needs: ["setup-test-env"] db:migrate:reset: extends: .db-job-base script: - bundle exec rake db:migrate:reset db:check-schema: extends: - .db-job-base - .rails:rules:ee-mr-and-master-only script: - source scripts/schema_changed.sh db:migrate-from-v12.10.0: extends: .db-job-base variables: SETUP_DB: "false" script: - export PROJECT_TO_CHECKOUT="gitlab" - export TAG_TO_CHECKOUT="v12.10.0-ee" - '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab-foss"' - '[[ -d "ee/" ]] || export TAG_TO_CHECKOUT="v12.10.0"' - git fetch https://gitlab.com/gitlab-org/$PROJECT_TO_CHECKOUT.git $TAG_TO_CHECKOUT - git checkout -f FETCH_HEAD - 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:structure: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=20181228175414 - 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 - run_timed_command "scripts/gitaly-test-build" - run_timed_command "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/*.log rspec:coverage: extends: - .rails-job-base - .rails:rules:rspec-coverage 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 - rspec migration pg11 - rspec unit pg11 - rspec integration pg11 - rspec system pg11 - rspec-ee migration pg11 - rspec-ee unit pg11 - rspec-ee integration pg11 - rspec-ee system pg11 - rspec-ee unit pg11 geo - rspec-ee integration pg11 geo - rspec-ee system pg11 geo - memory-static - memory-on-boot variables: SETUP_DB: "false" 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/ reports: cobertura: coverage/coverage.xml # EE/FOSS: default refs (MRs, master, schedules) jobs # ####################################################### ################################################## # EE: default refs (MRs, master, schedules) jobs # .rspec-base-pg11-as-if-foss: extends: - .rspec-base - .as-if-foss - .use-pg11 needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss"] rspec migration pg11-as-if-foss: extends: - .rspec-base-pg11-as-if-foss - .rspec-base-migration - .rails:rules:as-if-foss-migration parallel: 5 rspec unit pg11-as-if-foss: extends: - .rspec-base-pg11-as-if-foss - .rails:rules:as-if-foss-unit parallel: 20 rspec integration pg11-as-if-foss: extends: - .rspec-base-pg11-as-if-foss - .rails:rules:as-if-foss-integration parallel: 8 rspec system pg11-as-if-foss: extends: - .rspec-base-pg11-as-if-foss - .rails:rules:as-if-foss-system parallel: 24 .rspec-ee-base-pg11: extends: - .rspec-base - .use-pg11-ee rspec-ee migration pg11: extends: - .rspec-ee-base-pg11 - .rspec-base-migration - .rails:rules:ee-only-migration parallel: 2 rspec-ee unit pg11: extends: - .rspec-ee-base-pg11 - .rails:rules:ee-only-unit parallel: 10 rspec-ee integration pg11: extends: - .rspec-ee-base-pg11 - .rails:rules:ee-only-integration parallel: 4 rspec-ee system pg11: extends: - .rspec-ee-base-pg11 - .rails:rules:ee-only-system parallel: 6 .rspec-ee-base-geo: extends: .rspec-base script: - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" - source scripts/rspec_helpers.sh - scripts/prepare_postgres_fdw.sh - rspec_paralellized_job "--tag ~quarantine --tag geo" .rspec-ee-base-geo-pg11: extends: - .rspec-ee-base-geo - .use-pg11-ee rspec-ee unit pg11 geo: extends: - .rspec-ee-base-geo-pg11 - .rails:rules:ee-only-unit parallel: 2 rspec-ee integration pg11 geo: extends: - .rspec-ee-base-geo-pg11 - .rails:rules:ee-only-integration rspec-ee system pg11 geo: extends: - .rspec-ee-base-geo-pg11 - .rails:rules:ee-only-system db:rollback geo: extends: - db:rollback - .rails:rules:ee-only-migration script: - bundle exec rake geo:db:migrate VERSION=20170627195211 - bundle exec rake geo:db:migrate # EE: default refs (MRs, master, schedules) jobs # ################################################## ################################################## # EE: Canonical MR pipelines rspec foss-impact: extends: - .rspec-base - .as-if-foss - .rails:rules:ee-mr-only - .use-pg11 script: - install_gitlab_gem - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" - source scripts/rspec_helpers.sh - tooling/bin/find_foss_tests tmp/matching_foss_tests.txt - rspec_matched_tests tmp/matching_foss_tests.txt "--tag ~quarantine" artifacts: expire_in: 7d paths: - tmp/matching_foss_tests.txt - tmp/capybara/ # EE: Merge Request pipelines ##################################################