include: - local: .gitlab/ci/rails/shared.gitlab-ci.yml ############################################################### # EE/FOSS: default refs (MRs, default branch, schedules) jobs # setup-test-env: extends: - .rails-job-base - .setup-test-env-cache - .rails:rules:setup-test-env stage: prepare needs: [] variables: SETUP_DB: "false" script: - echo $CI_MERGE_REQUEST_APPROVED - source scripts/gitlab_component_helpers.sh - run_timed_command "download_and_extract_gitlab_workhorse_package" || true - section_start "setup-test-env" "Setting up testing environment"; scripts/setup-test-env; section_end "setup-test-env"; - select_gitlab_workhorse_essentials - section_start "gitaly-test-build" "Compiling Gitaly binaries"; scripts/gitaly-test-build; section_end "gitaly-test-build"; # Do not use 'bundle exec' here artifacts: expire_in: 7d paths: - ${TMP_TEST_FOLDER}/gitaly/_build/bin/ - ${TMP_TEST_FOLDER}/gitaly/config.toml - ${TMP_TEST_FOLDER}/gitaly/gitaly2.config.toml - ${TMP_TEST_FOLDER}/gitaly/internal/ - ${TMP_TEST_FOLDER}/gitaly/Makefile - ${TMP_TEST_FOLDER}/gitaly/praefect.config.toml - ${TMP_TEST_FOLDER}/gitaly/praefect-db.config.toml - ${TMP_TEST_FOLDER}/gitlab-elasticsearch-indexer/bin/gitlab-elasticsearch-indexer - ${TMP_TEST_FOLDER}/gitlab-shell/ - ${TMP_TEST_FOLDER}/gitlab-test-fork/ - ${TMP_TEST_FOLDER}/gitlab-test-fork.bundle - ${TMP_TEST_FOLDER}/gitlab-test/ - ${TMP_TEST_FOLDER}/gitlab-test.bundle - ${TMP_TEST_FOLDER}/repositories/ - ${TMP_TEST_FOLDER}/second_storage/ - ${TMP_TEST_GITLAB_WORKHORSE_PATH}/ when: always update-setup-test-env-cache: extends: - setup-test-env - .setup-test-env-cache-push - .shared:rules:update-cache artifacts: paths: [] # This job's purpose is only to update the cache. update-gitaly-binaries-cache: extends: - setup-test-env - .gitaly-binaries-cache-push - .shared:rules:update-gitaly-binaries-cache artifacts: paths: [] # This job's purpose is only to update the cache. update-ruby-gems-coverage-cache-push: extends: - .ruby-gems-coverage-cache-push - .shared:rules:update-cache variables: BUNDLE_WITHOUT: "" # This is to override the variable defined in .gitlab-ci.yml BUNDLE_ONLY: "coverage" script: - source scripts/utils.sh - bundle_install_script # Used in: # - rspec:coverage # - rspec:undercoverage .coverage-base: extends: - .default-retry - .ruby-gems-coverage-cache variables: BUNDLE_WITHOUT: "" # This is to override the variable defined in .gitlab-ci.yml BUNDLE_ONLY: "coverage" before_script: - source scripts/utils.sh - bundle_install_script rspec migration pg14: extends: - .rspec-base-pg14 - .rspec-base-migration - .rspec-migration-parallel - .rails:rules:ee-and-foss-migration rspec background_migration pg14: extends: - .rspec-base-pg14 - .rspec-base-migration - .rspec-background-migration-parallel - .rails:rules:ee-and-foss-background-migration rspec migration pg14 single-db: extends: - rspec migration pg14 - .single-db-rspec - .rspec-migration-parallel - .rails:rules:single-db rspec background_migration pg14 single-db: extends: - rspec background_migration pg14 - .single-db-rspec - .rspec-background-migration-parallel - .rails:rules:single-db rspec migration pg14 single-db-ci-connection: extends: - rspec migration pg14 - .single-db-ci-connection-rspec - .rspec-migration-parallel - .rails:rules:single-db-ci-connection rspec background_migration pg14 single-db-ci-connection: extends: - rspec background_migration pg14 - .single-db-ci-connection-rspec - .rspec-background-migration-parallel - .rails:rules:single-db-ci-connection rspec migration pg14 praefect: extends: - rspec migration pg14 - .praefect-with-db - .rspec-migration-parallel - .rails:rules:praefect-with-db rspec background_migration pg14 praefect: extends: - rspec background_migration pg14 - .praefect-with-db - .rspec-background-migration-parallel - .rails:rules:praefect-with-db rspec migration pg14 clusterwide-db: extends: - rspec migration pg14 - .clusterwide-db - .rspec-migration-parallel - .rails:rules:clusterwide-db rspec background_migration pg14 clusterwide-db: extends: - rspec background_migration pg14 - .clusterwide-db - .rspec-background-migration-parallel - .rails:rules:clusterwide-db rspec unit pg14: extends: - .rspec-base-pg14 - .rspec-unit-parallel - .rails:rules:ee-and-foss-unit rspec unit pg14 single-redis: extends: - rspec unit pg14 - .no-redis-cluster - .rspec-unit-parallel - .rails:rules:single-redis rspec unit pg14 single-db: extends: - rspec unit pg14 - .single-db-rspec - .rspec-unit-parallel - .rails:rules:single-db rspec unit pg14 single-db-ci-connection: extends: - rspec unit pg14 - .single-db-ci-connection-rspec - .rspec-unit-parallel - .rails:rules:single-db-ci-connection rspec unit pg14 clusterwide-db: extends: - rspec unit pg14 - .clusterwide-db - .rspec-unit-parallel - .rails:rules:clusterwide-db rspec unit pg14 praefect: extends: - rspec unit pg14 - .praefect-with-db - .rspec-unit-parallel - .rails:rules:praefect-with-db rspec integration pg14: extends: - .rspec-base-pg14 - .rspec-integration-parallel - .rails:rules:ee-and-foss-integration rspec integration pg14 single-redis: extends: - rspec integration pg14 - .no-redis-cluster - .rspec-integration-parallel - .rails:rules:single-redis rspec integration pg14 single-db: extends: - rspec integration pg14 - .single-db-rspec - .rspec-integration-parallel - .rails:rules:single-db rspec integration pg14 single-db-ci-connection: extends: - rspec integration pg14 - .single-db-ci-connection-rspec - .rspec-integration-parallel - .rails:rules:single-db-ci-connection rspec integration pg14 clusterwide-db: extends: - rspec integration pg14 - .clusterwide-db - .rspec-integration-parallel - .rails:rules:clusterwide-db rspec integration pg14 praefect: extends: - rspec integration pg14 - .praefect-with-db - .rspec-integration-parallel - .rails:rules:praefect-with-db rspec system pg14: extends: - .rspec-base-pg14 - .rspec-system-parallel - .rails:rules:ee-and-foss-system variables: DEBUG_GITLAB_TRANSACTION_STACK: "true" rspec system pg14 single-redis: extends: - rspec system pg14 - .no-redis-cluster - .rspec-system-parallel - .rails:rules:single-redis rspec system pg14 single-db: extends: - rspec system pg14 - .single-db-rspec - .rspec-system-parallel - .rails:rules:single-db rspec system pg14 single-db-ci-connection: extends: - rspec system pg14 - .single-db-ci-connection-rspec - .rspec-system-parallel - .rails:rules:single-db-ci-connection rspec system pg14 clusterwide-db: extends: - rspec system pg14 - .clusterwide-db - .rspec-system-parallel - .rails:rules:clusterwide-db rspec system pg14 praefect: extends: - rspec system pg14 - .praefect-with-db - .rspec-system-parallel - .rails:rules:praefect-with-db # Dedicated job to test DB library code against PG13. # Note that these are already tested against PG13 in the `rspec unit pg13` / `rspec-ee unit pg13` jobs. rspec db-library-code pg13: extends: - .rspec-base-pg13 - .rails:rules:ee-and-foss-db-library-code script: - !reference [.base-script, script] - rspec_db_library_code rspec fast_spec_helper: extends: - .rspec-base-pg14 - .rails:rules:ee-and-foss-fast_spec_helper script: - 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 rspec unit clickhouse: extends: - .rspec-base-pg14-clickhouse23 - .rails:rules:clickhouse-changes rspec-ee unit clickhouse: extends: - .rspec-base-pg14-clickhouse23 - .rails:rules:ee-only-clickhouse-changes gitlab:clickhouse:rollback:main: extends: - .rspec-base - .production # Disable webmock from test environment - .use-pg14-clickhouse23 - .rails:rules:clickhouse-changes script: - cp config/click_house.yml.example config/click_house.yml - 'sed -i "s|url:.*$|url: http://clickhouse:8123|g" config/click_house.yml' - 'sed -i "s|test:$|production:|g" config/click_house.yml' - !reference [.base-script, script] - bundle exec rake gitlab:clickhouse:migrate && bundle exec rake gitlab:clickhouse:rollback:main VERSION=0 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 - !reference [.base-script, script] - force=yes SIZE=1 FIXTURE_PATH="db/fixtures/development" bundle exec rake gitlab:setup artifacts: when: on_failure expire_in: 1d paths: - log/*.log # The jobs built upon `.artifact-collector` are to work around the # needs: [] limit of a maximum of 50 dependencies. # These intermediate jobs allow us to collect the artifacts of # more than 50 jobs and still use `needs:` to ensure a timely execution .artifact-collector: extends: .base-artifacts stage: post-test variables: GIT_STRATEGY: none image: alpine:3.17 script: - ls -R rspec:artifact-collector unit: extends: - .artifact-collector - .rails:rules:ee-and-foss-unit needs: - rspec unit pg14 # 32 jobs - job: rspec unit clickhouse # 1 job optional: true rspec:artifact-collector system: extends: - .artifact-collector - .rails:rules:ee-and-foss-system needs: - rspec system pg14 # 32 jobs rspec:artifact-collector remainder: extends: - .artifact-collector needs: - job: rspec integration pg14 # 16 jobs optional: true - job: rspec migration pg14 # 15 jobs optional: true - job: rspec background_migration pg14 # 5 jobs optional: true rules: - !reference ['.rails:rules:ee-and-foss-integration', rules] - !reference ['.rails:rules:ee-and-foss-migration', rules] - !reference ['.rails:rules:ee-and-foss-background-migration', rules] rspec:artifact-collector as-if-foss unit: extends: - .artifact-collector - .rails:rules:as-if-foss-unit needs: - rspec unit pg14-as-if-foss # 32 jobs rspec:artifact-collector as-if-foss system: extends: - .artifact-collector - .rails:rules:as-if-foss-system needs: - rspec system pg14-as-if-foss # 32 jobs rspec:artifact-collector as-if-foss remainder: extends: - .artifact-collector needs: - job: rspec integration pg14-as-if-foss # 16 jobs optional: true - job: rspec migration pg14-as-if-foss # 15 jobs optional: true - job: rspec background_migration pg14-as-if-foss # 5 jobs optional: true rules: - !reference ['.rails:rules:as-if-foss-integration', rules] - !reference ['.rails:rules:as-if-foss-migration', rules] - !reference ['.rails:rules:as-if-foss-background-migration', rules] rspec:artifact-collector unit single-redis: extends: - .artifact-collector - .rails:rules:single-redis needs: - rspec unit pg14 single-redis # 32 jobs rspec:artifact-collector system single-redis: extends: - .artifact-collector - .rails:rules:single-redis needs: - rspec system pg14 single-redis # 32 jobs rspec:artifact-collector remainder single-redis: extends: - .artifact-collector - .rails:rules:single-redis needs: - rspec integration pg14 single-redis # 16 jobs rspec:artifact-collector ee single-redis: extends: - .artifact-collector - .rails:rules:single-redis needs: - job: rspec-ee unit pg14 single-redis # 28 jobs optional: true - job: rspec-ee integration pg14 single-redis # 7 jobs optional: true - job: rspec-ee system pg14 single-redis # 14 jobs optional: true rspec:artifact-collector ee unit: extends: - .artifact-collector needs: - job: rspec-ee unit pg14 # 28 jobs optional: true rules: - !reference ['.rails:rules:ee-only-unit', rules] rspec:artifact-collector ee remainder: extends: - .artifact-collector needs: - job: rspec-ee migration pg14 # 2 jobs optional: true - job: rspec-ee background_migration pg14 # 2 jobs optional: true - job: rspec-ee unit clickhouse # 1 job optional: true - job: rspec-ee integration pg14 # 7 jobs optional: true - job: rspec-ee system pg14 # 14 jobs optional: true rules: - !reference ['.rails:rules:ee-only-migration', rules] - !reference ['.rails:rules:ee-only-background-migration', rules] - !reference ['.rails:rules:ee-only-integration', rules] - !reference ['.rails:rules:ee-only-system', rules] rspec:coverage: image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-slim-ruby-${RUBY_VERSION} extends: - .coverage-base - .rails:rules:rspec-coverage stage: post-test needs: - job: setup-test-env artifacts: false # FOSS/EE jobs - job: rspec:artifact-collector unit optional: true - job: rspec:artifact-collector system optional: true - job: rspec:artifact-collector remainder optional: true - job: rspec:artifact-collector unit single-redis optional: true - job: rspec:artifact-collector system single-redis optional: true - job: rspec:artifact-collector remainder single-redis optional: true # as-if-foss jobs - job: rspec:artifact-collector as-if-foss unit optional: true - job: rspec:artifact-collector as-if-foss system optional: true - job: rspec:artifact-collector as-if-foss remainder optional: true # EE jobs - job: rspec:artifact-collector ee single-redis optional: true - job: rspec:artifact-collector ee unit optional: true - job: rspec:artifact-collector ee remainder optional: true # Memory jobs - job: memory-on-boot optional: true artifacts: false script: - run_timed_command "bundle exec scripts/merge-simplecov" coverage: '/LOC \((\d+\.\d+%)\) covered.$/' artifacts: name: coverage expire_in: 31d paths: - coverage/index.html - coverage/assets/ - coverage/lcov/ reports: coverage_report: coverage_format: cobertura path: coverage/coverage.xml rspec:undercoverage: image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-slim-ruby-${RUBY_VERSION} extends: - .coverage-base - .rails:rules:rspec-undercoverage stage: post-test needs: ["rspec:coverage"] script: - apt install -y jq - if [[ $(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests/${CI_MERGE_REQUEST_IID}" | jq ".labels" | grep "pipeline:skip-undercoverage") ]]; then echo "The 'pipeline:skip-undercoverage' label is set on the MR, exiting early."; exit 0; else echo "The 'pipeline:skip-undercoverage' label is not set on the MR, proceeding."; fi - if [ -n "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA" ]; then echo "HEAD is $(git rev-parse HEAD). \$CI_MERGE_REQUEST_TARGET_BRANCH_SHA is ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA}"; else echo "HEAD is $(git rev-parse HEAD). \$CI_MERGE_REQUEST_DIFF_BASE_SHA is ${CI_MERGE_REQUEST_DIFF_BASE_SHA}"; fi; - UNDERCOVERAGE_COMPARE="${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-$CI_MERGE_REQUEST_DIFF_BASE_SHA}" - git diff ${UNDERCOVERAGE_COMPARE} --stat - echo "Undercoverage comparing with ${UNDERCOVERAGE_COMPARE}." - if [ -f scripts/undercoverage ]; then run_timed_command "bundle exec scripts/undercoverage ${UNDERCOVERAGE_COMPARE}"; fi; rspec:feature-flags: extends: - .rails:rules:rspec-feature-flags stage: post-test needs: - job: "feature-flags-usage" - job: "haml-lint" - job: "haml-lint ee" optional: true before_script: - source scripts/utils.sh script: - if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then run_timed_command "scripts/feature_flags/used-feature-flags" || (scripts/slack master-broken "☠️ \`${CI_JOB_NAME}\` failed! ☠️ See ${CI_JOB_URL}" ci_failing "GitLab Bot" && exit 1); else run_timed_command "scripts/feature_flags/used-feature-flags"; fi rspec:flaky-tests-report: extends: - .default-retry - .rails:rules:flaky-tests-report stage: post-test needs: !reference ["rspec:coverage", "needs"] before_script: - source scripts/utils.sh - source scripts/rspec_helpers.sh script: - generate_flaky_tests_reports artifacts: expire_in: 31d paths: - rspec/ rspec:merge-auto-explain-logs: extends: - .rails:rules:rspec-merge-auto-explain-logs stage: post-test needs: !reference ["rspec:coverage", "needs"] script: - scripts/merge-auto-explain-logs artifacts: name: auto-explain-logs expire_in: 31d paths: - auto_explain/ # EE/FOSS: default refs (MRs, default branch, schedules) jobs # ####################################################### ################################################## # EE: default refs (MRs, default branch, schedules) jobs # rspec-predictive:pipeline-generate: extends: - .rails:rules:rspec-predictive stage: prepare needs: ["detect-tests", "retrieve-tests-metadata"] script: - scripts/generate_rspec_pipeline.rb -t "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}" -k "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" -f "${RSPEC_MATCHING_TESTS_FOSS_PATH}" -o "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" - scripts/generate_rspec_pipeline.rb -t "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}" -k "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" -f "${RSPEC_MATCHING_TESTS_EE_PATH}" -o "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" -p "ee/" - echo "Content of ${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml:" - cat "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" - echo "\n================================================\n" - echo "Content of ${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml:" - cat "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" artifacts: expire_in: 1 day paths: - "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" - "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" rspec:predictive:trigger: extends: - .rails:rules:rspec-predictive stage: test needs: - job: "setup-test-env" artifacts: false - job: "retrieve-tests-metadata" artifacts: false - job: "compile-test-assets" artifacts: false - job: "rspec-predictive:pipeline-generate" artifacts: true variables: PARENT_PIPELINE_ID: $CI_PIPELINE_ID GIT_STRATEGY: $GIT_STRATEGY trigger: strategy: depend forward: yaml_variables: true pipeline_variables: true include: - artifact: "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}.yml" job: rspec-predictive:pipeline-generate rspec-ee:predictive:trigger: extends: rspec:predictive:trigger trigger: include: - artifact: "${RSPEC_PREDICTIVE_PIPELINE_TEMPLATE_YML}-ee.yml" job: rspec-predictive:pipeline-generate rspec migration pg14-as-if-foss: extends: - .rspec-base-pg14-as-if-foss - .rspec-base-migration - .rspec-migration-parallel - .rails:rules:as-if-foss-migration rspec background_migration pg14-as-if-foss: extends: - .rspec-base-pg14-as-if-foss - .rspec-base-migration - .rspec-background-migration-parallel - .rails:rules:as-if-foss-background-migration rspec migration pg14-as-if-foss single-db: extends: - rspec migration pg14-as-if-foss - .single-db-rspec - .rspec-migration-parallel - .rails:rules:single-db-as-if-foss rspec background_migration pg14-as-if-foss single-db: extends: - rspec background_migration pg14-as-if-foss - .single-db-rspec - .rails:rules:single-db-as-if-foss rspec migration pg14-as-if-foss single-db-ci-connection: extends: - rspec migration pg14-as-if-foss - .single-db-ci-connection-rspec - .rspec-migration-parallel - .rails:rules:single-db-ci-connection-as-if-foss rspec background_migration pg14-as-if-foss single-db-ci-connection: extends: - rspec background_migration pg14-as-if-foss - .single-db-ci-connection-rspec - .rails:rules:single-db-ci-connection-as-if-foss rspec migration pg14-as-if-foss clusterwide-db: extends: - rspec migration pg14-as-if-foss - .clusterwide-db - .rspec-migration-parallel - .rails:rules:clusterwide-db rspec background_migration pg14-as-if-foss clusterwide-db: extends: - rspec background_migration pg14-as-if-foss - .clusterwide-db - .rails:rules:clusterwide-db rspec unit pg14-as-if-foss: extends: - .rspec-base-pg14-as-if-foss - .rails:rules:as-if-foss-unit - .rspec-unit-parallel rspec unit pg14-as-if-foss single-db: extends: - rspec unit pg14-as-if-foss - .single-db-rspec - .rails:rules:single-db-as-if-foss rspec unit pg14-as-if-foss single-db-ci-connection: extends: - rspec unit pg14-as-if-foss - .single-db-ci-connection-rspec - .rails:rules:single-db-ci-connection-as-if-foss rspec unit pg14-as-if-foss clusterwide-db: extends: - rspec unit pg14-as-if-foss - .clusterwide-db - .rails:rules:clusterwide-db rspec integration pg14-as-if-foss: extends: - .rspec-base-pg14-as-if-foss - .rails:rules:as-if-foss-integration - .rspec-integration-parallel rspec integration pg14-as-if-foss single-db: extends: - rspec integration pg14-as-if-foss - .single-db-rspec - .rails:rules:single-db-as-if-foss rspec integration pg14-as-if-foss single-db-ci-connection: extends: - rspec integration pg14-as-if-foss - .single-db-ci-connection-rspec - .rails:rules:single-db-ci-connection-as-if-foss rspec integration pg14-as-if-foss clusterwide-db: extends: - rspec integration pg14-as-if-foss - .clusterwide-db - .rails:rules:clusterwide-db rspec system pg14-as-if-foss: extends: - .rspec-base-pg14-as-if-foss - .rails:rules:as-if-foss-system - .rspec-system-parallel rspec system pg14-as-if-foss single-db: extends: - rspec system pg14-as-if-foss - .single-db-rspec - .rails:rules:single-db-as-if-foss rspec system pg14-as-if-foss single-db-ci-connection: extends: - rspec system pg14-as-if-foss - .single-db-ci-connection-rspec - .rails:rules:single-db-ci-connection-as-if-foss rspec system pg14-as-if-foss clusterwide-db: extends: - rspec system pg14-as-if-foss - .clusterwide-db - .rails:rules:clusterwide-db .rspec-ee-base-gitlab-duo: extends: - .rspec-ee-base-pg14 variables: REAL_AI_REQUEST: "true" rspec-ee unit gitlab-duo-chat-zeroshot pg14: extends: - .rspec-ee-base-gitlab-duo - .rails:rules:ee-gitlab-duo-chat-optional script: - !reference [.base-script, script] - rspec_parallelized_job "--tag zeroshot_executor" rspec-ee unit gitlab-duo-chat-qa-fast pg14: extends: - .rspec-ee-base-gitlab-duo - .rails:rules:ee-gitlab-duo-chat-always script: - !reference [.base-script, script] - rspec_parallelized_job "--tag fast_chat_qa_evaluation" rspec-ee unit gitlab-duo pg14: extends: - .rspec-ee-base-gitlab-duo - .rails:rules:ee-gitlab-duo-chat-always script: - !reference [.base-script, script] - rspec_parallelized_job "--tag gitlab_duo" rspec-ee unit gitlab-duo-chat-qa pg14: variables: QA_EVAL_REPORT_FILENAME: "qa_evaluation_report.md" RSPEC_RETRY_RETRY_COUNT: 0 extends: - .rspec-ee-base-gitlab-duo - .rails:rules:ee-gitlab-duo-chat-qa-full script: - !reference [.base-script, script] - source ./scripts/utils.sh - install_gitlab_gem - bundle exec rspec -Ispec -rspec_helper --failure-exit-code 0 --color --tag chat_qa_evaluation -- ee/spec/lib/gitlab/llm/chain/agents/zero_shot/qa_evaluation_spec.rb - ./scripts/duo_chat/reporter.rb artifacts: expire_in: 5d paths: - tmp/duo_chat/qa*.json - "${QA_EVAL_REPORT_FILENAME}" rspec-ee migration pg14: extends: - .rspec-ee-base-pg14 - .rspec-base-migration - .rails:rules:ee-only-migration - .rspec-ee-migration-parallel rspec-ee background_migration pg14: extends: - .rspec-ee-base-pg14 - .rspec-base-migration - .rails:rules:ee-only-background-migration - .rspec-ee-background-migration-parallel rspec-ee migration pg14 single-db: extends: - rspec-ee migration pg14 - .single-db-rspec - .rails:rules:single-db-ee rspec-ee background_migration pg14 single-db: extends: - rspec-ee background_migration pg14 - .single-db-rspec - .rails:rules:single-db-ee rspec-ee migration pg14 single-db-ci-connection: extends: - rspec-ee migration pg14 - .single-db-ci-connection-rspec - .rails:rules:single-db-ci-connection-ee rspec-ee background_migration pg14 single-db-ci-connection: extends: - rspec-ee background_migration pg14 - .single-db-ci-connection-rspec - .rails:rules:single-db-ci-connection-ee rspec-ee migration pg14 clusterwide-db: extends: - rspec-ee migration pg14 - .clusterwide-db - .rails:rules:clusterwide-db rspec-ee background_migration pg14 clusterwide-db: extends: - rspec-ee background_migration pg14 - .clusterwide-db - .rails:rules:clusterwide-db rspec-ee migration pg14 praefect: extends: - rspec migration pg14 - .praefect-with-db - .rspec-migration-parallel - .rails:rules:praefect-with-db rspec-ee background_migration pg14 praefect: extends: - rspec background_migration pg14 - .praefect-with-db - .rspec-background-migration-parallel - .rails:rules:praefect-with-db rspec-ee unit pg14: extends: - .rspec-ee-base-pg14 - .rspec-ee-unit-parallel - .rails:rules:ee-only-unit rspec-ee unit pg14 es8: extends: - .rspec-ee-base-pg14-es8 - .rspec-ee-unit-parallel rspec-ee unit pg14 single-db: extends: - rspec-ee unit pg14 - .single-db-rspec - .rspec-ee-unit-parallel - .rails:rules:single-db-ee rspec-ee unit pg14 single-redis: extends: - rspec-ee unit pg14 - .no-redis-cluster - .rspec-ee-unit-parallel - .rails:rules:single-redis-ee rspec-ee unit pg14 single-db-ci-connection: extends: - rspec-ee unit pg14 - .single-db-ci-connection-rspec - .rspec-ee-unit-parallel - .rails:rules:single-db-ci-connection-ee rspec-ee unit pg14 clusterwide-db: extends: - rspec-ee unit pg14 - .clusterwide-db - .rspec-ee-unit-parallel - .rails:rules:clusterwide-db rspec-ee integration pg14: extends: - .rspec-ee-base-pg14 - .rspec-ee-integration-parallel - .rails:rules:ee-only-integration rspec-ee integration pg14 es8: extends: - .rspec-ee-base-pg14-es8 - .rspec-ee-integration-parallel rspec-ee integration pg14 single-db: extends: - rspec-ee integration pg14 - .single-db-rspec - .rspec-ee-integration-parallel - .rails:rules:single-db-ee rspec-ee integration pg14 single-redis: extends: - rspec-ee integration pg14 - .no-redis-cluster - .rspec-ee-integration-parallel - .rails:rules:single-redis-ee rspec-ee integration pg14 single-db-ci-connection: extends: - rspec-ee integration pg14 - .single-db-ci-connection-rspec - .rspec-ee-integration-parallel - .rails:rules:single-db-ci-connection-ee rspec-ee integration pg14 clusterwide-db: extends: - rspec-ee integration pg14 - .clusterwide-db - .rspec-ee-integration-parallel - .rails:rules:clusterwide-db rspec-ee system pg14: extends: - .rspec-ee-base-pg14 - .rspec-ee-system-parallel - .rails:rules:ee-only-system rspec-ee system pg14 es8: extends: - .rspec-ee-base-pg14-es8 - .rspec-ee-system-parallel rspec-ee system pg14 single-db: extends: - rspec-ee system pg14 - .single-db-rspec - .rspec-ee-system-parallel - .rails:rules:single-db-ee rspec-ee system pg14 single-redis: extends: - rspec-ee system pg14 - .no-redis-cluster - .rspec-ee-system-parallel - .rails:rules:single-redis-ee rspec-ee system pg14 single-db-ci-connection: extends: - rspec-ee system pg14 - .single-db-ci-connection-rspec - .rspec-ee-system-parallel - .rails:rules:single-db-ci-connection-ee rspec-ee system pg14 clusterwide-db: extends: - rspec-ee system pg14 - .clusterwide-db - .rspec-ee-system-parallel - .rails:rules:clusterwide-db # EE: default refs (MRs, default branch, schedules) jobs # ################################################## ########################################## # EE/FOSS: default branch nightly scheduled jobs # # PG13 rspec migration pg13: extends: - .rspec-base-pg13 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-migration-parallel rspec background_migration pg13: extends: - .rspec-base-pg13 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-background-migration-parallel rspec unit pg13: extends: - .rspec-base-pg13 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-unit-parallel rspec integration pg13: extends: - .rspec-base-pg13 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-integration-parallel rspec system pg13: extends: - .rspec-base-pg13 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-system-parallel # PG15 rspec migration pg15: extends: - .rspec-base-pg15 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-migration-parallel rspec background_migration pg15: extends: - .rspec-base-pg15 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-background-migration-parallel rspec unit pg15: extends: - .rspec-base-pg15 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-unit-parallel rspec integration pg15: extends: - .rspec-base-pg15 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-integration-parallel rspec system pg15: extends: - .rspec-base-pg15 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-system-parallel # EE/FOSS: default branch nightly scheduled jobs # ########################################## ##################################### # EE: default branch nightly scheduled jobs # # PG13 rspec-ee unit pg13 opensearch1: extends: - .rspec-ee-base-pg13-opensearch1 - .rspec-ee-unit-parallel rspec-ee unit pg13 opensearch2: extends: - .rspec-ee-base-pg13-opensearch2 - .rspec-ee-unit-parallel rspec-ee integration pg13 opensearch1: extends: - .rspec-ee-base-pg13-opensearch1 - .rspec-ee-integration-parallel rspec-ee integration pg13 opensearch2: extends: - .rspec-ee-base-pg13-opensearch2 - .rspec-ee-integration-parallel rspec-ee system pg13 opensearch1: extends: - .rspec-ee-base-pg13-opensearch1 - .rspec-ee-system-parallel rspec-ee system pg13 opensearch2: extends: - .rspec-ee-base-pg13-opensearch2 - .rspec-ee-system-parallel # PG14 rspec-ee unit pg14 opensearch1: extends: - .rspec-ee-base-pg14-opensearch1 - .rspec-ee-unit-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee unit pg14 opensearch2: extends: - .rspec-ee-base-pg14-opensearch2 - .rspec-ee-unit-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee integration pg14 opensearch1: extends: - .rspec-ee-base-pg14-opensearch1 - .rspec-ee-integration-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee integration pg14 opensearch2: extends: - .rspec-ee-base-pg14-opensearch2 - .rspec-ee-integration-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee system pg14 opensearch1: extends: - .rspec-ee-base-pg14-opensearch1 - .rspec-ee-system-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee system pg14 opensearch2: extends: - .rspec-ee-base-pg14-opensearch2 - .rspec-ee-system-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only # PG15 rspec-ee unit pg15 opensearch1: extends: - .rspec-ee-base-pg15-opensearch1 - .rspec-ee-unit-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee unit pg15 opensearch2: extends: - .rspec-ee-base-pg15-opensearch2 - .rspec-ee-unit-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee integration pg15 opensearch1: extends: - .rspec-ee-base-pg15-opensearch1 - .rspec-ee-integration-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee integration pg15 opensearch2: extends: - .rspec-ee-base-pg15-opensearch2 - .rspec-ee-integration-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee system pg15 opensearch1: extends: - .rspec-ee-base-pg15-opensearch1 - .rspec-ee-system-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee system pg15 opensearch2: extends: - .rspec-ee-base-pg15-opensearch2 - .rspec-ee-system-parallel - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee migration pg15: extends: - .rspec-ee-base-pg15 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-migration-parallel rspec-ee background_migration pg15: extends: - .rspec-ee-base-pg15 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-background-migration-parallel rspec-ee unit pg15: extends: - .rspec-ee-base-pg15 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-unit-parallel rspec-ee unit pg15 es8: extends: - .rspec-ee-base-pg15-es8 - .rspec-ee-unit-parallel rspec-ee integration pg15: extends: - .rspec-ee-base-pg15 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-integration-parallel rspec-ee integration pg15 es8: extends: - .rspec-ee-base-pg15-es8 - .rspec-ee-integration-parallel rspec-ee system pg15: extends: - .rspec-ee-base-pg15 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-system-parallel rspec-ee system pg15 es8: extends: - .rspec-ee-base-pg15-es8 - .rspec-ee-system-parallel # EE: default branch nightly scheduled jobs # ##################################### ################################################## # EE: Canonical MR pipelines .rspec-fail-fast: extends: - .rails:rules:rspec fail-fast stage: test script: - !reference [.base-script, script] - rspec_fail_fast "${MATCHING_TESTS_PATH}" "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~zoekt --tag ~click_house" rspec fail-fast: extends: - .rspec-base-pg14 - .rspec-fail-fast # extends from .rspec-fail-fast last to override script from .rspec-base-pg14 variables: MATCHING_TESTS_PATH: "${RSPEC_MATCHING_TESTS_FOSS_PATH}" rspec-ee fail-fast: extends: - .rspec-ee-base-pg14 - .rspec-fail-fast # extends from .rspec-fail-fast last to override script from .rspec-ee-base-pg13 variables: MATCHING_TESTS_PATH: "${RSPEC_MATCHING_TESTS_EE_PATH}" rspec-foss-impact:pipeline-generate: extends: - .rails:rules:rspec-foss-impact stage: prepare needs: ["detect-tests", "retrieve-tests-metadata"] script: - scripts/generate_rspec_pipeline.rb -f "${RSPEC_MATCHING_TESTS_FOSS_PATH}" -t "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}" -k "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" - cat "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}.yml" artifacts: expire_in: 1 day paths: - "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}.yml" rspec-foss-impact:trigger: extends: - .rails:rules:rspec-foss-impact stage: test needs: - job: "setup-test-env" artifacts: false - job: "retrieve-tests-metadata" artifacts: false - job: "compile-test-assets as-if-foss" artifacts: false - job: "rspec-foss-impact:pipeline-generate" artifacts: true variables: PARENT_PIPELINE_ID: $CI_PIPELINE_ID GIT_STRATEGY: $GIT_STRATEGY trigger: strategy: depend forward: yaml_variables: true pipeline_variables: true include: - artifact: "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}.yml" job: rspec-foss-impact:pipeline-generate fail-pipeline-early: extends: - .rails:rules:fail-pipeline-early stage: post-test needs: - job: rspec fail-fast artifacts: false variables: GIT_DEPTH: 1 before_script: - source scripts/utils.sh - install_gitlab_gem script: - fail_pipeline_early .base-rspec-pg14-rerun-previous-failed-tests: extends: - .rails:rules:rerun-previous-failed-tests stage: test needs: - !reference [.rspec-base-needs, needs] - job: "compile-test-assets" - job: "detect-previous-failed-tests" script: - !reference [.base-script, script] - rspec_rerun_previous_failed_tests "${PREVIOUS_FAILED_TESTS_FILE}" rspec rspec-pg14-rerun-previous-failed-tests: extends: - .rspec-base-pg14 - .base-rspec-pg14-rerun-previous-failed-tests variables: PREVIOUS_FAILED_TESTS_FILE: tmp/previous_failed_tests/rspec_failed_tests.txt rspec rspec-ee-pg14-rerun-previous-failed-tests: extends: - .rspec-ee-base-pg14 - .base-rspec-pg14-rerun-previous-failed-tests variables: PREVIOUS_FAILED_TESTS_FILE: tmp/previous_failed_tests/rspec_ee_failed_files.txt # EE: Canonical MR pipelines ##################################################