diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-24 00:09:55 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-24 00:09:55 +0300 |
commit | 4e175ca905e0c6bdcf83f78fcffd1f5bc8767f82 (patch) | |
tree | 7285e810a23238b2eba789419554cd86c9d968f3 /.gitlab | |
parent | 3ca896b640def57a58485def308748b2fccbd0bb (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to '.gitlab')
-rw-r--r-- | .gitlab/ci/package-and-test/main.gitlab-ci.yml | 218 | ||||
-rw-r--r-- | .gitlab/ci/qa-common/main.gitlab-ci.yml | 2 | ||||
-rw-r--r-- | .gitlab/ci/qa-common/rules.gitlab-ci.yml | 26 | ||||
-rw-r--r-- | .gitlab/ci/setup.gitlab-ci.yml | 1 |
4 files changed, 218 insertions, 29 deletions
diff --git a/.gitlab/ci/package-and-test/main.gitlab-ci.yml b/.gitlab/ci/package-and-test/main.gitlab-ci.yml index 2832ac1171c..d9eda474040 100644 --- a/.gitlab/ci/package-and-test/main.gitlab-ci.yml +++ b/.gitlab/ci/package-and-test/main.gitlab-ci.yml @@ -103,6 +103,19 @@ instance-ff-inverse: # ------------------------------------------ # Jobs with parallel variant # ------------------------------------------ + +# ========== instance =========== +instance: + extends: + - .parallel + - .qa + variables: + QA_SCENARIO: Test::Instance::Image + 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/ + instance-selective: extends: .qa variables: @@ -110,12 +123,29 @@ instance-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -instance: + +instance-selective-parallel: extends: - .parallel - - instance-selective + - .qa + variables: + QA_SCENARIO: Test::Instance::Image + rules: + - !reference [.rules:test:qa-selective-parallel, rules] + - if: $QA_SUITES =~ /Test::Instance::All/ + variables: + QA_TESTS: "" + +# ========== praefect =========== + +praefect: + extends: + - .parallel + - .qa + variables: + QA_SCENARIO: Test::Integration::Praefect + QA_CAN_TEST_PRAEFECT: "true" 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/ @@ -127,10 +157,28 @@ praefect-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -praefect: + +praefect-selective-parallel: + extends: + - .qa + - .parallel + variables: + QA_SCENARIO: Test::Integration::Praefect + QA_CAN_TEST_PRAEFECT: "true" + rules: + - !reference [.rules:test:qa-selective-parallel, rules] + - if: $QA_SUITES =~ /Test::Instance::All/ + variables: + QA_TESTS: "" + +# ========== relative-url =========== + +relative-url: extends: + - .qa - .parallel - - praefect-selective + variables: + QA_SCENARIO: Test::Instance::RelativeUrl rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ @@ -142,10 +190,28 @@ relative-url-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -relative-url: + +relative-url-selective-parallel: extends: + - .qa - .parallel - - relative-url-selective + variables: + QA_SCENARIO: Test::Instance::RelativeUrl + rules: + - !reference [.rules:test:qa-selective-parallel, rules] + - if: $QA_SUITES =~ /Test::Instance::All/ + variables: + QA_TESTS: "" + +# ========== decomposition-single-db =========== + +decomposition-single-db: + extends: + - .qa + - .parallel + variables: + QA_SCENARIO: Test::Instance::Image + GITLAB_QA_OPTS: --omnibus-config decomposition_single_db $EXTRA_GITLAB_QA_OPTS rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ @@ -158,10 +224,30 @@ decomposition-single-db-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -decomposition-single-db: + +decomposition-single-db-selective-parallel: + extends: + - .qa + - .parallel + variables: + QA_SCENARIO: Test::Instance::Image + GITLAB_QA_OPTS: --omnibus-config decomposition_single_db $EXTRA_GITLAB_QA_OPTS + rules: + - !reference [.rules:test:qa-selective-parallel, rules] + - if: $QA_SUITES =~ /Test::Instance::All/ + variables: + QA_TESTS: "" + +# ========== decomposition-multiple-db =========== + +decomposition-multiple-db: extends: + - .qa - .parallel - - decomposition-single-db-selective + 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-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ @@ -175,13 +261,33 @@ decomposition-multiple-db-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -decomposition-multiple-db: + +decomposition-multiple-db-selective-parallel: extends: + - .qa - .parallel - - decomposition-multiple-db-selective + 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-parallel, rules] + - !reference [.rules:test:qa-selective-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ + variables: + QA_TESTS: "" + +# ========== object-storage =========== + +object-storage: + extends: .qa + parallel: 2 + 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-parallel, rules] + - if: $QA_SUITES =~ /Test::Instance::ObjectStorage/ object-storage-selective: extends: .qa @@ -192,12 +298,30 @@ object-storage-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::ObjectStorage/ -object-storage: - extends: object-storage-selective + +object-storage-selective-parallel: + extends: .qa parallel: 2 + 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-parallel, rules] + - !reference [.rules:test:qa-selective-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::ObjectStorage/ + variables: + QA_TESTS: "" + +# ========== object-storage-aws =========== + +object-storage-aws: + extends: object-storage + 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-selective: extends: object-storage-selective @@ -207,11 +331,27 @@ object-storage-aws-selective: 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-aws-selective-parallel: + extends: object-storage-selective-parallel + 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-gcs =========== + +object-storage-gcs: + extends: object-storage + 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-selective: extends: object-storage-selective @@ -221,11 +361,28 @@ object-storage-gcs-selective: 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 + +object-storage-gcs-selective-parallel: + extends: object-storage-selective-parallel + 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 + +# ========== packages =========== + +packages: + extends: .qa parallel: 2 + variables: + QA_SCENARIO: Test::Instance::Image + QA_RSPEC_TAGS: --tag packages + GITLAB_QA_OPTS: --omnibus-config packages $EXTRA_GITLAB_QA_OPTS rules: - - !reference [object-storage, rules] + - !reference [.rules:test:qa-parallel, rules] + - if: $QA_SUITES =~ /Test::Instance::Packages/ packages-selective: extends: .qa @@ -236,12 +393,19 @@ packages-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::Packages/ -packages: - extends: packages-selective + +packages-selective-parallel: + extends: .qa parallel: 2 + 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-parallel, rules] + - !reference [.rules:test:qa-selective-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::Packages/ + variables: + QA_TESTS: "" # ------------------------------------------ # Non parallel jobs @@ -474,7 +638,7 @@ elasticsearch: - !reference [.rules:test:manual, rules] registry-object-storage-tls: - extends: object-storage-aws-selective + extends: object-storage-aws-selective-parallel variables: QA_SCENARIO: Test::Integration::RegistryTLS QA_RSPEC_TAGS: "" diff --git a/.gitlab/ci/qa-common/main.gitlab-ci.yml b/.gitlab/ci/qa-common/main.gitlab-ci.yml index 44942fe8112..883624a58ff 100644 --- a/.gitlab/ci/qa-common/main.gitlab-ci.yml +++ b/.gitlab/ci/qa-common/main.gitlab-ci.yml @@ -166,8 +166,10 @@ stages: KNAPSACK_DIR: ${CI_PROJECT_DIR}/qa/knapsack GIT_STRATEGY: none script: + - echo "KNAPSACK_TEST_FILE_PATTERN is ${KNAPSACK_TEST_FILE_PATTERN}" # when using qa-image, code runs in /home/gitlab/qa folder - bundle exec rake "knapsack:download[test]" + - '[ -n "$QA_TESTS" ] && bundle exec rake "knapsack:create_reports_for_selective"' - mkdir -p "$KNAPSACK_DIR" && cp knapsack/*.json "${KNAPSACK_DIR}/" allow_failure: true artifacts: diff --git a/.gitlab/ci/qa-common/rules.gitlab-ci.yml b/.gitlab/ci/qa-common/rules.gitlab-ci.yml index 3580339921d..4d0e0138443 100644 --- a/.gitlab/ci/qa-common/rules.gitlab-ci.yml +++ b/.gitlab/ci/qa-common/rules.gitlab-ci.yml @@ -1,5 +1,5 @@ # Specific specs passed -.specific-specs: &specific-specs +.specs-specified: &specs-specified if: $QA_TESTS != "" # No specific specs passed @@ -10,6 +10,14 @@ .feature-flags-set: &feature-flags-set if: $QA_FEATURE_FLAGS =~ /enabled|disabled/ +# Specific specs specified +.spec-file-specified: &spec-file-specified + if: $QA_TESTS =~ /_spec\.rb/ + +# Specs directory specified +.spec-directory-specified: &spec-directory-specified + if: $QA_TESTS != "" && $QA_TESTS !~ /_spec\.rb/ + # Manually trigger job on ff changes but with default ff state instead of inverted .feature-flags-set-manual: &feature-flags-set-manual <<: *feature-flags-set @@ -96,11 +104,25 @@ when: never - <<: *feature-flags-set when: never + - <<: *spec-directory-specified + when: never + +.rules:test:qa-selective-parallel: + rules: + # always run parallel with full suite when framework changes present or ff state changed + - <<: *qa-run-all-tests + when: never + - <<: *all-specs + when: never + - <<: *feature-flags-set + when: never + - <<: *spec-file-specified + when: never .rules:test:qa-parallel: rules: - *qa-run-all-tests - - <<: *specific-specs + - <<: *specs-specified when: manual allow_failure: true variables: diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index 36e2c338748..cf71081a37f 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -171,3 +171,4 @@ e2e-test-pipeline-generate: expire_in: 1 day paths: - '*-pipeline.yml' + - "${CI_PROJECT_DIR}/qa_tests_vars.env" |