Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab/ci')
-rw-r--r--.gitlab/ci/cng.gitlab-ci.yml53
-rw-r--r--.gitlab/ci/docs.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/frontend.gitlab-ci.yml7
-rw-r--r--.gitlab/ci/global.gitlab-ci.yml30
-rw-r--r--.gitlab/ci/memory.gitlab-ci.yml27
-rw-r--r--.gitlab/ci/qa.gitlab-ci.yml4
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml86
-rw-r--r--.gitlab/ci/reports.gitlab-ci.yml3
-rw-r--r--.gitlab/ci/review-apps/main.gitlab-ci.yml48
-rw-r--r--.gitlab/ci/review-apps/qa.gitlab-ci.yml12
-rw-r--r--.gitlab/ci/rules.gitlab-ci.yml608
-rw-r--r--.gitlab/ci/setup.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/test-metadata.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/workhorse.gitlab-ci.yml4
14 files changed, 393 insertions, 503 deletions
diff --git a/.gitlab/ci/cng.gitlab-ci.yml b/.gitlab/ci/cng.gitlab-ci.yml
index bf439288be2..d720ec5ae45 100644
--- a/.gitlab/ci/cng.gitlab-ci.yml
+++ b/.gitlab/ci/cng.gitlab-ci.yml
@@ -1,10 +1,51 @@
+cloud-native-image-env:
+ extends:
+ - .default-retry
+ - .cng:rules
+ image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13
+ stage: post-test
+ before_script:
+ - source ./scripts/utils.sh
+ - install_gitlab_gem
+ script:
+ - 'ruby -r./scripts/trigger-build.rb -e "puts Trigger.variables_for_env_file(Trigger::CNG.new.variables)" > build.env'
+ - cat build.env
+ artifacts:
+ reports:
+ dotenv: build.env
+ paths:
+ - build.env
+ expire_in: 7 days
+ when: always
+
cloud-native-image:
extends: .cng:rules
- image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine
- dependencies: []
stage: post-test
+ needs: ["cloud-native-image-env"]
+ inherit:
+ variables: false
variables:
- GIT_DEPTH: "1"
- script:
- - install_gitlab_gem
- - ./scripts/trigger-build cng
+ TOP_UPSTREAM_SOURCE_PROJECT: "${TOP_UPSTREAM_SOURCE_PROJECT}"
+ TOP_UPSTREAM_SOURCE_REF: "${TOP_UPSTREAM_SOURCE_REF}"
+ TOP_UPSTREAM_SOURCE_JOB: "${TOP_UPSTREAM_SOURCE_JOB}"
+ TOP_UPSTREAM_SOURCE_SHA: "${TOP_UPSTREAM_SOURCE_SHA}"
+ TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID: "${TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID}"
+ TOP_UPSTREAM_MERGE_REQUEST_IID: "${TOP_UPSTREAM_MERGE_REQUEST_IID}"
+ GITLAB_REF_SLUG: "${GITLAB_REF_SLUG}"
+ # CNG pipeline specific variables
+ GITLAB_VERSION: "${GITLAB_VERSION}"
+ GITLAB_TAG: "${GITLAB_TAG}"
+ GITLAB_ASSETS_TAG: "${GITLAB_ASSETS_TAG}"
+ FORCE_RAILS_IMAGE_BUILDS: "${FORCE_RAILS_IMAGE_BUILDS}"
+ CE_PIPELINE: "${CE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$CE_PIPELINE'` will evaluate to `false` when this variable is empty
+ EE_PIPELINE: "${EE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$EE_PIPELINE'` will evaluate to `false` when this variable is empty
+ GITLAB_SHELL_VERSION: "${GITLAB_SHELL_VERSION}"
+ GITLAB_ELASTICSEARCH_INDEXER_VERSION: "${GITLAB_ELASTICSEARCH_INDEXER_VERSION}"
+ GITLAB_KAS_VERSION: "${GITLAB_KAS_VERSION}"
+ GITLAB_WORKHORSE_VERSION: "${GITLAB_WORKHORSE_VERSION}"
+ GITLAB_PAGES_VERSION: "${GITLAB_PAGES_VERSION}"
+ GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}"
+ trigger:
+ project: gitlab-org/build/CNG
+ branch: $TRIGGER_BRANCH
+ strategy: depend
diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml
index c439e9a7c80..8b7691045cb 100644
--- a/.gitlab/ci/docs.gitlab-ci.yml
+++ b/.gitlab/ci/docs.gitlab-ci.yml
@@ -28,7 +28,7 @@
review-docs-deploy:
extends: .review-docs
script:
- - ./scripts/trigger-build docs deploy
+ - ./scripts/trigger-build.rb docs deploy
# Cleanup remote environment of gitlab-docs
review-docs-cleanup:
@@ -37,14 +37,14 @@ review-docs-cleanup:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}
action: stop
script:
- - ./scripts/trigger-build docs cleanup
+ - ./scripts/trigger-build.rb docs cleanup
docs-lint markdown:
extends:
- .default-retry
- .docs:rules:docs-lint
# When updating the image version here, update it in /scripts/lint-doc.sh too.
- image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.15-vale-2.14.0-markdownlint-0.30.0
+ image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.15-vale-2.15.0-markdownlint-0.31.0
stage: lint
needs: []
script:
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 1dd5285e0ae..ef5af342544 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -11,7 +11,7 @@
- .default-retry
- .default-before_script
- .assets-compile-cache
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7-git-2.33-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7-git-2.33-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.36
variables:
SETUP_DB: "false"
WEBPACK_VENDOR_DLL: "true"
@@ -306,11 +306,6 @@ qa-frontend-node:latest:
- .qa-frontend-node
- .frontend:rules:qa-frontend-node-latest
image: ${GITLAB_DEPENDENCY_PROXY}node:latest
- # This is a workaround for https://github.com/webpack/webpack/issues/14532 until
- # we can upgrade to Webpack 5 and switch to SHA256: https://gitlab.com/gitlab-org/gitlab/-/issues/350120
- script:
- - *yarn-install
- - run_timed_command "retry yarn run webpack-prod-node-latest"
webpack-dev-server:
extends:
diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml
index 73e4712cc89..33b04faf731 100644
--- a/.gitlab/ci/global.gitlab-ci.yml
+++ b/.gitlab/ci/global.gitlab-ci.yml
@@ -18,7 +18,7 @@
- source scripts/prepare_build.sh
.ruby-gems-cache: &ruby-gems-cache
- key: "ruby-gems-v1"
+ key: "ruby-gems-${DEBIAN_VERSION}"
paths:
- vendor/ruby/
policy: pull
@@ -28,7 +28,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.gitaly-ruby-gems-cache: &gitaly-ruby-gems-cache
- key: "gitaly-ruby-gems-v1"
+ key: "gitaly-ruby-gems-${DEBIAN_VERSION}"
paths:
- vendor/gitaly-ruby/
policy: pull
@@ -41,7 +41,7 @@
key:
files:
- GITALY_SERVER_VERSION
- prefix: "gitaly-binaries"
+ prefix: "gitaly-binaries-${DEBIAN-VERSION}"
paths:
- tmp/tests/gitaly/_build/bin/
- tmp/tests/gitaly/_build/deps/git/install/
@@ -56,7 +56,7 @@
policy: pull
.go-pkg-cache: &go-pkg-cache
- key: "go-pkg-v1"
+ key: "go-pkg-${DEBIAN_VERSION}"
paths:
- .go/pkg/mod/
policy: pull
@@ -66,7 +66,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.node-modules-cache: &node-modules-cache
- key: "node-modules-${NODE_ENV}-v1"
+ key: "node-modules-${DEBIAN_VERSION}-${NODE_ENV}"
paths:
- node_modules/
- tmp/cache/webpack-dlls/
@@ -77,7 +77,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.assets-cache: &assets-cache
- key: "assets-${NODE_ENV}-v2"
+ key: "assets-${DEBIAN_VERSION}-${NODE_ENV}"
paths:
- assets-hash.txt
- public/assets/webpack/
@@ -91,7 +91,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.storybook-node-modules-cache: &storybook-node-modules-cache
- key: "storybook-node-modules-${NODE_ENV}-v1"
+ key: "storybook-node-modules-${DEBIAN_VERSION}-${NODE_ENV}"
paths:
- storybook/node_modules/
policy: pull
@@ -101,7 +101,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.rubocop-cache: &rubocop-cache
- key: "rubocop-v1"
+ key: "rubocop-${DEBIAN_VERSION}"
paths:
- tmp/rubocop_cache/
policy: pull
@@ -113,7 +113,7 @@
policy: push
.qa-ruby-gems-cache: &qa-ruby-gems-cache
- key: "qa-ruby-gems-v1-debian-buster"
+ key: "qa-ruby-gems-${DEBIAN_VERSION}"
paths:
- qa/vendor/ruby/
policy: pull
@@ -213,7 +213,7 @@
- *storybook-node-modules-cache-push
.use-pg11:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
services:
- name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -222,7 +222,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
services:
- name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -231,7 +231,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg13:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
services:
- name: postgres:13
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -240,7 +240,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg11-ee:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
services:
- name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -251,7 +251,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12-ee:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
services:
- name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -262,7 +262,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg13-ee:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
services:
- name: postgres:13
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml
index 9234b116ff8..c6572d9709c 100644
--- a/.gitlab/ci/memory.gitlab-ci.yml
+++ b/.gitlab/ci/memory.gitlab-ci.yml
@@ -11,34 +11,9 @@
metrics: "${METRICS_FILE}"
expire_in: 31d
-memory-static:
- extends: .only-code-memory-job-base
- stage: test
- needs: ["setup-test-env"]
- variables:
- SETUP_DB: "false"
- MEMORY_BUNDLE_MEM_FILE: "tmp/memory_bundle_mem.txt"
- MEMORY_BUNDLE_OBJECTS_FILE: "tmp/memory_bundle_objects.txt"
- script:
- # Uses two different reports from the 'derailed_benchmars' gem.
-
- # Loads each of gems in the Gemfile and checks how much memory they consume when they are required.
- # 'derailed_benchmarks' internally uses 'get_process_mem'
- - bundle exec derailed bundle:mem > "${MEMORY_BUNDLE_MEM_FILE}"
- - scripts/generate-gems-size-metrics-static "${MEMORY_BUNDLE_MEM_FILE}" >> "${METRICS_FILE}"
-
- # Outputs detailed information about objects created while gems are loaded.
- # 'derailed_benchmarks' internally uses 'memory_profiler'
- - bundle exec derailed bundle:objects > "${MEMORY_BUNDLE_OBJECTS_FILE}"
- - scripts/generate-gems-memory-metrics-static "${MEMORY_BUNDLE_OBJECTS_FILE}" >> "${METRICS_FILE}"
- artifacts:
- paths:
- - "${METRICS_FILE}"
- - "${MEMORY_BUNDLE_MEM_FILE}"
- - "${MEMORY_BUNDLE_OBJECTS_FILE}"
# Show memory usage caused by invoking require per gem.
-# Unlike `memory-static`, it hits the app with one request to ensure that any last minute require-s have been called.
+# Hits the app with one request to ensure that any last minute require-s have been called.
# The application is booted in `production` environment.
# All tests are run without a webserver (directly using Rack::Mock by default).
memory-on-boot:
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index b12f76f2823..77d12a3e848 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -73,7 +73,7 @@ update-qa-cache:
- echo $exit_code
- |
if [ $exit_code -eq 0 ]; then
- ./scripts/trigger-build omnibus
+ ./scripts/trigger-build.rb omnibus
elif [ $exit_code -eq 1 ]; then
exit 1
else
@@ -108,7 +108,7 @@ update-qa-cache:
if [[ $feature_flags ]]; then
export GITLAB_QA_OPTIONS="--set-feature-flags $feature_flags"
echo $GITLAB_QA_OPTIONS
- ./scripts/trigger-build omnibus
+ ./scripts/trigger-build.rb omnibus
else
echo "No changed feature flag found to test. The tests are skipped if the flag was removed."
fi
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 1d2f94b616d..8a4ea690c60 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -29,7 +29,9 @@
GITLAB_USE_MODEL_LOAD_BALANCING: "true"
.rspec-base:
- extends: .rails-job-base
+ extends:
+ - .rails-job-base
+ - .base-artifacts
stage: test
variables:
RUBY_GC_MALLOC_LIMIT: 67108864
@@ -40,6 +42,8 @@
script:
- !reference [.base-script, script]
- rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"
+
+.base-artifacts:
artifacts:
expire_in: 31d
when: always
@@ -48,16 +52,16 @@
- crystalball/
- deprecations/
- knapsack/
- - rspec_flaky/
- - rspec_profiling/
+ - rspec/
- tmp/capybara/
- - tmp/memory_test/
- log/*.log
reports:
- junit: junit_rspec.xml
+ junit: ${JUNIT_RESULT_FILE}
.rspec-base-migration:
- extends: .rails:rules:ee-and-foss-migration
+ extends:
+ - .base-artifacts
+ - .rails:rules:ee-and-foss-migration
script:
- !reference [.base-script, script]
- rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration"
@@ -307,6 +311,8 @@ rspec system pg12:
- .rspec-base-pg12
- .rails:rules:ee-and-foss-system
- .rspec-system-parallel
+ variables:
+ DEBUG_GITLAB_TRANSACTION_STACK: "true"
rspec system pg12 minimal:
extends:
@@ -335,13 +341,9 @@ rspec fast_spec_helper:
- .rspec-base-pg12
- .rails:rules:ee-and-foss-fast_spec_helper
script:
- - bin/rspec spec/fast_spec_helper.rb
-
-rspec fast_spec_helper minimal:
- extends:
- - rspec fast_spec_helper
- - .minimal-rspec-tests
- - .rails:rules:ee-and-foss-fast_spec_helper:minimal
+ - fast_spec_helper_specs=$(git grep -l -E '^require.*fast_spec_helper')
+ # Load fast_spec_helper as well just in case there are no specs available.
+ - bin/rspec --dry-run spec/fast_spec_helper.rb $fast_spec_helper_specs
db:rollback:
extends: .db-job-base
@@ -427,6 +429,13 @@ db:check-migrations-decomposed:
- .decomposed-database
- .rails:rules:decomposed-databases
+db:migrate-non-superuser:
+ extends:
+ - .db-job-base
+ - .rails:rules:ee-and-foss-mr-with-migration
+ script:
+ - bundle exec rake gitlab:db:reset_as_non_superuser
+
db:gitlabcom-database-testing:
extends: .rails:rules:db:gitlabcom-database-testing
stage: test
@@ -436,7 +445,7 @@ db:gitlabcom-database-testing:
script:
- source scripts/utils.sh
- install_gitlab_gem
- - ./scripts/trigger-build gitlab-com-database-testing
+ - ./scripts/trigger-build.rb gitlab-com-database-testing
gitlab:setup:
extends: .db-job-base
@@ -554,7 +563,6 @@ rspec:coverage:
- rspec-ee integration pg12 geo minimal
- rspec-ee system pg12 geo minimal
# Memory jobs
- - memory-static
- memory-on-boot
# As-if-FOSS jobs
- rspec migration pg12-as-if-foss
@@ -571,7 +579,6 @@ rspec:coverage:
- rspec system pg12-as-if-foss decomposed
script:
- run_timed_command "bundle exec scripts/merge-simplecov"
- - run_timed_command "bundle exec scripts/gather-test-memory-data"
coverage: '/LOC \((\d+\.\d+%)\) covered.$/'
artifacts:
name: coverage
@@ -580,7 +587,6 @@ rspec:coverage:
- coverage/index.html
- coverage/assets/
- coverage/lcov/
- - tmp/memory_test/
reports:
cobertura: coverage/coverage.xml
@@ -621,54 +627,26 @@ rspec:feature-flags:
run_timed_command "bundle exec scripts/used-feature-flags";
fi
-rspec:skipped-flaky-tests-report:
+rspec:flaky-tests-report:
extends:
- .default-retry
- - .rails:rules:skipped-flaky-tests-report
- image: ruby:2.7-alpine
+ - .rails:rules:flaky-tests-report
stage: post-test
# We cannot use needs since it would mean needing 84 jobs (since most are parallelized)
# so we use `dependencies` here.
- dependencies:
- # FOSS/EE jobs
- - rspec migration pg12
- - rspec unit pg12
- - rspec integration pg12
- - rspec system pg12
- # FOSS/EE minimal jobs
- - rspec migration pg12 minimal
- - rspec unit pg12 minimal
- - rspec integration pg12 minimal
- - rspec system pg12 minimal
- # EE jobs
- - rspec-ee migration pg12
- - rspec-ee unit pg12
- - rspec-ee integration pg12
- - rspec-ee system pg12
- # EE minimal jobs
- - rspec-ee migration pg12 minimal
- - rspec-ee unit pg12 minimal
- - rspec-ee integration pg12 minimal
- - rspec-ee system pg12 minimal
- # Geo jobs
- - rspec-ee unit pg12 geo
- - rspec-ee integration pg12 geo
- - rspec-ee system pg12 geo
- # Geo minimal jobs
- - rspec-ee unit pg12 geo minimal
- - rspec-ee integration pg12 geo minimal
- - rspec-ee system pg12 geo minimal
+ dependencies: !reference ["rspec:coverage", "dependencies"]
variables:
- SKIPPED_FLAKY_TESTS_REPORT: skipped_flaky_tests_report.txt
+ SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_report.txt
+ RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_report.txt
before_script:
- - 'echo "SKIP_FLAKY_TESTS_AUTOMATICALLY: $SKIP_FLAKY_TESTS_AUTOMATICALLY"'
- - mkdir -p rspec_flaky
+ - source scripts/utils.sh
+ - source scripts/rspec_helpers.sh
script:
- - find rspec_flaky/ -type f -name 'skipped_flaky_tests_*_report.txt' -exec cat {} + >> "${SKIPPED_FLAKY_TESTS_REPORT}"
+ - generate_flaky_tests_reports
artifacts:
expire_in: 31d
paths:
- - ${SKIPPED_FLAKY_TESTS_REPORT}
+ - rspec/
# EE/FOSS: default refs (MRs, default branch, schedules) jobs #
#######################################################
diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml
index 6d58bbf9682..b9d2e31191a 100644
--- a/.gitlab/ci/reports.gitlab-ci.yml
+++ b/.gitlab/ci/reports.gitlab-ci.yml
@@ -112,7 +112,6 @@ yarn-audit-dependency_scanning:
name: registry.gitlab.com/gitlab-com/gl-security/security-research/package-hunter-cli:1.1.0
entrypoint: [""]
variables:
- DEBUG: '*'
HTR_user: '$PACKAGE_HUNTER_USER'
HTR_pass: '$PACKAGE_HUNTER_PASS'
needs: []
@@ -121,7 +120,7 @@ yarn-audit-dependency_scanning:
- rm -r spec locale .git app/assets/images doc/
- cd .. && tar -I "gzip --best" -cf gitlab.tgz gitlab/
script:
- - node /usr/src/app/cli.js analyze --format gitlab --manager ${PACKAGE_MANAGER} gitlab.tgz | tee ${CI_PROJECT_DIR}/gl-dependency-scanning-report.json
+ - DEBUG=* node /usr/src/app/cli.js analyze --format gitlab --manager ${PACKAGE_MANAGER} gitlab.tgz | tee ${CI_PROJECT_DIR}/gl-dependency-scanning-report.json
artifacts:
paths:
- gl-dependency-scanning-report.json
diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml
index 16ef3c82cda..d083f876b03 100644
--- a/.gitlab/ci/review-apps/main.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml
@@ -16,20 +16,58 @@ include:
- source ./scripts/review_apps/review-apps.sh
- install_api_client_dependencies_with_apk
-review-build-cng:
+review-build-cng-env:
extends:
- .default-retry
- .review:rules:review-build-cng
image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13
stage: prepare
- variables:
- CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}" # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens
- CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror"
+ needs: []
before_script:
- source ./scripts/utils.sh
- install_gitlab_gem
script:
- - ./scripts/trigger-build cng
+ - 'ruby -r./scripts/trigger-build.rb -e "puts Trigger.variables_for_env_file(Trigger::CNG.new.variables)" > build.env'
+ - cat build.env
+ artifacts:
+ reports:
+ dotenv: build.env
+ paths:
+ - build.env
+ expire_in: 7 days
+ when: always
+
+review-build-cng:
+ extends: .review:rules:review-build-cng
+ stage: prepare
+ needs: ["review-build-cng-env"]
+ inherit:
+ variables: false
+ variables:
+ TOP_UPSTREAM_SOURCE_PROJECT: "${TOP_UPSTREAM_SOURCE_PROJECT}"
+ TOP_UPSTREAM_SOURCE_REF: "${TOP_UPSTREAM_SOURCE_REF}"
+ TOP_UPSTREAM_SOURCE_JOB: "${TOP_UPSTREAM_SOURCE_JOB}"
+ TOP_UPSTREAM_SOURCE_SHA: "${TOP_UPSTREAM_SOURCE_SHA}"
+ TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID: "${TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID}"
+ TOP_UPSTREAM_MERGE_REQUEST_IID: "${TOP_UPSTREAM_MERGE_REQUEST_IID}"
+ GITLAB_REF_SLUG: "${GITLAB_REF_SLUG}"
+ # CNG pipeline specific variables
+ GITLAB_VERSION: "${GITLAB_VERSION}"
+ GITLAB_TAG: "${GITLAB_TAG}"
+ GITLAB_ASSETS_TAG: "${GITLAB_ASSETS_TAG}"
+ FORCE_RAILS_IMAGE_BUILDS: "${FORCE_RAILS_IMAGE_BUILDS}"
+ CE_PIPELINE: "${CE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$CE_PIPELINE'` will evaluate to `false` when this variable is empty
+ EE_PIPELINE: "${EE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$EE_PIPELINE'` will evaluate to `false` when this variable is empty
+ GITLAB_SHELL_VERSION: "${GITLAB_SHELL_VERSION}"
+ GITLAB_ELASTICSEARCH_INDEXER_VERSION: "${GITLAB_ELASTICSEARCH_INDEXER_VERSION}"
+ GITLAB_KAS_VERSION: "${GITLAB_KAS_VERSION}"
+ GITLAB_WORKHORSE_VERSION: "${GITLAB_WORKHORSE_VERSION}"
+ GITLAB_PAGES_VERSION: "${GITLAB_PAGES_VERSION}"
+ GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}"
+ trigger:
+ project: gitlab-org/build/CNG-mirror
+ branch: $TRIGGER_BRANCH
+ strategy: depend
.review-workflow-base:
extends:
diff --git a/.gitlab/ci/review-apps/qa.gitlab-ci.yml b/.gitlab/ci/review-apps/qa.gitlab-ci.yml
index 4ef6efa2604..eaf6429ad58 100644
--- a/.gitlab/ci/review-apps/qa.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/qa.gitlab-ci.yml
@@ -27,11 +27,13 @@
- echo "${CI_ENVIRONMENT_URL}"
- cd qa
script:
- - |
- bin/test "${QA_SCENARIO}" "${CI_ENVIRONMENT_URL}" \
- -- \
- --color --format documentation \
- --format RspecJunitFormatter --out tmp/rspec.xml
+ - qa_run_status=0
+ - bin/test "${QA_SCENARIO}" "${CI_ENVIRONMENT_URL}" -- --color --format documentation --format RspecJunitFormatter --out tmp/rspec.xml || qa_run_status=$?
+ - if [ ${qa_run_status} -ne 0 ]; then
+ release_sha=$(echo "${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-${CI_COMMIT_SHA}}" | cut -c1-11);
+ echo "Errors can be found at https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/${release_sha}/all-events/.";
+ fi
+ - exit ${qa_run_status}
artifacts:
paths:
- qa/tmp
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 008b62f6a0f..a4bb99c49ad 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -73,6 +73,9 @@
.if-security-merge-request: &if-security-merge-request
if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID'
+.if-fork-merge-request: &if-fork-merge-request
+ if: '$CI_PROJECT_NAMESPACE !~ /^gitlab(-org)?($|\/)/ && $CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_LABELS !~ /pipeline:run-all-rspec/'
+
.if-default-branch-schedule-2-hourly: &if-default-branch-schedule-2-hourly
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"'
@@ -121,15 +124,13 @@
.if-security-pipeline-merge-result: &if-security-pipeline-merge-result
if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "gitlab-org/security" && $GITLAB_USER_LOGIN == "gitlab-release-tools-bot"'
-.if-skip-flaky-tests-automatically: &if-skip-flaky-tests-automatically
- if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true"'
-
####################
# Changes patterns #
####################
.ci-patterns: &ci-patterns
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
+ - "scripts/rspec_helpers.sh"
.ci-build-images-patterns: &ci-build-images-patterns
- ".gitlab-ci.yml"
@@ -143,7 +144,7 @@
- ".gitlab/ci/review-apps/**/*"
- "scripts/review_apps/base-config.yaml"
- "scripts/review_apps/review-apps.sh"
- - "scripts/trigger-build"
+ - "scripts/trigger-build.rb"
- "{,ee/,jh/}{bin,config}/**/*.rb"
.ci-qa-patterns: &ci-qa-patterns
@@ -232,6 +233,9 @@
.controllers-patterns: &controllers-patterns
- "{,ee/,jh/}{app/controllers}/**/*"
+.models-patterns: &models-patterns
+ - "{,ee/,jh/}{app/models}/**/*"
+
.startup-css-patterns: &startup-css-patterns
- "{,ee/,jh/}app/assets/stylesheets/startup/**/*"
@@ -248,6 +252,7 @@
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
- "*_VERSION"
+ - "scripts/rspec_helpers.sh"
# DB patterns + .ci-patterns
.db-patterns: &db-patterns
@@ -456,6 +461,106 @@
.feature-flag-development-config-patterns: &feature-flag-development-config-patterns
- "{,ee/}config/feature_flags/{development,ops}/*.yml"
+##################
+# Conditions set #
+##################
+.strict-ee-only-rules:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-jh
+ when: never
+
+.as-if-jh-default-exclusion-rules:
+ rules:
+ - <<: *if-security-merge-request
+ when: never
+ - <<: *if-merge-request-targeting-stable-branch
+ when: never
+ - <<: *if-stable-branch-refs
+ when: never
+ - <<: *if-merge-request-labels-as-if-jh
+ allow_failure: true
+
+.rails:rules:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request-approved
+ when: never
+ - <<: *if-automated-merge-request
+ when: never
+ - <<: *if-security-merge-request
+ when: never
+
+
+.rails:rules:ee-and-foss-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ - <<: *if-automated-merge-request
+ changes: *backend-patterns
+ - <<: *if-security-merge-request
+ changes: *backend-patterns
+ - <<: *if-merge-request-not-approved
+ when: never
+
+.rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ when: never
+
+.rails:rules:unit-integration:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ when: never
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
+
+.rails:rules:system-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ - <<: *if-merge-request
+ changes: *workhorse-patterns
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ - <<: *if-automated-merge-request
+ changes: *code-backstage-patterns
+ - <<: *if-security-merge-request
+ changes: *code-backstage-patterns
+ - <<: *if-merge-request-not-approved
+ when: never
+
+.rails:rules:system:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ when: never
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *workhorse-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *code-backstage-patterns
+
+.rails:rules:previous-failed-tests-default-rules:
+ rules:
+ - <<: *if-security-merge-request
+ when: never
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request
+ changes: *code-backstage-patterns
+
################
# Shared rules #
################
@@ -519,7 +624,6 @@
rules:
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.dev-fixtures:rules:ee-only:
rules:
@@ -527,7 +631,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
##############
# Docs rules #
@@ -543,7 +646,6 @@
rules:
- <<: *if-default-refs
changes: *docs-patterns
- when: on_success
.docs:rules:deprecations-and-removals:
rules:
@@ -553,14 +655,12 @@
##################
# GraphQL rules #
##################
-
.graphql:rules:graphql-verify:
rules:
- <<: *if-not-ee
when: never
- <<: *if-default-refs
changes: *code-backstage-qa-patterns
- when: on_success
##################
# Frontend rules #
@@ -572,11 +672,13 @@
- <<: *if-merge-request-labels-run-review-app
- <<: *if-auto-deploy-branches
- changes: *code-qa-patterns
+ - changes: *workhorse-patterns
.frontend:rules:compile-test-assets:
rules:
- - changes: *code-backstage-qa-patterns
- <<: *if-merge-request-labels-run-all-rspec
+ - changes: *code-backstage-qa-patterns
+ - changes: *workhorse-patterns
.frontend:rules:compile-test-assets-as-if-foss:
rules:
@@ -586,23 +688,19 @@
- <<: *if-merge-request-labels-run-all-rspec
- changes: *code-backstage-qa-patterns
- changes: *startup-css-patterns
+ - changes: *workhorse-patterns
.frontend:rules:compile-test-assets-as-if-jh:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request-labels-run-all-rspec
+ allow_failure: true
- changes: *code-backstage-qa-patterns
+ allow_failure: true
- changes: *startup-css-patterns
+ allow_failure: true
+ - changes: *workhorse-patterns
.frontend:rules:default-frontend-jobs:
rules:
@@ -611,10 +709,7 @@
.frontend:rules:default-frontend-jobs-as-if-foss:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
+ - !reference [".strict-ee-only-rules", rules]
- <<: *if-security-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-labels-as-if-foss
@@ -626,25 +721,21 @@
.frontend:rules:default-frontend-jobs-as-if-jh:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request-labels-run-all-rspec
+ allow_failure: true
- <<: *if-merge-request
changes: *startup-css-patterns
+ allow_failure: true
- <<: *if-merge-request
changes: *ci-patterns
+ allow_failure: true
.frontend:rules:jest:
rules:
+ - <<: *if-fork-merge-request
+ when: never
- <<: *if-merge-request-labels-run-all-jest
- <<: *if-default-refs
changes: *core-frontend-patterns
@@ -661,16 +752,12 @@
.frontend:rules:jest:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
+ - <<: *if-fork-merge-request
+ changes: *code-backstage-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
- <<: *if-merge-request-labels-run-all-jest
when: never
- - <<: *if-default-refs
- changes: *core-frontend-patterns
+ - changes: *core-frontend-patterns
when: never
- <<: *if-merge-request
changes: *ci-patterns
@@ -680,10 +767,7 @@
.frontend:rules:eslint-as-if-foss:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
+ - !reference [".strict-ee-only-rules", rules]
# We already have `static-analysis as-if-foss` which already runs `lint:eslint:all` if the `pipeline:run-as-if-foss` label is set.
- <<: *if-merge-request-labels-as-if-foss
when: never
@@ -731,7 +815,6 @@
rules:
- <<: *if-default-refs
changes: *code-patterns
- when: on_success
###############
# Pages rules #
@@ -747,14 +830,10 @@
rules:
- <<: *if-default-refs
changes: *code-qa-patterns
- when: on_success
.qa:rules:as-if-foss:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
+ - !reference [".strict-ee-only-rules", rules]
- <<: *if-security-merge-request
changes: *code-qa-patterns
- <<: *if-merge-request-labels-as-if-foss
@@ -809,11 +888,15 @@
.rails:rules:ee-and-foss-migration:
rules:
+ - <<: *if-fork-merge-request
+ when: never
- <<: *if-merge-request-labels-run-all-rspec
- <<: *if-merge-request
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
- <<: *if-automated-merge-request
@@ -826,20 +909,12 @@
.rails:rules:ee-and-foss-migration:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *db-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
when: never
@@ -860,105 +935,49 @@
.rails:rules:ee-and-foss-unit:
rules:
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-and-foss-unit:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
.rails:rules:ee-and-foss-integration:
rules:
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-and-foss-integration:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
.rails:rules:ee-and-foss-system:
rules:
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *code-backstage-patterns
- - <<: *if-security-merge-request
- changes: *code-backstage-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:system-default-rules", rules]
- changes: *code-backstage-patterns
.rails:rules:ee-and-foss-system:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
- - <<: *if-merge-request
+ - <<: *if-fork-merge-request
changes: *code-backstage-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:system:minimal-default-rules", rules]
.rails:rules:ee-and-foss-fast_spec_helper:
rules:
@@ -967,33 +986,8 @@
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: ["config/**/*"]
- - <<: *if-security-merge-request
- changes: ["config/**/*"]
- - <<: *if-merge-request-not-approved
- when: never
- changes: ["config/**/*"]
-.rails:rules:ee-and-foss-fast_spec_helper:minimal:
- rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
- - <<: *if-merge-request
- changes: ["config/**/*"]
-
.rails:rules:code-backstage-qa:
rules:
- changes: *code-backstage-qa-patterns
@@ -1008,6 +1002,8 @@
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
- <<: *if-automated-merge-request
@@ -1022,20 +1018,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
when: never
@@ -1044,37 +1030,19 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-only-unit:minimal:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
@@ -1082,37 +1050,19 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-only-integration:minimal:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
@@ -1120,39 +1070,19 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *code-backstage-patterns
- - <<: *if-security-merge-request
- changes: *code-backstage-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:system-default-rules", rules]
- changes: *code-backstage-patterns
.rails:rules:ee-only-system:minimal:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
- - <<: *if-merge-request
+ - <<: *if-fork-merge-request
changes: *code-backstage-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:system:minimal-default-rules", rules]
.rails:rules:as-if-foss-migration:
rules:
@@ -1163,8 +1093,8 @@
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
- - <<: *if-security-merge-request
- changes: *db-patterns
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request-labels-as-if-foss
changes: *db-patterns
- <<: *if-automated-merge-request
@@ -1178,18 +1108,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request-labels-as-if-foss
changes: *db-patterns
when: never
@@ -1198,17 +1120,9 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1216,18 +1130,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1235,17 +1141,9 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1253,18 +1151,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1272,17 +1162,9 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *code-backstage-patterns
- - <<: *if-security-merge-request
- changes: *code-backstage-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:system-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *code-backstage-patterns
@@ -1290,16 +1172,16 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *core-backend-patterns
when: never
- <<: *if-merge-request
+ changes: *workhorse-patterns
+ when: never
+ - <<: *if-merge-request
changes: *ci-patterns
when: never
- <<: *if-merge-request-labels-as-if-foss
@@ -1307,18 +1189,8 @@
.rails:rules:as-if-jh-rspec:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
- allow_failure: true
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request
changes: *ci-patterns
allow_failure: true
@@ -1340,24 +1212,17 @@
.rails:rules:detect-tests:
rules:
- - changes: *code-backstage-qa-patterns
- <<: *if-merge-request-labels-run-all-rspec
+ - changes: *code-backstage-qa-patterns
+ - changes: *workhorse-patterns
.rails:rules:detect-previous-failed-tests:
rules:
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *code-backstage-patterns
+ - !reference [".rails:rules:previous-failed-tests-default-rules", rules]
.rails:rules:rerun-previous-failed-tests:
rules:
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *code-backstage-patterns
+ - !reference [".rails:rules:previous-failed-tests-default-rules", rules]
.rails:rules:rspec-foss-impact:
rules:
@@ -1418,19 +1283,21 @@
- <<: *if-merge-request
changes: *backend-patterns
-.rails:rules:default-branch-schedule-nightly--code-backstage:
+.rails:rules:default-branch-schedule-nightly--code-backstage-default-rules:
rules:
- <<: *if-default-branch-schedule-nightly
- <<: *if-merge-request
changes: [".gitlab/ci/rails.gitlab-ci.yml"]
+.rails:rules:default-branch-schedule-nightly--code-backstage:
+ rules:
+ - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-default-rules", rules]
+
.rails:rules:default-branch-schedule-nightly--code-backstage-ee-only:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-default-branch-schedule-nightly
- - <<: *if-merge-request
- changes: [".gitlab/ci/rails.gitlab-ci.yml"]
+ - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-default-rules", rules]
.rails:rules:rspec-feature-flags:
rules:
@@ -1438,13 +1305,16 @@
when: never
- changes: *code-backstage-patterns
-.rails:rules:skipped-flaky-tests-report:
+.rails:rules:flaky-tests-report:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-skip-flaky-tests-automatically
+ - if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true" || $RETRY_FAILED_TESTS_IN_NEW_PROCESS == "true"'
changes: *code-backstage-patterns
- - changes: *ci-patterns
+ when: always
+ - if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true" || $RETRY_FAILED_TESTS_IN_NEW_PROCESS == "true"'
+ changes: *ci-patterns
+ when: always
#########################
# Static analysis rules #
@@ -1619,6 +1489,8 @@
- <<: *if-dot-com-gitlab-org-merge-request
changes: *controllers-patterns
- <<: *if-dot-com-gitlab-org-merge-request
+ changes: *models-patterns
+ - <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns
@@ -1734,7 +1606,6 @@
when: never
- <<: *if-default-branch-or-tag
changes: *code-backstage-qa-patterns
- when: on_success
.setup:rules:dont-interrupt-me:
rules:
@@ -1749,7 +1620,6 @@
rules:
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:no-ee-check:
rules:
@@ -1757,7 +1627,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:no-jh-check:
rules:
@@ -1765,7 +1634,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:verify-tests-yml:
rules:
@@ -1773,7 +1641,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:generate-frontend-fixtures-mapping:
rules:
@@ -1787,20 +1654,16 @@
.setup:rules:add-jh-folder:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request-labels-run-all-rspec
+ allow_failure: true
- changes: *code-backstage-qa-patterns
+ allow_failure: true
- changes: *startup-css-patterns
+ allow_failure: true
+ - changes: *workhorse-patterns
+ allow_failure: true
#######################
# Test metadata rules #
@@ -1808,7 +1671,7 @@
.test-metadata:rules:retrieve-tests-metadata:
rules:
- changes: *code-backstage-patterns
- when: on_success
+ - changes: *workhorse-patterns
- <<: *if-merge-request-labels-run-all-rspec
.test-metadata:rules:update-tests-metadata:
@@ -1825,8 +1688,7 @@
###################
.workhorse:rules:workhorse:
rules:
- - <<: *if-default-refs
- changes: *workhorse-patterns
+ - changes: *workhorse-patterns
###################
# yaml-lint rules #
diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml
index 13108ba289a..1aeccfcb212 100644
--- a/.gitlab/ci/setup.gitlab-ci.yml
+++ b/.gitlab/ci/setup.gitlab-ci.yml
@@ -159,7 +159,7 @@ add-jh-folder:
script:
- JH_BRANCH=$(./scripts/setup/find-jh-branch.rb)
- 'echo "JH_BRANCH: ${JH_BRANCH}"'
- - curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-jh/gitlab/-/archive/${JH_BRANCH}/gitlab-${JH_BRANCH}.tar.gz?path=jh"
+ - curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-org/gitlab-jh/gitlab/-/archive/${JH_BRANCH}/gitlab-${JH_BRANCH}.tar.gz?path=jh"
- tar -xf "jh-folder.tar.gz"
- mv "gitlab-${JH_BRANCH}-jh/jh/" ./
- cp Gemfile.lock jh/
diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml
index d0d45cb9294..20cbd759ac6 100644
--- a/.gitlab/ci/test-metadata.gitlab-ci.yml
+++ b/.gitlab/ci/test-metadata.gitlab-ci.yml
@@ -6,9 +6,9 @@
expire_in: 31d
paths:
- knapsack/
- - rspec_flaky/
- - rspec_profiling/
+ - rspec/
- crystalball/
+ when: always
retrieve-tests-metadata:
extends:
@@ -44,6 +44,6 @@ update-tests-metadata:
script:
- run_timed_command "retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document"
- source ./scripts/rspec_helpers.sh
- - test -f rspec_flaky/report-suite.json || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m"
+ - test -f "${FLAKY_RSPEC_SUITE_REPORT_PATH}" || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m"
- update_tests_metadata
- update_tests_mapping
diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml
index aab077e575b..01e059b8a60 100644
--- a/.gitlab/ci/workhorse.gitlab-ci.yml
+++ b/.gitlab/ci/workhorse.gitlab-ci.yml
@@ -22,8 +22,8 @@ workhorse:verify:
workhorse:test using go 1.16:
extends: .workhorse:test
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7-golang-1.16-git-2.31
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7-golang-1.16-git-2.31
workhorse:test using go 1.17:
extends: .workhorse:test
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7-golang-1.17-git-2.31
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7-golang-1.17-git-2.31