diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 09:08:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 09:08:42 +0000 |
commit | b76ae638462ab0f673e5915986070518dd3f9ad3 (patch) | |
tree | bdab0533383b52873be0ec0eb4d3c66598ff8b91 /.gitlab | |
parent | 434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff) | |
download | gitlab-ce-b76ae638462ab0f673e5915986070518dd3f9ad3.tar.gz |
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to '.gitlab')
20 files changed, 336 insertions, 153 deletions
diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index c7da1c5bebc..ae697582623 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -49,7 +49,6 @@ /doc/user/clusters/ @marcia /doc/user/compliance/ @rdickenson @eread /doc/user/group/ @msedlakjakubowski -/doc/user/group/bulk_editing/ @msedlakjakubowski /doc/user/group/devops_adoption/ @msedlakjakubowski /doc/user/group/epics/ @msedlakjakubowski /doc/user/group/insights/ @msedlakjakubowski @@ -115,7 +114,7 @@ /doc/api/tags.md @aqualls /doc/api/visual_review_discussions.md @aqualls /doc/api/wikis.md @aqualls -/doc/intro/README.md @aqualls +/doc/intro/index.md @aqualls /doc/topics/gitlab_flow.md @aqualls /doc/user/admin_area/settings/account_and_limit_settings.md @aqualls /doc/user/admin_area/settings/instance_template_repository.md @aqualls @@ -145,7 +144,7 @@ /doc/api/experiments.md @kpaizee /doc/development/experiment_guide/ @kpaizee /doc/development/snowplow/ @kpaizee -/doc/development/usage_ping/ @kpaizee +/doc/development/service_ping/ @kpaizee /doc/user/admin_area/license.md @kpaizee [Frontend] diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml index 853f92ed98d..0169f017063 100644 --- a/.gitlab/ci/build-images.gitlab-ci.yml +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -25,10 +25,9 @@ build-qa-image: - .build-images:rules:build-qa-image stage: build-images needs: [] - variables: - QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" script: - !reference [.base-image-build, script] + - echo $QA_IMAGE - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true # This image is used by: diff --git a/.gitlab/ci/cng.gitlab-ci.yml b/.gitlab/ci/cng.gitlab-ci.yml index f75497c1a3f..bf439288be2 100644 --- a/.gitlab/ci/cng.gitlab-ci.yml +++ b/.gitlab/ci/cng.gitlab-ci.yml @@ -7,4 +7,4 @@ cloud-native-image: GIT_DEPTH: "1" script: - install_gitlab_gem - - CNG_PROJECT_PATH="gitlab-org/build/CNG" ./scripts/trigger-build cng + - ./scripts/trigger-build cng diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 60025c244f1..ea3e3ac450b 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -44,7 +44,7 @@ docs-lint markdown: - .default-retry - .docs:rules:docs-lint # When updating the image version here, update it in /scripts/lint-doc.sh too. - image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.13-vale-2.10.2-markdownlint-0.26.0 + image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.14-vale-2.10.4-markdownlint-0.28.1 stage: test needs: [] script: diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 318ac20435e..bfc38e73bb5 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -143,7 +143,7 @@ rspec-ee frontend_fixture: extends: - .frontend-fixtures-base - .frontend:rules:default-frontend-jobs-ee - parallel: 2 + parallel: 3 graphql-schema-dump: variables: @@ -242,7 +242,7 @@ jest: - tmp/tests/frontend/ reports: junit: junit_jest.xml - parallel: 4 + parallel: 5 jest-integration: extends: diff --git a/.gitlab/ci/pages.gitlab-ci.yml b/.gitlab/ci/pages.gitlab-ci.yml index e75b0db9071..2f43e974cf6 100644 --- a/.gitlab/ci/pages.gitlab-ci.yml +++ b/.gitlab/ci/pages.gitlab-ci.yml @@ -7,22 +7,32 @@ pages: - .default-retry - .pages:rules stage: pages + environment: pages + resource_group: pages needs: - - rspec:coverage - - coverage-frontend - - karma - - compile-production-assets - - compile-storybook + - job: "rspec:coverage" + - job: "coverage-frontend" + - job: "karma" + - job: "compile-production-assets" + - job: "compile-storybook" + # `update-tests-metadata` only runs on GitLab.com's EE schedules pipelines + # while `pages` runs for all the 2-hourly schedules. + - job: "update-tests-metadata" + optional: true before_script: - apt-get update && apt-get -y install brotli gzip script: - mv public/ .public/ - mkdir public/ + - mkdir -p public/$(dirname "$KNAPSACK_RSPEC_SUITE_REPORT_PATH") public/$(dirname "$FLAKY_RSPEC_SUITE_REPORT_PATH") public/$(dirname "$RSPEC_PACKED_TESTS_MAPPING_PATH") - mv coverage/ public/coverage-ruby/ || true - mv coverage-frontend/ public/coverage-frontend/ || true - mv coverage-javascript/ public/coverage-javascript/ || true - mv storybook/public public/storybook || true - cp .public/assets/application-*.css public/application.css || true + - mv $KNAPSACK_RSPEC_SUITE_REPORT_PATH public/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || true + - mv $FLAKY_RSPEC_SUITE_REPORT_PATH public/$FLAKY_RSPEC_SUITE_REPORT_PATH || true + - mv $RSPEC_PACKED_TESTS_MAPPING_PATH.gz public/$RSPEC_PACKED_TESTS_MAPPING_PATH.gz || true - *compress-public artifacts: paths: diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index 8bbd7dbf075..c3e6de76894 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -51,9 +51,10 @@ update-qa-cache: image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine stage: qa retry: 0 - script: + before_script: - source scripts/utils.sh - install_gitlab_gem + script: - ./scripts/trigger-build omnibus package-and-qa: diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 179c00b479c..f4b001ed1ba 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -29,7 +29,6 @@ variables: RUBY_GC_MALLOC_LIMIT: 67108864 RUBY_GC_MALLOC_LIMIT_MAX: 134217728 - CRYSTALBALL: "true" RECORD_DEPRECATIONS: "true" needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets", "detect-tests"] script: @@ -394,8 +393,7 @@ db:migrate-from-previous-major-version: - sed -i -e "s/gem 'google-protobuf', '~> 3.8.0'/gem 'google-protobuf', '~> 3.12'/" Gemfile - sed -i -e "s/gem 'nokogiri', '~> 1.10.5'/gem 'nokogiri', '~> 1.11.0'/" Gemfile - sed -i -e "s/gem 'mimemagic', '~> 0.3.2'/gem 'ruby-magic', '~> 0.4.0'/" Gemfile - - run_timed_command "gem install bundler:1.17.3" - - run_timed_command "bundle update google-protobuf nokogiri grpc mimemagic bootsnap" + - run_timed_command "bundle update --bundler google-protobuf nokogiri grpc mimemagic bootsnap" - SETUP_DB=false USE_BUNDLE_INSTALL=true bash scripts/prepare_build.sh - run_timed_command "bundle exec rake db:drop db:create db:structure:load db:migrate db:seed_fu" - git checkout -f $CI_COMMIT_SHA @@ -449,7 +447,9 @@ db:backup_and_restore: - date - bundle exec rake gitlab:backup:restore rules: - - changes: ["lib/backup/**/*"] + - changes: + - "lib/backup/**/*" + - "lib/tasks/gitlab/backup.rake" rspec:deprecations: extends: @@ -645,36 +645,33 @@ rspec-ee unit pg12 geo: - .rails:rules:ee-only-unit - .rspec-ee-unit-geo-parallel -# FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212 -#rspec-ee unit pg12 geo minimal: -# extends: -# - rspec-ee unit pg12 geo -# - .minimal-rspec-tests -# - .rails:rules:ee-only-unit:minimal +rspec-ee unit pg12 geo minimal: + extends: + - rspec-ee unit pg12 geo + - .minimal-rspec-tests + - .rails:rules:ee-only-unit:minimal rspec-ee integration pg12 geo: extends: - .rspec-ee-base-geo-pg12 - .rails:rules:ee-only-integration -# FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212 -#rspec-ee integration pg12 geo minimal: -# extends: -# - rspec-ee integration pg12 geo -# - .minimal-rspec-tests -# - .rails:rules:ee-only-integration:minimal +rspec-ee integration pg12 geo minimal: + extends: + - rspec-ee integration pg12 geo + - .minimal-rspec-tests + - .rails:rules:ee-only-integration:minimal rspec-ee system pg12 geo: extends: - .rspec-ee-base-geo-pg12 - .rails:rules:ee-only-system -# FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212 -#rspec-ee system pg12 geo minimal: -# extends: -# - rspec-ee system pg12 geo -# - .minimal-rspec-tests -# - .rails:rules:ee-only-system:minimal +rspec-ee system pg12 geo minimal: + extends: + - rspec-ee system pg12 geo + - .minimal-rspec-tests + - .rails:rules:ee-only-system:minimal db:rollback geo: extends: diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 690a971927c..7fb4e54c4d6 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -41,6 +41,22 @@ nodejs-scan-sast: semgrep-sast: rules: !reference [".reports:rules:sast", rules] +gosec-sast: + variables: + GOPATH: "$CI_PROJECT_DIR/vendor/go" + COMPILE: "false" + GOSEC_GO_PKG_PATH: "$CI_PROJECT_DIR" + SECURE_LOG_LEVEL: "debug" + before_script: + - mkdir -p $GOPATH + - cd workhorse + - go get -d ./... + - cd .. + cache: + paths: + - vendor/go + rules: !reference [".reports:rules:sast", rules] + .secret-analyzer: extends: .default-retry needs: [] diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 38d59af5aed..c22b468d674 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -2,7 +2,7 @@ review-cleanup: extends: - .default-retry - .review:rules:review-cleanup - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3.5-kubectl1.17 + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3-kubectl1.14 stage: prepare environment: name: review/auto-cleanup @@ -27,12 +27,15 @@ review-build-cng: - .review:rules:review-build-cng image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13 stage: review-prepare - before_script: - - source ./scripts/utils.sh - - install_gitlab_gem needs: - job: compile-production-assets artifacts: false + variables: + CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}" # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens + CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror" + before_script: + - source ./scripts/utils.sh + - install_gitlab_gem script: - ./scripts/trigger-build cng @@ -43,7 +46,7 @@ review-build-cng: variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "v4.12.0" + GITLAB_HELM_CHART_REF: "v5.1.0" environment: name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} @@ -114,7 +117,7 @@ review-stop: extends: - .use-docker-in-docker image: - name: ${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG} + name: ${QA_IMAGE} entrypoint: [""] stage: qa needs: ["build-qa-image", "review-deploy"] diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index c97ef4fc868..53420dfe31a 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -19,12 +19,6 @@ .if-default-branch-push: &if-default-branch-push if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push"' -.if-default-branch-schedule-2-hourly: &if-default-branch-schedule-2-hourly - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"' - -.if-default-branch-schedule-nightly: &if-default-branch-schedule-nightly - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"' - .if-auto-deploy-branches: &if-auto-deploy-branches if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/' @@ -34,24 +28,51 @@ .if-merge-request: &if-merge-request if: '$CI_MERGE_REQUEST_IID' +.if-merge-request-approved: &if-merge-request-approved + if: '$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_APPROVED' + +.if-merge-request-not-approved: &if-merge-request-not-approved + if: '$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_APPROVED != "true"' + +.if-automated-merge-request: &if-automated-merge-request + if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "release-tools/update-gitaly" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /stable-ee$/' + .if-merge-request-title-as-if-foss: &if-merge-request-title-as-if-foss - if: '$CI_MERGE_REQUEST_TITLE =~ /RUN AS-IF-FOSS/' + if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-foss/' .if-merge-request-title-update-caches: &if-merge-request-title-update-caches - if: '$CI_MERGE_REQUEST_TITLE =~ /UPDATE CACHE/' + if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:update-cache/' .if-merge-request-title-run-all-rspec: &if-merge-request-title-run-all-rspec - if: '$CI_MERGE_REQUEST_TITLE =~ /RUN ALL RSPEC/' + if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-all-rspec/' .if-security-merge-request: &if-security-merge-request if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID' +.if-default-branch-schedule-2-hourly: &if-default-branch-schedule-2-hourly + if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"' + +.if-default-branch-schedule-nightly: &if-default-branch-schedule-nightly + if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"' + .if-security-schedule: &if-security-schedule if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_PIPELINE_SOURCE == "schedule"' .if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"' +.if-dot-com-ee-schedule: &if-dot-com-ee-schedule + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule"' + +.if-dot-com-ee-2-hourly-schedule: &if-dot-com-ee-2-hourly-schedule + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"' + +.if-dot-com-ee-nightly-schedule: &if-dot-com-ee-nightly-schedule + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"' + +.if-cache-credentials-schedule: &if-cache-credentials-schedule + if: '$CI_REPO_CACHE_CREDENTIALS && $CI_PIPELINE_SOURCE == "schedule"' + .if-dot-com-gitlab-org-default-branch: &if-dot-com-gitlab-org-default-branch if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' @@ -64,20 +85,12 @@ .if-dot-com-gitlab-org-and-security-tag: &if-dot-com-gitlab-org-and-security-tag if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_COMMIT_TAG' -.if-dot-com-ee-schedule: &if-dot-com-ee-schedule - if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule"' - -.if-cache-credentials-schedule: &if-cache-credentials-schedule - if: '$CI_REPO_CACHE_CREDENTIALS && $CI_PIPELINE_SOURCE == "schedule"' - -.if-merge-request-rspec-minimal-disabled: &if-merge-request-rspec-minimal-disabled - if: '$CI_MERGE_REQUEST_IID && $RSPEC_MINIMAL_ENABLED != "true"' .if-rspec-fail-fast-disabled: &if-rspec-fail-fast-disabled if: '$RSPEC_FAIL_FAST_ENABLED != "true"' .if-rspec-fail-fast-skipped: &if-rspec-fail-fast-skipped - if: '$CI_MERGE_REQUEST_TITLE =~ /SKIP RSPEC FAIL-FAST/' + if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:skip-rspec-fail-fast/' # For Security merge requests, the gitlab-release-tools-bot triggers a new # pipeline for the "Pipelines for merged results" feature. If the pipeline @@ -205,6 +218,7 @@ - "{,ee/,jh/}spec/support/helpers/database/**/*" - "config/prometheus/common_metrics.yml" # Used by Gitlab::DatabaseImporters::CommonMetrics::Importer - "{,ee/,jh/}app/models/project_statistics.rb" # Used to calculate sizes in migration specs + - "GITALY_SERVER_VERSION" # Has interactions with background migrations:https://gitlab.com/gitlab-org/gitlab/-/issues/336538 # CI changes - ".gitlab-ci.yml" - ".gitlab/ci/**/*" @@ -551,9 +565,7 @@ ############### .pages:rules: rules: - - <<: *if-not-ee - when: never - - <<: *if-default-branch-schedule-2-hourly + - <<: *if-dot-com-ee-2-hourly-schedule ############ # QA rules # @@ -597,12 +609,20 @@ ############### .rails:rules:ee-and-foss-migration: rules: - - changes: *db-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *db-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *db-patterns .rails:rules:ee-and-foss-migration:minimal: rules: - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -628,12 +648,20 @@ .rails:rules:ee-and-foss-unit: rules: - - changes: *backend-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *backend-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *backend-patterns .rails:rules:ee-and-foss-unit:minimal: rules: - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -645,12 +673,20 @@ .rails:rules:ee-and-foss-integration: rules: - - changes: *backend-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *backend-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *backend-patterns .rails:rules:ee-and-foss-integration:minimal: rules: - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -662,12 +698,20 @@ .rails:rules:ee-and-foss-system: rules: - - changes: *code-backstage-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *code-backstage-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *code-backstage-patterns .rails:rules:ee-and-foss-system:minimal: rules: - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -679,12 +723,20 @@ .rails:rules:ee-and-foss-fast_spec_helper: rules: - - changes: ["config/**/*"] - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: ["config/**/*"] + - <<: *if-merge-request-not-approved + when: never + - changes: ["config/**/*"] .rails:rules:ee-and-foss-fast_spec_helper:minimal: rules: - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -703,14 +755,22 @@ rules: - <<: *if-not-ee when: never - - changes: *db-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *db-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *db-patterns .rails:rules:ee-only-migration:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -724,14 +784,22 @@ rules: - <<: *if-not-ee when: never - - changes: *backend-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *backend-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *backend-patterns .rails:rules:ee-only-unit:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -745,14 +813,22 @@ rules: - <<: *if-not-ee when: never - - changes: *backend-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *backend-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *backend-patterns .rails:rules:ee-only-integration:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -766,14 +842,22 @@ rules: - <<: *if-not-ee when: never - - changes: *code-backstage-patterns - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *code-backstage-patterns + - <<: *if-merge-request-not-approved + when: never + - changes: *code-backstage-patterns .rails:rules:ee-only-system:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request-title-run-all-rspec when: never @@ -787,19 +871,25 @@ rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *db-patterns + - <<: *if-merge-request-not-approved + when: never - <<: *if-security-merge-request changes: *db-patterns - <<: *if-merge-request-title-as-if-foss changes: *db-patterns - - <<: *if-merge-request-title-run-all-rspec - - <<: *if-merge-request - changes: *ci-patterns .rails:rules:as-if-foss-migration:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request changes: *ci-patterns @@ -808,25 +898,30 @@ changes: *db-patterns - <<: *if-merge-request-title-as-if-foss changes: *db-patterns - - <<: *if-merge-request-title-run-all-rspec .rails:rules:as-if-foss-unit: rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *backend-patterns + - <<: *if-merge-request-not-approved + when: never - <<: *if-security-merge-request changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns - - <<: *if-merge-request-title-run-all-rspec - - <<: *if-merge-request - changes: *ci-patterns .rails:rules:as-if-foss-unit:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request changes: *ci-patterns @@ -835,25 +930,30 @@ changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns - - <<: *if-merge-request-title-run-all-rspec .rails:rules:as-if-foss-integration: rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *backend-patterns + - <<: *if-merge-request-not-approved + when: never - <<: *if-security-merge-request changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns - - <<: *if-merge-request-title-run-all-rspec - - <<: *if-merge-request - changes: *ci-patterns .rails:rules:as-if-foss-integration:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request changes: *ci-patterns @@ -862,25 +962,30 @@ changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns - - <<: *if-merge-request-title-run-all-rspec .rails:rules:as-if-foss-system: rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request + changes: *ci-patterns + - <<: *if-automated-merge-request + changes: *code-backstage-patterns + - <<: *if-merge-request-not-approved + when: never - <<: *if-security-merge-request changes: *code-backstage-patterns - <<: *if-merge-request-title-as-if-foss changes: *code-backstage-patterns - - <<: *if-merge-request-title-run-all-rspec - - <<: *if-merge-request - changes: *ci-patterns .rails:rules:as-if-foss-system:minimal: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-rspec-minimal-disabled + - <<: *if-merge-request-approved + when: never + - <<: *if-automated-merge-request when: never - <<: *if-merge-request changes: *ci-patterns @@ -889,7 +994,6 @@ changes: *code-backstage-patterns - <<: *if-merge-request-title-as-if-foss changes: *code-backstage-patterns - - <<: *if-merge-request-title-run-all-rspec .rails:rules:ee-and-foss-db-library-code: rules: @@ -1209,6 +1313,8 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns allow_failure: true + - <<: *if-dot-com-ee-schedule + allow_failure: true # The rule needs to be duplicated between `on_success` and `on_failure` # because the jobs `needs` the previous job to complete. @@ -1235,6 +1341,10 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns when: on_failure + - <<: *if-dot-com-ee-schedule + when: on_success + - <<: *if-dot-com-ee-schedule + when: on_failure .review:rules:review-qa-all: rules: @@ -1247,6 +1357,8 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *qa-patterns allow_failure: true + - <<: *if-dot-com-ee-nightly-schedule + allow_failure: true # The rule needs to be duplicated between `on_success` and `on_failure` # because the jobs `needs` the previous job to complete. @@ -1261,12 +1373,18 @@ allow_failure: true - <<: *if-dot-com-gitlab-org-merge-request changes: *qa-patterns - allow_failure: true when: on_success + allow_failure: true - <<: *if-dot-com-gitlab-org-merge-request changes: *qa-patterns + when: on_failure allow_failure: true + - <<: *if-dot-com-ee-nightly-schedule + when: on_success + allow_failure: true + - <<: *if-dot-com-ee-nightly-schedule when: on_failure + allow_failure: true .review:rules:review-cleanup: rules: @@ -1354,10 +1472,10 @@ rules: - <<: *if-not-ee when: never + - <<: *if-dot-com-ee-2-hourly-schedule - changes: - ".gitlab/ci/test-metadata.gitlab-ci.yml" - "scripts/rspec_helpers.sh" - - <<: *if-dot-com-ee-schedule ################### # workhorse rules # diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml index 08c5a7267c2..135bf8b6a8c 100644 --- a/.gitlab/ci/test-metadata.gitlab-ci.yml +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -43,5 +43,6 @@ update-tests-metadata: script: - run_timed_command "retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document" - source ./scripts/rspec_helpers.sh + - test -f rspec_flaky/report-suite.json || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m" - update_tests_metadata - update_tests_mapping diff --git a/.gitlab/issue_templates/Design Sprint.md b/.gitlab/issue_templates/Design Sprint.md index 06ef7dc9abc..7772c2d5803 100644 --- a/.gitlab/issue_templates/Design Sprint.md +++ b/.gitlab/issue_templates/Design Sprint.md @@ -1,5 +1,9 @@ <!-- Title: Design Sprint --> +This template outlines a sample set-up process, activities and deliverables for running a Remote Design Sprint. The specific activities and deliverables should be customized based on your objectives and timeline. + +Please refer to the [Remote Design Sprint Handbook page](#anchor-tag-to-handbook-page) for additional recommendations. + ## Design Sprint Focus * [ ] Have you [determined that a Design Sprint is appropriate for this project](#anchor-tag-to-handbook-page)? <!-- What is the focus of the [Design Sprint](https://about.gitlab.com/handbook/product/product-processes/#design-sprint)? What problem area will you be solving for and who is the target user? --> diff --git a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md index 560b1722348..73233644d37 100644 --- a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md +++ b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md @@ -62,38 +62,36 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org disable_ddl_transaction! def up - unless table_exists?(:cool_widget_registry) - ActiveRecord::Base.transaction do - create_table :cool_widget_registry, id: :bigserial, force: :cascade do |t| - t.bigint :cool_widget_id, null: false - t.datetime_with_timezone :created_at, null: false - t.datetime_with_timezone :last_synced_at - t.datetime_with_timezone :retry_at - t.datetime_with_timezone :verified_at - t.datetime_with_timezone :verification_started_at - t.datetime_with_timezone :verification_retry_at - t.integer :state, default: 0, null: false, limit: 2 - t.integer :verification_state, default: 0, null: false, limit: 2 - t.integer :retry_count, default: 0, limit: 2, null: false - t.integer :verification_retry_count, default: 0, limit: 2, null: false - t.boolean :checksum_mismatch, default: false, null: false - t.boolean :force_to_redownload, default: false, null: false - t.boolean :missing_on_primary, default: false, null: false - t.binary :verification_checksum - t.binary :verification_checksum_mismatched - t.string :verification_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806 - t.string :last_sync_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806 - - t.index :cool_widget_id, name: :index_cool_widget_registry_on_cool_widget_id, unique: true - t.index :retry_at - t.index :state - # To optimize performance of CoolWidgetRegistry.verification_failed_batch - t.index :verification_retry_at, name: :cool_widget_registry_failed_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 3))" - # To optimize performance of CoolWidgetRegistry.needs_verification_count - t.index :verification_state, name: :cool_widget_registry_needs_verification, where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))" - # To optimize performance of CoolWidgetRegistry.verification_pending_batch - t.index :verified_at, name: :cool_widget_registry_pending_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 0))" - end + ActiveRecord::Base.transaction do + create_table :cool_widget_registry, id: :bigserial, force: :cascade do |t| + t.bigint :cool_widget_id, null: false + t.datetime_with_timezone :created_at, null: false + t.datetime_with_timezone :last_synced_at + t.datetime_with_timezone :retry_at + t.datetime_with_timezone :verified_at + t.datetime_with_timezone :verification_started_at + t.datetime_with_timezone :verification_retry_at + t.integer :state, default: 0, null: false, limit: 2 + t.integer :verification_state, default: 0, null: false, limit: 2 + t.integer :retry_count, default: 0, limit: 2, null: false + t.integer :verification_retry_count, default: 0, limit: 2, null: false + t.boolean :checksum_mismatch, default: false, null: false + t.boolean :force_to_redownload, default: false, null: false + t.boolean :missing_on_primary, default: false, null: false + t.binary :verification_checksum + t.binary :verification_checksum_mismatched + t.string :verification_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806 + t.string :last_sync_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806 + + t.index :cool_widget_id, name: :index_cool_widget_registry_on_cool_widget_id, unique: true + t.index :retry_at + t.index :state + # To optimize performance of CoolWidgetRegistry.verification_failed_batch + t.index :verification_retry_at, name: :cool_widget_registry_failed_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 3))" + # To optimize performance of CoolWidgetRegistry.needs_verification_count + t.index :verification_state, name: :cool_widget_registry_needs_verification, where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))" + # To optimize performance of CoolWidgetRegistry.verification_pending_batch + t.index :verified_at, name: :cool_widget_registry_pending_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 0))" end end end @@ -454,7 +452,7 @@ That's all of the required database changes. ``` - [ ] Update `REGISTRY_CLASSES` in `ee/app/workers/geo/secondary/registry_consistency_worker.rb`. -- [ ] Update `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`. +- [ ] Add a custom factory name if needed in `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`. - [ ] Update `it 'creates missing registries for each registry class'` in `ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb`. - [ ] Add `cool_widget_registry` to `ActiveSupport::Inflector.inflections` in `config/initializers_before_autoloader/000_inflections.rb`. - [ ] Create `ee/spec/factories/geo/cool_widget_registry.rb`: @@ -537,9 +535,11 @@ If you did not add verification state fields to a separate table, `cool_widget_s Otherwise, you can follow [the example of Merge Request Diffs](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63309). -- [ ] Add a `Geo::CoolWidgetState` model in `ee/app/models/ee/geo/cool_widget_state.rb`: +- [ ] Add a `Geo::CoolWidgetState` model in `ee/app/models/geo/cool_widget_state.rb`: ``` ruby + # frozen_string_literal: true + module Geo class CoolWidgetState < ApplicationRecord self.primary_key = :cool_widget_id @@ -745,7 +745,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir graphql_name 'CoolWidgetRegistry' description 'Represents the Geo replication and verification state of a cool_widget' - field :cool_widget_id, GraphQL::ID_TYPE, null: false, description: 'ID of the Cool Widget' + field :cool_widget_id, GraphQL::Types::ID, null: false, description: 'ID of the Cool Widget.' end end end diff --git a/.gitlab/issue_templates/Geo Replicate a new blob type.md b/.gitlab/issue_templates/Geo Replicate a new blob type.md index 58b08f490f7..cc5a606d68b 100644 --- a/.gitlab/issue_templates/Geo Replicate a new blob type.md +++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md @@ -421,7 +421,7 @@ That's all of the required database changes. ``` - [ ] Update `REGISTRY_CLASSES` in `ee/app/workers/geo/secondary/registry_consistency_worker.rb`. -- [ ] Update `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`. +- [ ] Add a custom factory name if needed in `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`. - [ ] Update `it 'creates missing registries for each registry class'` in `ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb`. - [ ] Add `cool_widget_registry` to `ActiveSupport::Inflector.inflections` in `config/initializers_before_autoloader/000_inflections.rb`. - [ ] Create `ee/spec/factories/geo/cool_widget_registry.rb`: diff --git a/.gitlab/issue_templates/Problem Validation.md b/.gitlab/issue_templates/Problem Validation.md index f7515c07218..5d417c5a26d 100644 --- a/.gitlab/issue_templates/Problem Validation.md +++ b/.gitlab/issue_templates/Problem Validation.md @@ -38,4 +38,11 @@ For example, if the solution will take a product manager, designer, and engineer two weeks of effort - you may quantify this as 1.5 (based on 0.5 months x 3 people). --> +## Definition of Done + +- [ ] The problem is well understood by the PM to have an understanding summarized in a RICE score +- [ ] The problem is well understood by the PM to decide if they want to move forward with this idea or drop it +- [ ] The problem is well described and detailed with necessary requirements for product design to understand the problem +- [ ] The problem is well described and detailed with necessary requirements for engineering to understand the problem + /label ~"workflow::validation backlog" ~devops:: ~category: ~group:: diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 99149442509..51e8ec378b2 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -9,7 +9,9 @@ Set the title to: `Description of the original issue` ## Prior to starting the security release work - [ ] Read the [security process for developers] if you are not familiar with it. +- [ ] Make sure the issue really needs to follow the security release workflow. - Verify if the issue you're working on `gitlab-org/gitlab` is confidential, if it's public fix should be placed on GitLab canonical and no backports are required. + - If the issue you're fixing doesn't appear to be something that can be exploited by a malicious person and is instead simply a security enhancement do not hesitate to ping `@gitlab-com/gl-security/appsec` to discuss if the issue can be fixed in the canonical repository. - [ ] **IMPORTANT**: Mark this [issue as linked] to the Security Release Tracking Issue. You can find it on the topic of the `#releases` Slack channel. This issue MUST be linked for the release bot to know that the associated merge requests should be merged for this security release. - Fill out the [Links section](#links): diff --git a/.gitlab/issue_templates/Task for Configure group.md b/.gitlab/issue_templates/Task for Configure group.md new file mode 100644 index 00000000000..441f66d6698 --- /dev/null +++ b/.gitlab/issue_templates/Task for Configure group.md @@ -0,0 +1,9 @@ +## Scope + +This issue is part of a bigger development effort described in detail by its epic. The scope of this issue is to ... + +## Actions + +<!-- Likely in the form of checkboxed elements --> + +- [ ] TODO diff --git a/.gitlab/merge_request_templates/Change Documentation Location.md b/.gitlab/merge_request_templates/Change Documentation Location.md index 0c675d8d0c6..623d1597744 100644 --- a/.gitlab/merge_request_templates/Change Documentation Location.md +++ b/.gitlab/merge_request_templates/Change Documentation Location.md @@ -1,6 +1,8 @@ -<!--See the general Documentation guidelines https://docs.gitlab.com/ee/development/documentation/ --> - -<!-- Use this description template for changing documentation location. For new docs or updates to existing docs, use the "Documentation" template --> +<!-- + See the general Documentation guidelines https://docs.gitlab.com/ee/development/documentation/ + Use this description template for changing documentation location. For new documentation or + updates to existing documentation, use the Documentation.md template. +--> ## What does this MR do? @@ -25,4 +27,4 @@ https://docs.gitlab.com/ee/development/documentation/index.html#move-or-rename-a - [ ] Update the link in `features.yml` (if applicable) - [ ] Assign one of the technical writers for review. -/label ~documentation +/label ~documentation ~"Technical Writing" diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md index 99ad233c7e0..e97ae9a0c43 100644 --- a/.gitlab/merge_request_templates/Documentation.md +++ b/.gitlab/merge_request_templates/Documentation.md @@ -1,9 +1,12 @@ -<!-- Follow the documentation workflow https://docs.gitlab.com/ee/development/documentation/workflow.html --> -<!-- Additional information is located at https://docs.gitlab.com/ee/development/documentation/ --> -<!-- To find the designated Tech Writer for the stage/group, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers --> +<!-- + Follow the documentation workflow https://docs.gitlab.com/ee/development/documentation/workflow.html + Additional information is located at https://docs.gitlab.com/ee/development/documentation/ + To find the designated Tech Writer for the stage/group, see + https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers -<!-- Mention "documentation" or "docs" in the MR title --> -<!-- For changing documentation location use the "Change documentation location" template --> + Mention "documentation" or "docs" in the MR title + For changing documentation location use the Change Documentation Location.md template +--> ## What does this MR do? @@ -15,11 +18,23 @@ ## Author's checklist -- [ ] Follow the [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/) and [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide/). -- [ ] Ensure that the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges) is added to doc's `h1`. -- [ ] [Request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-reviewers-feature) based on the documentation page's metadata and [associated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments). +- [ ] Follow the: + - [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/). + - [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide/). +- [ ] Ensure that the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges) is added to topic's `h1`. +- [ ] [Request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-reviewers-feature) based on the: + - The documentation page's [metadata](https://docs.gitlab.com/ee/development/documentation/#metadata). + - The [associated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments). -To avoid having this MR be added to code verification QA issues, don't add these labels: ~"feature", ~"frontend", ~"backend", ~"bug", or ~"database" +If you are only adding documentation, do not add any of the following labels: + +- `~"feature"` +- `~"frontend"` +- `~"backend"` +- `~"bug"` +- `~"database"` + +These labels cause the MR to be added to code verification QA issues. ## Review checklist |