.qa-job-base: extends: - .default-retry - .qa-cache stage: test needs: [] variables: USE_BUNDLE_INSTALL: "false" SETUP_DB: "false" QA_EXPORT_TEST_METRICS: "false" before_script: - !reference [.default-before_script, before_script] - cd qa/ - bundle_install_script qa:internal: extends: - .qa-job-base - .qa:rules:ee-and-foss script: - bundle exec rspec qa:internal-as-if-foss: extends: - qa:internal - .qa:rules:as-if-foss - .as-if-foss qa:selectors: extends: - .qa-job-base - .qa:rules:ee-and-foss script: - bundle exec bin/qa Test::Sanity::Selectors qa:auto_quarantine: extends: - .qa-job-base rules: - if: '$QA_TRIGGER_AUTO_QUARANTINE =~ /true|yes|1/i' script: - bundle exec confiner -r .confiner/quarantine.yml allow_failure: true qa:selectors-as-if-foss: extends: - qa:selectors - .qa:rules:as-if-foss - .as-if-foss update-qa-cache: extends: - .qa-job-base - .qa-cache-push - .shared:rules:update-cache stage: prepare script: - echo "Cache has been updated and ready to be uploaded." .package-and-qa-base: image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine stage: qa retry: 0 before_script: - source scripts/utils.sh - install_gitlab_gem - tooling/bin/find_change_diffs ${CHANGES_DIFFS_DIR} script: - tooling/bin/qa/check_if_qa_only_spec_changes ${CHANGES_FILE} ${ONLY_QA_CHANGES_FILE} - '[ -f $ONLY_QA_CHANGES_FILE ] && export QA_TESTS="`cat $ONLY_QA_CHANGES_FILE`"' - 'echo "QA_TESTS: $QA_TESTS"' - exit_code=0 && tooling/bin/qa/package_and_qa_check ${CHANGES_DIFFS_DIR} || exit_code=$? - echo $exit_code - | if [ $exit_code -eq 0 ]; then ./scripts/trigger-build omnibus elif [ $exit_code -eq 1 ]; then exit 1 else echo "Downstream jobs will not be triggered because package_and_qa_check exited with code: $exit_code" fi # These jobs often time out, so temporarily use private runners and a long timeout: https://gitlab.com/gitlab-org/gitlab/-/issues/238563 tags: - prm timeout: 4h needs: - job: build-qa-image artifacts: false - job: build-assets-image artifacts: false - detect-tests artifacts: expire_in: 7d paths: - ${CHANGES_FILE} - ${ONLY_QA_CHANGES_FILE} - ${CHANGES_DIFFS_DIR}/* variables: CHANGES_FILE: tmp/changed_files.txt ONLY_QA_CHANGES_FILE: tmp/qa_only_changed_files.txt CHANGES_DIFFS_DIR: tmp/diffs ALLURE_JOB_NAME: $CI_JOB_NAME .package-and-qa-ff-base: script: - | feature_flags=$(scripts/changed-feature-flags --files $(cat $CHANGES_FILE | tr ' ' ',') --state $QA_FF_STATE) if [[ $feature_flags ]]; then export GITLAB_QA_OPTIONS="--set-feature-flags $feature_flags" echo $GITLAB_QA_OPTIONS ./scripts/trigger-build omnibus else echo "No changed feature flag found to test. The tests are skipped if the flag was removed." fi package-and-qa: extends: - .package-and-qa-base - .qa:rules:package-and-qa package-and-qa-ff-enabled: extends: - .package-and-qa-base - .package-and-qa-ff-base - .qa:rules:package-and-qa:feature-flags variables: QA_FF_STATE: "enable" package-and-qa-ff-disabled: extends: - .package-and-qa-base - .package-and-qa-ff-base - .qa:rules:package-and-qa:feature-flags variables: QA_FF_STATE: "disable"