3922c6da84
Add knapsack qa report and use it to run tests in parallel Use the RSpec runner with knapsack The way the Knapsack runner uses exec to start rspec seems incompatible with the way we expect it to work. Plus, it requires specifying KNAPSACK_TEST_DIR. Instead, we use knapsacks AllocatorBuilder to select the spec files to run, and then start rspec as normal, via RSpec::Core::Runner.run This also means we can incorporate tags. Let the job run automatically Include KNAPSACK_TEST_FILE_PATTERN in vars Check all defined knapsack env vars before requiring knapsack
235 lines
6.4 KiB
YAML
235 lines
6.4 KiB
YAML
.review-only: &review-only
|
|
only:
|
|
refs:
|
|
- branches@gitlab-org/gitlab-ce
|
|
- branches@gitlab-org/gitlab-ee
|
|
kubernetes: active
|
|
except:
|
|
refs:
|
|
- master
|
|
- /(^docs[\/-].*|.*-docs$)/
|
|
|
|
.review-schedules-only: &review-schedules-only
|
|
only:
|
|
refs:
|
|
- schedules@gitlab-org/gitlab-ce
|
|
- schedules@gitlab-org/gitlab-ee
|
|
kubernetes: active
|
|
variables:
|
|
- $REVIEW_APP_CLEANUP
|
|
except:
|
|
refs:
|
|
- tags
|
|
- /(^docs[\/-].*|.*-docs$)/
|
|
|
|
.review-base: &review-base
|
|
extends: .dedicated-runner
|
|
<<: *review-only
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base
|
|
cache: {}
|
|
dependencies: []
|
|
before_script:
|
|
- source scripts/utils.sh
|
|
|
|
.review-docker: &review-docker
|
|
<<: *review-base
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine
|
|
services:
|
|
- docker:stable-dind
|
|
tags:
|
|
- gitlab-org
|
|
- docker
|
|
variables: &review-docker-variables
|
|
DOCKER_DRIVER: overlay2
|
|
DOCKER_HOST: tcp://docker:2375
|
|
LATEST_QA_IMAGE: "gitlab/${CI_PROJECT_NAME}-qa:nightly"
|
|
QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/${CI_PROJECT_NAME}-qa:${CI_COMMIT_REF_SLUG}"
|
|
|
|
build-qa-image:
|
|
<<: *review-docker
|
|
stage: test
|
|
script:
|
|
- time docker build --cache-from ${LATEST_QA_IMAGE} --tag ${QA_IMAGE} ./qa/
|
|
- echo "${CI_JOB_TOKEN}" | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY}
|
|
- time docker push ${QA_IMAGE}
|
|
|
|
.review-build-cng-base: &review-build-cng-base
|
|
image: ruby:2.6-alpine
|
|
stage: test
|
|
when: manual
|
|
before_script:
|
|
- source scripts/utils.sh
|
|
- install_api_client_dependencies_with_apk
|
|
- install_gitlab_gem
|
|
dependencies: []
|
|
cache: {}
|
|
script:
|
|
- BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng
|
|
|
|
review-build-cng:
|
|
<<: *review-only
|
|
<<: *review-build-cng-base
|
|
|
|
schedule:review-build-cng:
|
|
<<: *review-schedules-only
|
|
<<: *review-build-cng-base
|
|
|
|
.review-deploy-base: &review-deploy-base
|
|
<<: *review-base
|
|
stage: review
|
|
retry: 2
|
|
variables:
|
|
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
|
|
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
|
|
GITLAB_HELM_CHART_REF: "master"
|
|
environment: &review-environment
|
|
name: review/${CI_COMMIT_REF_NAME}
|
|
url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}
|
|
on_stop: review-stop
|
|
before_script:
|
|
- export GITLAB_SHELL_VERSION=$(<GITLAB_SHELL_VERSION)
|
|
- export GITALY_VERSION=$(<GITALY_SERVER_VERSION)
|
|
- export GITLAB_WORKHORSE_VERSION=$(<GITLAB_WORKHORSE_VERSION)
|
|
- echo "${CI_ENVIRONMENT_URL}" > review_app_url.txt
|
|
- source scripts/utils.sh
|
|
- install_api_client_dependencies_with_apk
|
|
- source scripts/review_apps/review-apps.sh
|
|
script:
|
|
- perform_review_app_deployment
|
|
artifacts:
|
|
paths:
|
|
- review_app_url.txt
|
|
expire_in: 2 days
|
|
when: always
|
|
|
|
review-deploy:
|
|
<<: *review-deploy-base
|
|
|
|
schedule:review-deploy:
|
|
<<: *review-deploy-base
|
|
<<: *review-schedules-only
|
|
script:
|
|
- perform_review_app_deployment
|
|
|
|
review-stop:
|
|
<<: *review-base
|
|
stage: review
|
|
when: manual
|
|
allow_failure: true
|
|
variables:
|
|
GIT_DEPTH: "1"
|
|
environment:
|
|
<<: *review-environment
|
|
action: stop
|
|
script:
|
|
- source scripts/review_apps/review-apps.sh
|
|
- delete
|
|
- cleanup
|
|
|
|
.review-qa-base: &review-qa-base
|
|
<<: *review-docker
|
|
stage: qa
|
|
variables:
|
|
<<: *review-docker-variables
|
|
QA_ARTIFACTS_DIR: "${CI_PROJECT_DIR}/qa"
|
|
QA_CAN_TEST_GIT_PROTOCOL_V2: "false"
|
|
GITLAB_USERNAME: "root"
|
|
GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}"
|
|
GITLAB_ADMIN_USERNAME: "root"
|
|
GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}"
|
|
GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}"
|
|
EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}"
|
|
QA_DEBUG: "true"
|
|
dependencies:
|
|
- review-deploy
|
|
artifacts:
|
|
paths:
|
|
- ./qa/gitlab-qa-run-*
|
|
expire_in: 7 days
|
|
when: always
|
|
before_script:
|
|
- export CI_ENVIRONMENT_URL="$(cat review_app_url.txt)"
|
|
- echo "${CI_ENVIRONMENT_URL}"
|
|
- echo "${QA_IMAGE}"
|
|
- source scripts/utils.sh
|
|
- install_api_client_dependencies_with_apk
|
|
- gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}}
|
|
|
|
review-qa-smoke:
|
|
<<: *review-qa-base
|
|
retry: 2
|
|
script:
|
|
- gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}"
|
|
|
|
review-qa-all:
|
|
<<: *review-qa-base
|
|
allow_failure: true
|
|
when: manual
|
|
parallel: 5
|
|
script:
|
|
- export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/review-qa-all_master_report.json
|
|
- export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb
|
|
- gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}"
|
|
|
|
.review-performance-base: &review-performance-base
|
|
<<: *review-qa-base
|
|
allow_failure: true
|
|
before_script:
|
|
- export CI_ENVIRONMENT_URL="$(cat review_app_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:
|
|
- docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:6.3.1 --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
|
|
|
|
review-performance:
|
|
<<: *review-performance-base
|
|
|
|
schedule:review-performance:
|
|
<<: *review-performance-base
|
|
<<: *review-schedules-only
|
|
dependencies:
|
|
- schedule:review-deploy
|
|
|
|
schedule:review-cleanup:
|
|
<<: *review-base
|
|
<<: *review-schedules-only
|
|
stage: build
|
|
allow_failure: true
|
|
environment:
|
|
name: review/auto-cleanup
|
|
action: stop
|
|
before_script:
|
|
- source scripts/utils.sh
|
|
- install_gitlab_gem
|
|
script:
|
|
- ruby -rrubygems scripts/review_apps/automated_cleanup.rb
|
|
|
|
danger-review:
|
|
extends: .dedicated-pull-cache-job
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger
|
|
stage: test
|
|
dependencies: []
|
|
before_script: []
|
|
only:
|
|
variables:
|
|
- $DANGER_GITLAB_API_TOKEN
|
|
except:
|
|
refs:
|
|
- master
|
|
variables:
|
|
- $CI_COMMIT_REF_NAME =~ /^ce-to-ee-.*/
|
|
- $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/
|
|
script:
|
|
- git version
|
|
- node --version
|
|
- yarn install --frozen-lockfile --cache-folder .yarn-cache
|
|
- danger --fail-on-errors=true
|