526 lines
14 KiB
YAML
526 lines
14 KiB
YAML
# E2E tests pipeline loaded dynamically by script: scripts/generate-e2e-pipeline
|
|
# For adding new tests, refer to: doc/development/testing_guide/end_to_end/package_and_test_pipeline.md
|
|
include:
|
|
- local: .gitlab/ci/qa-common/main.gitlab-ci.yml
|
|
- local: .gitlab/ci/qa-common/rules.gitlab-ci.yml
|
|
- local: .gitlab/ci/qa-common/variables.gitlab-ci.yml
|
|
|
|
# ==========================================
|
|
# Prepare stage
|
|
# ==========================================
|
|
check-release-set:
|
|
extends: .rules:prepare
|
|
stage: .pre
|
|
script:
|
|
- |
|
|
if [ -z "$RELEASE" ]; then
|
|
echo "E2E test pipeline requires omnibus installation docker image to be set via $RELEASE environment variable"
|
|
exit 1
|
|
else
|
|
echo "Omnibus installation image is set to '$RELEASE'"
|
|
fi
|
|
|
|
trigger-omnibus-env:
|
|
extends:
|
|
- .trigger-omnibus-env
|
|
- .rules:omnibus-build
|
|
|
|
trigger-omnibus-env-ce:
|
|
extends:
|
|
- .trigger-omnibus-env-ce
|
|
- .rules:omnibus-build-ce
|
|
|
|
trigger-omnibus:
|
|
extends:
|
|
- .trigger-omnibus
|
|
- .rules:omnibus-build
|
|
needs:
|
|
- trigger-omnibus-env
|
|
|
|
trigger-omnibus-ce:
|
|
extends:
|
|
- .trigger-omnibus-ce
|
|
- .rules:omnibus-build-ce
|
|
needs:
|
|
- trigger-omnibus-env-ce
|
|
|
|
download-knapsack-report:
|
|
extends:
|
|
- .download-knapsack-report
|
|
- .rules:download-knapsack
|
|
|
|
cache-gems:
|
|
extends:
|
|
- .qa-install
|
|
- .ruby-image
|
|
- .rules:update-cache
|
|
stage: .pre
|
|
tags:
|
|
- e2e
|
|
script:
|
|
- echo "Populated qa cache"
|
|
cache:
|
|
policy: pull-push
|
|
|
|
# ==========================================
|
|
# Test stage
|
|
# ==========================================
|
|
|
|
# ------------------------------------------
|
|
# Manual jobs
|
|
# ------------------------------------------
|
|
|
|
# Run manual quarantine job
|
|
# this job requires passing QA_SCENARIO variable
|
|
# and optionally QA_TESTS to run specific quarantined tests
|
|
_quarantine:
|
|
extends:
|
|
- .qa
|
|
- .rules:test:manual
|
|
needs:
|
|
- job: trigger-omnibus
|
|
optional: true
|
|
stage: test
|
|
variables:
|
|
QA_RSPEC_TAGS: --tag quarantine
|
|
|
|
# ------------------------------------------
|
|
# FF changes
|
|
# ------------------------------------------
|
|
|
|
# Run specs with feature flags set to the opposite of the default state
|
|
instance-ff-inverse:
|
|
extends:
|
|
- .qa
|
|
- .parallel
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
QA_KNAPSACK_REPORT_NAME: ee-instance
|
|
GITLAB_QA_OPTS: --set-feature-flags $QA_FEATURE_FLAGS
|
|
rules:
|
|
- !reference [.rules:test:feature-flags-set, rules]
|
|
|
|
# ------------------------------------------
|
|
# Jobs with parallel variant
|
|
# ------------------------------------------
|
|
instance-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
instance:
|
|
extends:
|
|
- .parallel
|
|
- instance-selective
|
|
rules:
|
|
- !reference [.rules:test:feature-flags-set, rules] # always run instance to validate ff change
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
|
|
praefect-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Praefect
|
|
QA_CAN_TEST_PRAEFECT: "true"
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
praefect:
|
|
extends:
|
|
- .parallel
|
|
- praefect-selective
|
|
rules:
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
|
|
relative-url-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::RelativeUrl
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
relative-url:
|
|
extends:
|
|
- .parallel
|
|
- relative-url-selective
|
|
rules:
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
|
|
decomposition-single-db-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
GITLAB_QA_OPTS: --omnibus-config decomposition_single_db $EXTRA_GITLAB_QA_OPTS
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
decomposition-single-db:
|
|
extends:
|
|
- .parallel
|
|
- decomposition-single-db-selective
|
|
rules:
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
|
|
decomposition-multiple-db-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
GITLAB_ALLOW_SEPARATE_CI_DATABASE: "true"
|
|
GITLAB_QA_OPTS: --omnibus-config decomposition_multiple_db $EXTRA_GITLAB_QA_OPTS
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
decomposition-multiple-db:
|
|
extends:
|
|
- .parallel
|
|
- decomposition-multiple-db-selective
|
|
rules:
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::All/
|
|
|
|
object-storage-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
QA_RSPEC_TAGS: --tag object_storage
|
|
GITLAB_QA_OPTS: --omnibus-config object_storage $EXTRA_GITLAB_QA_OPTS
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::ObjectStorage/
|
|
object-storage:
|
|
extends: object-storage-selective
|
|
parallel: 2
|
|
rules:
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::ObjectStorage/
|
|
|
|
object-storage-aws-selective:
|
|
extends: object-storage-selective
|
|
variables:
|
|
AWS_S3_ACCESS_KEY: $QA_AWS_S3_ACCESS_KEY
|
|
AWS_S3_BUCKET_NAME: $QA_AWS_S3_BUCKET_NAME
|
|
AWS_S3_KEY_ID: $QA_AWS_S3_KEY_ID
|
|
AWS_S3_REGION: $QA_AWS_S3_REGION
|
|
GITLAB_QA_OPTS: --omnibus-config object_storage_aws $EXTRA_GITLAB_QA_OPTS
|
|
object-storage-aws:
|
|
extends: object-storage-aws-selective
|
|
parallel: 2
|
|
rules:
|
|
- !reference [object-storage, rules]
|
|
|
|
object-storage-gcs-selective:
|
|
extends: object-storage-selective
|
|
variables:
|
|
GCS_BUCKET_NAME: $QA_GCS_BUCKET_NAME
|
|
GOOGLE_PROJECT: $QA_GOOGLE_PROJECT
|
|
GOOGLE_JSON_KEY: $QA_GOOGLE_JSON_KEY
|
|
GOOGLE_CLIENT_EMAIL: $QA_GOOGLE_CLIENT_EMAIL
|
|
GITLAB_QA_OPTS: --omnibus-config object_storage_gcs $EXTRA_GITLAB_QA_OPTS
|
|
object-storage-gcs:
|
|
extends: object-storage-gcs-selective
|
|
parallel: 2
|
|
rules:
|
|
- !reference [object-storage, rules]
|
|
|
|
packages-selective:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
QA_RSPEC_TAGS: --tag packages
|
|
GITLAB_QA_OPTS: --omnibus-config packages $EXTRA_GITLAB_QA_OPTS
|
|
rules:
|
|
- !reference [.rules:test:qa-selective, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::Packages/
|
|
packages:
|
|
extends: packages-selective
|
|
parallel: 2
|
|
rules:
|
|
- !reference [.rules:test:qa-parallel, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::Packages/
|
|
|
|
# ------------------------------------------
|
|
# Non parallel jobs
|
|
# ------------------------------------------
|
|
update-minor:
|
|
extends:
|
|
- .qa
|
|
- .update-script
|
|
variables:
|
|
UPDATE_TYPE: minor
|
|
QA_RSPEC_TAGS: --tag smoke
|
|
rules:
|
|
- !reference [.rules:test:update, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::Smoke/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
update-major:
|
|
extends:
|
|
- .qa
|
|
- .update-script
|
|
variables:
|
|
UPDATE_TYPE: major
|
|
QA_RSPEC_TAGS: --tag smoke
|
|
rules:
|
|
- !reference [.rules:test:update, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::Smoke/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
gitlab-pages:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::GitlabPages
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::GitlabPages/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
gitaly-cluster:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::GitalyCluster
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::GitalyCluster/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
group-saml:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::GroupSAML
|
|
rules:
|
|
- !reference [.rules:test:ee-only, rules]
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::GroupSAML/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
oauth:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::OAuth
|
|
rules:
|
|
- !reference [.rules:test:qa-default-branch, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::OAuth/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
instance-saml:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::InstanceSAML
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::InstanceSAML/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
jira:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Jira
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Jira/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
integrations:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Integrations
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Integrations/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
ldap-no-server:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::LDAPNoServer
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::LDAPNoServer/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
ldap-tls:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::LDAPTLS
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::LDAPTLS/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
ldap-no-tls:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::LDAPNoTLS
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::LDAPNoTLS/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
mtls:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::MTLS
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Mtls/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
mattermost:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Mattermost
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Mattermost/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
registry:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Registry
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Registry/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
registry-with-cdn:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::RegistryWithCDN
|
|
GCS_CDN_BUCKET_NAME: $QA_GCS_CDN_BUCKET_NAME
|
|
GOOGLE_CDN_LB: $QA_GOOGLE_CDN_LB
|
|
GOOGLE_CDN_JSON_KEY: $QA_GOOGLE_CDN_JSON_KEY
|
|
GOOGLE_CDN_SIGNURL_KEY: $QA_GOOGLE_CDN_SIGNURL_KEY
|
|
GOOGLE_CDN_SIGNURL_KEY_NAME: $QA_GOOGLE_CDN_SIGNURL_KEY_NAME
|
|
before_script:
|
|
- unset GITLAB_QA_ADMIN_ACCESS_TOKEN
|
|
- !reference [.qa, before_script]
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::RegistryWithCDN/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
repository-storage:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::RepositoryStorage
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::RepositoryStorage/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
service-ping-disabled:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::ServicePingDisabled
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::ServicePingDisabled/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
smtp:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::SMTP
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::SMTP/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
cloud-activation:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
QA_RSPEC_TAGS: --tag cloud_activation
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::CloudActivation/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
large-setup:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Instance::Image
|
|
QA_RSPEC_TAGS: --tag can_use_large_setup
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::LargeSetup/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
metrics:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Metrics
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Instance::Metrics/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
elasticsearch:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: "Test::Integration::Elasticsearch"
|
|
before_script:
|
|
- !reference [.qa, before_script]
|
|
rules:
|
|
- !reference [.rules:test:ee-only, rules]
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Elasticsearch/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
registry-object-storage-tls:
|
|
extends: object-storage-aws-selective
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::RegistryTLS
|
|
QA_RSPEC_TAGS: ""
|
|
GITLAB_TLS_CERTIFICATE: $QA_GITLAB_TLS_CERTIFICATE
|
|
GITLAB_QA_OPTS: --omnibus-config registry_object_storage $EXTRA_GITLAB_QA_OPTS
|
|
|
|
importers:
|
|
extends: .qa
|
|
variables:
|
|
QA_SCENARIO: Test::Integration::Import
|
|
QA_MOCK_GITHUB: "true"
|
|
rules:
|
|
- !reference [.rules:test:qa, rules]
|
|
- if: $QA_SUITES =~ /Test::Integration::Import/
|
|
- !reference [.rules:test:manual, rules]
|
|
|
|
# ==========================================
|
|
# Post test stage
|
|
# ==========================================
|
|
e2e-test-report:
|
|
extends:
|
|
- .e2e-test-report
|
|
- .rules:report:allure-report
|
|
|
|
upload-knapsack-report:
|
|
extends:
|
|
- .upload-knapsack-report
|
|
- .rules:report:process-results
|
|
|
|
export-test-metrics:
|
|
extends:
|
|
- .export-test-metrics
|
|
- .rules:report:process-results
|
|
|
|
relate-test-failures:
|
|
extends:
|
|
- .relate-test-failures
|
|
- .rules:report:process-results
|
|
|
|
generate-test-session:
|
|
extends:
|
|
- .generate-test-session
|
|
- .rules:report:process-results
|
|
|
|
notify-slack:
|
|
extends:
|
|
- .notify-slack
|
|
- .rules:report:process-results
|