include: - project: gitlab-org/quality/pipeline-common ref: 0.13.0 file: - /ci/allure-report.yml - /ci/knapsack-report.yml .test-variables: variables: QA_GENERATE_ALLURE_REPORT: "true" COLORIZED_LOGS: "true" GITLAB_USERNAME: "root" GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" GITLAB_ADMIN_USERNAME: "root" GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" GITLAB_QA_ADMIN_ACCESS_TOKEN: "${REVIEW_APPS_ROOT_TOKEN}" GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" .bundle-base: extends: - .qa-cache image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3 before_script: - export QA_GITLAB_URL="$(cat environment_url.txt)" - cd qa && bundle install .review-qa-base: extends: - .use-docker-in-docker - .bundle-base - .test-variables image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.33-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 stage: qa needs: - review-deploy - download-knapsack-report variables: DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: /certs DOCKER_CERT_PATH: /certs/client DOCKER_TLS_VERIFY: 1 GIT_LFS_SKIP_SMUDGE: 1 WD_INSTALL_DIR: /usr/local/bin before_script: - scripts/checkout-mr-source-sha - !reference [.bundle-base, before_script] script: - export EE_LICENSE="$(cat $REVIEW_APPS_EE_LICENSE_FILE)" - qa_run_status=0 - | bundle exec rake "knapsack:rspec[\ ${RSPEC_TAGS} \ --tag ~orchestrated \ --tag ~transient \ --tag ~skip_signup_disabled \ --tag ~requires_git_protocol_v2 \ --tag ~requires_praefect \ --force-color \ --order random \ --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 reports: junit: qa/tmp/rspec.xml expire_in: 7 days when: always .allure-report-base: extends: .generate-allure-report-base stage: post-qa variables: GITLAB_AUTH_TOKEN: $GITLAB_QA_MR_ALLURE_REPORT_TOKEN ALLURE_PROJECT_PATH: $CI_PROJECT_PATH ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID ALLURE_RESULTS_GLOB: qa/tmp/allure-results/* # Store knapsack report as artifact so the same report is reused across all jobs download-knapsack-report: extends: - .bundle-base - .review:rules:review-qa-reliable stage: prepare variables: QA_KNAPSACK_REPORTS: review-qa-reliable,review-qa-all script: - bundle exec rake "knapsack:download" allow_failure: true artifacts: paths: - qa/knapsack/review-qa-*.json expire_in: 1 day review-qa-smoke: extends: - .review-qa-base - .review:rules:review-qa-smoke retry: 1 variables: QA_RUN_TYPE: review-qa-smoke RSPEC_TAGS: --tag smoke review-qa-reliable: extends: - .review-qa-base - .review:rules:review-qa-reliable retry: 1 parallel: 10 variables: QA_RUN_TYPE: review-qa-reliable RSPEC_TAGS: --tag reliable --tag sanity_feature_flags review-qa-all: extends: - .review-qa-base - .review:rules:review-qa-all parallel: 5 variables: QA_RUN_TYPE: review-qa-all RSPEC_TAGS: --tag ~reliable --tag ~smoke --tag ~sanity_feature_flags review-performance: extends: - .default-retry - .review:rules:review-performance image: name: sitespeedio/sitespeed.io entrypoint: [""] stage: qa needs: ["review-deploy"] before_script: - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" - echo "${CI_ENVIRONMENT_URL}" - mkdir -p gitlab-exporter - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js - mkdir -p sitespeed-results script: - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" after_script: - mv sitespeed-results/data/performance.json performance.json artifacts: paths: - sitespeed-results/ reports: performance: performance.json expire_in: 31d # Generate single report for both smoke and reliable test jobs # Both job types are essentially the same: # * always executed # * always blocking allure-report-qa-blocking: extends: - .allure-report-base - .review:rules:review-qa-blocking-report needs: - review-qa-smoke - review-qa-reliable variables: ALLURE_JOB_NAME: review-qa-blocking allure-report-qa-all: extends: - .allure-report-base - .review:rules:review-qa-all-report needs: ["review-qa-all"] variables: ALLURE_JOB_NAME: review-qa-all upload-knapsack-report: extends: - .generate-knapsack-report-base - .bundle-base stage: post-qa variables: QA_KNAPSACK_REPORT_FILE_PATTERN: $CI_PROJECT_DIR/qa/tmp/knapsack/*/*.json delete-test-resources: extends: - .bundle-base - .review:rules:review-qa-cleanup stage: post-qa variables: QA_TEST_RESOURCES_FILE_PATTERN: $CI_PROJECT_DIR/qa/tmp/test-resources-*.json GITLAB_QA_ACCESS_TOKEN: $REVIEW_APPS_ROOT_TOKEN COLORIZED_LOGS: "true" script: - export GITLAB_ADDRESS="$QA_GITLAB_URL" - bundle exec rake "test_resources:delete[$QA_TEST_RESOURCES_FILE_PATTERN]" allow_failure: true