Merge tag 'debian/14.5.2+ds1-1' into bullseye-fasttrack

gitlab Debian release 14.5.2+ds1-1
This commit is contained in:
Pirate Praveen 2021-12-14 15:55:03 +05:30
commit 0be99bae27
10828 changed files with 191731 additions and 116998 deletions

View file

@ -1,5 +1,6 @@
--- ---
engines: version: "2"
plugins:
bundler-audit: bundler-audit:
enabled: true enabled: true
duplication: duplication:
@ -8,33 +9,22 @@ engines:
languages: languages:
- ruby - ruby
- javascript - javascript
ratings: rubocop:
paths: enabled: false
- Gemfile.lock exclude_patterns:
- "**.erb" - "{ee/,jh/,}config/"
- "**.haml" - "{ee/,jh/,}db/"
- "**.rb" - "**/log/"
- "**.rhtml" - "**/node_modules/"
- "**.slim" - "**/spec/"
- "**.inc" - "**/tmp/"
- "**.js" - "**/vendor/"
- "**.jsx"
- "**.module"
exclude_paths:
- config/
- db/
- features/
- node_modules/
- spec/
- vendor/
- .yarn-cache/ - .yarn-cache/
- tmp/ - backups/
- builds/ - builds/
- coverage/ - coverage/
- file_hooks/
- plugins/
- public/ - public/
- shared/ - shared/
- webpack-report/ - webpack-report/
- log/
- backups/
- plugins/
- file_hooks/

View file

@ -7,3 +7,5 @@
/tmp/ /tmp/
/vendor/ /vendor/
/sitespeed-result/ /sitespeed-result/
/fixtures/**/*.graphql
spec/fixtures/**/*.graphql

View file

@ -113,3 +113,24 @@ overrides:
- '*.stories.js' - '*.stories.js'
rules: rules:
filenames/match-regex: off filenames/match-regex: off
- files:
- '*.graphql'
plugins:
- '@graphql-eslint'
parserOptions:
parser: '@graphql-eslint/eslint-plugin'
operations:
- '{,ee/,jh/}app/**/*.graphql'
# You can run `bundle exec rake gitlab:graphql:schema:dump` and then uncomment this line
# schema: './tmp/tests/graphql/gitlab_schema.graphql'
rules:
filenames/match-regex: off
spaced-comment: off
# TODO: We need a way to include this rule + support ee_else_ce fragments
#'@graphql-eslint/unique-fragment-name': error
# TODO: Uncomment these rules when then `schema` is available
#'@graphql-eslint/fragments-on-composite-type': error
#'@graphql-eslint/known-argument-names': error
#'@graphql-eslint/known-type-names': error
'@graphql-eslint/no-anonymous-operations': error
'@graphql-eslint/unique-operation-name': error

1
.gitignore vendored
View file

@ -74,6 +74,7 @@ eslint-report.html
/.gitlab_kas_secret /.gitlab_kas_secret
/webpack-report/ /webpack-report/
/crystalball/ /crystalball/
/test_results/
/deprecations/ /deprecations/
/knapsack/ /knapsack/
/rspec_flaky/ /rspec_flaky/

View file

@ -3,6 +3,7 @@ stages:
- prepare - prepare
- build-images - build-images
- fixtures - fixtures
- lint
- test - test
- post-test - post-test
- review - review
@ -15,7 +16,7 @@ stages:
# in cases where jobs require Docker-in-Docker, the job # in cases where jobs require Docker-in-Docker, the job
# definition must be extended with `.use-docker-in-docker` # definition must be extended with `.use-docker-in-docker`
default: default:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36"
tags: tags:
- gitlab-org - gitlab-org
# All jobs are interruptible by default # All jobs are interruptible by default

View file

@ -26,7 +26,7 @@
/doc/administration/troubleshooting @marcel.amirault @marcia @eread /doc/administration/troubleshooting @marcel.amirault @marcia @eread
/doc/api/graphql/ @msedlakjakubowski @kpaizee /doc/api/graphql/ @msedlakjakubowski @kpaizee
/doc/api/graphql/reference/ @kpaizee /doc/api/graphql/reference/ @kpaizee
/doc/api/group_activity_analytics.md @msedlakjakubowski /doc/api/group_activity_analytics.md @fneill
/doc/ci/ @marcel.amirault @sselhorn /doc/ci/ @marcel.amirault @sselhorn
/doc/ci/environments/ @rdickenson /doc/ci/environments/ @rdickenson
/doc/ci/services/ @sselhorn /doc/ci/services/ @sselhorn
@ -34,7 +34,7 @@
/doc/development/ @marcia /doc/development/ @marcia
/doc/development/documentation/ @cnorris @dianalogan /doc/development/documentation/ @cnorris @dianalogan
/doc/development/i18n/ @ngaskill /doc/development/i18n/ @ngaskill
/doc/development/value_stream_analytics.md @msedlakjakubowski /doc/development/value_stream_analytics.md @fneill
/doc/gitlab-basics/ @aqualls /doc/gitlab-basics/ @aqualls
/doc/install/ @marcel.amirault /doc/install/ @marcel.amirault
/doc/operations/ @ngaskill @rdickenson /doc/operations/ @ngaskill @rdickenson
@ -45,19 +45,19 @@
/doc/topics/autodevops/ @marcia /doc/topics/autodevops/ @marcia
/doc/topics/git/ @aqualls /doc/topics/git/ @aqualls
/doc/update/ @marcel.amirault @marcia /doc/update/ @marcel.amirault @marcia
/doc/user/analytics/ @msedlakjakubowski @ngaskill /doc/user/analytics/ @fneill @ngaskill
/doc/user/application_security/ @rdickenson /doc/user/application_security/ @rdickenson
/doc/user/application_security/container_scanning/ @ngaskill /doc/user/application_security/container_scanning/ @ngaskill
/doc/user/application_security/cluster_image_scanning/ @ngaskill /doc/user/application_security/cluster_image_scanning/ @ngaskill
/doc/user/clusters/ @marcia /doc/user/clusters/ @marcia
/doc/user/compliance/ @rdickenson @eread /doc/user/compliance/ @rdickenson @eread
/doc/user/group/ @msedlakjakubowski /doc/user/group/ @msedlakjakubowski
/doc/user/group/devops_adoption/ @msedlakjakubowski /doc/user/group/devops_adoption/ @fneill
/doc/user/group/epics/ @msedlakjakubowski /doc/user/group/epics/ @msedlakjakubowski
/doc/user/group/insights/ @msedlakjakubowski /doc/user/group/insights/ @fneill
/doc/user/group/iterations/ @msedlakjakubowski /doc/user/group/iterations/ @msedlakjakubowski
/doc/user/group/roadmap/ @msedlakjakubowski /doc/user/group/roadmap/ @msedlakjakubowski
/doc/user/group/value_stream_analytics/ @msedlakjakubowski /doc/user/group/value_stream_analytics/ @fneill
/doc/user/infrastructure/ @marcia /doc/user/infrastructure/ @marcia
/doc/user/packages/ @ngaskill /doc/user/packages/ @ngaskill
/doc/user/packages/infrastructure_registry/ @marcia /doc/user/packages/infrastructure_registry/ @marcia
@ -76,6 +76,7 @@
/doc/user/project/web_ide/index.md @aqualls /doc/user/project/web_ide/index.md @aqualls
/doc/user/project/wiki/index.md @aqualls /doc/user/project/wiki/index.md @aqualls
/doc/user/search/ @marcia @aqualls /doc/user/search/ @marcia @aqualls
/doc/user/workspace/ @fneill
[Docs Create] [Docs Create]
/doc/administration/file_hooks.md @aqualls /doc/administration/file_hooks.md @aqualls

View file

@ -1,63 +0,0 @@
# Builds a cached .tar.gz of the $CI_DEFAULT_BRANCH branch with full history and
# uploads it to Google Cloud Storage. This archive is downloaded by a
# script defined by a CI/CD variable named CI_PRE_CLONE_SCRIPT. This has
# two benefits:
#
# 1. It speeds up builds. A 800 MB download only takes seconds.
# 2. It significantly reduces load on the file server. Smaller deltas
# means less time spent in git pack-objects.
#
# Since the destination directory of the archive depends on the project
# ID, this is only run on GitLab.com.
#
# CI_REPO_CACHE_CREDENTIALS contains the Google Cloud service account
# JSON for uploading to the gitlab-ci-git-repo-cache bucket. These
# credentials are stored in the Production vault.
#
# Note that this bucket should be located in the same continent as the
# runner, or network egress charges will apply:
# https://cloud.google.com/storage/pricing
cache-repo:
extends: .cache-repo:rules
image: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
stage: sync
variables:
GIT_STRATEGY: none
SHALLOW_CLONE_TAR_FILENAME: gitlab-master-shallow.tar
FULL_CLONE_TAR_FILENAME: gitlab-master.tar
before_script:
- '[ -z "$CI_REPO_CACHE_CREDENTIALS" ] || gcloud auth activate-service-account --key-file=$CI_REPO_CACHE_CREDENTIALS'
script:
# Enable shallow repo caching unless the $DISABLE_SHALLOW_REPO_CACHING variable exists (in the case the shallow clone caching isn't working well)
# The `git repack` call works around a Git bug with shallow clones: https://gitlab.com/gitlab-org/git/-/issues/86
- if [ -z "$DISABLE_SHALLOW_REPO_CACHING" ]; then
cd .. && rm -rf $CI_PROJECT_NAME;
today=$(date +%Y-%m-%d);
year=$(date +%Y);
last_year=`expr $year - 1`;
one_year_ago=$(echo $today | sed "s/$year/$last_year/");
echo "Cloning $CI_REPOSITORY_URL into $CI_PROJECT_NAME with commits from $one_year_ago.";
time git clone --progress --no-checkout --shallow-since=$one_year_ago $CI_REPOSITORY_URL $CI_PROJECT_NAME;
cd $CI_PROJECT_NAME;
time git repack -d;
echo "Archiving $CI_PROJECT_NAME into /tmp/$SHALLOW_CLONE_TAR_FILENAME.";
time git remote rm origin;
time tar cf /tmp/$SHALLOW_CLONE_TAR_FILENAME .;
echo "GZipping /tmp/$SHALLOW_CLONE_TAR_FILENAME.";
time gzip /tmp/$SHALLOW_CLONE_TAR_FILENAME;
[ -z "$CI_REPO_CACHE_CREDENTIALS" ] || (echo "Uploading /tmp/$SHALLOW_CLONE_TAR_FILENAME.gz to GCloud." && time gsutil cp /tmp/$SHALLOW_CLONE_TAR_FILENAME.gz gs://gitlab-ci-git-repo-cache/project-$CI_PROJECT_ID/$SHALLOW_CLONE_TAR_FILENAME.gz);
fi
# Disable the full repo caching unless the $DISABLE_SHALLOW_REPO_CACHING variable exists (in the case the shallow clone caching isn't working well)
- if [ -n "$DISABLE_SHALLOW_REPO_CACHING" ]; then
cd .. && rm -rf $CI_PROJECT_NAME;
echo "Cloning $CI_REPOSITORY_URL into $CI_PROJECT_NAME.";
time git clone --progress $CI_REPOSITORY_URL $CI_PROJECT_NAME;
cd $CI_PROJECT_NAME;
time git repack -d;
echo "Archiving $CI_PROJECT_NAME into /tmp/$FULL_CLONE_TAR_FILENAME.";
time git remote rm origin;
time tar cf /tmp/$FULL_CLONE_TAR_FILENAME .;
echo "GZipping /tmp/$FULL_CLONE_TAR_FILENAME.";
time gzip /tmp/$FULL_CLONE_TAR_FILENAME;
[ -z "$CI_REPO_CACHE_CREDENTIALS" ] || (echo "Uploading /tmp/$FULL_CLONE_TAR_FILENAME.gz to GCloud." && time gsutil cp /tmp/$FULL_CLONE_TAR_FILENAME.gz gs://gitlab-ci-git-repo-cache/project-$CI_PROJECT_ID/$FULL_CLONE_TAR_FILENAME.gz);
fi

View file

@ -44,8 +44,8 @@ docs-lint markdown:
- .default-retry - .default-retry
- .docs:rules:docs-lint - .docs:rules:docs-lint
# When updating the image version here, update it in /scripts/lint-doc.sh too. # 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.14-vale-2.10.4-markdownlint-0.28.1 image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.14-vale-2.12.0-markdownlint-0.29.0
stage: test stage: lint
needs: [] needs: []
script: script:
- scripts/lint-doc.sh - scripts/lint-doc.sh
@ -53,8 +53,8 @@ docs-lint markdown:
docs-lint links: docs-lint links:
extends: extends:
- .docs:rules:docs-lint - .docs:rules:docs-lint
image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-html:alpine-3.14-ruby-2.7.4-db71f027 image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-html:alpine-3.14-ruby-2.7.4-0fae0f62
stage: test stage: lint
needs: [] needs: []
script: script:
# Prepare docs for build # Prepare docs for build
@ -71,7 +71,21 @@ ui-docs-links lint:
extends: extends:
- .docs:rules:docs-lint - .docs:rules:docs-lint
- .static-analysis-base - .static-analysis-base
stage: test - .ruby-cache
stage: lint
needs: [] needs: []
script: script:
- bundle exec haml-lint -i DocumentationLinks - bundle exec haml-lint -i DocumentationLinks
docs-lint deprecations:
variables:
SETUP_DB: "false"
extends:
- .default-retry
- .rails-cache
- .default-before_script
- .docs:rules:deprecations
stage: lint
needs: []
script:
- bundle exec rake gitlab:docs:check_deprecations

View file

@ -11,7 +11,7 @@
- .default-retry - .default-retry
- .default-before_script - .default-before_script
- .assets-compile-cache - .assets-compile-cache
image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7-git-2.31-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.36 image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7-git-2.33-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.36
variables: variables:
SETUP_DB: "false" SETUP_DB: "false"
WEBPACK_VENDOR_DLL: "true" WEBPACK_VENDOR_DLL: "true"
@ -133,6 +133,7 @@ update-storybook-yarn-cache:
paths: paths:
- tmp/tests/frontend/ - tmp/tests/frontend/
- knapsack/ - knapsack/
- crystalball/
# Builds FOSS, and EE fixtures in the EE project. # Builds FOSS, and EE fixtures in the EE project.
# Builds FOSS fixtures in the FOSS project. # Builds FOSS fixtures in the FOSS project.
@ -193,21 +194,10 @@ graphql-schema-dump:
# Disable warnings in browserslist which can break on backports # Disable warnings in browserslist which can break on backports
# https://github.com/browserslist/browserslist/blob/a287ec6/node.js#L367-L384 # https://github.com/browserslist/browserslist/blob/a287ec6/node.js#L367-L384
BROWSERSLIST_IGNORE_OLD_DATA: "true" BROWSERSLIST_IGNORE_OLD_DATA: "true"
SETUP_DB: "false"
before_script: before_script:
- !reference [.default-before_script, before_script]
- *yarn-install - *yarn-install
stage: test stage: test
eslint-as-if-foss:
extends:
- .frontend-test-base
- .frontend:rules:eslint-as-if-foss
- .as-if-foss
needs: []
script:
- run_timed_command "yarn run lint:eslint:all"
.jest-base: .jest-base:
extends: .frontend-test-base extends: .frontend-test-base
script: script:

View file

@ -44,6 +44,7 @@
prefix: "gitaly-binaries" prefix: "gitaly-binaries"
paths: paths:
- tmp/tests/gitaly/_build/bin/ - tmp/tests/gitaly/_build/bin/
- tmp/tests/gitaly/_build/deps/git/install/
- tmp/tests/gitaly/config.toml - tmp/tests/gitaly/config.toml
- tmp/tests/gitaly/gitaly2.config.toml - tmp/tests/gitaly/gitaly2.config.toml
- tmp/tests/gitaly/internal/ - tmp/tests/gitaly/internal/
@ -139,6 +140,10 @@
- <<: *gitaly-binaries-cache - <<: *gitaly-binaries-cache
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.ruby-cache:
cache:
- *ruby-gems-cache
.rails-cache: .rails-cache:
cache: cache:
- *ruby-gems-cache - *ruby-gems-cache
@ -150,7 +155,12 @@
- *node-modules-cache - *node-modules-cache
- *rubocop-cache - *rubocop-cache
.static-analysis-cache-push: .rubocop-job-cache:
cache:
- *ruby-gems-cache
- *rubocop-cache
.rubocop-job-cache-push:
cache: cache:
- *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache` - *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache`
- *rubocop-cache-push - *rubocop-cache-push
@ -203,7 +213,7 @@
- *storybook-node-modules-cache-push - *storybook-node-modules-cache-push
.use-pg11: .use-pg11:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36"
services: services:
- name: postgres:11.6 - name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@ -212,7 +222,7 @@
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12: .use-pg12:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36"
services: services:
- name: postgres:12 - name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@ -221,7 +231,7 @@
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg13: .use-pg13:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36"
services: services:
- name: postgres:13 - name: postgres:13
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@ -230,34 +240,34 @@
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg11-ee: .use-pg11-ee:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36"
services: services:
- name: postgres:11.6 - name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:5.0-alpine - name: redis:5.0-alpine
- name: elasticsearch:7.11.1 - name: elasticsearch:7.14.2
command: ["elasticsearch", "-E", "discovery.type=single-node"] command: ["elasticsearch", "-E", "discovery.type=single-node"]
variables: variables:
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12-ee: .use-pg12-ee:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36"
services: services:
- name: postgres:12 - name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:5.0-alpine - name: redis:5.0-alpine
- name: elasticsearch:7.11.1 - name: elasticsearch:7.14.2
command: ["elasticsearch", "-E", "discovery.type=single-node"] command: ["elasticsearch", "-E", "discovery.type=single-node"]
variables: variables:
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg13-ee: .use-pg13-ee:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36"
services: services:
- name: postgres:13 - name: postgres:13
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:5.0-alpine - name: redis:5.0-alpine
- name: elasticsearch:7.11.1 - name: elasticsearch:7.14.2
command: ["elasticsearch", "-E", "discovery.type=single-node"] command: ["elasticsearch", "-E", "discovery.type=single-node"]
variables: variables:
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust

View file

@ -0,0 +1,15 @@
test-reliability-report:
extends:
- .qa:rules:reliable-reports:schedule
image:
name: ${CI_REGISTRY_IMAGE}/gitlab-ee-qa:${CI_DEFAULT_BRANCH}
entrypoint: [""]
before_script:
- cd /home/gitlab/qa
script:
- echo "Generate report for 'staging-full' runs"
- bundle exec rake "reliable_spec_report[staging-full,30,true]"
- bundle exec rake "unreliable_spec_report[staging-full,30,true]"
- echo "Generate report for 'package-and-qa' runs"
- bundle exec rake "reliable_spec_report[package-and-qa,30,true]"
- bundle exec rake "unreliable_spec_report[package-and-qa,30,true]"

View file

@ -55,14 +55,18 @@ update-qa-cache:
before_script: before_script:
- source scripts/utils.sh - source scripts/utils.sh
- install_gitlab_gem - install_gitlab_gem
- tooling/bin/find_change_diffs ${CHANGES_DIFFS_DIR}
script: script:
- ./scripts/trigger-build omnibus - |
tooling/bin/qa/package_and_qa_check ${CHANGES_DIFFS_DIR} && exit_code=$?
package-and-qa: if [ $exit_code -eq 0 ]; then
extends: ./scripts/trigger-build omnibus
- .package-and-qa-base elif [ $exit_code -eq 1 ]; then
- .qa:rules:package-and-qa exit 1
# This job often times out, so temporarily use private runners and a long timeout: https://gitlab.com/gitlab-org/gitlab/-/issues/238563 else
echo "Downstream jobs will not be triggered because package_and_qa_check exited with code: $exit_code"
fi
# These jobs often time out, so temporarily use private runners and a long timeout: https://gitlab.com/gitlab-org/gitlab/-/issues/238563
tags: tags:
- prm - prm
timeout: 4h timeout: 4h
@ -71,3 +75,39 @@ package-and-qa:
artifacts: false artifacts: false
- job: build-assets-image - job: build-assets-image
artifacts: false artifacts: false
- detect-tests
artifacts:
expire_in: 7d
paths:
- ${CHANGES_FILE}
- ${CHANGES_DIFFS_DIR}/*
variables:
CHANGES_FILE: tmp/changed_files.txt
CHANGES_DIFFS_DIR: tmp/diffs
.package-and-qa-ff-base:
script:
- export GITLAB_QA_OPTIONS="--set-feature-flags $(scripts/changed-feature-flags --files $(cat $CHANGES_FILE | tr ' ' ',') --state $QA_FF_STATE)"
- echo $GITLAB_QA_OPTIONS
- ./scripts/trigger-build omnibus
package-and-qa:
extends:
- .package-and-qa-base
- .qa:rules:package-and-qa
package-and-qa-ff-enabled:
extends:
- .package-and-qa-base
- .package-and-qa-ff-base
- .qa:rules:package-and-qa:feature-flags
variables:
QA_FF_STATE: "enable"
package-and-qa-ff-disabled:
extends:
- .package-and-qa-base
- .package-and-qa-ff-base
- .qa:rules:package-and-qa:feature-flags
variables:
QA_FF_STATE: "disable"

View file

@ -6,11 +6,6 @@
- .default-before_script - .default-before_script
- .rails-cache - .rails-cache
.minimal-bundle-install:
script:
- export BUNDLE_WITHOUT="${BUNDLE_WITHOUT}:default:test:puma:kerberos:metrics:omnibus:ed25519"
- bundle_install_script
.base-script: .base-script:
script: script:
# Only install knapsack after bundle install! Otherwise oddly some native # Only install knapsack after bundle install! Otherwise oddly some native
@ -26,6 +21,8 @@
.decomposed-database-rspec: .decomposed-database-rspec:
variables: variables:
DECOMPOSED_DB: "true" DECOMPOSED_DB: "true"
GITLAB_LOAD_BALANCING_REUSE_PRIMARY_ci: "main"
GITLAB_USE_MODEL_LOAD_BALANCING: "true"
.rspec-base: .rspec-base:
extends: .rails-job-base extends: .rails-job-base
@ -77,6 +74,12 @@
- .use-pg12 - .use-pg12
needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests"] needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests"]
.rspec-base-pg12-as-if-jh:
extends:
- .rspec-base
- .use-pg12
needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-jh", "detect-tests", "add-jh-folder"]
.rspec-base-pg13: .rspec-base-pg13:
extends: extends:
- .rspec-base - .rspec-base
@ -92,6 +95,11 @@
- .rspec-base - .rspec-base
- .use-pg12-ee - .use-pg12-ee
.rspec-jh-base-pg12:
extends:
- .rspec-base-pg12-as-if-jh
- .use-pg12-ee
.rspec-ee-base-pg13: .rspec-ee-base-pg13:
extends: extends:
- .rspec-base - .rspec-base
@ -113,6 +121,12 @@
- .rspec-ee-base-geo - .rspec-ee-base-geo
- .use-pg12-ee - .use-pg12-ee
.rspec-jh-base-geo-pg12:
extends:
- .rspec-jh-base-pg12
script:
- !reference [.rspec-ee-base-geo, script]
.rspec-ee-base-geo-pg13: .rspec-ee-base-geo-pg13:
extends: extends:
- .rspec-ee-base-geo - .rspec-ee-base-geo
@ -165,10 +179,9 @@ setup-test-env:
extends: extends:
- .rails-job-base - .rails-job-base
- .setup-test-env-cache - .setup-test-env-cache
- .rails:rules:code-backstage-qa - .rails:rules:setup-test-env
stage: prepare stage: prepare
variables: variables:
GITLAB_TEST_EAGER_LOAD: "0"
SETUP_DB: "false" SETUP_DB: "false"
script: script:
- run_timed_command "scripts/setup-test-env" - run_timed_command "scripts/setup-test-env"
@ -181,6 +194,7 @@ setup-test-env:
paths: paths:
- config/secrets.yml - config/secrets.yml
- tmp/tests/gitaly/_build/bin/ - tmp/tests/gitaly/_build/bin/
- tmp/tests/gitaly/_build/deps/git/install
- tmp/tests/gitaly/config.toml - tmp/tests/gitaly/config.toml
- tmp/tests/gitaly/gitaly2.config.toml - tmp/tests/gitaly/gitaly2.config.toml
- tmp/tests/gitaly/internal/ - tmp/tests/gitaly/internal/
@ -223,11 +237,11 @@ update-gitaly-binaries-cache:
.coverage-base: .coverage-base:
extends: extends:
- .default-retry - .default-retry
- .default-before_script
- .coverage-cache - .coverage-cache
variables: before_script:
SETUP_DB: "false" - source scripts/utils.sh
USE_BUNDLE_INSTALL: "false" - export BUNDLE_WITHOUT="${BUNDLE_WITHOUT}:default:test:puma:kerberos:metrics:omnibus:ed25519"
- bundle_install_script
rspec migration pg12: rspec migration pg12:
extends: extends:
@ -324,27 +338,17 @@ rspec fast_spec_helper minimal:
- .minimal-rspec-tests - .minimal-rspec-tests
- .rails:rules:ee-and-foss-fast_spec_helper:minimal - .rails:rules:ee-and-foss-fast_spec_helper:minimal
db:rollback:
extends: .db-job-base
script:
- bundle exec rake db:migrate VERSION=20181228175414
- bundle exec rake db:migrate SKIP_SCHEMA_VERSION_CHECK=true
db:migrate:reset: db:migrate:reset:
extends: .db-job-base extends: .db-job-base
script: script:
- bundle exec rake db:migrate:reset - bundle exec rake db:migrate:reset
db:check-schema:
extends:
- .db-job-base
- .rails:rules:ee-mr-and-default-branch-only
script:
- source scripts/schema_changed.sh
- scripts/validate_migration_timestamps
db:check-migrations:
extends:
- .db-job-base
- .rails:rules:ee-and-foss-mr-with-migration
script:
- scripts/validate_migration_schema
allow_failure: true
db:migrate-from-previous-major-version: db:migrate-from-previous-major-version:
extends: .db-job-base extends: .db-job-base
variables: variables:
@ -352,7 +356,8 @@ db:migrate-from-previous-major-version:
SETUP_DB: "false" SETUP_DB: "false"
PROJECT_TO_CHECKOUT: "gitlab-foss" PROJECT_TO_CHECKOUT: "gitlab-foss"
TAG_TO_CHECKOUT: "v13.12.9" TAG_TO_CHECKOUT: "v13.12.9"
script: before_script:
- !reference [.default-before_script, before_script]
- '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"' - '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"'
- '[[ -d "ee/" ]] || export TAG_TO_CHECKOUT="${TAG_TO_CHECKOUT}-ee"' - '[[ -d "ee/" ]] || export TAG_TO_CHECKOUT="${TAG_TO_CHECKOUT}-ee"'
- retry 'git fetch https://gitlab.com/gitlab-org/$PROJECT_TO_CHECKOUT.git $TAG_TO_CHECKOUT' - retry 'git fetch https://gitlab.com/gitlab-org/$PROJECT_TO_CHECKOUT.git $TAG_TO_CHECKOUT'
@ -361,13 +366,28 @@ db:migrate-from-previous-major-version:
- run_timed_command "bundle exec rake db:drop db:create db:structure:load db:migrate db:seed_fu" - run_timed_command "bundle exec rake db:drop db:create db:structure:load db:migrate db:seed_fu"
- git checkout -f $CI_COMMIT_SHA - git checkout -f $CI_COMMIT_SHA
- SETUP_DB=false USE_BUNDLE_INSTALL=true bash scripts/prepare_build.sh - SETUP_DB=false USE_BUNDLE_INSTALL=true bash scripts/prepare_build.sh
script:
- run_timed_command "bundle exec rake db:migrate" - run_timed_command "bundle exec rake db:migrate"
db:rollback: db:check-schema:
extends: .db-job-base extends:
- db:migrate-from-previous-major-version
- .rails:rules:ee-mr-and-default-branch-only
variables:
TAG_TO_CHECKOUT: "v14.4.0"
script: script:
- bundle exec rake db:migrate VERSION=20181228175414 - run_timed_command "bundle exec rake db:migrate"
- bundle exec rake db:migrate SKIP_SCHEMA_VERSION_CHECK=true - scripts/schema_changed.sh
- scripts/validate_migration_timestamps
db:check-migrations:
extends:
- .db-job-base
- .rails:rules:ee-and-foss-mr-with-migration
script:
- git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME --depth 20
- scripts/validate_migration_schema
allow_failure: true
db:gitlabcom-database-testing: db:gitlabcom-database-testing:
extends: .rails:rules:db:gitlabcom-database-testing extends: .rails:rules:db:gitlabcom-database-testing
@ -457,21 +477,38 @@ rspec:coverage:
# so we use `dependencies` here. # so we use `dependencies` here.
dependencies: dependencies:
- setup-test-env - setup-test-env
# FOSS/EE jobs
- rspec migration pg12 - rspec migration pg12
- rspec unit pg12 - rspec unit pg12
- rspec integration pg12 - rspec integration pg12
- rspec system pg12 - rspec system pg12
# FOSS/EE minimal jobs
- rspec migration pg12 minimal
- rspec unit pg12 minimal
- rspec integration pg12 minimal
- rspec system pg12 minimal
# EE jobs
- rspec-ee migration pg12 - rspec-ee migration pg12
- rspec-ee unit pg12 - rspec-ee unit pg12
- rspec-ee integration pg12 - rspec-ee integration pg12
- rspec-ee system pg12 - rspec-ee system pg12
# EE minimal jobs
- rspec-ee migration pg12 minimal
- rspec-ee unit pg12 minimal
- rspec-ee integration pg12 minimal
- rspec-ee system pg12 minimal
# Geo jobs
- rspec-ee unit pg12 geo - rspec-ee unit pg12 geo
- rspec-ee integration pg12 geo - rspec-ee integration pg12 geo
- rspec-ee system pg12 geo - rspec-ee system pg12 geo
# Geo minimal jobs
- rspec-ee unit pg12 geo minimal
- rspec-ee integration pg12 geo minimal
- rspec-ee system pg12 geo minimal
# Memory jobs
- memory-static - memory-static
- memory-on-boot - memory-on-boot
script: script:
- !reference [.minimal-bundle-install, script]
- run_timed_command "bundle exec scripts/merge-simplecov" - run_timed_command "bundle exec scripts/merge-simplecov"
- run_timed_command "bundle exec scripts/gather-test-memory-data" - run_timed_command "bundle exec scripts/gather-test-memory-data"
coverage: '/LOC \((\d+\.\d+%)\) covered.$/' coverage: '/LOC \((\d+\.\d+%)\) covered.$/'
@ -490,15 +527,67 @@ rspec:feature-flags:
- .coverage-base - .coverage-base
- .rails:rules:rspec-feature-flags - .rails:rules:rspec-feature-flags
stage: post-test stage: post-test
needs: ["static-analysis"] needs:
- job: "feature-flags-usage"
- job: "haml-lint foss"
- job: "haml-lint ee"
optional: true
script: script:
- !reference [.minimal-bundle-install, script]
- if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then - if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then
run_timed_command "bundle exec scripts/used-feature-flags" || (scripts/slack master-broken "☠️ \`${CI_JOB_NAME}\` failed! ☠️ See ${CI_JOB_URL}" ci_failing "GitLab Bot" && exit 1); run_timed_command "bundle exec scripts/used-feature-flags" || (scripts/slack master-broken "☠️ \`${CI_JOB_NAME}\` failed! ☠️ See ${CI_JOB_URL}" ci_failing "GitLab Bot" && exit 1);
else else
run_timed_command "bundle exec scripts/used-feature-flags"; run_timed_command "bundle exec scripts/used-feature-flags";
fi fi
rspec:skipped-flaky-tests-report:
extends:
- .default-retry
- .rails:rules:skipped-flaky-tests-report
image: ruby:2.7-alpine
stage: post-test
# We cannot use needs since it would mean needing 84 jobs (since most are parallelized)
# so we use `dependencies` here.
dependencies:
# FOSS/EE jobs
- rspec migration pg12
- rspec unit pg12
- rspec integration pg12
- rspec system pg12
# FOSS/EE minimal jobs
- rspec migration pg12 minimal
- rspec unit pg12 minimal
- rspec integration pg12 minimal
- rspec system pg12 minimal
# EE jobs
- rspec-ee migration pg12
- rspec-ee unit pg12
- rspec-ee integration pg12
- rspec-ee system pg12
# EE minimal jobs
- rspec-ee migration pg12 minimal
- rspec-ee unit pg12 minimal
- rspec-ee integration pg12 minimal
- rspec-ee system pg12 minimal
# Geo jobs
- rspec-ee unit pg12 geo
- rspec-ee integration pg12 geo
- rspec-ee system pg12 geo
# Geo minimal jobs
- rspec-ee unit pg12 geo minimal
- rspec-ee integration pg12 geo minimal
- rspec-ee system pg12 geo minimal
variables:
SKIPPED_FLAKY_TESTS_REPORT: skipped_flaky_tests_report.txt
before_script:
- 'echo "SKIP_FLAKY_TESTS_AUTOMATICALLY: $SKIP_FLAKY_TESTS_AUTOMATICALLY"'
- mkdir -p rspec_flaky
script:
- find rspec_flaky/ -type f -name 'skipped_flaky_tests_*_report.txt' -exec cat {} + >> "${SKIPPED_FLAKY_TESTS_REPORT}"
artifacts:
expire_in: 31d
paths:
- ${SKIPPED_FLAKY_TESTS_REPORT}
# EE/FOSS: default refs (MRs, default branch, schedules) jobs # # EE/FOSS: default refs (MRs, default branch, schedules) jobs #
####################################################### #######################################################
@ -577,6 +666,31 @@ rspec system pg12-as-if-foss decomposed:
- .decomposed-database-rspec - .decomposed-database-rspec
- .rails:rules:decomposed-databases - .rails:rules:decomposed-databases
rspec migration pg12-as-if-jh:
extends:
- .rspec-base-pg12-as-if-jh
- .rspec-base-migration
- .rails:rules:as-if-jh-rspec
- .rspec-migration-parallel
rspec unit pg12-as-if-jh:
extends:
- .rspec-base-pg12-as-if-jh
- .rails:rules:as-if-jh-rspec
- .rspec-unit-parallel
rspec integration pg12-as-if-jh:
extends:
- .rspec-base-pg12-as-if-jh
- .rails:rules:as-if-jh-rspec
- .rspec-integration-parallel
rspec system pg12-as-if-jh:
extends:
- .rspec-base-pg12-as-if-jh
- .rails:rules:as-if-jh-rspec
- .rspec-system-parallel
rspec-ee migration pg12: rspec-ee migration pg12:
extends: extends:
- .rspec-ee-base-pg12 - .rspec-ee-base-pg12
@ -684,6 +798,83 @@ rspec-ee system pg12 geo minimal:
- .minimal-rspec-tests - .minimal-rspec-tests
- .rails:rules:ee-only-system:minimal - .rails:rules:ee-only-system:minimal
rspec-ee migration pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rspec-base-migration
- .rails:rules:as-if-jh-rspec
- .rspec-ee-migration-parallel
rspec-ee unit pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rails:rules:as-if-jh-rspec
- .rspec-ee-unit-parallel
rspec-ee integration pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rails:rules:as-if-jh-rspec
- .rspec-ee-integration-parallel
rspec-ee system pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rails:rules:as-if-jh-rspec
- .rspec-ee-system-parallel
rspec-ee unit pg12-as-if-jh geo:
extends:
- .rspec-jh-base-geo-pg12
- .rails:rules:as-if-jh-rspec
- .rspec-ee-unit-geo-parallel
rspec-ee integration pg12-as-if-jh geo:
extends:
- .rspec-jh-base-geo-pg12
- .rails:rules:as-if-jh-rspec
rspec-ee system pg12-as-if-jh geo:
extends:
- .rspec-jh-base-geo-pg12
- .rails:rules:as-if-jh-rspec
rspec-jh migration pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rspec-base-migration
- .rails:rules:as-if-jh-rspec
rspec-jh unit pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rails:rules:as-if-jh-rspec
rspec-jh integration pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rails:rules:as-if-jh-rspec
rspec-jh system pg12-as-if-jh:
extends:
- .rspec-jh-base-pg12
- .rails:rules:as-if-jh-rspec
rspec-jh unit pg12-as-if-jh geo:
extends:
- .rspec-jh-base-geo-pg12
- .rails:rules:as-if-jh-rspec
rspec-jh integration pg12-as-if-jh geo:
extends:
- .rspec-jh-base-geo-pg12
- .rails:rules:as-if-jh-rspec
rspec-jh system pg12-as-if-jh geo:
extends:
- .rspec-jh-base-geo-pg12
- .rails:rules:as-if-jh-rspec
db:rollback geo: db:rollback geo:
extends: extends:
- db:rollback - db:rollback
@ -884,5 +1075,24 @@ fail-pipeline-early:
- install_gitlab_gem - install_gitlab_gem
script: script:
- fail_pipeline_early - fail_pipeline_early
rspec rspec-pg12-rerun-previous-failed-tests:
extends:
- .rspec-base-pg12
- .rails:rules:rerun-previous-failed-tests
stage: test
needs: ["setup-test-env", "compile-test-assets", "detect-previous-failed-tests"]
script:
- !reference [.base-script, script]
- rspec_rerun_previous_failed_tests tmp/previous_failed_tests/rspec_failed_files.txt
rspec rspec-ee-pg12-rerun-previous-failed-tests:
extends:
- "rspec rspec-pg12-rerun-previous-failed-tests"
- .rspec-ee-base-pg12
script:
- !reference [.base-script, script]
- rspec_rerun_previous_failed_tests tmp/previous_failed_tests/rspec_ee_failed_files.txt
# EE: Canonical MR pipelines # EE: Canonical MR pipelines
################################################## ##################################################

View file

@ -9,6 +9,7 @@ code_quality:
extends: extends:
- .default-retry - .default-retry
- .use-docker-in-docker - .use-docker-in-docker
stage: lint
artifacts: artifacts:
paths: paths:
- gl-code-quality-report.json # GitLab-specific - gl-code-quality-report.json # GitLab-specific
@ -20,6 +21,7 @@ code_quality:
extends: extends:
- .default-retry - .default-retry
- sast - sast
stage: lint
needs: [] needs: []
artifacts: artifacts:
paths: paths:
@ -54,6 +56,7 @@ gosec-sast:
.secret-analyzer: .secret-analyzer:
extends: .default-retry extends: .default-retry
stage: lint
needs: [] needs: []
artifacts: artifacts:
paths: paths:
@ -68,6 +71,7 @@ secret_detection:
extends: extends:
- .default-retry - .default-retry
- dependency_scanning - dependency_scanning
stage: lint
needs: [] needs: []
variables: variables:
DS_EXCLUDED_PATHS: "qa/qa/ee/fixtures/secure_premade_reports, spec, ee/spec, tmp" # GitLab-specific DS_EXCLUDED_PATHS: "qa/qa/ee/fixtures/secure_premade_reports, spec, ee/spec, tmp" # GitLab-specific
@ -92,6 +96,13 @@ retire-js-dependency_scanning:
gemnasium-python-dependency_scanning: gemnasium-python-dependency_scanning:
rules: !reference [".reports:rules:gemnasium-python-dependency_scanning", rules] rules: !reference [".reports:rules:gemnasium-python-dependency_scanning", rules]
yarn-audit-dependency_scanning:
extends: .ds-analyzer
image: "registry.gitlab.com/gitlab-org/security-products/analyzers/npm-audit:1.4.0"
variables:
TOOL: yarn
rules: !reference [".reports:rules:yarn-audit-dependency_scanning", rules]
# Analyze dependencies for malicious behavior # Analyze dependencies for malicious behavior
# See https://gitlab.com/gitlab-com/gl-security/security-research/package-hunter # See https://gitlab.com/gitlab-com/gl-security/security-research/package-hunter
.package_hunter-base: .package_hunter-base:
@ -134,6 +145,7 @@ package_hunter-bundler:
license_scanning: license_scanning:
extends: .default-retry extends: .default-retry
stage: lint
needs: [] needs: []
artifacts: artifacts:
expire_in: 1 week # GitLab-specific expire_in: 1 week # GitLab-specific

View file

@ -35,10 +35,11 @@ review-build-cng:
extends: extends:
- .default-retry - .default-retry
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.5-kubectl1.17
resource_group: "review/${CI_COMMIT_REF_NAME}"
variables: variables:
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
GITLAB_HELM_CHART_REF: "v5.2.1" GITLAB_HELM_CHART_REF: "v5.4.1"
environment: environment:
name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY} name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY}
url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}
@ -51,7 +52,6 @@ review-deploy:
- .review:rules:review-deploy - .review:rules:review-deploy
stage: deploy stage: deploy
needs: ["review-build-cng"] needs: ["review-build-cng"]
resource_group: "review/${CI_COMMIT_REF_NAME}"
before_script: before_script:
- export GITLAB_SHELL_VERSION=$(<GITLAB_SHELL_VERSION) - export GITLAB_SHELL_VERSION=$(<GITLAB_SHELL_VERSION)
- export GITALY_VERSION=$(<GITALY_SERVER_VERSION) - export GITALY_VERSION=$(<GITALY_SERVER_VERSION)
@ -101,6 +101,7 @@ review-stop:
extends: extends:
- .review-stop-base - .review-stop-base
- .review:rules:review-stop - .review:rules:review-stop
stage: post-qa stage: deploy
needs: []
script: script:
- delete_k8s_release_namespace - delete_k8s_release_namespace

View file

@ -14,6 +14,7 @@
GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}"
GITLAB_ADMIN_USERNAME: "root" GITLAB_ADMIN_USERNAME: "root"
GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" 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}" GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}"
EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}"
SIGNUP_DISABLED: "true" SIGNUP_DISABLED: "true"
@ -31,9 +32,23 @@
expire_in: 7 days expire_in: 7 days
when: always when: always
.parallel-qa-base:
parallel: 5
script:
- export KNAPSACK_REPORT_PATH=knapsack/master_report.json
- export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb
- |
bin/test "${QA_SCENARIO}" "${CI_ENVIRONMENT_URL}" \
-- \
--color --format documentation \
--format RspecJunitFormatter --out tmp/rspec.xml
artifacts:
reports:
junit: qa/tmp/rspec.xml
.allure-report-base: .allure-report-base:
image: image:
name: ${GITLAB_DEPENDENCY_PROXY}andrcuns/allure-report-publisher:0.3.6 name: ${GITLAB_DEPENDENCY_PROXY}andrcuns/allure-report-publisher:0.4.1
entrypoint: [""] entrypoint: [""]
stage: post-qa stage: post-qa
variables: variables:
@ -64,24 +79,23 @@ review-qa-smoke:
script: script:
- bin/test Test::Instance::Smoke "${CI_ENVIRONMENT_URL}" - bin/test Test::Instance::Smoke "${CI_ENVIRONMENT_URL}"
review-qa-reliable:
extends:
- .review-qa-base
- .review:rules:review-qa-reliable
- .parallel-qa-base
variables:
QA_RUN_TYPE: review-qa-reliable
QA_SCENARIO: Test::Instance::Reliable
review-qa-all: review-qa-all:
extends: extends:
- .review-qa-base - .review-qa-base
- .review:rules:review-qa-all - .review:rules:review-qa-all
- .parallel-qa-base
variables: variables:
QA_RUN_TYPE: review-qa-all QA_RUN_TYPE: review-qa-all
parallel: 5 QA_SCENARIO: Test::Instance::All
script:
- export KNAPSACK_REPORT_PATH=knapsack/master_report.json
- export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb
- |
bin/test Test::Instance::All "${CI_ENVIRONMENT_URL}" \
-- \
--color --format documentation \
--format RspecJunitFormatter --out tmp/rspec.xml
artifacts:
reports:
junit: qa/tmp/rspec.xml
review-performance: review-performance:
extends: extends:

View file

@ -64,6 +64,9 @@
.if-merge-request-labels-run-decomposed: &if-merge-request-labels-run-decomposed .if-merge-request-labels-run-decomposed: &if-merge-request-labels-run-decomposed
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-decomposed/' if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-decomposed/'
.if-merge-request-labels-run-review-app: &if-merge-request-labels-run-review-app
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-review-app/'
.if-security-merge-request: &if-security-merge-request .if-security-merge-request: &if-security-merge-request
if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID' if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID'
@ -97,9 +100,6 @@
.if-dot-com-ee-nightly-schedule-child-pipeline: &if-dot-com-ee-nightly-schedule-child-pipeline .if-dot-com-ee-nightly-schedule-child-pipeline: &if-dot-com-ee-nightly-schedule-child-pipeline
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $FREQUENCY == "nightly"' if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $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-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' if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH'
@ -109,6 +109,9 @@
.if-dot-com-gitlab-org-and-security-merge-request: &if-dot-com-gitlab-org-and-security-merge-request .if-dot-com-gitlab-org-and-security-merge-request: &if-dot-com-gitlab-org-and-security-merge-request
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_MERGE_REQUEST_IID' if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_MERGE_REQUEST_IID'
.if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-qa: &if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-qa
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_MERGE_REQUEST_IID && $QA_MANUAL_FF_PACKAGE_AND_QA'
.if-dot-com-gitlab-org-and-security-tag: &if-dot-com-gitlab-org-and-security-tag .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: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_COMMIT_TAG'
@ -118,6 +121,9 @@
.if-security-pipeline-merge-result: &if-security-pipeline-merge-result .if-security-pipeline-merge-result: &if-security-pipeline-merge-result
if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "gitlab-org/security" && $GITLAB_USER_LOGIN == "gitlab-release-tools-bot"' if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "gitlab-org/security" && $GITLAB_USER_LOGIN == "gitlab-release-tools-bot"'
.if-skip-flaky-tests-automatically: &if-skip-flaky-tests-automatically
if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true"'
#################### ####################
# Changes patterns # # Changes patterns #
#################### ####################
@ -165,11 +171,19 @@
- ".markdownlint.yml" - ".markdownlint.yml"
- "scripts/lint-doc.sh" - "scripts/lint-doc.sh"
.docs-deprecations-patterns: &docs-deprecations-patterns
- "doc/deprecations/index.md"
- "data/deprecations/*.yml"
- "data/deprecations/templates/_deprecation_template.md.erb"
- "lib/tasks/gitlab/docs/compile_deprecations.rake"
- "tooling/deprecations/docs.rb"
.bundler-patterns: &bundler-patterns .bundler-patterns: &bundler-patterns
- '{Gemfile.lock,*/Gemfile.lock,*/*/Gemfile.lock}' - '{Gemfile.lock,*/Gemfile.lock,*/*/Gemfile.lock}'
.nodejs-patterns: &nodejs-patterns .nodejs-patterns: &nodejs-patterns
- '{package.json,*/package.json,*/*/package.json}' - '{package.json,*/package.json,*/*/package.json}'
- '{yarn.lock,*/yarn.lock,*/*/yarn.lock}'
.python-patterns: &python-patterns .python-patterns: &python-patterns
- '{requirements.txt,*/requirements.txt,*/*/requirements.txt}' - '{requirements.txt,*/requirements.txt,*/*/requirements.txt}'
@ -217,6 +231,7 @@
.startup-css-patterns: &startup-css-patterns .startup-css-patterns: &startup-css-patterns
- "{,ee/,jh/}app/assets/stylesheets/startup/**/*" - "{,ee/,jh/}app/assets/stylesheets/startup/**/*"
# Backend patterns + .ci-patterns
.backend-patterns: &backend-patterns .backend-patterns: &backend-patterns
- "{,jh/}Gemfile{,.lock}" - "{,jh/}Gemfile{,.lock}"
- "Rakefile" - "Rakefile"
@ -230,6 +245,7 @@
- ".gitlab/ci/**/*" - ".gitlab/ci/**/*"
- "*_VERSION" - "*_VERSION"
# DB patterns + .ci-patterns
.db-patterns: &db-patterns .db-patterns: &db-patterns
- "{,ee/,jh/}{,spec/}{db,migrations}/**/*" - "{,ee/,jh/}{,spec/}{db,migrations}/**/*"
- "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/database/**/*" - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/database/**/*"
@ -258,6 +274,11 @@
- "{,ee/,jh/}spec/**/*" - "{,ee/,jh/}spec/**/*"
- "{,spec/}tooling/**/*" - "{,spec/}tooling/**/*"
.qa-patterns: &qa-patterns
- ".dockerignore"
- "qa/**/*"
# Code patterns + .ci-patterns + .workhorse-patterns
.code-patterns: &code-patterns .code-patterns: &code-patterns
- "{package.json,yarn.lock}" - "{package.json,yarn.lock}"
- ".browserslistrc" - ".browserslistrc"
@ -266,9 +287,6 @@
- ".csscomb.json" - ".csscomb.json"
- "Dockerfile.assets" - "Dockerfile.assets"
- "vendor/assets/**/*" - "vendor/assets/**/*"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml"
- "*_VERSION" - "*_VERSION"
@ -279,11 +297,11 @@
- "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
- "data/whats_new/*.yml" - "data/whats_new/*.yml"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
.qa-patterns: &qa-patterns # .code-patterns + .backstage-patterns
- ".dockerignore"
- "qa/**/*"
.code-backstage-patterns: &code-backstage-patterns .code-backstage-patterns: &code-backstage-patterns
- "{package.json,yarn.lock}" - "{package.json,yarn.lock}"
- ".browserslistrc" - ".browserslistrc"
@ -292,9 +310,6 @@
- ".csscomb.json" - ".csscomb.json"
- "Dockerfile.assets" - "Dockerfile.assets"
- "vendor/assets/**/*" - "vendor/assets/**/*"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml"
- "*_VERSION" - "*_VERSION"
@ -305,6 +320,9 @@
- "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
- "data/whats_new/*.yml" - "data/whats_new/*.yml"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
# Backstage changes # Backstage changes
- "Dangerfile" - "Dangerfile"
- "danger/**/*" - "danger/**/*"
@ -313,6 +331,7 @@
- "{,ee/,jh/}spec/**/*" - "{,ee/,jh/}spec/**/*"
- "{,spec/}tooling/**/*" - "{,spec/}tooling/**/*"
# .code-patterns + .qa-patterns
.code-qa-patterns: &code-qa-patterns .code-qa-patterns: &code-qa-patterns
- "{package.json,yarn.lock}" - "{package.json,yarn.lock}"
- ".browserslistrc" - ".browserslistrc"
@ -321,9 +340,6 @@
- ".csscomb.json" - ".csscomb.json"
- "Dockerfile.assets" - "Dockerfile.assets"
- "vendor/assets/**/*" - "vendor/assets/**/*"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml"
- "*_VERSION" - "*_VERSION"
@ -334,10 +350,14 @@
- "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
- "data/whats_new/*.yml" - "data/whats_new/*.yml"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
# QA changes # QA changes
- ".dockerignore" - ".dockerignore"
- "qa/**/*" - "qa/**/*"
# .code-patterns + .backstage-patterns + .qa-patterns
.code-backstage-qa-patterns: &code-backstage-qa-patterns .code-backstage-qa-patterns: &code-backstage-qa-patterns
- "{package.json,yarn.lock}" - "{package.json,yarn.lock}"
- ".browserslistrc" - ".browserslistrc"
@ -346,9 +366,6 @@
- ".csscomb.json" - ".csscomb.json"
- "Dockerfile.assets" - "Dockerfile.assets"
- "vendor/assets/**/*" - "vendor/assets/**/*"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml"
- "*_VERSION" - "*_VERSION"
@ -359,6 +376,9 @@
- "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
- "data/whats_new/*.yml" - "data/whats_new/*.yml"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
# Backstage changes # Backstage changes
- "Dangerfile" - "Dangerfile"
- "danger/**/*" - "danger/**/*"
@ -370,8 +390,44 @@
- ".dockerignore" - ".dockerignore"
- "qa/**/*" - "qa/**/*"
.code-backstage-danger-patterns: &code-backstage-danger-patterns # .code-backstage-qa-patterns + .workhorse-patterns
.setup-test-env-patterns: &setup-test-env-patterns
- "{package.json,yarn.lock}"
- ".browserslistrc"
- "babel.config.js"
- "jest.config.{base,integration,unit}.js"
- ".csscomb.json"
- "Dockerfile.assets"
- "vendor/assets/**/*"
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml"
- "*_VERSION"
- "{,jh/}Gemfile{,.lock}"
- "Rakefile"
- "tests.yml"
- "config.ru"
- "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated
- "data/whats_new/*.yml"
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
# Backstage changes # Backstage changes
- "Dangerfile"
- "danger/**/*"
- "{,ee/,jh/}fixtures/**/*"
- "{,ee/,jh/}rubocop/**/*"
- "{,ee/,jh/}spec/**/*"
- "{,spec/}tooling/**/*"
# QA changes
- ".dockerignore"
- "qa/**/*"
# Workhorse changes
- "GITLAB_WORKHORSE_VERSION"
- "workhorse/**/*"
- ".gitlab/ci/workhorse.gitlab-ci.yml"
.danger-patterns: &danger-patterns
- "Dangerfile" - "Dangerfile"
- "danger/**/*" - "danger/**/*"
- "tooling/danger/**/*" - "tooling/danger/**/*"
@ -387,6 +443,9 @@
- "config/helpers/**/*.js" - "config/helpers/**/*.js"
- "vendor/assets/javascripts/**/*" - "vendor/assets/javascripts/**/*"
.feature-flag-development-config-patterns: &feature-flag-development-config-patterns
- "{,ee/}config/feature_flags/{development,ops}/*.yml"
################ ################
# Shared rules # # Shared rules #
################ ################
@ -408,6 +467,7 @@
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-and-security-merge-request - <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *ci-build-images-patterns changes: *ci-build-images-patterns
- <<: *if-dot-com-gitlab-org-and-security-merge-request - <<: *if-dot-com-gitlab-org-and-security-merge-request
@ -420,18 +480,11 @@
rules: rules:
- <<: *if-not-canonical-namespace - <<: *if-not-canonical-namespace
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-auto-deploy-branches - <<: *if-auto-deploy-branches
- changes: *ci-build-images-patterns - changes: *ci-build-images-patterns
- changes: *code-qa-patterns - changes: *code-qa-patterns
####################
# Cache repo rules #
####################
.cache-repo:rules:
rules:
- <<: *if-cache-credentials-schedule
allow_failure: true
############# #############
# CNG rules # # CNG rules #
############# #############
@ -482,6 +535,11 @@
changes: *docs-patterns changes: *docs-patterns
when: on_success when: on_success
.docs:rules:deprecations:
rules:
- <<: *if-default-refs
changes: *docs-deprecations-patterns
################## ##################
# GraphQL rules # # GraphQL rules #
################## ##################
@ -501,6 +559,7 @@
rules: rules:
- <<: *if-not-canonical-namespace - <<: *if-not-canonical-namespace
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-auto-deploy-branches - <<: *if-auto-deploy-branches
- changes: *code-qa-patterns - changes: *code-qa-patterns
@ -537,8 +596,8 @@
.frontend:rules:default-frontend-jobs: .frontend:rules:default-frontend-jobs:
rules: rules:
- <<: *if-default-refs - <<: *if-merge-request-labels-run-all-rspec
changes: *code-backstage-patterns - changes: *code-backstage-patterns
.frontend:rules:default-frontend-jobs-as-if-foss: .frontend:rules:default-frontend-jobs-as-if-foss:
rules: rules:
@ -698,6 +757,9 @@
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *feature-flag-development-config-patterns
when: never
- <<: *if-dot-com-gitlab-org-and-security-merge-request - <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *ci-qa-patterns changes: *ci-qa-patterns
allow_failure: true allow_failure: true
@ -711,12 +773,35 @@
- <<: *if-dot-com-gitlab-org-schedule - <<: *if-dot-com-gitlab-org-schedule
allow_failure: true allow_failure: true
.qa:rules:package-and-qa:feature-flags:
rules:
- <<: *if-not-ee
when: never
- <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-qa
changes: *feature-flag-development-config-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *feature-flag-development-config-patterns
allow_failure: true
.qa:rules:reliable-reports:schedule:
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $QA_RELIABLE_REPORT == "true"'
allow_failure: true
############### ###############
# Rails rules # # Rails rules #
############### ###############
.rails:rules:setup-test-env:
rules:
- changes: *setup-test-env-patterns
- <<: *if-merge-request-labels-run-all-rspec
.rails:rules:decomposed-databases: .rails:rules:decomposed-databases:
rules: rules:
- <<: *if-merge-request-labels-run-decomposed - <<: *if-merge-request-labels-run-decomposed
- <<: *if-default-branch-schedule-nightly
.rails:rules:ee-and-foss-migration: .rails:rules:ee-and-foss-migration:
rules: rules:
@ -1214,9 +1299,25 @@
.rails:rules:detect-tests: .rails:rules:detect-tests:
rules: rules:
- changes: *code-backstage-patterns - changes: *code-backstage-qa-patterns
- <<: *if-merge-request-labels-run-all-rspec - <<: *if-merge-request-labels-run-all-rspec
.rails:rules:detect-previous-failed-tests:
rules:
- <<: *if-security-merge-request
when: never
- <<: *if-merge-request-labels-run-all-rspec
- <<: *if-merge-request
changes: *code-backstage-patterns
.rails:rules:rerun-previous-failed-tests:
rules:
- <<: *if-security-merge-request
when: never
- <<: *if-merge-request-labels-run-all-rspec
- <<: *if-merge-request
changes: *code-backstage-patterns
.rails:rules:rspec-foss-impact: .rails:rules:rspec-foss-impact:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
@ -1286,6 +1387,14 @@
when: never when: never
- changes: *code-backstage-patterns - changes: *code-backstage-patterns
.rails:rules:skipped-flaky-tests-report:
rules:
- <<: *if-not-ee
when: never
- <<: *if-skip-flaky-tests-automatically
changes: *code-backstage-patterns
- changes: *ci-patterns
######################### #########################
# Static analysis rules # # Static analysis rules #
######################### #########################
@ -1294,6 +1403,12 @@
rules: rules:
- changes: *code-backstage-qa-patterns - changes: *code-backstage-qa-patterns
.static-analysis:rules:ee:
rules:
- <<: *if-not-ee
when: never
- changes: *code-backstage-qa-patterns
.static-analysis:rules:as-if-foss: .static-analysis:rules:as-if-foss:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
@ -1404,6 +1519,12 @@
when: never when: never
- changes: *python-patterns - changes: *python-patterns
.reports:rules:yarn-audit-dependency_scanning:
rules:
- if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/'
when: never
- changes: *nodejs-patterns
.reports:rules:schedule-dast: .reports:rules:schedule-dast:
rules: rules:
- if: '$DAST_DISABLED || $GITLAB_FEATURES !~ /\bdast\b/' - if: '$DAST_DISABLED || $GITLAB_FEATURES !~ /\bdast\b/'
@ -1439,6 +1560,7 @@
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
@ -1449,13 +1571,13 @@
allow_failure: true allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns changes: *qa-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule - <<: *if-dot-com-gitlab-org-schedule
.review:rules:review-build-cng: .review:rules:review-build-cng:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
@ -1465,24 +1587,22 @@
allow_failure: true allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns changes: *qa-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule-child-pipeline - <<: *if-dot-com-gitlab-org-schedule-child-pipeline
.review:rules:review-deploy: .review:rules:review-deploy:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-patterns changes: *frontend-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns changes: *code-patterns
allow_failure: true allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns changes: *qa-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule-child-pipeline - <<: *if-dot-com-gitlab-org-schedule-child-pipeline
allow_failure: true allow_failure: true
@ -1492,6 +1612,7 @@
when: never when: never
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
@ -1507,6 +1628,7 @@
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *code-qa-patterns changes: *code-qa-patterns
@ -1514,24 +1636,32 @@
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-patterns changes: *frontend-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *code-qa-patterns changes: *qa-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns
allow_failure: true allow_failure: true
- <<: *if-dot-com-ee-schedule-child-pipeline - <<: *if-dot-com-ee-schedule-child-pipeline
allow_failure: true allow_failure: true
# The rule needs to be duplicated between `on_success` and `on_failure` # The rule needs to be duplicated between `on_success` and `on_failure`
# because the jobs `needs` the previous job to complete. # because the jobs `needs` the previous job to complete.
# With `when: always`, and the `review-qa-*` jobs are manual, the `allure-report-qa-*` jobs
# would start running before the qa jobs have started.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63844#note_599012559 # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63844#note_599012559
.review:rules:review-qa-smoke-report: .review:rules:review-qa-smoke-report:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
when: on_success
- <<: *if-merge-request-labels-run-review-app
when: on_failure
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns changes: *ci-review-patterns
when: on_success when: on_success
@ -1555,10 +1685,16 @@
- <<: *if-dot-com-ee-schedule-child-pipeline - <<: *if-dot-com-ee-schedule-child-pipeline
when: on_failure when: on_failure
.review:rules:review-qa-reliable:
rules:
- when: on_success
allow_failure: true
.review:rules:review-qa-all: .review:rules:review-qa-all:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns changes: *code-patterns
when: manual when: manual
@ -1571,11 +1707,17 @@
# The rule needs to be duplicated between `on_success` and `on_failure` # The rule needs to be duplicated between `on_success` and `on_failure`
# because the jobs `needs` the previous job to complete. # because the jobs `needs` the previous job to complete.
# With `when: always`, and the `review-qa-*` jobs are manual, the `allure-report-qa-*` jobs
# would start running before the qa jobs have started.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63844#note_599012559 # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63844#note_599012559
.review:rules:review-qa-all-report: .review:rules:review-qa-all-report:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
when: on_success
- <<: *if-merge-request-labels-run-review-app
when: on_failure
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns changes: *code-patterns
when: manual when: manual
@ -1603,13 +1745,16 @@
changes: *code-qa-patterns changes: *code-qa-patterns
when: manual when: manual
allow_failure: true allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule-child-pipeline - <<: *if-dot-com-gitlab-org-schedule
allow_failure: true allow_failure: true
.review:rules:review-stop: .review:rules:review-stop:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
when: never when: never
- <<: *if-merge-request-labels-run-review-app
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request - <<: *if-dot-com-gitlab-org-merge-request
changes: *code-qa-patterns changes: *code-qa-patterns
when: manual when: manual
@ -1622,7 +1767,7 @@
.review:rules:danger-local: .review:rules:danger-local:
rules: rules:
- if: '$CI_MERGE_REQUEST_IID' - if: '$CI_MERGE_REQUEST_IID'
changes: *code-backstage-danger-patterns changes: *danger-patterns
############### ###############
# Setup rules # # Setup rules #
@ -1650,7 +1795,7 @@
changes: *code-backstage-patterns changes: *code-backstage-patterns
when: on_success when: on_success
.setup:rules:no_ee_check: .setup:rules:no-ee-check:
rules: rules:
- <<: *if-not-foss - <<: *if-not-foss
when: never when: never
@ -1658,6 +1803,14 @@
changes: *code-backstage-patterns changes: *code-backstage-patterns
when: on_success when: on_success
.setup:rules:no-jh-check:
rules:
- <<: *if-jh
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
when: on_success
.setup:rules:verify-tests-yml: .setup:rules:verify-tests-yml:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee

View file

@ -41,13 +41,21 @@ gitlab_git_test:
script: script:
- spec/support/prepare-gitlab-git-test-for-commit --check-for-changes - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes
no_ee_check: no-ee-check:
extends: extends:
- .minimal-job - .minimal-job
- .setup:rules:no_ee_check - .setup:rules:no-ee-check
stage: test stage: test
script: script:
- scripts/no-ee-check - scripts/no-dir-check ee
no-jh-check:
extends:
- .minimal-job
- .setup:rules:no-jh-check
stage: test
script:
- scripts/no-dir-check jh
verify-tests-yml: verify-tests-yml:
extends: extends:
@ -102,6 +110,23 @@ detect-tests as-if-foss:
before_script: before_script:
- '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb' - '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb'
detect-previous-failed-tests:
extends:
- .detect-test-base
- .rails:rules:detect-previous-failed-tests
variables:
PREVIOUS_FAILED_TESTS_DIR: tmp/previous_failed_tests/
RSPEC_PG_REGEX: /rspec .+ pg12( .+)?/
RSPEC_EE_PG_REGEX: /rspec-ee .+ pg12( .+)?/
script:
- source ./scripts/utils.sh
- source ./scripts/rspec_helpers.sh
- retrieve_previous_failed_tests ${PREVIOUS_FAILED_TESTS_DIR} "${RSPEC_PG_REGEX}" "${RSPEC_EE_PG_REGEX}"
artifacts:
expire_in: 7d
paths:
- ${PREVIOUS_FAILED_TESTS_DIR}
add-jh-folder: add-jh-folder:
extends: .setup:rules:add-jh-folder extends: .setup:rules:add-jh-folder
image: ${GITLAB_DEPENDENCY_PROXY}alpine:edge image: ${GITLAB_DEPENDENCY_PROXY}alpine:edge
@ -112,6 +137,7 @@ add-jh-folder:
- curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-jh/gitlab/-/archive/main-jh/gitlab-main-jh.tar.gz?path=jh" - curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-jh/gitlab/-/archive/main-jh/gitlab-main-jh.tar.gz?path=jh"
- tar -xf "jh-folder.tar.gz" - tar -xf "jh-folder.tar.gz"
- mv gitlab-main-jh-jh/jh/ ./ - mv gitlab-main-jh-jh/jh/ ./
- cp Gemfile.lock jh/
- ls -l jh/ - ls -l jh/
artifacts: artifacts:
expire_in: 2d expire_in: 2d

View file

@ -2,7 +2,7 @@
extends: extends:
- .default-retry - .default-retry
- .default-before_script - .default-before_script
- .static-analysis-cache stage: lint
needs: [] needs: []
variables: variables:
SETUP_DB: "false" SETUP_DB: "false"
@ -14,7 +14,7 @@
update-static-analysis-cache: update-static-analysis-cache:
extends: extends:
- .static-analysis-base - .static-analysis-base
- .static-analysis-cache-push - .rubocop-job-cache-push
- .shared:rules:update-cache - .shared:rules:update-cache
stage: prepare stage: prepare
script: script:
@ -23,31 +23,95 @@ update-static-analysis-cache:
static-analysis: static-analysis:
extends: extends:
- .static-analysis-base - .static-analysis-base
- .static-analysis-cache
- .static-analysis:rules:ee-and-foss - .static-analysis:rules:ee-and-foss
stage: test parallel: 2
parallel: 4
script: script:
- run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "retry yarn install --frozen-lockfile"
- scripts/static-analysis - scripts/static-analysis
artifacts:
expire_in: 31d
when: always
paths:
- tmp/feature_flags/
static-analysis-with-database:
extends:
- .static-analysis-base
- .static-analysis:rules:ee-and-foss
- .use-pg12
stage: test
script:
- bundle exec rake lint:static_verification_with_database
variables:
SETUP_DB: "true"
static-analysis as-if-foss: static-analysis as-if-foss:
extends: extends:
- static-analysis - static-analysis
- .static-analysis:rules:as-if-foss - .static-analysis:rules:as-if-foss
- .as-if-foss - .as-if-foss
static-verification-with-database:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
- .use-pg12
script:
- bundle exec rake lint:static_verification_with_database
variables:
SETUP_DB: "true"
eslint:
extends:
- .static-analysis-base
- .yarn-cache
- .static-analysis:rules:ee
needs: []
variables:
USE_BUNDLE_INSTALL: "false"
script:
- run_timed_command "retry yarn install --frozen-lockfile"
- run_timed_command "yarn run lint:eslint:all"
eslint as-if-foss:
extends:
- eslint
- .frontend:rules:eslint-as-if-foss
- .as-if-foss
haml-lint foss:
extends:
- .static-analysis-base
- .ruby-cache
- .static-analysis:rules:ee-and-foss
script:
- run_timed_command "bin/rake 'haml_lint[app/views]'"
artifacts:
expire_in: 31d
when: always
paths:
- tmp/feature_flags/
haml-lint ee:
extends:
- "haml-lint foss"
- .static-analysis:rules:ee
script:
- run_timed_command "bin/rake 'haml_lint[ee/app/views]'"
rubocop:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
script:
- run_timed_command "bundle exec rubocop --parallel"
qa:testcases:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
script:
- run_timed_command "bundle exec rubocop qa/qa/specs/features/**/* --only QA/DuplicateTestcaseLink"
feature-flags-usage:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
script:
# We need to disable the cache for this cop since it creates files under tmp/feature_flags/*.used,
# the cache would prevent these files from being created.
- run_timed_command "bundle exec rubocop --only Gitlab/MarkUsedFeatureFlags --cache false"
artifacts:
expire_in: 31d
when: always
paths:
- tmp/feature_flags/

View file

@ -9,24 +9,21 @@ workhorse:verify:
.workhorse:test: .workhorse:test:
extends: .workhorse:rules:workhorse extends: .workhorse:rules:workhorse
services:
- name: registry.gitlab.com/gitlab-org/build/cng/gitaly:latest
# Disable the hooks so we don't have to stub the GitLab API
command: ["/usr/bin/env", "GITALY_TESTING_NO_GIT_HOOKS=1", "/scripts/process-wrapper"]
alias: gitaly
variables: variables:
GITALY_ADDRESS: "tcp://gitaly:8075" GITALY_ADDRESS: "tcp://127.0.0.1:8075"
stage: test stage: test
needs: [] needs:
- setup-test-env
script: script:
- go version - go version
- apt-get update && apt-get -y install libimage-exiftool-perl - apt-get update && apt-get -y install libimage-exiftool-perl
- scripts/gitaly-test-build
- make -C workhorse test - make -C workhorse test
workhorse:test using go 1.16: workhorse:test using go 1.16:
extends: .workhorse:test extends: .workhorse:test
image: ${GITLAB_DEPENDENCY_PROXY}golang:1.16 image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7-golang-1.16-git-2.31
workhorse:test using go 1.17: workhorse:test using go 1.17:
extends: .workhorse:test extends: .workhorse:test
image: ${GITLAB_DEPENDENCY_PROXY}golang:1.17 image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7-golang-1.17-git-2.31

View file

@ -5,7 +5,7 @@ lint-yaml:
- .default-retry - .default-retry
- .yaml-lint:rules - .yaml-lint:rules
image: pipelinecomponents/yamllint:latest image: pipelinecomponents/yamllint:latest
stage: test stage: lint
needs: [] needs: []
variables: variables:
LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates

View file

@ -9,5 +9,5 @@
<!-- Describe the audit event you are proposing should be added, including any details of what should be captured, how, and why. --> <!-- Describe the audit event you are proposing should be added, including any details of what should be captured, how, and why. -->
/label ~"Category:Audit Events" /label ~"Category:Audit Events"
/label ~"feature" /label ~"type::feature"
/label ~"group::compliance" /label ~"group::compliance"

View file

@ -2,10 +2,10 @@
Please read this! Please read this!
Before opening a new issue, make sure to search for keywords in the issues Before opening a new issue, make sure to search for keywords in the issues
filtered by the "regression" or "bug" label: filtered by the "regression" or "type::bug" label:
- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=regression - https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=regression
- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug - https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=type::bug
and verify the issue you're about to submit isn't a duplicate. and verify the issue you're about to submit isn't a duplicate.
---> --->
@ -82,4 +82,4 @@ will also determine whether the bug is fixed in a more recent version. -->
<!-- If you can, link to the line of code that might be responsible for the problem. --> <!-- If you can, link to the line of code that might be responsible for the problem. -->
/label ~bug /label ~"type::bug"

View file

@ -41,7 +41,11 @@ Which tier is this feature available in?
### Deprecation Milestone ### Deprecation Milestone
<!-- In which milestone will this deprecation happen? --> <!-- In which milestone will this deprecation be announced ? -->
### Planned Removal Milestone
<!-- In which milestone will the feature or functionality be removed and announced? -->
### Links ### Links

View file

@ -0,0 +1,80 @@
<!-- Before implementing a new empty state solution, make sure to read the
Empty State region docs in Pajamas: https://design.gitlab.com/regions/empty-states -->
## Description
<!-- Describe the solution you're proposing for your empty state region.
Include links to user research (if applicable). -->
## Location
<!-- Provide a link and location of the new empty state solution.
For example: https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com/-/issues -->
## Use case
<!-- What is the use case for the solution you're proposing?
Read the Empty State docs and select the use case below: https://design.gitlab.com/regions/empty-states -->
- [ ] Blank content
- [ ] Empty search results
- [ ] Configuration required
- [ ] Higher tier
## Checklist
<!-- Follow the steps below that correspond with the use case selected above.
Follow the steps to complete this issue -->
### Blank content
- [ ] The solution follows the `Blank content` specifications [in Pajamas](https://design.gitlab.com/regions/empty-states#blank-content).
- [ ] Follow the instructions from the [`After merge` section](#after-merge) below to add Snowplow tracking.
### Empty search results
- [ ] The solution follows the `Empty search results` specifications [in Pajamas](https://design.gitlab.com/regions/empty-states#empty-search-results).
- [ ] Follow the instructions from the [`After merge` section](#after-merge) below to add Snowplow tracking.
### Configuration required
- [ ] The solution follows the `Configuration required` specifications [in Pajamas](https://design.gitlab.com/regions/empty-states#configuration-required).
- [ ] Ask a [Growth product manager or Designer](https://about.gitlab.com/handbook/engineering/development/growth/#stable-counterparts) to review your solution.
- [ ] Is your solution introducing a new empty states or modifying an existing one?
- [ ] Introducing a new empty state: Follow the instructions from the [`After merge` section](#after-merge) below to add Snowplow tracking.
- [ ] Modifying an existing empty state: Follow the [`Experimentation` process](#experimentation) below. _Note_: If the empty state you want to replace hasn't been updated in a long time, doesn't pitch the value of the feature, or does not contain a next step action CTA, then we recommend you skip the experimentation process to implement and add tracking to your new empty state.
<!-- IF experimentation -->
#### Experimentation
- [ ] Collaborate with a [Growth product manager](https://about.gitlab.com/handbook/engineering/development/growth/#stable-counterparts) to help you determine if you can validate your solution through an experiment on SaaS.
- [ ] If an experiment is possible, create an issue using the [experiment idea template](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Experiment%20Idea) and follow the template intructions. Otherwise, follow the instructions from the [`After merge` section](#after-merge) below to add Snowplow tracking.
- [ ] Ask a [Growth product manager or Designer](https://about.gitlab.com/handbook/engineering/development/growth/#stable-counterparts) to review your experiment set-up.
- [ ] Implement and monitor the experiment following the [implementation guide](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/experiment_guide/gitlab_experiment.md#implement-an-experiment).
- [ ] Review and discuss the findings.
- [ ] Add the findings to the [Growth experimentation knowledge](https://about.gitlab.com/direction/growth/#growth-experiments-knowledge-base---concluded-experiments).
### Higher tier
- [ ] The solution follows the `Higher tier` specifications [in Pajamas](https://design.gitlab.com/regions/empty-states#higher-tier).
- [ ] Ask a Product Manager or Designer from the [Conversion group](https://about.gitlab.com/handbook/engineering/development/growth/conversion/#group-members) to review your solution.
- [ ] Is your solution introducing a new empty states or modifying an existing one?
- [ ] Introducing a new empty state: follow the instructions from the [`After merge` section](#after-merge) below to add Snowplow tracking.
- [ ] Modifying an existing empty state, follow the [`Experimentation` process](#experimentation) below.
<!-- IF experimentation -->
#### Experimentation
- [ ] Collaborate with a [Growth product manager](https://about.gitlab.com/handbook/engineering/development/growth/#stable-counterparts) to help you determine if you can validate your solution through an experiment on SaaS.
- [ ] If an experiment is possible, create an issue using the [experiment idea template](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Experiment%20Idea) and follow the template intructions. Otherwise, follow the instructions from the [`After merge` section](#after-merge) below to add Snowplow tracking.
- [ ] Add a ~"Category:Conversion Experiment" label to the experiment idea issue.
- [ ] Ask a Product Manager or Designer from the [Conversion group](https://about.gitlab.com/handbook/engineering/development/growth/conversion/#group-members) to review your experiment set-up.
- [ ] Implement and monitor the experiment following the [implementation guide](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/experiment_guide/gitlab_experiment.md#implement-an-experiment) .
- [ ] Review and discuss the findings.
- [ ] Add the findings to the [Growth experimentation knowledge](https://about.gitlab.com/direction/growth/#growth-experiments-knowledge-base---concluded-experiments).
## After merge
- [ ] Use the `Snowplow event tracking` [issue template](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Snowplow%20event%20tracking) and open an issue to add Snowplow event tracking to your new empty state solution.
- [ ] Add your ~devops:: and ~group:: labels to the new issue.

View file

@ -0,0 +1,25 @@
<!-- Title suggestion: Experiment Implementation: [description] -->
# Experiment Summary
<!-- Quick rundown of what is being done -->
# Design
<!-- This should include the contexts that determine the reproducibility (stickiness) of an experiment. This means that if you want the same behavior for a user, the context would be user, or if you want all users when viewing a specific project, the context would be the project being viewed, etc. -->
# Rollout strategy
<!-- This is currently called A/B test, which isn't accurate for multi-variants. Let's call this rollout strategy. It should outline the percentages for variants and if there's more than one step to this, each of those steps and the timing for those steps (e.g. 30 days after initial rollout). -->
# Inclusions and exclusions
<!-- These would be the rules for which given context (and are limited to context or resolvable at experiment time details) is included or excluded from the test. An example of this would be to only run an experiment on groups less than N number of days old. -->
# Segmentation
<!-- Rules for always saying context with these criteria always get this variant. For instance, if you want to always give groups less than N number of days old the experiment experience, they are specified here. This is different from the exclusion rules above. -->
# Tracking Details
- [json schema](https://gitlab.com/gitlab-org/iglu/-/blob/master/public/schemas/com.gitlab/gitlab_experiment/jsonschema/0-3-0) used in `gitlab-experiment` tracking.
- see [taxonomy](https://docs.gitlab.com/ee/development/snowplow/index.html#structured-event-taxonomy) for a guide.
| activity | category | action | label | context | property | value |
| -------- | -------- | ------ | ----- | ------- | -------- | ----- |
| | | | | json schema | | |

View file

@ -105,5 +105,16 @@ In this rollout issue, ensure the scoped `experiment::` label is kept accurate.
/chatops run feature set <experiment-key> false /chatops run feature set <experiment-key> false
``` ```
## Experiment Successful Cleanup Concerns
_Items to be considered if candidate experience is to become a permanent part of GitLab_
<!--
Add a list of items raised during MR review or otherwise that may need further thought/consideration
before becoming permanent parts of the product.
Example: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70451#note_727246104
-->
/label ~"feature flag" ~"devops::growth" ~"growth experiment" ~"experiment-rollout" ~Engineering ~"workflow::scheduling" ~"experiment::pending" /label ~"feature flag" ~"devops::growth" ~"growth experiment" ~"experiment-rollout" ~Engineering ~"workflow::scheduling" ~"experiment::pending"
/milestone %"Next 1-3 releases" /milestone %"Next 1-3 releases"

View file

@ -12,9 +12,10 @@ The changes need to become an official part of the product.
- [ ] Determine if tracking should be kept as is, removed, or modified. - [ ] Determine if tracking should be kept as is, removed, or modified.
- [ ] Ensure any relevant documentation has been updated. - [ ] Ensure any relevant documentation has been updated.
- [ ] Consider changes to any `feature_category:` introduced by the experiment if ownership is changing (PM for Growth and PM for the new category as DRIs) - [ ] Consider changes to any `feature_category:` introduced by the experiment if ownership is changing (PM for Growth and PM for the new category as DRIs)
- [ ] Check to see if the experiment introduced new design assets. Add them to the appropriate repos and document them if needed.
- [ ] Optional: Migrate experiment to a default enabled [feature flag](https://docs.gitlab.com/ee/development/feature_flags) for one milestone and add a changelog. Converting to a feature flag can be skipped at the ICs discretion if risk is deemed low with consideration to both SaaS and (if applicable) self managed - [ ] Optional: Migrate experiment to a default enabled [feature flag](https://docs.gitlab.com/ee/development/feature_flags) for one milestone and add a changelog. Converting to a feature flag can be skipped at the ICs discretion if risk is deemed low with consideration to both SaaS and (if applicable) self managed
- [ ] In the next milestone, [remove the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) if applicable - [ ] In the next milestone, [remove the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) if applicable
- [ ] After the flag removal is deployed, [clean up the feature/experiment feature flags](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) by running chatops command in `#production` channel - [ ] After the flag removal is deployed, [clean up the feature/experiment feature flags](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) by running chatops command in `#production` channel
- [ ] Ensure the corresponding [Experiment Tracking](https://gitlab.com/groups/gitlab-org/-/boards/1352542?label_name[]=devops%3A%3Agrowth&label_name[]=growth%20experiment&label_name[]=experiment%20tracking) issue is updated - [ ] Ensure the corresponding [Experiment Rollout](https://gitlab.com/groups/gitlab-org/-/boards/1352542?label_name[]=devops%3A%3Agrowth&label_name[]=growth%20experiment&label_name[]=experiment-rollout) issue is updated
/label ~"feature" ~"feature::maintenance" ~"workflow::scheduling" ~"growth experiment" ~"feature flag" /label ~"type::maintenance" ~"workflow::scheduling" ~"growth experiment" ~"feature flag"

View file

@ -1,25 +0,0 @@
<!-- Title suggestion: Experiment: [description] -->
# Experiment Summary
<!-- Quick rundown of what is being done -->
# Design
<!-- This should include the contexts that determine the reproducibility (stickiness) of an experiment. This means that if you want the same behavior for a user, the context would be user, or if you want all users when viewing a specific project, the context would be the project being viewed, etc. -->
# Rollout strategy
<!-- This is currently called A/B test, which isn't accurate for multi-variants. Let's call this rollout strategy. It should outline the percentages for variants and if there's more than one step to this, each of those steps and the timing for those steps (e.g. 30 days after initial rollout). -->
# Inclusions and exclusions
<!-- These would be the rules for which given context (and are limited to context or resolvable at experiment time details) is included or excluded from the test. An example of this would be to only run an experiment on groups less than N number of days old. -->
# Segmentation
<!-- Rules for always saying context with these criteria always get this variant. For instance, if you want to always give groups less than N number of days old the experiment experience, they are specified here. This is different from the exclusion rules above. -->
# Tracking Details
- [json schema](https://gitlab.com/gitlab-org/iglu/-/blob/master/public/schemas/com.gitlab/gitlab_experiment/jsonschema/0-3-0) used in `gitlab-experiment` tracking.
- see [taxonomy](https://docs.gitlab.com/ee/development/snowplow/index.html#structured-event-taxonomy) for a guide.
| activity | category | action | label | context | property | value |
| -------- | -------- | ------ | ----- | ------- | -------- | ----- |
| | | | | json schema | | |

View file

@ -30,6 +30,17 @@ Are there any other stages or teams involved that need to be kept in the loop?
<!-- Describe the expected outcome when rolling out this feature --> <!-- Describe the expected outcome when rolling out this feature -->
### When is the feature viable?
<!-- What are the settings we need to configure in order to have this feature viable? -->
<!--
Example below:
1. Enable service ping collection
`ApplicationSetting.first.update(usage_ping_enabled: true)`
-->
### What might happen if this goes wrong? ### What might happen if this goes wrong?
<!-- Should the feature flag be turned off? Any MRs that need to be rolled back? Communication that needs to happen? What are some things you can think of that could go wrong - data loss or broken pages? --> <!-- Should the feature flag be turned off? Any MRs that need to be rolled back? Communication that needs to happen? What are some things you can think of that could go wrong - data loss or broken pages? -->
@ -37,6 +48,12 @@ Are there any other stages or teams involved that need to be kept in the loop?
### What can we monitor to detect problems with this? ### What can we monitor to detect problems with this?
<!-- Which dashboards from https://dashboards.gitlab.net are most relevant? --> <!-- Which dashboards from https://dashboards.gitlab.net are most relevant? -->
_Consider mentioning checks for 5xx errors or other anomalies like an increase in redirects
(302 HTTP response status)_
### What can we check for monitoring production after rollouts?
_Consider adding links to check for Sentry errors, Production logs for 5xx, 302s, etc._
## Rollout Steps ## Rollout Steps
@ -73,11 +90,14 @@ Are there any other stages or teams involved that need to be kept in the loop?
If a different developer will be covering, or an exception is needed, please inform the oncall SRE by using the `@sre-oncall` Slack alias. If a different developer will be covering, or an exception is needed, please inform the oncall SRE by using the `@sre-oncall` Slack alias.
- [ ] Ensure that documentation has been updated ([More info](https://docs.gitlab.com/ee/development/documentation/feature_flags.html#features-that-became-enabled-by-default)). - [ ] Ensure that documentation has been updated ([More info](https://docs.gitlab.com/ee/development/documentation/feature_flags.html#features-that-became-enabled-by-default)).
- [ ] Announce on [the feature issue](ISSUE LINK) an estimated time this will be enabled on GitLab.com. - [ ] Announce on [the feature issue](ISSUE LINK) an estimated time this will be enabled on GitLab.com.
- [ ] If the feature might impact the user experience, notify `#support_gitlab-com` and your team channel ([more guidance when this is necessary in the dev docs](https://docs.gitlab.com/ee/development/feature_flags/controls.html#communicate-the-change)). - [ ] Notify `#support_gitlab-com` and your team channel ([more guidance when this is necessary in the dev docs](https://docs.gitlab.com/ee/development/feature_flags/controls.html#communicate-the-change)).
### Global rollout on production ### Global rollout on production
All `/chatops` commands that target production should be done in the `#production` slack channel for visibility. For visibility, all `/chatops` commands that target production should be:
- Executed in the `#production` slack channel.
- Cross-posted (with the command results) to the responsible team's slack channel (`#g_TEAM_NAME`).
- [ ] [Incrementally roll out](https://docs.gitlab.com/ee/development/feature_flags/controls.html#process) the feature. - [ ] [Incrementally roll out](https://docs.gitlab.com/ee/development/feature_flags/controls.html#process) the feature.
- If the feature flag in code has [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), perform **actor-based** rollout. - If the feature flag in code has [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), perform **actor-based** rollout.
@ -148,5 +168,5 @@ codebase.
/chatops run feature set <feature-flag-name> false /chatops run feature set <feature-flag-name> false
``` ```
/label ~"feature flag" /label ~"feature flag" ~"type::feature" ~"feature::addition"
/assign DRI /assign DRI

View file

@ -1,10 +1,16 @@
<!-- This template is a great use for issues that are feature::additions or technical tasks for larger issues.--> <!-- This template is a great use for issues that are feature::additions or technical tasks for larger issues.-->
### Proposal ### Proposal
<!-- Use this section to explain the feature and how it will work. It can be helpful to add technical details, design proposals, and links to related epics or issues. --> <!-- Use this section to explain the feature and how it will work. It can be helpful to add technical details, design proposals, and links to related epics or issues. -->
<!-- Consider adding related issues and epics to this issue. You can also reference the Feature Proposal Template (https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20proposal%20-%20detailed.md) for additional details to consider adding to this issue. Additionally, as a data oriented organization, when your feature exits planning breakdown, consider adding the `What does success look like, and how can we measure that?` section. <!-- Consider adding related issues and epics to this issue. You can also reference the Feature Proposal Template (https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20proposal%20-%20detailed.md) for additional details to consider adding to this issue. Additionally, as a data oriented organization, when your feature exits planning breakdown, consider adding the `What does success look like, and how can we measure that?` section.
--> -->
/label ~feature::addition ~"group::" ~"section::" ~"Category:" ~"GitLab Core"/~"GitLab Premium"/~"GitLab Ultimate" <!-- Label reminders
Use the following resources to find the appropriate labels:
- https://gitlab.com/gitlab-org/gitlab/-/labels
- https://about.gitlab.com/handbook/product/categories/features/
-->
/label ~"type::feature" ~feature::addition ~"group::" ~"section::" ~"Category:" ~"GitLab Core"/~"GitLab Premium"/~"GitLab Ultimate"

View file

@ -1,33 +1,22 @@
<!-- This issue template can be used a great starting point for feature requests. The last section "Release notes" can be used as a summary of the feature and is also required if you want to have your release post blog MR auto generated using the release post item generator: https://about.gitlab.com/handbook/marketing/blog/release-posts/#release-post-item-generator. The remaining sections are the backbone for every feature in GitLab. --> <!-- This issue template can be used as a great starting point for feature requests. The section "Release notes" can be used as a summary of the feature and is also required if you want to have your release post blog MR auto generated using the release post item generator: https://about.gitlab.com/handbook/marketing/blog/release-posts/#release-post-item-generator. The remaining sections are the backbone for every feature in GitLab.
### Release notes The goal of this template is brevity for quick/smaller iterations. For a more thorough list of considerations for larger features or feature sets, you can leverage the detailed [feature proposal](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20proposal%20-%20detailed.md). -->
### Release notes
<!-- What is the problem and solution you're proposing? This content sets the overall vision for the feature and serves as the release notes that will populate in various places, including the [release post blog](https://about.gitlab.com/releases/categories/releases/) and [Gitlab project releases](https://gitlab.com/gitlab-org/gitlab/-/releases). " --> <!-- What is the problem and solution you're proposing? This content sets the overall vision for the feature and serves as the release notes that will populate in various places, including the [release post blog](https://about.gitlab.com/releases/categories/releases/) and [Gitlab project releases](https://gitlab.com/gitlab-org/gitlab/-/releases). " -->
### Problem to solve ### Problem to solve
<!-- What is the user problem you are trying to solve with this issue? --> <!-- What is the user problem you are trying to solve with this issue? -->
### Proposal ### Proposal
<!-- Use this section to explain the feature and how it will work. It can be helpful to add technical details, design proposals, and links to related epics or issues. --> <!-- Use this section to explain the feature and how it will work. It can be helpful to add technical details, design proposals, and links to related epics or issues. -->
/label ~"feature" ~"group::" ~"section::" ~"Category::" ~"GitLab Free"/~"GitLab Premium"/~"GitLab Ultimate"
<!--- Use the following resources to find the appropriate labels:
- https://gitlab.com/gitlab-org/gitlab/-/labels
- https://about.gitlab.com/handbook/product/categories/features/
Consider adding related issues and epics to this issue. You can also reference the Feature Proposal Template (https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20proposal%20-%20detailed.md) for additional details to consider adding to this issue. Additionally, as a data oriented organization, when your feature exits planning breakdown, consider adding the `What does success look like, and how can we measure that?` section.
Other sections to consider adding:
### Intended users ### Intended users
Who will use this feature? If known, include any of the following: types of users (e.g. Developer), personas, or specific company roles (e.g. Release Manager). It's okay to write "Unknown" and fill this field in later. <!-- Who will use this feature? If known, include any of the following: types of users (e.g. Developer), personas, or specific company roles (e.g. Release Manager). It's okay to write "Unknown" and fill this field in later.
Personas are described at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ Personas are described at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/
@ -39,68 +28,28 @@ Personas are described at https://about.gitlab.com/handbook/marketing/product-ma
* [Devon (DevOps Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#devon-devops-engineer) * [Devon (DevOps Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#devon-devops-engineer)
* [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator) * [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator)
* [Sam (Security Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sam-security-analyst) * [Sam (Security Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sam-security-analyst)
* [Rachel (Release Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#rachel-release-manager) * [Rachel (Release Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#rachel-release-manager)
* [Alex (Security Operations Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#alex-security-operations-engineer) * [Alex (Security Operations Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#alex-security-operations-engineer)
* [Simone (Software Engineer in Test)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#simone-software-engineer-in-test) * [Simone (Software Engineer in Test)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#simone-software-engineer-in-test)
* [Allison (Application Ops)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#allison-application-ops) * [Allison (Application Ops)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#allison-application-ops)
* [Priyanka (Platform Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#priyanka-platform-engineer) * [Priyanka (Platform Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#priyanka-platform-engineer)
* [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst) * [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst)
* [Eddie (Content Editor)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#eddie-content-editor)
-->
### User experience goal ### Metrics
What is the single user experience workflow this problem addresses? <!-- How are you going to track uage of this feature? Think about user behavior and their interaction with the product. What indicates someone is getting value from it?
For example, "The user should be able to use the UI/API/.gitlab-ci.yml with GitLab to <perform a specific task>"
https://about.gitlab.com/handbook/engineering/ux/ux-research-training/user-story-mapping/
Create tracking issue using the Snowplow event tracking template. See https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Snowplow%20event%20tracking.md
### Further details -->
Include use cases, benefits, goals, or any other details that will help us understand the problem better. <!-- Label reminders
Use the following resources to find the appropriate labels:
- https://gitlab.com/gitlab-org/gitlab/-/labels
- https://about.gitlab.com/handbook/product/categories/features/
-->
### Permissions and Security /label ~"type::feature" ~"group::" ~"section::" ~"Category::" ~"GitLab Free"/~"GitLab Premium"/~"GitLab Ultimate" ~documentation ~direction
<!-- What permissions are required to perform the described actions? Are they consistent with the existing permissions as documented for users, groups, and projects as appropriate? Is the proposed behavior consistent between the UI, API, and other access methods (e.g. email replies)?
Consider adding checkboxes and expectations of users with certain levels of membership https://docs.gitlab.com/ee/user/permissions.html
* [ ] Add expected impact to members with no access (0)
* [ ] Add expected impact to Guest (10) members
* [ ] Add expected impact to Reporter (20) members
* [ ] Add expected impact to Developer (30) members
* [ ] Add expected impact to Maintainer (40) members
* [ ] Add expected impact to Owner (50) members
### Documentation
See the Feature Change Documentation Workflow https://docs.gitlab.com/ee/development/documentation/workflow.html#for-a-product-change
* Add all known Documentation Requirements in this section. See https://docs.gitlab.com/ee/development/documentation/workflow.html
* If this feature requires changing permissions, update the permissions document. See https://docs.gitlab.com/ee/user/permissions.html
### Availability & Testing
This section needs to be retained and filled in during the workflow planning breakdown phase of this feature proposal, if not earlier.
What risks does this change pose to our availability? How might it affect the quality of the product? What additional test coverage or changes to tests will be needed? Will it require cross-browser testing?
Please list the test areas (unit, integration and end-to-end) that needs to be added or updated to ensure that this feature will work as intended. Please use the list below as guidance.
* Unit test changes
* Integration test changes
* End-to-end test change
See the test engineering planning process and reach out to your counterpart Software Engineer in Test for assistance: https://about.gitlab.com/handbook/engineering/quality/test-engineering/#test-planning
### What does success look like, and how can we measure that?
Define both the success metrics and acceptance criteria. Note that success metrics indicate the desired business outcomes, while acceptance criteria indicate when the solution is working correctly. If there is no way to measure success, link to an issue that will implement a way to measure this.
### What is the type of buyer?
What is the buyer persona for this feature? See https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/buyer-persona/
In which enterprise tier should this feature go? See https://about.gitlab.com/handbook/product/pricing/#three-tiers
### Is this a cross-stage feature?
Communicate if this change will affect multiple Stage Groups or product areas. We recommend always start with the assumption that a feature request will have an impact into another Group. Loop in the most relevant PM and Product Designer from that Group to provide strategic support to help align the Group's broader plan and vision, as well as to avoid UX and technical debt. https://about.gitlab.com/handbook/product/#cross-stage-features -->
/label ~documentation
/label ~direction

View file

@ -31,6 +31,14 @@ Personas are described at https://about.gitlab.com/handbook/marketing/product-ma
* [Eddie (Content Editor)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#eddie-content-editor) * [Eddie (Content Editor)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#eddie-content-editor)
--> -->
### Metrics
<!-- How are you going to track uage of this feature? Think about user behavior and their interaction with the product. What indicates someone is getting value from it?
Create tracking issue using the Snowplow event tracking template. See https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Snowplow%20event%20tracking.md
-->
### User experience goal ### User experience goal
<!-- What is the single user experience workflow this problem addresses? <!-- What is the single user experience workflow this problem addresses?
@ -112,6 +120,4 @@ Use the following resources to find the appropriate labels:
--> -->
/label ~devops:: ~group: ~Category: /label ~devops:: ~group: ~Category:
/label ~"GitLab Free"/~"GitLab Premium"/~"GitLab Ultimate" /label ~"GitLab Free"/~"GitLab Premium"/~"GitLab Ultimate"
/label ~feature /label ~"type::feature" ~documentation ~direction
/label ~documentation
/label ~direction

View file

@ -111,115 +111,9 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org
- [ ] Be sure to commit the relevant changes in `ee/db/geo/structure.sql` - [ ] Be sure to commit the relevant changes in `ee/db/geo/structure.sql`
### Add verification state fields on the Geo primary site ### Add verification state to the Model
The Geo primary site needs to checksum every replicable in order for secondaries to verify their own checksums. To do this, Geo requires fields on the Model. There are two ways to add the necessary verification state fields. If the table is large and wide, then it may be a good idea to add verification state fields to a separate table (Option 2). Consult a database expert if needed. The Geo primary site needs to checksum every replicable so secondaries can verify their own checksums. To do this, Geo requires the Model to have an associated table to track verification state.
#### Add verification state fields to the model table (Option 1)
- [ ] Create the migration file in `db/migrate`:
```shell
bin/rails generate migration AddVerificationStateToCoolWidgets
```
- [ ] Replace the contents of the migration file with:
```ruby
# frozen_string_literal: true
class AddVerificationStateToCoolWidgets < ActiveRecord::Migration[6.0]
def change
change_table(:cool_widgets) do |t|
t.integer :verification_state, default: 0, limit: 2, null: false
t.column :verification_started_at, :datetime_with_timezone
t.integer :verification_retry_count, limit: 2, null: false
t.column :verification_retry_at, :datetime_with_timezone
t.column :verified_at, :datetime_with_timezone
t.binary :verification_checksum, using: 'verification_checksum::bytea'
t.text :verification_failure # rubocop:disable Migration/AddLimitToTextColumns
end
end
end
```
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method)
- [ ] Adding a `text` column also [requires](../database/strings_and_the_text_data_type.md#add-a-text-column-to-an-existing-table) setting a limit. Create the migration file in `db/migrate`:
```shell
bin/rails generate migration AddVerificationFailureLimitToCoolWidgets
```
- [ ] Replace the contents of the migration file with:
```ruby
# frozen_string_literal: true
class AddVerificationFailureLimitToCoolWidgets < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
disable_ddl_transaction!
CONSTRAINT_NAME = 'cool_widget_verification_failure_text_limit'
def up
add_text_limit :cool_widget, :verification_failure, 255, constraint_name: CONSTRAINT_NAME
end
def down
remove_check_constraint(:cool_widget, CONSTRAINT_NAME)
end
end
```
- [ ] Add indexes on verification fields to ensure verification can be performed efficiently. Some or all of these indexes can be omitted if the table is guaranteed to be small. Ask a database expert if you are considering omitting indexes. Create the migration file in `db/migrate`:
```shell
bin/rails generate migration AddVerificationIndexesToCoolWidgets
```
- [ ] Replace the contents of the migration file with:
```ruby
# frozen_string_literal: true
class AddVerificationIndexesToCoolWidgets < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
VERIFICATION_STATE_INDEX_NAME = "index_cool_widgets_on_verification_state"
PENDING_VERIFICATION_INDEX_NAME = "index_cool_widgets_pending_verification"
FAILED_VERIFICATION_INDEX_NAME = "index_cool_widgets_failed_verification"
NEEDS_VERIFICATION_INDEX_NAME = "index_cool_widgets_needs_verification"
disable_ddl_transaction!
def up
add_concurrent_index :cool_widgets, :verification_state, name: VERIFICATION_STATE_INDEX_NAME
add_concurrent_index :cool_widgets, :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
add_concurrent_index :cool_widgets, :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
add_concurrent_index :cool_widgets, :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
end
def down
remove_concurrent_index_by_name :cool_widgets, VERIFICATION_STATE_INDEX_NAME
remove_concurrent_index_by_name :cool_widgets, PENDING_VERIFICATION_INDEX_NAME
remove_concurrent_index_by_name :cool_widgets, FAILED_VERIFICATION_INDEX_NAME
remove_concurrent_index_by_name :cool_widgets, NEEDS_VERIFICATION_INDEX_NAME
end
end
```
- [ ] Run database migrations:
```shell
bin/rake db:migrate
```
- [ ] Be sure to commit the relevant changes in `db/structure.sql`
#### Add verification state fields to a separate table (Option 2)
- [ ] Create the migration file in `db/migrate`: - [ ] Create the migration file in `db/migrate`:
@ -273,6 +167,7 @@ The Geo primary site needs to checksum every replicable in order for secondaries
``` ```
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md). - [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
- [ ] Run database migrations: - [ ] Run database migrations:
```shell ```shell
@ -287,7 +182,14 @@ That's all of the required database changes.
#### Step 1. Implement replication and verification #### Step 1. Implement replication and verification
- [ ] Include `Gitlab::Geo::ReplicableModel` in the `CoolWidget` class, and specify the Replicator class `with_replicator Geo::CoolWidgetReplicator`. - [ ] Add the following lines to the `cool_widget` model to accomplish some important tasks:
- Include `Gitlab::Geo::ReplicableModel` in the `CoolWidget` class, and specify the Replicator class `with_replicator Geo::CoolWidgetReplicator`.
- Include the `::Gitlab::Geo::VerificationState` concern.
- Delegate verification related methods to the `cool_widget_state` model.
- For verification, override some scopes to use the `cool_widget_states` table instead of the model table.
- Implement the `verification_state_object` method to return the object that holds
the verification details
- Override some methods to use the `cool_widget_states` table in verification-related queries.
Pay some attention to method `pool_repository`. Not every repository type uses repository pooling. As Geo prefers to use repository snapshotting, it can lead to data loss. Make sure to overwrite `pool_repository` so it returns nil for repositories that do not have pools. Pay some attention to method `pool_repository`. Not every repository type uses repository pooling. As Geo prefers to use repository snapshotting, it can lead to data loss. Make sure to overwrite `pool_repository` so it returns nil for repositories that do not have pools.
@ -297,6 +199,7 @@ That's all of the required database changes.
# frozen_string_literal: true # frozen_string_literal: true
class CoolWidget < ApplicationRecord class CoolWidget < ApplicationRecord
...
include ::Gitlab::Geo::ReplicableModel include ::Gitlab::Geo::ReplicableModel
include ::Gitlab::Geo::VerificationState include ::Gitlab::Geo::VerificationState
@ -304,31 +207,62 @@ That's all of the required database changes.
mount_uploader :file, CoolWidgetUploader mount_uploader :file, CoolWidgetUploader
has_one :cool_widget_state, autosave: false, inverse_of: :cool_widget, class_name: 'Geo::CoolWidgetState'
delegate :verification_retry_at, :verification_retry_at=,
:verified_at, :verified_at=,
:verification_checksum, :verification_checksum=,
:verification_failure, :verification_failure=,
:verification_retry_count, :verification_retry_count=,
:verification_state=, :verification_state,
:verification_started_at=, :verification_started_at,
to: :cool_widget_state
...
scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) }
scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) }
scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) }
# Override the `all` default if not all records can be replicated. For an # Override the `all` default if not all records can be replicated. For an
# example of an existing Model that needs to do this, see # example of an existing Model that needs to do this, see
# `EE::MergeRequestDiff`. # `EE::MergeRequestDiff`.
# scope :available_replicables, -> { all } # scope :available_replicables, -> { all }
# @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope def verification_state_object
# @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced to this node, restricted by primary key cool_widget_state
def self.replicables_for_current_secondary(primary_key_in) end
# This issue template does not help you write this method. ...
#
# This method is called only on Geo secondary sites. It is called when class_methods do
# we want to know which records to replicate. This is not easy to automate extend ::Gitlab::Utils::Override
# because for example: ...
#
# * The "selective sync" feature allows admins to choose which namespaces # to replicate, per secondary site. Most Models are scoped to a # @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope
# namespace, but the nature of the relationship to a namespace varies # @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced to this node, restricted by primary key
# between Models. def replicables_for_current_secondary(primary_key_in)
# * The "selective sync" feature allows admins to choose which shards to # This issue template does not help you write this method.
# replicate, per secondary site. Repositories are associated with #
# shards. Most blob types are not, but Project Uploads are. # This method is called only on Geo secondary sites. It is called when
# * Remote stored replicables are not replicated, by default. But the # we want to know which records to replicate. This is not easy to automate
# setting `sync_object_storage` enables replication of remote stored # because for example:
# replicables. #
# # * The "selective sync" feature allows admins to choose which namespaces # to replicate, per secondary site. Most Models are scoped to a
# Search the codebase for examples, and consult a Geo expert if needed. # namespace, but the nature of the relationship to a namespace varies
# between Models.
# * The "selective sync" feature allows admins to choose which shards to
# replicate, per secondary site. Repositories are associated with
# shards. Most blob types are not, but Project Uploads are.
# * Remote stored replicables are not replicated, by default. But the
# setting `sync_object_storage` enables replication of remote stored
# replicables.
#
# Search the codebase for examples, and consult a Geo expert if needed.
end
override :verification_state_table_class
def verification_state_table_class
CoolWidgetState
end
end end
# Geo checks this method in FrameworkRepositorySyncService to avoid # Geo checks this method in FrameworkRepositorySyncService to avoid
@ -336,6 +270,11 @@ That's all of the required database changes.
def pool_repository def pool_repository
nil nil
end end
...
def cool_widget_state
super || build_cool_widget_state
end
... ...
end end
@ -343,6 +282,15 @@ That's all of the required database changes.
- [ ] Implement `CoolWidget.replicables_for_current_secondary` above. - [ ] Implement `CoolWidget.replicables_for_current_secondary` above.
- [ ] Ensure `CoolWidget.replicables_for_current_secondary` is well-tested. Search the codebase for `replicables_for_current_secondary` to find examples of parameterized table specs. You may need to add more `FactoryBot` traits. - [ ] Ensure `CoolWidget.replicables_for_current_secondary` is well-tested. Search the codebase for `replicables_for_current_secondary` to find examples of parameterized table specs. You may need to add more `FactoryBot` traits.
- [ ] Add the following shared examples to `ee/spec/models/ee/cool_widget_spec.rb`:
```ruby
include_examples 'a replicable model with a separate table for verification state' do
let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is included in `available_verifiables`
let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `available_verifiables`
end
```
- [ ] Create `ee/app/replicators/geo/cool_widget_replicator.rb`. Implement the `#repository` method which should return a `<Repository>` instance, and implement the class method `.model` to return the `CoolWidget` class: - [ ] Create `ee/app/replicators/geo/cool_widget_replicator.rb`. Implement the `#repository` method which should return a `<Repository>` instance, and implement the class method `.model` to return the `CoolWidget` class:
```ruby ```ruby
@ -536,13 +484,7 @@ That's all of the required database changes.
- [ ] Make sure the factory also allows setting a `project` attribute. If the model does not have a direct relation to a project, you can use a `transient` attribute. Check out `spec/factories/merge_request_diffs.rb` for an example. - [ ] Make sure the factory also allows setting a `project` attribute. If the model does not have a direct relation to a project, you can use a `transient` attribute. Check out `spec/factories/merge_request_diffs.rb` for an example.
##### If you added verification state fields to a separate table (option 2 above), then you need to make additional model and factory changes - [ ] Following [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`:
If you did not add verification state fields to a separate table, `cool_widget_states`, then skip to [Step 2. Implement metrics gathering](#step-2-implement-metrics-gathering).
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/geo/cool_widget_state.rb`:
``` ruby ``` ruby
# frozen_string_literal: true # frozen_string_literal: true
@ -576,63 +518,6 @@ Otherwise, you can follow [the example of Merge Request Diffs](https://gitlab.co
end end
``` ```
- [ ] Add the following lines to the `cool_widget` model to accomplish some important tasks:
- Include the `::Gitlab::Geo::VerificationState` concern.
- Delegate verification related methods to the `cool_widget_state` model.
- Override some scopes to use the `cool_widget_states` table instead of the model table, for verification.
- Override some methods to use the `cool_widget_states` table in verification related queries.
```ruby
class CoolWidget < ApplicationRecord
...
include ::Gitlab::Geo::VerificationState
has_one :cool_widget_state, autosave: true, inverse_of: :cool_widget, class_name: 'Geo::CoolWidgetState'
delegate :verification_retry_at, :verification_retry_at=,
:verified_at, :verified_at=,
:verification_checksum, :verification_checksum=,
:verification_failure, :verification_failure=,
:verification_retry_count, :verification_retry_count=,
:verification_state=, :verification_state,
:verification_started_at=, :verification_started_at,
to: :cool_widget_state
...
scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) }
scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) }
scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) }
...
class_methods do
extend ::Gitlab::Utils::Override
...
override :verification_state_table_name
def verification_state_table_name
'cool_widget_states'
end
override :verification_state_model_key
def verification_state_model_key
'cool_widget_id'
end
override :verification_arel_table
def verification_arel_table
CoolWidgetState.arel_table
end
end
...
def cool_widget_state
super || build_cool_widget_state
end
...
end
```
#### Step 2. Implement metrics gathering #### Step 2. Implement metrics gathering
Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus` for display in the UI, and sent to Prometheus: Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus` for display in the UI, and sent to Prometheus:

View file

@ -37,6 +37,7 @@ It is also a good idea to first open a proof-of-concept merge request. It can be
You can look into the following examples of MRs for implementing replication/verification for a new blob type: You can look into the following examples of MRs for implementing replication/verification for a new blob type:
- [Add db changes](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60935) and [add verification for MR diffs using SSF](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63309) - [Add db changes](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60935) and [add verification for MR diffs using SSF](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63309)
- [Verify Terraform state versions](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58800) - [Verify Terraform state versions](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58800)
- [Verify LFS objects](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63981)
### Modify database schemas to prepare to add Geo support for Cool Widgets ### Modify database schemas to prepare to add Geo support for Cool Widgets
@ -114,113 +115,9 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org
### Add verification state fields on the Geo primary site ### Add verification state fields on the Geo primary site
The Geo primary site needs to checksum every replicable in order for secondaries to verify their own checksums. To do this, Geo requires fields on the Model. There are two ways to add the necessary verification state fields. If the table is large and wide, then it may be a good idea to add verification state fields to a separate table (Option 2). Consult a database expert if needed. The Geo primary site needs to checksum every replicable so secondaries can verify their own checksums. To do this, Geo requires fields on the Model. Add verification state fields to a separate table. Consult a database expert if needed.
#### Add verification state fields to the model table (Option 1) #### Add verification state fields to a new table
- [ ] Create the migration file in `db/migrate`:
```shell
bin/rails generate migration AddVerificationStateToCoolWidgets
```
- [ ] Replace the contents of the migration file with:
```ruby
# frozen_string_literal: true
class AddVerificationStateToCoolWidgets < ActiveRecord::Migration[6.0]
def change
change_table(:cool_widgets) do |t|
t.integer :verification_state, default: 0, limit: 2, null: false
t.column :verification_started_at, :datetime_with_timezone
t.integer :verification_retry_count, limit: 2, null: false
t.column :verification_retry_at, :datetime_with_timezone
t.column :verified_at, :datetime_with_timezone
t.binary :verification_checksum, using: 'verification_checksum::bytea'
t.text :verification_failure # rubocop:disable Migration/AddLimitToTextColumns
end
end
end
```
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method)
- [ ] Adding a `text` column also [requires](../database/strings_and_the_text_data_type.md#add-a-text-column-to-an-existing-table) setting a limit. Create the migration file in `db/migrate`:
```shell
bin/rails generate migration AddVerificationFailureLimitToCoolWidgets
```
- [ ] Replace the contents of the migration file with:
```ruby
# frozen_string_literal: true
class AddVerificationFailureLimitToCoolWidgets < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
disable_ddl_transaction!
CONSTRAINT_NAME = 'cool_widget_verification_failure_text_limit'
def up
add_text_limit :cool_widget, :verification_failure, 255, constraint_name: CONSTRAINT_NAME
end
def down
remove_check_constraint(:cool_widget, CONSTRAINT_NAME)
end
end
```
- [ ] Add indexes on verification fields to ensure verification can be performed efficiently. Some or all of these indexes can be omitted if the table is guaranteed to be small. Ask a database expert if you are considering omitting indexes. Create the migration file in `db/migrate`:
```shell
bin/rails generate migration AddVerificationIndexesToCoolWidgets
```
- [ ] Replace the contents of the migration file with:
```ruby
# frozen_string_literal: true
class AddVerificationIndexesToCoolWidgets < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
VERIFICATION_STATE_INDEX_NAME = "index_cool_widgets_on_verification_state"
PENDING_VERIFICATION_INDEX_NAME = "index_cool_widgets_pending_verification"
FAILED_VERIFICATION_INDEX_NAME = "index_cool_widgets_failed_verification"
NEEDS_VERIFICATION_INDEX_NAME = "index_cool_widgets_needs_verification"
disable_ddl_transaction!
def up
add_concurrent_index :cool_widgets, :verification_state, name: VERIFICATION_STATE_INDEX_NAME
add_concurrent_index :cool_widgets, :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
add_concurrent_index :cool_widgets, :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
add_concurrent_index :cool_widgets, :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
end
def down
remove_concurrent_index_by_name :cool_widgets, VERIFICATION_STATE_INDEX_NAME
remove_concurrent_index_by_name :cool_widgets, PENDING_VERIFICATION_INDEX_NAME
remove_concurrent_index_by_name :cool_widgets, FAILED_VERIFICATION_INDEX_NAME
remove_concurrent_index_by_name :cool_widgets, NEEDS_VERIFICATION_INDEX_NAME
end
end
```
- [ ] Run database migrations:
```shell
bin/rake db:migrate
```
- [ ] Be sure to commit the relevant changes in `db/structure.sql`
#### Add verification state fields to a separate table (Option 2)
- [ ] Create the migration file in `db/migrate`: - [ ] Create the migration file in `db/migrate`:
@ -274,12 +171,15 @@ The Geo primary site needs to checksum every replicable in order for secondaries
``` ```
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md). - [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
- [ ] Run database migrations: - [ ] Run database migrations:
```shell ```shell
bin/rake db:migrate bin/rake db:migrate
``` ```
- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method)
- [ ] Be sure to commit the relevant changes in `db/structure.sql` - [ ] Be sure to commit the relevant changes in `db/structure.sql`
That's all of the required database changes. That's all of the required database changes.
@ -288,14 +188,22 @@ That's all of the required database changes.
#### Step 1. Implement replication and verification #### Step 1. Implement replication and verification
- [ ] Include `Gitlab::Geo::ReplicableModel` in the `CoolWidget` class, and specify the Replicator class `with_replicator Geo::CoolWidgetReplicator`. - [ ] Add the following lines to the `cool_widget` model to accomplish some important tasks:
- Include `Gitlab::Geo::ReplicableModel` in the `CoolWidget` class, and specify the Replicator class `with_replicator Geo::CoolWidgetReplicator`.
- Include the `::Gitlab::Geo::VerificationState` concern.
- Delegate verification related methods to the `cool_widget_state` model.
- For verification, override some scopes to use the `cool_widget_states` table instead of the model table.
- Implement the `verification_state_object` method to return the object that holds
the verification details
- Override some methods to use the `cool_widget_states` table in verification-related queries.
At this point the `CoolWidget` class should look like this: At this point the `CoolWidget` class should look like this:
```ruby ```ruby
# frozen_string_literal: true # frozen_string_literal: true
class CoolWidget < ApplicationRecord class CoolWidget < ApplicationRecord
...
include ::Gitlab::Geo::ReplicableModel include ::Gitlab::Geo::ReplicableModel
include ::Gitlab::Geo::VerificationState include ::Gitlab::Geo::VerificationState
@ -303,38 +211,84 @@ That's all of the required database changes.
mount_uploader :file, CoolWidgetUploader mount_uploader :file, CoolWidgetUploader
has_one :cool_widget_state, autosave: false, inverse_of: :cool_widget, class_name: 'Geo::CoolWidgetState'
delegate :verification_retry_at, :verification_retry_at=,
:verified_at, :verified_at=,
:verification_checksum, :verification_checksum=,
:verification_failure, :verification_failure=,
:verification_retry_count, :verification_retry_count=,
:verification_state=, :verification_state,
:verification_started_at=, :verification_started_at,
to: :cool_widget_state
...
scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) }
scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) }
scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) }
# Override the `all` default if not all records can be replicated. For an # Override the `all` default if not all records can be replicated. For an
# example of an existing Model that needs to do this, see # example of an existing Model that needs to do this, see
# `EE::MergeRequestDiff`. # `EE::MergeRequestDiff`.
# scope :available_replicables, -> { all } # scope :available_replicables, -> { all }
# @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope def verification_state_object
# @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced to this node, restricted by primary key cool_widget_state
def self.replicables_for_current_secondary(primary_key_in)
# This issue template does not help you write this method.
#
# This method is called only on Geo secondary sites. It is called when
# we want to know which records to replicate. This is not easy to automate
# because for example:
#
# * The "selective sync" feature allows admins to choose which namespaces # to replicate, per secondary site. Most Models are scoped to a
# namespace, but the nature of the relationship to a namespace varies
# between Models.
# * The "selective sync" feature allows admins to choose which shards to
# replicate, per secondary site. Repositories are associated with
# shards. Most blob types are not, but Project Uploads are.
# * Remote stored replicables are not replicated, by default. But the
# setting `sync_object_storage` enables replication of remote stored
# replicables.
#
# Search the codebase for examples, and consult a Geo expert if needed.
end end
... ...
class_methods do
extend ::Gitlab::Utils::Override
...
# @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope
# @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced to this node, restricted by primary key
def self.replicables_for_current_secondary(primary_key_in)
# This issue template does not help you write this method.
#
# This method is called only on Geo secondary sites. It is called when
# we want to know which records to replicate. This is not easy to automate
# because for example:
#
# * The "selective sync" feature allows admins to choose which namespaces # to replicate, per secondary site. Most Models are scoped to a
# namespace, but the nature of the relationship to a namespace varies
# between Models.
# * The "selective sync" feature allows admins to choose which shards to
# replicate, per secondary site. Repositories are associated with
# shards. Most blob types are not, but Project Uploads are.
# * Remote stored replicables are not replicated, by default. But the
# setting `sync_object_storage` enables replication of remote stored
# replicables.
#
# Search the codebase for examples, and consult a Geo expert if needed.
end
override :verification_state_table_class
def verification_state_table_class
CoolWidgetState
end
end
...
def cool_widget_state
super || build_cool_widget_state
end
...
end end
``` ```
- [ ] Implement `CoolWidget.replicables_for_current_secondary` above. - [ ] Implement `CoolWidget.replicables_for_current_secondary` above.
- [ ] Ensure `CoolWidget.replicables_for_current_secondary` is well-tested. Search the codebase for `replicables_for_current_secondary` to find examples of parameterized table specs. You may need to add more `FactoryBot` traits. - [ ] Ensure `CoolWidget.replicables_for_current_secondary` is well-tested. Search the codebase for `replicables_for_current_secondary` to find examples of parameterized table specs. You may need to add more `FactoryBot` traits.
- [ ] Add the following shared examples to `ee/spec/models/ee/cool_widget_spec.rb`:
```ruby
include_examples 'a replicable model with a separate table for verification state' do
let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is included in `available_verifiables`
let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `available_verifiables`
end
```
- [ ] Create `ee/app/replicators/geo/cool_widget_replicator.rb`. Implement the `#carrierwave_uploader` method which should return a `CarrierWave::Uploader`, and implement the class method `.model` to return the `CoolWidget` class: - [ ] Create `ee/app/replicators/geo/cool_widget_replicator.rb`. Implement the `#carrierwave_uploader` method which should return a `CarrierWave::Uploader`, and implement the class method `.model` to return the `CoolWidget` class:
```ruby ```ruby
@ -498,13 +452,7 @@ That's all of the required database changes.
- [ ] Make sure the factory also allows setting a `project` attribute. If the model does not have a direct relation to a project, you can use a `transient` attribute. Check out `spec/factories/merge_request_diffs.rb` for an example. - [ ] Make sure the factory also allows setting a `project` attribute. If the model does not have a direct relation to a project, you can use a `transient` attribute. Check out `spec/factories/merge_request_diffs.rb` for an example.
##### If you added verification state fields to a separate table (option 2 above), then you need to make additional model and factory changes - [ ] Following [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`:
If you did not add verification state fields to a separate table, `cool_widget_states`, then skip to [Step 2. Implement metrics gathering](#step-2-implement-metrics-gathering).
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`:
``` ruby ``` ruby
module Geo module Geo
@ -536,63 +484,6 @@ Otherwise, you can follow [the example of Merge Request Diffs](https://gitlab.co
end end
``` ```
- [ ] Add the following lines to the `cool_widget` model to accomplish some important tasks:
- Include the `::Gitlab::Geo::VerificationState` concern.
- Delegate verification related methods to the `cool_widget_state` model.
- Override some scopes to use the `cool_widget_states` table instead of the model table, for verification.
- Override some methods to use the `cool_widget_states` table in verification related queries.
```ruby
class CoolWidget < ApplicationRecord
...
include ::Gitlab::Geo::VerificationState
has_one :cool_widget_state, autosave: true, inverse_of: :cool_widget, class_name: 'Geo::CoolWidgetState'
delegate :verification_retry_at, :verification_retry_at=,
:verified_at, :verified_at=,
:verification_checksum, :verification_checksum=,
:verification_failure, :verification_failure=,
:verification_retry_count, :verification_retry_count=,
:verification_state=, :verification_state,
:verification_started_at=, :verification_started_at,
to: :cool_widget_state
...
scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) }
scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) }
scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) }
...
class_methods do
extend ::Gitlab::Utils::Override
...
override :verification_state_table_name
def verification_state_table_name
'cool_widget_states'
end
override :verification_state_model_key
def verification_state_model_key
'cool_widget_id'
end
override :verification_arel_table
def verification_arel_table
CoolWidgetState.arel_table
end
end
...
def cool_widget_state
super || build_cool_widget_state
end
...
end
```
#### Step 2. Implement metrics gathering #### Step 2. Implement metrics gathering
Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus` for display in the UI, and sent to Prometheus: Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus` for display in the UI, and sent to Prometheus:

View file

@ -53,4 +53,4 @@ See also:
--> -->
/label ~"infradev" /label ~"infradev"
/label ~"bug" /label ~"type::bug"

View file

@ -1,3 +1,7 @@
<!-- This template is used as a starting point for understing and articulating a customer problem.
Learn more about it in the handbook: https://about.gitlab.com/handbook/product-development-flow/#validation-phase-2-problem-validation
-->
## Problem Statement ## Problem Statement
<!-- What is the problem we hope to validate? Reference how to write a real customer problem statement at https://productcoalition.com/how-to-write-a-good-customer-problem-statement-a815f80189ba for guidance. --> <!-- What is the problem we hope to validate? Reference how to write a real customer problem statement at https://productcoalition.com/how-to-write-a-good-customer-problem-statement-a815f80189ba for guidance. -->
@ -45,4 +49,8 @@ For example, if the solution will take a product manager, designer, and engineer
- [ ] 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 product design to understand the problem
- [ ] The problem is well described and detailed with necessary requirements for engineering to understand the problem - [ ] The problem is well described and detailed with necessary requirements for engineering to understand the problem
## Research Issue
<!-- Link to the Problem Validation Research issue that will be executed by the UX Researcher. https://gitlab.com/gitlab-org/ux-research/ -->
/label ~"workflow::validation backlog" ~devops:: ~category: ~group:: /label ~"workflow::validation backlog" ~devops:: ~category: ~group::

View file

@ -2,7 +2,7 @@
<!-- <!--
Please describe the engineering productivity problem that needs to be solved backed by charts from Please describe the engineering productivity problem that needs to be solved backed by charts from
https://about.gitlab.com/handbook/engineering/quality/engineering-productivity-team/#engineering-productivity-team-metrics. https://about.gitlab.com/handbook/engineering/quality/engineering-productivity/#engineering-productivity-metrics.
--> -->
### Problem identification checklist ### Problem identification checklist

View file

@ -41,9 +41,9 @@ please list them here.
<!-- <!--
Please select the appropriate label from the following: Please select the appropriate label from the following:
~"feature::addition" ~"feature::addition"
~"feature::maintenance" ~"type::maintenance"
~"tooling::pipelines" ~"tooling::pipelines"
~"tooling::workflow" ~"tooling::workflow"
--> -->
/label ~"feature::maintenance" /label ~"type::maintenance"

View file

@ -12,7 +12,7 @@ Set the title to: `Description of the original issue`
- [ ] Make sure the issue really needs to follow the security release workflow. - [ ] 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. - 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. - 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 - [ ] **IMPORTANT**: Mark this [issue as linked] to the Security Release Tracking Issue. You can find it [here](https://gitlab.com/gitlab-org/gitlab/-/issues?sort=created_date&state=opened&label_name[]=upcoming+security+release). This issue
MUST be linked for the release bot to know that the associated merge requests should be merged for this security release. 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): - Fill out the [Links section](#links):
- [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab` issue that describes the security vulnerability. - [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab` issue that describes the security vulnerability.

View file

@ -29,5 +29,5 @@
### Team ### Team
- [ ] Add ~"workflow::planning breakdown" ~feature and the corresponding `~devops::<stage>` and `~group::<group>` labels. - [ ] Add ~"workflow::planning breakdown" ~"type::feature" and the corresponding `~devops::<stage>` and `~group::<group>` labels.
- [ ] Ping the PM and EM. - [ ] Ping the PM and EM.

View file

@ -6,16 +6,19 @@
**Be sure to link this MR to the relevant deprecation issue(s).** **Be sure to link this MR to the relevant deprecation issue(s).**
Deprecation announcements can and should be created and merged into Docs at any time, to optimize user awareness and planning. We encourage confirmed deprecations to be merged as soon as the required reviews are complete, even if weeks ahead of the target milestone's release post. For the announcement to be included in a specific release post and that release's documentation packages, this MR must be reviewed/merged per the due dates below:
**By the 10th**: Assign this MR to these team members as Reviewer and for Approval (optional unless noted as required): **By the 10th**: Assign this MR to these team members as Reviewer and for Approval (optional unless noted as required):
- Product Marketing: `@PMM` - Product Marketing: `@PMM`
- Product Designer(s): `@ProductDesigners` - Product Designer(s): `@ProductDesigners`
- Group Manager or Director: `@manager` - Group Manager or Director: `@manager`
- Engineering Manager: `@EM` - Required - Engineering Manager: `@EM` - Required
- Technical writer: `@TW` - Required
**By 8:00 AM PDT 15th**: PM will assign this MR to the TW reviewer: `@PM` **By 11:59 AM PDT 15th**: PM assigns this MR to the TW reviewer for final review and merge: `@PM`
**By 11:59 PM PDT 15th**: TW Reviewer will perform final review and merge this MR to Master: `@TW` **By 11:59 PM PDT 17th**: TW Reviewer updates Docs by merging this MR to `master`: `@TW`
--- ---
@ -31,8 +34,9 @@ They are frequently updated, and everyone should make sure they are aware of the
## PM release post item checklist ## PM release post item checklist
- [ ] Set yourself as the Assignee. - [ ] Set yourself as the Assignee.
- [ ] If the deprecation is a [breaking change](https://about.gitlab.com/handbook/product/gitlab-the-product/#breaking-change), add label `breaking change`.
- [ ] Follow the process to [create a deprecation YAML file](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry). - [ ] Follow the process to [create a deprecation YAML file](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry).
- [ ] Add reviewers by the 10th - [ ] Add reviewers by the 10th.
- [ ] When ready to be merged and not later than the 15th, add the ~ready label and @ message the TW for final review and merge. - [ ] When ready to be merged and not later than the 15th, add the ~ready label and @ message the TW for final review and merge.
## Reviewers ## Reviewers
@ -78,5 +82,18 @@ yourself as a reviewer if it's not ready for merge yet.
</details> </details>
When the PM indicates it is ready for merge, all issues have been addressed merge this MR. When the PM indicates it is ready for merge and all issues have been addressed, start the merge process.
- You must merge this MR by the 15th so the Release Post TW lead can run the [deprecations in Docs rake task](https://about.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc) on the 16th
#### Technical writer merge process
The [deprecations doc's `.md` file](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/update/deprecations.md)
must be updated before this MR is merged:
1. Check out the MR's branch (in the [`gitlab-org/gitlab`](https://gitlab.com/gitlab-org/gitlab) project).
1. From the command line (in the branch), run `bin/rake gitlab:docs:compile_deprecations`.
If you want to double check that it worked, you can run `bin/rake gitlab:docs:check_deprecations`
to verify that the doc is up to date.
1. Commit the updated file and push the changes.
1. Set the MR to merge when the pipeline succeeds (or merge if the pipeline is already complete).
If you have trouble running the rake task, check the [troubleshooting steps](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecation-rake-task-troubleshooting).

View file

@ -20,10 +20,10 @@
If you are only adding documentation, do not add any of the following labels: If you are only adding documentation, do not add any of the following labels:
- `~"feature"` - `~"type::feature"`
- `~"frontend"` - `~"frontend"`
- `~"backend"` - `~"backend"`
- `~"bug"` - `~"type::bug"`
- `~"database"` - `~"database"`
These labels cause the MR to be added to code verification QA issues. These labels cause the MR to be added to code verification QA issues.

View file

@ -24,5 +24,5 @@ Please link to the respective test case in the testcases project
/label ~"Quality:test-gap" ~"Quality:EE test gaps" /label ~"Quality:test-gap" ~"Quality:EE test gaps"
<!-- Select the appropriate feature label, ~"feature::addition" for tests added for new features, ~"feature::maintenance" for tests added for existing features --> <!-- Select the appropriate feature label, ~"feature::addition" for tests added for new features, ~"type::maintenance" for tests added for existing features -->
/label ~"feature::addition" ~"feature::maintenance" /label ~"feature::addition" ~"type::maintenance"

View file

@ -33,6 +33,6 @@ This will help keep track of expected cost increases to the [GitLab project aver
### Post-merge ### Post-merge
- [ ] Consider communicating these changes to the broader team following the [communication guideline for pipeline changes](https://about.gitlab.com/handbook/engineering/quality/engineering-productivity-team/#pipeline-changes) - [ ] Consider communicating these changes to the broader team following the [communication guideline for pipeline changes](https://about.gitlab.com/handbook/engineering/quality/engineering-productivity/#pipeline-changes)
/label ~tooling ~"tooling::pipelines" ~"Engineering Productivity" /label ~"type::tooling" ~"tooling::pipelines" ~"Engineering Productivity"

View file

@ -30,7 +30,7 @@ the noise (due to constantly failing tests, flaky tests, and so on) so that new
- [ ] To ensure a faster turnaround, ask in the `#quality` Slack channel for someone to review and merge the merge request, rather than assigning it directly. - [ ] To ensure a faster turnaround, ask in the `#quality` Slack channel for someone to review and merge the merge request, rather than assigning it directly.
<!-- Base labels. --> <!-- Base labels. -->
/label ~"Quality" ~"QA" ~"feature" ~"feature::maintenance" /label ~"Quality" ~"QA" ~"type::maintenance"
<!-- <!--
Choose the stage that appears in the test path, e.g. ~"devops::create" for Choose the stage that appears in the test path, e.g. ~"devops::create" for

View file

@ -19,6 +19,8 @@ tasks:
# ensure gdk.yml has correct instance settings # ensure gdk.yml has correct instance settings
gdk config set gitlab.rails.port 443 gdk config set gitlab.rails.port 443
gdk config set gitlab.rails.https.enabled true gdk config set gitlab.rails.https.enabled true
# make documentation builds available
gdk config set gitlab_docs.enabled true
# reconfigure GDK # reconfigure GDK
echo "$(date) Reconfiguring GDK" | tee -a /workspace/startup.log echo "$(date) Reconfiguring GDK" | tee -a /workspace/startup.log
gdk reconfigure gdk reconfigure
@ -69,15 +71,13 @@ tasks:
printf "Waiting for GitLab at $(gp url 3000) ..." printf "Waiting for GitLab at $(gp url 3000) ..."
# Check /-/readiness which returns JSON, but we're only interested in the exit code # Check /-/readiness which returns JSON, but we're only interested in the exit code
# #
# We use http://localhost:3000 instead of the public hostname because # We use http://localhost:3000 instead of the public hostname because
# it's no longer possible to access as specific cookies are required # it's no longer possible to access as specific cookies are required
until curl --silent --no-buffer --fail http://localhost:3000/-/readiness > /dev/null 2>&1; do printf '.'; sleep 5; done && echo "" until curl --silent --no-buffer --fail http://localhost:3000/-/readiness > /dev/null 2>&1; do printf '.'; sleep 5; done && echo ""
# Give Gitpod a few more seconds to set up everything ... # Give Gitpod a few more seconds to set up everything ...
sleep 5 sleep 5
printf "$(date) GitLab is up (took ~%.1f minutes)\n" "$((10*$SECONDS/60))e-1" | tee -a /workspace/startup.log printf "$(date) GitLab is up (took ~%.1f minutes)\n" "$((10*$SECONDS/60))e-1" | tee -a /workspace/startup.log
gp preview $(gp url 3000) || true gp preview $(gp url 3000) || true
# Speed up backend tests
export GITLAB_TEST_EAGER_LOAD=false
) )
ports: ports:
@ -85,6 +85,8 @@ ports:
onOpen: ignore onOpen: ignore
- port: 3000 # rails-web - port: 3000 # rails-web
onOpen: notify onOpen: notify
- port: 3005 # gitlab-docs
onOpen: notify
- port: 3010 # gitlab-pages - port: 3010 # gitlab-pages
onOpen: ignore onOpen: ignore
- port: 3808 # webpack - port: 3808 # webpack
@ -104,3 +106,4 @@ vscode:
- octref.vetur@0.34.1 - octref.vetur@0.34.1
- dbaeumer.vscode-eslint@2.1.8 - dbaeumer.vscode-eslint@2.1.8
- gitlab.gitlab-workflow@3.24.0 - gitlab.gitlab-workflow@3.24.0
- DavidAnson.vscode-markdownlint@0.44.4

View file

@ -6,6 +6,7 @@ skip_frontmatter: false
exclude: exclude:
- 'vendor/**/*' - 'vendor/**/*'
- 'spec/**/*' - 'spec/**/*'
- 'ee/spec/**/*'
require: require:
- './haml_lint/linter/no_plain_nodes.rb' - './haml_lint/linter/no_plain_nodes.rb'
- './haml_lint/linter/documentation_links.rb' - './haml_lint/linter/documentation_links.rb'

2
.nvmrc
View file

@ -1 +1 @@
14.15.4 14.17.5

View file

@ -106,25 +106,31 @@ RSpec/MultipleMemoizedHelpers:
Naming/FileName: Naming/FileName:
ExpectMatchingDefinition: true ExpectMatchingDefinition: true
CheckDefinitionPathHierarchy: false
Exclude: Exclude:
- 'db/**/*' - '**/*/*.builder'
- 'ee/db/**/*'
- 'spec/**/*'
- 'features/**/*'
- 'ee/spec/**/*'
- 'qa/spec/**/*'
- 'qa/qa/specs/**/*'
- 'qa/bin/*'
- 'ee/bin/*' - 'ee/bin/*'
- 'config.ru'
- 'config/**/*' - 'config/**/*'
- 'ee/config/**/*' - 'ee/config/**/*'
- 'jh/config/**/*'
- 'db/**/*'
- 'ee/db/**/*'
- 'ee/elastic/migrate/*'
- 'lib/tasks/**/*.rake'
- 'ee/lib/tasks/**/*.rake'
- 'lib/generators/**/*' - 'lib/generators/**/*'
- 'locale/unfound_translations.rb'
- 'ee/locale/unfound_translations.rb'
- 'ee/lib/generators/**/*' - 'ee/lib/generators/**/*'
- 'qa/qa/scenario/test/integration/ldap_no_tls.rb' - 'scripts/**/*'
- 'qa/qa/scenario/test/integration/ldap_tls.rb' - 'spec/**/*'
- 'qa/tasks/*' - 'tooling/bin/**/*'
- 'ee/spec/**/*'
- 'jh/spec/**/*'
- 'qa/bin/*'
- 'qa/spec/**/*'
- 'qa/qa/specs/**/*'
- 'qa/tasks/**/*.rake'
- '**/*.ru'
IgnoreExecutableScripts: true IgnoreExecutableScripts: true
AllowedAcronyms: AllowedAcronyms:
@ -146,6 +152,26 @@ Naming/FileName:
- CI - CI
- CD - CD
- OAuth - OAuth
- CSP
- CSV
- SCA
- SAN
- CIDR
- SPDX
- MR
- SSE
- JWT
- HLL
- GPG
- OTP
- GID
- AR
- RSpec
- ECDSA
- ED25519
- GitLab
- JavaScript
- VSCode
# default ones: # default ones:
- CLI - CLI
- DSL - DSL
@ -682,10 +708,6 @@ Cop/UserAdmin:
- 'spec/**/*.rb' - 'spec/**/*.rb'
- 'ee/spec/**/*.rb' - 'ee/spec/**/*.rb'
Performance/OpenStruct:
Exclude:
- 'ee/spec/**/*.rb'
# See https://gitlab.com/gitlab-org/gitlab/-/issues/327495 # See https://gitlab.com/gitlab-org/gitlab/-/issues/327495
Style/RegexpLiteral: Style/RegexpLiteral:
Enabled: false Enabled: false
@ -712,6 +734,10 @@ QA/SelectorUsage:
Exclude: Exclude:
- 'spec/rubocop/**/*_spec.rb' - 'spec/rubocop/**/*_spec.rb'
QA/DuplicateTestcaseLink:
# this cop is executed in static-analysis.gitlab-ci.yml since it cannot be run in parallel
Enabled: false
Performance/ActiveRecordSubtransactions: Performance/ActiveRecordSubtransactions:
Exclude: Exclude:
- 'spec/**/*.rb' - 'spec/**/*.rb'

View file

@ -32,7 +32,6 @@ Rails/SaveBang:
- 'ee/spec/models/approval_project_rule_spec.rb' - 'ee/spec/models/approval_project_rule_spec.rb'
- 'ee/spec/models/burndown_spec.rb' - 'ee/spec/models/burndown_spec.rb'
- 'ee/spec/models/elasticsearch_indexed_namespace_spec.rb' - 'ee/spec/models/elasticsearch_indexed_namespace_spec.rb'
- 'ee/spec/models/epic_spec.rb'
- 'ee/spec/models/gitlab_subscription_spec.rb' - 'ee/spec/models/gitlab_subscription_spec.rb'
- 'ee/spec/models/issue_spec.rb' - 'ee/spec/models/issue_spec.rb'
- 'ee/spec/models/label_note_spec.rb' - 'ee/spec/models/label_note_spec.rb'
@ -40,7 +39,6 @@ Rails/SaveBang:
- 'ee/spec/models/license_spec.rb' - 'ee/spec/models/license_spec.rb'
- 'ee/spec/models/merge_request_spec.rb' - 'ee/spec/models/merge_request_spec.rb'
- 'ee/spec/models/merge_train_spec.rb' - 'ee/spec/models/merge_train_spec.rb'
- 'spec/models/packages/package_spec.rb'
- 'ee/spec/models/project_ci_cd_setting_spec.rb' - 'ee/spec/models/project_ci_cd_setting_spec.rb'
- 'ee/spec/models/project_spec.rb' - 'ee/spec/models/project_spec.rb'
- 'ee/spec/models/protected_environment_spec.rb' - 'ee/spec/models/protected_environment_spec.rb'
@ -136,32 +134,6 @@ Rails/SaveBang:
- 'spec/lib/gitlab/middleware/go_spec.rb' - 'spec/lib/gitlab/middleware/go_spec.rb'
- 'spec/lib/gitlab/shard_health_cache_spec.rb' - 'spec/lib/gitlab/shard_health_cache_spec.rb'
- 'spec/mailers/notify_spec.rb' - 'spec/mailers/notify_spec.rb'
- 'spec/models/clusters/applications/helm_spec.rb'
- 'spec/models/design_management/version_spec.rb'
- 'spec/models/environment_spec.rb'
- 'spec/models/event_spec.rb'
- 'spec/models/fork_network_spec.rb'
- 'spec/models/generic_commit_status_spec.rb'
- 'spec/models/grafana_integration_spec.rb'
- 'spec/models/group_spec.rb'
- 'spec/models/identity_spec.rb'
- 'spec/models/jira_import_state_spec.rb'
- 'spec/models/namespace_spec.rb'
- 'spec/models/note_spec.rb'
- 'spec/models/notification_setting_spec.rb'
- 'spec/models/operations/feature_flag_scope_spec.rb'
- 'spec/models/operations/feature_flags/strategy_spec.rb'
- 'spec/models/operations/feature_flags/user_list_spec.rb'
- 'spec/models/pages_domain_spec.rb'
- 'spec/models/protectable_dropdown_spec.rb'
- 'spec/models/redirect_route_spec.rb'
- 'spec/models/release_spec.rb'
- 'spec/models/remote_mirror_spec.rb'
- 'spec/models/resource_milestone_event_spec.rb'
- 'spec/models/route_spec.rb'
- 'spec/models/sentry_issue_spec.rb'
- 'spec/models/snippet_spec.rb'
- 'spec/models/upload_spec.rb'
Rails/TimeZone: Rails/TimeZone:
Enabled: true Enabled: true
@ -204,7 +176,6 @@ Rails/TimeZone:
- 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_renamed_event_spec.rb' - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_renamed_event_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb' - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_cursor/events/reset_checksum_event_spec.rb' - 'ee/spec/lib/gitlab/geo/log_cursor/events/reset_checksum_event_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_cursor/events/upload_deleted_event_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_cursor/logger_spec.rb' - 'ee/spec/lib/gitlab/geo/log_cursor/logger_spec.rb'
- 'ee/spec/lib/gitlab/git_access_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb'
- 'ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb' - 'ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
@ -1165,6 +1136,7 @@ Gitlab/NamespacedClass:
- 'app/models/members/group_member.rb' - 'app/models/members/group_member.rb'
- 'app/models/members/last_group_owner_assigner.rb' - 'app/models/members/last_group_owner_assigner.rb'
- 'app/models/members/project_member.rb' - 'app/models/members/project_member.rb'
- 'app/models/members/member_task.rb'
- 'app/models/members_preloader.rb' - 'app/models/members_preloader.rb'
- 'app/models/merge_request.rb' - 'app/models/merge_request.rb'
- 'app/models/merge_request_assignee.rb' - 'app/models/merge_request_assignee.rb'
@ -2199,21 +2171,6 @@ Cop/UserAdmin:
- 'lib/gitlab/visibility_level.rb' - 'lib/gitlab/visibility_level.rb'
- 'qa/qa/runtime/api/client.rb' - 'qa/qa/runtime/api/client.rb'
# WIP https://gitlab.com/gitlab-org/gitlab/-/issues/325744
Performance/OpenStruct:
Exclude:
- 'Guardfile'
- 'app/finders/snippets_finder.rb'
- 'app/helpers/application_settings_helper.rb'
- 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb'
- 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb'
- 'lib/api/wikis.rb'
- 'lib/gitlab/ci/ansi2html.rb'
- 'lib/gitlab/git/diff_collection.rb'
- 'lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb'
- 'lib/gitlab/testing/request_inspector_middleware.rb'
- 'lib/mattermost/session.rb'
# WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/324629 # WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/324629
Gitlab/DelegatePredicateMethods: Gitlab/DelegatePredicateMethods:
Exclude: Exclude:
@ -2443,28 +2400,14 @@ Database/MultipleDatabases:
- 'lib/gitlab/database/load_balancing/sticking.rb' - 'lib/gitlab/database/load_balancing/sticking.rb'
- 'lib/gitlab/database/migrations/observers/migration_observer.rb' - 'lib/gitlab/database/migrations/observers/migration_observer.rb'
- 'lib/gitlab/database/migrations/observers/query_log.rb' - 'lib/gitlab/database/migrations/observers/query_log.rb'
- 'lib/gitlab/database/multi_threaded_migration.rb'
- 'lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table.rb' - 'lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table.rb'
- 'lib/gitlab/database/partitioning/monthly_strategy.rb'
- 'lib/gitlab/database/partitioning/partition_manager.rb'
- 'lib/gitlab/database/partitioning/partition_creator.rb'
- 'lib/gitlab/database/partitioning/replace_table.rb'
- 'lib/gitlab/database/partitioning/time_partition.rb'
- 'lib/gitlab/database/postgres_hll/batch_distinct_counter.rb'
- 'lib/gitlab/database/postgresql_adapter/dump_schema_versions_mixin.rb'
- 'lib/gitlab/database/postgresql_database_tasks/load_schema_versions_mixin.rb'
- 'lib/gitlab/database.rb' - 'lib/gitlab/database.rb'
- 'lib/gitlab/database/reindexing/concurrent_reindex.rb'
- 'lib/gitlab/database/reindexing/reindex_concurrently.rb'
- 'lib/gitlab/database/schema_cache_with_renamed_table.rb' - 'lib/gitlab/database/schema_cache_with_renamed_table.rb'
- 'lib/gitlab/database/schema_migrations/context.rb'
- 'lib/gitlab/database/schema_version_files.rb'
- 'lib/gitlab/database/unidirectional_copy_trigger.rb'
- 'lib/gitlab/database/with_lock_retries.rb' - 'lib/gitlab/database/with_lock_retries.rb'
- 'lib/gitlab/gitlab_import/importer.rb' - 'lib/gitlab/gitlab_import/importer.rb'
- 'lib/gitlab/health_checks/db_check.rb' - 'lib/gitlab/health_checks/db_check.rb'
- 'lib/gitlab/import_export/base/relation_factory.rb' - 'lib/gitlab/import_export/base/relation_factory.rb'
- 'lib/gitlab/import_export/relation_tree_restorer.rb' - 'lib/gitlab/import_export/group/relation_tree_restorer.rb'
- 'lib/gitlab/legacy_github_import/importer.rb' - 'lib/gitlab/legacy_github_import/importer.rb'
- 'lib/gitlab/metrics/samplers/database_sampler.rb' - 'lib/gitlab/metrics/samplers/database_sampler.rb'
- 'lib/gitlab/seeder.rb' - 'lib/gitlab/seeder.rb'
@ -2604,3 +2547,72 @@ Rails/IncludeUrlHelper:
- 'spec/lib/banzai/filter/issuable_state_filter_spec.rb' - 'spec/lib/banzai/filter/issuable_state_filter_spec.rb'
- 'spec/lib/banzai/filter/reference_redactor_filter_spec.rb' - 'spec/lib/banzai/filter/reference_redactor_filter_spec.rb'
- 'spec/lib/banzai/reference_redactor_spec.rb' - 'spec/lib/banzai/reference_redactor_spec.rb'
# TODO issue: https://gitlab.com/gitlab-org/gitlab/-/issues/344279
Style/OpenStructUse:
Exclude:
- 'app/helpers/application_settings_helper.rb'
- 'ee/spec/db/production/license_spec.rb'
- 'ee/spec/features/projects/new_project_spec.rb'
- 'ee/spec/finders/template_finder_spec.rb'
- 'ee/spec/graphql/ee/resolvers/board_lists_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/board_groupings/epics_resolvers_spec.rb'
- 'ee/spec/helpers/ee/blob_helper_spec.rb'
- 'ee/spec/lib/gitlab/auth/group_saml/failure_handler_spec.rb'
- 'ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb'
- 'ee/spec/requests/api/ldap_spec.rb'
- 'lib/api/wikis.rb'
- 'lib/gitlab/git/diff_collection.rb'
- 'lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb'
- 'lib/gitlab/testing/request_inspector_middleware.rb'
- 'lib/mattermost/session.rb'
- 'spec/bin/feature_flag_spec.rb'
- 'spec/controllers/admin/clusters_controller_spec.rb'
- 'spec/controllers/groups/clusters_controller_spec.rb'
- 'spec/controllers/import/fogbugz_controller_spec.rb'
- 'spec/controllers/import/gitlab_controller_spec.rb'
- 'spec/controllers/projects/clusters_controller_spec.rb'
- 'spec/dependencies/omniauth_saml_spec.rb'
- 'spec/factories/go_module_versions.rb'
- 'spec/factories/wiki_pages.rb'
- 'spec/features/projects/clusters/gcp_spec.rb'
- 'spec/features/projects/clusters_spec.rb'
- 'spec/finders/template_finder_spec.rb'
- 'spec/graphql/mutations/branches/create_spec.rb'
- 'spec/graphql/mutations/clusters/agent_tokens/create_spec.rb'
- 'spec/graphql/mutations/clusters/agents/create_spec.rb'
- 'spec/graphql/mutations/clusters/agents/delete_spec.rb'
- 'spec/graphql/mutations/commits/create_spec.rb'
- 'spec/graphql/mutations/merge_requests/accept_spec.rb'
- 'spec/graphql/mutations/merge_requests/create_spec.rb'
- 'spec/graphql/types/range_input_type_spec.rb'
- 'spec/helpers/application_settings_helper_spec.rb'
- 'spec/helpers/profiles_helper_spec.rb'
- 'spec/initializers/doorkeeper_spec.rb'
- 'spec/lib/gitlab/auth/o_auth/provider_spec.rb'
- 'spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb'
- 'spec/lib/gitlab/database/migrations/runner_spec.rb'
- 'spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb'
- 'spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb'
- 'spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb'
- 'spec/lib/gitlab/graphql/pagination/keyset/connection_generic_keyset_spec.rb'
- 'spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb'
- 'spec/lib/gitlab/legacy_github_import/project_creator_spec.rb'
- 'spec/lib/gitlab/quick_actions/command_definition_spec.rb'
- 'spec/lib/gitlab/quick_actions/dsl_spec.rb'
- 'spec/lib/gitlab/relative_positioning/range_spec.rb'
- 'spec/models/design_management/design_action_spec.rb'
- 'spec/models/design_management/design_at_version_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/presenters/packages/nuget/search_results_presenter_spec.rb'
- 'spec/requests/api/import_github_spec.rb'
- 'spec/services/packages/nuget/metadata_extraction_service_spec.rb'
- 'spec/services/projects/import_service_spec.rb'
- 'spec/services/system_note_service_spec.rb'
- 'spec/support/helpers/import_spec_helper.rb'
- 'spec/support/helpers/login_helpers.rb'
- 'spec/support/helpers/repo_helpers.rb'
- 'spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb'
- 'spec/tooling/rspec_flaky/flaky_example_spec.rb'
- 'tooling/rspec_flaky/flaky_example.rb'

View file

@ -208,12 +208,6 @@ Metrics/CyclomaticComplexity:
Metrics/PerceivedComplexity: Metrics/PerceivedComplexity:
Max: 25 Max: 25
# Offense count: 196
# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
Naming/FileName:
Enabled: false
# Offense count: 11 # Offense count: 11
# Configuration parameters: EnforcedStyle. # Configuration parameters: EnforcedStyle.
# SupportedStyles: lowercase, uppercase # SupportedStyles: lowercase, uppercase

View file

@ -13,27 +13,6 @@
"./scripts/frontend/stylelint/stylelint-utility-classes.js", "./scripts/frontend/stylelint/stylelint-utility-classes.js",
], ],
"rules":{ "rules":{
"at-rule-disallowed-list": ["extend"],
"max-nesting-depth": [
3,
{
"ignoreAtRules":[
"each",
"media",
"supports",
"include"
],
"severity":"warning"
}
],
"selector-max-compound-selectors":[3, { "severity": "warning" }],
"stylelint-gitlab/utility-classes":[true,{ "severity": "warning" }], "stylelint-gitlab/utility-classes":[true,{ "severity": "warning" }],
"declaration-block-no-duplicate-properties": [
true,
{
"ignore": ["consecutive-duplicates"]
}
],
"no-eol-whitespace": true,
} }
} }

View file

@ -2,20 +2,547 @@
documentation](doc/development/changelog.md) for instructions on adding your own documentation](doc/development/changelog.md) for instructions on adding your own
entry. entry.
## 14.4.4 (2021-12-03) ## 14.5.2 (2021-12-03)
No changes. No changes.
## 14.4.3 (2021-12-01) ## 14.5.1 (2021-12-01)
### Fixed (6 changes) ### Fixed (4 changes)
- [Check validation only if new record of license](gitlab-org/gitlab@5e0834a921dad1b1e07119de629ea44eb0ad5733) ([merge request](gitlab-org/gitlab!75421)) **GitLab Enterprise Edition** - [Check validation for license only if new record](gitlab-org/gitlab@3e34c2dc431a2b1c1828f5154a4d2be350359b16) ([merge request](gitlab-org/gitlab!75498)) **GitLab Enterprise Edition**
- [Fix for hexadecimal branch deletion](gitlab-org/gitlab@fc3c2f211d5a2f190032c4d0109e2bcb31050b4d) ([merge request](gitlab-org/gitlab!75421)) - [Fix for hexadecimal branch deletion](gitlab-org/gitlab@eb74cd44edac0c16c44aa11d710b742586c31741) ([merge request](gitlab-org/gitlab!75498))
- [Geo - Fix no repo error message for group-level wikis](gitlab-org/gitlab@bdf3a712a4bfe245dfa7e7a90c24f2fdb482e309) ([merge request](gitlab-org/gitlab!75421)) **GitLab Enterprise Edition** - [Fix the SSL_CERT_DIR logging on git operations](gitlab-org/gitlab@6ef3b63ad5e58baa0e0e0a922fe43a2fb4494508) ([merge request](gitlab-org/gitlab!75498))
- [Prevent Git operations from checking replication lag on non-Geo-secondary sites](gitlab-org/gitlab@c158c01027f61aadd1c72f0817731d368d0d58cc) ([merge request](gitlab-org/gitlab!75421)) **GitLab Enterprise Edition** - [Support Action Cable on GCP Memorystore](gitlab-org/gitlab@d62aa5bcbad5851209a9d248ca267d0c46d1e7c9) ([merge request](gitlab-org/gitlab!75498))
- [Allow SSO callbacks through maintenance mode](gitlab-org/gitlab@1acae9807b1808ac360a4be098a50c547c9540b9) by @dzaporozhets ([merge request](gitlab-org/gitlab!75421)) **GitLab Enterprise Edition**
- [Fix 2FA setup for LDAP users](gitlab-org/gitlab@9b9a7230aed3ffeef3e8f608dd1a569397c71684) ([merge request](gitlab-org/gitlab!75421)) ## 14.5.0 (2021-11-19)
### Added (113 changes)
- [Show warning for markdown structure changes](gitlab-org/gitlab@9b44058536cff8e36996dc04820636a3c39cef2f) ([merge request](gitlab-org/gitlab!71064))
- [Implement Pipeline Editor Walkthrough experiment](gitlab-org/gitlab@2ab23a789a355eb2f1a923b263f2194f72665b5f) ([merge request](gitlab-org/gitlab!73050))
- [Add endpoint for activating all pending members](gitlab-org/gitlab@fb949a578e625f21242fccf20ad8883efb425e56) ([merge request](gitlab-org/gitlab!73849)) **GitLab Enterprise Edition**
- [Add Yaml Source Editor Extension](gitlab-org/gitlab@fe4f8022b129997263cc3e26c597b4c77df878a7) ([merge request](gitlab-org/gitlab!72764))
- [Introduced the Source Editor Instance module](gitlab-org/gitlab@7dbdf10e35cf793e0219344d0830dfcbb229667d) ([merge request](gitlab-org/gitlab!74566))
- [Add total counters in each runner type tab](gitlab-org/gitlab@b852ba5b2da2cabae8eaf5bf1f4f9b950b0576de) ([merge request](gitlab-org/gitlab!74196))
- [Add customer relations organizations viewer](gitlab-org/gitlab@9db2c7fef64053f78eebbc6bf12978ca46d08979) by @leetickett ([merge request](gitlab-org/gitlab!73508))
- [Add customer relations contacts viewer](gitlab-org/gitlab@22a90aa556d503e617b22a8795754197a807dab1) by @leetickett ([merge request](gitlab-org/gitlab!73429))
- [Add endpoint for activating an waiting member](gitlab-org/gitlab@c9857c9dc7f3196ee14f9ff40bd3bc8a4382329e) ([merge request](gitlab-org/gitlab!73845)) **GitLab Enterprise Edition**
- [Add keyset pagination for tags API](gitlab-org/gitlab@e9c3b012dcba273ec9eb2c5aaa4c8163d295cd9a) ([merge request](gitlab-org/gitlab!74239))
- [Enable loose_foreign_key_cleanup FF by default](gitlab-org/gitlab@8e8864cf97eae6f3e9d8bd1187d743d88f243fe9) ([merge request](gitlab-org/gitlab!74499))
- [Allow reporters to see the service desk email address](gitlab-org/gitlab@b12fcd0eccdc9fc66ec0647d7939eb53310a374d) ([merge request](gitlab-org/gitlab!74179))
- [Upgrade GitLab Pages to 1.48.0](gitlab-org/gitlab@a8e068be055bc0bb5805321b175dc6f70278461b) ([merge request](gitlab-org/gitlab!74483))
- [Implement deep linking for project VSA filters](gitlab-org/gitlab@cd4c047cc1c70529c2782b89f5bc9662b8978445) ([merge request](gitlab-org/gitlab!72777))
- [Feature: Let OmniAuth support DingTalk](gitlab-org/gitlab@b1999a4b44c0e6fb2290a4386d7cd0d6a0f0f953) by @icbd ([merge request](gitlab-org/gitlab!72071))
- [Add group SAML configuration changes to group audit events](gitlab-org/gitlab@490388aa861ef9e1a1779f88653e2706739f6fcf) ([merge request](gitlab-org/gitlab!73656)) **GitLab Enterprise Edition**
- [Add migration for backfilling project namespaces](gitlab-org/gitlab@6af415608ee18595c057f977cea2cc263eb344f2) ([merge request](gitlab-org/gitlab!72527))
- [Audit changes to compliance frameworks](gitlab-org/gitlab@77d672bb1177b59c7b62a41a49b018ac5048c9be) ([merge request](gitlab-org/gitlab!74292)) **GitLab Enterprise Edition**
- [Enable dependency_proxy_manifest_workhorse by dflt](gitlab-org/gitlab@8f22a47b4176c13bf7f39e11df1bef93cfcd73b7) ([merge request](gitlab-org/gitlab!73770))
- [Upgrade GitLab Pages to 1.47.0](gitlab-org/gitlab@a2cf642816798d61d244a588a6f969c54c776c51) ([merge request](gitlab-org/gitlab!74280))
- [Add exists support to includes:rules CI config](gitlab-org/gitlab@c73f2fd42120fb6104e8e29f8de6de12d503eb18) ([merge request](gitlab-org/gitlab!71745))
- [Enable configure_iac_scanning_via_mr by default](gitlab-org/gitlab@86d830fa9345b17cd86a1e5878a4c0ed7ec711b3) ([merge request](gitlab-org/gitlab!73268))
- [Allow Minimal Access role for top-level SAML Group Links](gitlab-org/gitlab@2b2a80a2c0ffb36ce32339521294ef335410c0cd) ([merge request](gitlab-org/gitlab!72825)) **GitLab Enterprise Edition**
- [Add slash command to promote issue to incident](gitlab-org/gitlab@9a27a599a83ff0af1006be31d00ab4c6579da579) ([merge request](gitlab-org/gitlab!73992))
- [Add member approval service](gitlab-org/gitlab@5fcbee2d37cf1243232f672ddbb7e849fa1ad044) ([merge request](gitlab-org/gitlab!73483)) **GitLab Enterprise Edition**
- [Enable linear GroupPlanPreloader ancestors queries](gitlab-org/gitlab@6905dd1c49c1b045cb555bcb1ea23e72f435d325) ([merge request](gitlab-org/gitlab!72594)) **GitLab Enterprise Edition**
- [Create default merge commit message using customizable template](gitlab-org/gitlab@61729d8adb84b735feac21ab4213786408b4e05a) by @trakos ([merge request](gitlab-org/gitlab!64437))
- [GithubImporter: Thread diff notes](gitlab-org/gitlab@2b6b33c4bf0a5c18905e556edcf9510f315bda74) ([merge request](gitlab-org/gitlab!73595))
- [Query all partitions when loading loose FK records](gitlab-org/gitlab@44af21f9488cb99dfd4c646408a5ec420e29cf45) ([merge request](gitlab-org/gitlab!74072))
- [Remove flag that hides event streaming from graphQL schema](gitlab-org/gitlab@eba5b07100d5255d250137ed1f8f356fca70664f) ([merge request](gitlab-org/gitlab!74092)) **GitLab Enterprise Edition**
- [Add opensource plan to database](gitlab-org/gitlab@1e8248435b2d9a447cbb268cc66f43ca75a983f9) ([merge request](gitlab-org/gitlab!73925))
- [Add wiki migration to projects and groups](gitlab-org/gitlab@9acfe49a03331800cbc2aaeb5ced38341471f788) ([merge request](gitlab-org/gitlab!72146)) **GitLab Enterprise Edition**
- [Send invite team email after a root group is created](gitlab-org/gitlab@e5f31632956ab62f37850c676cd2ee3d84f3c689) ([merge request](gitlab-org/gitlab!72470))
- [Render inherited templates from group in service desk](gitlab-org/gitlab@9887a3617731374cea9ef4599bb75f4d2325e6a6) ([merge request](gitlab-org/gitlab!71176))
- [Add indexes to aggregated VSA tables](gitlab-org/gitlab@3e11d29f59fd08d1ffbf23de6665890cf3e788a9) ([merge request](gitlab-org/gitlab!73427))
- [Add required label to tag name in release form](gitlab-org/gitlab@9d268fe047e9c20a5bf3a6bf651c1bb1e98276e5) ([merge request](gitlab-org/gitlab!73759))
- [Add modal to warn group owners the impact of changing user cap](gitlab-org/gitlab@16b44b500f2394578d9c4e78d2561fa36d3405bf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72805)) **GitLab Enterprise Edition**
- [Add issues set crm contacts service and graphql mutation](gitlab-org/gitlab@6b0c5e6ccbc849ecc65a8fe3a704b06407e54f39) by @leetickett ([merge request](gitlab-org/gitlab!72686))
- [Add pagination support for FindAllTagsRequest](gitlab-org/gitlab@440c1357fcea2a3fd1b61a33c7db97d21ebc2c7e) ([merge request](gitlab-org/gitlab!70199))
- [Enable linear ancestors for groups](gitlab-org/gitlab@524d55023cd37cd8697bd5b97c619c4d49ff006f) ([merge request](gitlab-org/gitlab!72490))
- [Add note regarding topic visibility to admin doc](gitlab-org/gitlab@5ae0eb97ec6f1108836f472d9484c1a037b8d02a) by @wwwjon ([merge request](gitlab-org/gitlab!73934))
- [Track Shared Runners duration separate from CI minutes consumption](gitlab-org/gitlab@2d79fae14d5584a6885da4585bfab7b033e75ea9) ([merge request](gitlab-org/gitlab!73933)) **GitLab Enterprise Edition**
- [Show blocked icon on epic blocked issues](gitlab-org/gitlab@12a16d1895afd13687c0c78b714beb0ea6dd940a) ([merge request](gitlab-org/gitlab!72229)) **GitLab Enterprise Edition**
- [Add Sentry configs to application settings](gitlab-org/gitlab@8b15bbbd5acf1537c7d2516b592a3d81ed7b6454) ([merge request](gitlab-org/gitlab!73381))
- [Add helpful text to project select modal](gitlab-org/gitlab@3d3dbe631de4a6d8633fe77e76033f853c8c8df5) ([merge request](gitlab-org/gitlab!73766))
- [Enable linear ApplicationSettings ancestors queries](gitlab-org/gitlab@6ab1a7ae58ba829700230f8016db6ee8c39c0855) ([merge request](gitlab-org/gitlab!72500)) **GitLab Enterprise Edition**
- [Enable pipeline_editor_mini_graph feature flag by default](gitlab-org/gitlab@779b703805f0dc5aa7bbcf13b075738f158b9b03) ([merge request](gitlab-org/gitlab!73612))
- [Limit issues one user can quickly create using service desk](gitlab-org/gitlab@cdbd23328c311270873dbab346c322c494edb43f) ([merge request](gitlab-org/gitlab!73346))
- [Add Helm metadata to GraphQL](gitlab-org/gitlab@2b58d6ccd253e73fdbed3d4892ff28e8ecee1f37) by @sathieu ([merge request](gitlab-org/gitlab!71963))
- [Enable linear EE Group ancestors queries](gitlab-org/gitlab@d2cf27b20fbf7dcd6ae80c2d4848694015426fd3) ([merge request](gitlab-org/gitlab!73532)) **GitLab Enterprise Edition**
- [Remove redundant index_events_on_target_type_and_target_id](gitlab-org/gitlab@7c3d5fb203591cbb6cb6ef8833965ea394b960e2) ([merge request](gitlab-org/gitlab!73712))
- [Rollout user namespace & project tracking](gitlab-org/gitlab@57c880783d323587b1b38f38f97ecdcbce38a3b6) ([merge request](gitlab-org/gitlab!73677))
- [Unblock LDAP blocked user on sign-in with other auth methods](gitlab-org/gitlab@8190473e461f1bf0409108082701d073def1be03) ([merge request](gitlab-org/gitlab!73471))
- [Add queuing mechanic for reindexing](gitlab-org/gitlab@446ebbc9549c6f00529e2238d2b1adc1734968e3) ([merge request](gitlab-org/gitlab!73480))
- [Topic management: add link to topic detail page](gitlab-org/gitlab@db82cd254c0667a8fd9bcb0c762dfb7c14767a82) by @wwwjon ([merge request](gitlab-org/gitlab!73648))
- [Add jobArtifacts to PipelineType](gitlab-org/gitlab@22787ff46e8a5935a9904167fdc5c758372c8390) by @genctys ([merge request](gitlab-org/gitlab!72412))
- [Track processed loose FK records](gitlab-org/gitlab@dac93679a0374abbd138263d545f1db7c06fb422) ([merge request](gitlab-org/gitlab!73541))
- [Update user attributes for Group SAML enterprise users](gitlab-org/gitlab@d1db69ca88fc8fe78b3e6626e55e503bbbeee7ce) ([merge request](gitlab-org/gitlab!72792)) **GitLab Enterprise Edition**
- [Add 'show' page for topic](gitlab-org/gitlab@3b325e920700a30e6cda601462fcce1e87ab6614) by @wwwjon ([merge request](gitlab-org/gitlab!71830))
- [Record transaction duration during migrations](gitlab-org/gitlab@3afb6966876aaa3738b13524ea3406cd93e070fa) ([merge request](gitlab-org/gitlab!72181))
- [Add corpus create mutation and service](gitlab-org/gitlab@07e6c2ebee1c9d02e5bb9c5396b8dc65306f1bb4) ([merge request](gitlab-org/gitlab!71992)) **GitLab Enterprise Edition**
- [Update scroll position to synchronize the Jump To Next button](gitlab-org/gitlab@65e7685f25228dd1aa9eef7c86c3492503f33340) ([merge request](gitlab-org/gitlab!71508))
- [Add created_at to the GraphQL LicenseType](gitlab-org/gitlab@53256ffebba0a407c1219e11f2ad6805f7f3c026) ([merge request](gitlab-org/gitlab!72905)) **GitLab Enterprise Edition**
- [Speed up searching environments by ref deployed](gitlab-org/gitlab@3dac2744978d1e60e625a73756011277ce3de51d) ([merge request](gitlab-org/gitlab!72781))
- [Add customer relations menu item and root apps](gitlab-org/gitlab@5bcce5792a2aa237e3004f12ace933bec4535885) by @leetickett ([merge request](gitlab-org/gitlab!72787))
- [Enable linear ParticipantsService ancestors queries](gitlab-org/gitlab@e910d9e20b0399075fdb5c3185e92030af4adeec) ([merge request](gitlab-org/gitlab!72593))
- [Enable linear MembersFinder ancestors queries](gitlab-org/gitlab@9af3cdf155b92a90ab067177ba0a8153da085826) ([merge request](gitlab-org/gitlab!72592))
- [Promote empty_repo_upload experiment](gitlab-org/gitlab@396f2c495369c354f6d4d8f76a2922c9920ebac0) ([merge request](gitlab-org/gitlab!73111))
- [Adding Special diff rendering for .ipynb notebooks](gitlab-org/gitlab@46a0f612b0d4cefb8ebdfa93864622ea0b94b727) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71477))
- [VSA: Add deployment frequency links](gitlab-org/gitlab@fb9c7aaa932c11a25b9c914a0992f75c805a685c) ([merge request](gitlab-org/gitlab!72485)) **GitLab Enterprise Edition**
- [Enables the mr_changes_fluid_layout flag by default](gitlab-org/gitlab@0f3a585321a79df4925477157613d4ce49fc2842) ([merge request](gitlab-org/gitlab!73261))
- [Adds vulnerability state to Vulnerability-Check](gitlab-org/gitlab@586e14b7462ce11bf69ef233279f9875caa5e73b) ([merge request](gitlab-org/gitlab!72405))
- [Enable logging of Sidekiq bulk job insertions](gitlab-org/gitlab@4fea71a9a5da31c3fa049cb578f7a7c48c734d45) ([merge request](gitlab-org/gitlab!73223))
- [Remove group_authorized_agents feature flag](gitlab-org/gitlab@a8cb522b6b0ab8d9d46c288d6988712e90530b65) ([merge request](gitlab-org/gitlab!71441))
- [Add Prometheus metrics for loose foreign keys](gitlab-org/gitlab@3076b64925711a2900110ddd63e45a660b6b9537) ([merge request](gitlab-org/gitlab!73192))
- [Include state_id when gathering VSA data](gitlab-org/gitlab@f576360f0921ac39b827463985a94797fae729af) ([merge request](gitlab-org/gitlab!72974))
- [Loose foreign key definition experiment](gitlab-org/gitlab@d906530828b3045b0449a1ff4a8213f0571342ce) ([merge request](gitlab-org/gitlab!73146))
- [Enable real-time issue assignees by default](gitlab-org/gitlab@099f9e0e513190bed76863dd6af1dbae6591a8f4) ([merge request](gitlab-org/gitlab!71953))
- [Feature: add user track script entry point](gitlab-org/gitlab@697834c6e26857cda5e66efa069a12cd3408fd24) by @orozot ([merge request](gitlab-org/gitlab!73097))
- [Fix spec to properly support many databases](gitlab-org/gitlab@3bdf92cb1ceefd0969025bf17a0f042dffa9cbca) ([merge request](gitlab-org/gitlab!70063))
- [Enable group-level MR approval settings by default](gitlab-org/gitlab@b20b34405af236b1b2e8b334466224e3c7055095) ([merge request](gitlab-org/gitlab!73058)) **GitLab Enterprise Edition**
- [Enable linear GroupTree ancestors queries](gitlab-org/gitlab@a532cfbde60dab31467cff218db51d9178de9484) ([merge request](gitlab-org/gitlab!72494))
- [Annotate DAST models strings for localization](gitlab-org/gitlab@f85a7cbb5a358dfd2d4c5a4b9385c3ab0e50458f) ([merge request](gitlab-org/gitlab!72799)) **GitLab Enterprise Edition**
- [Persist credit card network](gitlab-org/gitlab@44a6f14acf300e6d7ed18d6c1b417cb34a4ebf5a) ([merge request](gitlab-org/gitlab!72272))
- [Adds DB column for merge request assignee state](gitlab-org/gitlab@11cf2cd3c5c5d01f29ba55dc3cc305782cdcb1e7) ([merge request](gitlab-org/gitlab!72677))
- [Add native systemd units](gitlab-org/gitlab@857efa0d218a883a53c0f4075492d2f4af9a89ab) by @behrmann ([merge request](gitlab-org/gitlab!53847))
- [Clean up migration to populate commit users](gitlab-org/gitlab@9800171fc1aba6a3e5fd5e408b60bce82c4d3954) ([merge request](gitlab-org/gitlab!72219))
- [Enabled variables for CI services](gitlab-org/gitlab@a0b96c07d0fa21a88aaf36a752328a16cd6c54bf) by @ST-Apps1 ([merge request](gitlab-org/gitlab!72025))
- [Add runtime_runner_features column to ci_builds_metadata](gitlab-org/gitlab@1632f48e944728844e37514c531625d856e4bb27) ([merge request](gitlab-org/gitlab!72378))
- [Add metric for users associating group milestones to releases](gitlab-org/gitlab@5618ea7a90f2a74e1c548c9a570c3299aae35048) ([merge request](gitlab-org/gitlab!71650))
- [Loose foreign key worker implementation](gitlab-org/gitlab@1a1e4bdf8267aceee709c1d20509151ef8ab2366) ([merge request](gitlab-org/gitlab!69165))
- [Added kaniko ci template to build docker images](gitlab-org/gitlab@91a10b11726bb27d2652b4705a7b9e6b9db308dd) ([merge request](gitlab-org/gitlab!72400))
- [Invite members for task experiment](gitlab-org/gitlab@56afab221043f7199cb7de4b434ac6c0c2998988) ([merge request](gitlab-org/gitlab!69299))
- [Remove FF verification_state_backfill_worker](gitlab-org/gitlab@9726601c0273c7a30b223cbb6f7a26a42b204330) ([merge request](gitlab-org/gitlab!72762)) **GitLab Enterprise Edition**
- [Add 'tencent_serverless_framework' to built-in project template](gitlab-org/gitlab@69f2c1d5b641fee434fe65ae3e0ba3fe8b856b98) ([merge request](gitlab-org/gitlab!71458))
- [Merge branch 'mw/clearup-ff_group_membership_export' into 'master'](gitlab-org/gitlab@1222dd099b01226f05c92f9dbcde2c5207c5ba1c) ([merge request](gitlab-org/gitlab!72624)) **GitLab Enterprise Edition**
- [Allow custom support email without configuring custom project suffix](gitlab-org/gitlab@6bcf1b17da2e28ceb6bfa644d6643d52f3bb4f98) ([merge request](gitlab-org/gitlab!71940))
- [Add median lead time for changes to VSA](gitlab-org/gitlab@b26ee08d7910092308b429378aff7f84e69e8b6b) ([merge request](gitlab-org/gitlab!72283)) **GitLab Enterprise Edition**
- [Remove ff_group_membership_export flag](gitlab-org/gitlab@445a68ce019b072bc6268a4b141d90daa6b80a52) ([merge request](gitlab-org/gitlab!72624)) **GitLab Enterprise Edition**
- [Move Agent usage metrics to Core](gitlab-org/gitlab@ca2e56efc791c9e67ddc22e7c83faeea28383fd6) ([merge request](gitlab-org/gitlab!72086))
- [Enable Agent creation in Core](gitlab-org/gitlab@fc6adf3d27b048a0db8ee2c4524f9b5ade8e6504) ([merge request](gitlab-org/gitlab!71882))
- [Move Agent KUBECONFIG variable generation to core](gitlab-org/gitlab@0ee1914b42171a3b2ca6e5378103bb4513d6f2f9) ([merge request](gitlab-org/gitlab!72085))
- [Sync creating requirements with requirements issue](gitlab-org/gitlab@34449b20ccba8018d0427ed12ee55ebc70389923) ([merge request](gitlab-org/gitlab!71104)) **GitLab Enterprise Edition**
- [Add user caps to group's membership settings](gitlab-org/gitlab@365904e82491e027a22b1ea84e883795e8d8b387) ([merge request](gitlab-org/gitlab!72006)) **GitLab Enterprise Edition**
- [Remove the rails_apdex_counters feature flag](gitlab-org/gitlab@f8e5122d0178a701a0836ba99b6fc4e88739ad87) ([merge request](gitlab-org/gitlab!72427))
- [Add CustomerRelations::IssueContact model](gitlab-org/gitlab@5c6b2c4bc62826d7cbda4094637468fa63f30d77) by @leetickett ([merge request](gitlab-org/gitlab!72246))
- [Cleanup project_storage_ui feature flag](gitlab-org/gitlab@0438d9d77383a8456480c1050baf2e2f4cbba689) ([merge request](gitlab-org/gitlab!71270))
- [Add created_at filters to MR resolver](gitlab-org/gitlab@72d09bd815b1aaed8d5fc5d6e26c9f669669fbe0) ([merge request](gitlab-org/gitlab!72498))
- [Add integration with ZenTao](gitlab-org/gitlab@398fd4f01643aff08e579e1a83e8552f8b91575e) by @icbd ([merge request](gitlab-org/gitlab!69602))
- [Move Agent CI tunnel functionality to Core](gitlab-org/gitlab@eec9855d6869dc19858340bf1647156349324aa6) ([merge request](gitlab-org/gitlab!71972))
- [Add Debian endpoint for distribution key](gitlab-org/gitlab@dd0552011089b074b13c422f208ce35d6dfb31fb) by @sathieu ([merge request](gitlab-org/gitlab!71716))
- [Filter issues by releaseTag in GraphQL](gitlab-org/gitlab@df4fad342f1b120eafa636d8e43cd73e06d83844) ([merge request](gitlab-org/gitlab!71012))
- [Add 'Explore topics' page](gitlab-org/gitlab@745b7d7c7b45c7cc89c692359da4b71a58c42592) by @wwwjon ([merge request](gitlab-org/gitlab!62443))
### Fixed (123 changes)
- [Fix SAML SSO redirects for pseudonymized URLS](gitlab-org/gitlab@aa6f3db27821292fc072343cd0134e99f8eb93ba) ([merge request](gitlab-org/gitlab!74476))
- [Add suggestion_commit_message length validation](gitlab-org/gitlab@df22130968eae889cdf89d66fc7a10e58eabe79d) by @trakos ([merge request](gitlab-org/gitlab!74310))
- [GithubImporter: Fix import duration metric](gitlab-org/gitlab@4ef1a8e3865fd1ae76d1b9f52de3cd21944daa81) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74610))
- [Fix a bug with the metadata during the npm package upload](gitlab-org/gitlab@ec6908c336bcaf7b2321715ae77aaad62752f0bb) ([merge request](gitlab-org/gitlab!74588))
- [Fix error when Origin header is null](gitlab-org/gitlab@969951adbc875a1c45f37e14ccdaf90489b4b50f) ([merge request](gitlab-org/gitlab!74581))
- [Fix loading authors in issues list](gitlab-org/gitlab@d23866a9d2f5f4b3b92ca1615a857b1464b4c515) ([merge request](gitlab-org/gitlab!74562))
- [Fix regression in code blocks in the Content Editor](gitlab-org/gitlab@fcc0f65481d30f4bedc6a3cd188316de7d14e00e) ([merge request](gitlab-org/gitlab!74520))
- [Fix sysvinit Sidekiq logging](gitlab-org/gitlab@6f7e676a346036f10753f9d5a5880c845e3c58bb) ([merge request](gitlab-org/gitlab!73850))
- [Fix setting block animation issues](gitlab-org/gitlab@88aff5d7d8afc417d37cc0166205df62508befe9) ([merge request](gitlab-org/gitlab!74411))
- [Remove presence validator on name on WebauthnRegistration](gitlab-org/gitlab@9c88b3ad8ac9728cc248dd9a4a2a84cbe74564d0) ([merge request](gitlab-org/gitlab!74376))
- [Fix common errors in AuthorizedProjectsWorker](gitlab-org/gitlab@3f8caeda714051e288b2346aa2beebab2450e602) ([merge request](gitlab-org/gitlab!74055))
- [Fix widget dropdown title overflow](gitlab-org/gitlab@7572bc6e5f2c4b9401dd1ce4bdbd77561b2826ea) ([merge request](gitlab-org/gitlab!74358))
- [Don't transform empty .ipynb diffs](gitlab-org/gitlab@a306f0f4cadf9fb2b40dd1ca84c39f7f051d83d6) ([merge request](gitlab-org/gitlab!74299))
- [Allow destruction of records in archived pending_delete projects](gitlab-org/gitlab@f8c6c9508346664157db3094ce8f2f1faef20a51) ([merge request](gitlab-org/gitlab!73863))
- [Allow to create service desk issues for all quoted emails](gitlab-org/gitlab@bcdf73f999c8ec6a9912594a7664081000964324) ([merge request](gitlab-org/gitlab!73397))
- [Fix bug due to fuzzy matching in Infrastructure Registry](gitlab-org/gitlab@5a4da09185c10915cb4e2e8e13c176a29233d145) ([merge request](gitlab-org/gitlab!73588))
- [Fix no repo error message for group-level wikis](gitlab-org/gitlab@f3a0725f2a599a53790d35fab011540e5d61f241) ([merge request](gitlab-org/gitlab!74133)) **GitLab Enterprise Edition**
- [Fix commit msg color for dark mode graph](gitlab-org/gitlab@533bc79998d58c21c99a224ec84c02202887720f) ([merge request](gitlab-org/gitlab!74050))
- [Fixes broken trigger layout](gitlab-org/gitlab@3941d96ac395b3e9accb6c0488ef86e9c12c7e64) ([merge request](gitlab-org/gitlab!74213))
- [Fix agent install page paths](gitlab-org/gitlab@6932f814a0a08ef5c232f5214829e3af1e2ef4be) ([merge request](gitlab-org/gitlab!74120))
- [Reduce noise in cluster cleanup workers](gitlab-org/gitlab@f3e541c092bd73b529b4f3e1b2b5f36f372b1004) ([merge request](gitlab-org/gitlab!74117))
- [Fix scoped board milestone/iteration Timebox global ID](gitlab-org/gitlab@a3569025baa1b7f42ef494ff651ac8f975dc435b) ([merge request](gitlab-org/gitlab!73875)) **GitLab Enterprise Edition**
- [Prevent overflowing of runner tags](gitlab-org/gitlab@38e06e46908256138c9aa696101e53e3aaee46dd) ([merge request](gitlab-org/gitlab!74071))
- [Fix manifest workhorse upload](gitlab-org/gitlab@a8545c048e70c17d08af62a65f6f50e14cc59eea) ([merge request](gitlab-org/gitlab!73810))
- [Extend the OverrideUuids service logic](gitlab-org/gitlab@942553b2b2b7e5cabdd29ed04d34fd0a72f55088) ([merge request](gitlab-org/gitlab!73563)) **GitLab Enterprise Edition**
- [Fix foreign_key of using on data_fields](gitlab-org/gitlab@fc1244a50bc17b762a10ecb1f29c65fb06a43522) by @icbd ([merge request](gitlab-org/gitlab!73456))
- [Vulnerability Report: Fix typo in description text](gitlab-org/gitlab@ebb1d6293ec35767e5a6cb483469957a03c3af4b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74047)) **GitLab Enterprise Edition**
- [Fix built-in template import creating duplicate audit logs](gitlab-org/gitlab@e45a50039b18647a9c4b0c6a565adf02fb70b66f) ([merge request](gitlab-org/gitlab!73822)) **GitLab Enterprise Edition**
- [Fix merge requests not importing for older projects](gitlab-org/gitlab@49daa959ac0ac056d54ca965e4788b08a9c18378) ([merge request](gitlab-org/gitlab!74031))
- [Add sidebar highlight and fix link](gitlab-org/gitlab@927e921b1d3cc2231f9f38969e5abb5181c0d6a7) by @icbd ([merge request](gitlab-org/gitlab!73245))
- [Fix 2FA setup for LDAP users](gitlab-org/gitlab@c29aca2e77e42802b495f09066abbc6c8823486c) ([merge request](gitlab-org/gitlab!73538))
- [Recalculate project authorizations on group transfer](gitlab-org/gitlab@63ab878f71d374b657005058bed2c776c19a2632) by @vfazio ([merge request](gitlab-org/gitlab!72550))
- [Clear closure references when issue is reopened](gitlab-org/gitlab@06ae33b82e3b96e29a7ca3c60c2a139911c3b23f) ([merge request](gitlab-org/gitlab!73958))
- [Prevent Git operations from checking replication lag on non-Geo sites](gitlab-org/gitlab@369dbc7c2e0c0b8764b26b0f12dacac8b111050a) ([merge request](gitlab-org/gitlab!73952)) **GitLab Enterprise Edition**
- [Allow non-group Agent projects to authorize themselves](gitlab-org/gitlab@6a5201ede1bc5eef7e4403becd5e827c2eac9168) ([merge request](gitlab-org/gitlab!73917))
- [Vulnerability Modal: Fix issue with long URLs](gitlab-org/gitlab@5258a998fa4a1db5b03b8df3b876aa6518ae09eb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73713)) **GitLab Enterprise Edition**
- [Fix Type error about namespace through provides on members page](gitlab-org/gitlab@4597c630af4303aad371afbfd5a668039241ae68) ([merge request](gitlab-org/gitlab!73687))
- [Fix pipeline editor crashing the browser when getting a 500 error](gitlab-org/gitlab@6f7a848589b9547cfd63c040a9dfe01512f20d15) ([merge request](gitlab-org/gitlab!73861))
- [Reset subscription max seats used on new term](gitlab-org/gitlab@78dae45f419e989db38bf0282364a325ad11506f) ([merge request](gitlab-org/gitlab!73078)) **GitLab Enterprise Edition**
- [Fix issue rebalance banner](gitlab-org/gitlab@8383b1b19cabd99e02ba5247f0bd421989a527cf) ([merge request](gitlab-org/gitlab!73608))
- [Disable query cache when outside Rails executor](gitlab-org/gitlab@23152fd9f74f92ed6360dafbb074553c61af0450) ([merge request](gitlab-org/gitlab!73814))
- [Fix todo API when used with Alerts](gitlab-org/gitlab@d3e62ab765d2ce35105dd5e264e796be37459a75) ([merge request](gitlab-org/gitlab!73812))
- [Add remediation based on cve or id](gitlab-org/gitlab@84a557d426d78960fd5fcc01bbe9f4e16cf603e6) by @ssarka ([merge request](gitlab-org/gitlab!73581)) **GitLab Enterprise Edition**
- [Wrap Sidekiq scheduler threads in Rails reloader](gitlab-org/gitlab@7c2e4a6cabdc736c839d52bcdea45d653fe1ed42) ([merge request](gitlab-org/gitlab!73716))
- [Fix quick action permissions to match UI](gitlab-org/gitlab@8e85fac366e8d6e329ede3e616b35db7c788cec2) ([merge request](gitlab-org/gitlab!73710))
- [Skip retrying for reads on connection errors if primary only](gitlab-org/gitlab@7d0c81a7576fe7a8fc5d926346c8635c0504a245) ([merge request](gitlab-org/gitlab!73715))
- [Fix illustration paths in survey response page](gitlab-org/gitlab@e9f76ac046a897b6e1fa4193772ec6bb896e4887) ([merge request](gitlab-org/gitlab!73705)) **GitLab Enterprise Edition**
- [Fix MR commits with missing committers/authors](gitlab-org/gitlab@9b553e50f3add5c638fc79c62cbe07f5be991d5f) ([merge request](gitlab-org/gitlab!73307))
- [Fix: update broken pipeline layout](gitlab-org/gitlab@af0a80f94d8b9ad1a815dd336f7bb43cd25ddf6e) ([merge request](gitlab-org/gitlab!73477))
- [Use the To header when sending pipeline emails](gitlab-org/gitlab@3b5330e9bcf66d7f66ff5b51dbb60adcf2197f67) ([merge request](gitlab-org/gitlab!73363))
- [Cleanup sticky_environments_in_job_retry feature flag](gitlab-org/gitlab@a4e3412d88e7feb4def05b253aef7f760d0cbaf4) ([merge request](gitlab-org/gitlab!73606))
- [Improve tracking of requests in rate limiter](gitlab-org/gitlab@7c3c7942b3570672dadfe6858317c0fe537a29f4) ([merge request](gitlab-org/gitlab!73343))
- [Check correct permissions before showing Release Evidence link](gitlab-org/gitlab@dffa6549fdb8fe1abd092ba531c476eea02f5367) ([merge request](gitlab-org/gitlab!73574))
- [Fix ghost button on payment step for subscriptions](gitlab-org/gitlab@ae7bd2c62116008240278e6bf33e5fd497ceda87) ([merge request](gitlab-org/gitlab!73293)) **GitLab Enterprise Edition**
- [Allow SSO callbacks through maintenance mode](gitlab-org/gitlab@b59f528b254d6b40d62dace7c78416237db5d102) ([merge request](gitlab-org/gitlab!73550)) **GitLab Enterprise Edition**
- [Fix error on environment rollback](gitlab-org/gitlab@bdd4abadb56c417f31841e6fcc0804bed0f0d196) ([merge request](gitlab-org/gitlab!73473))
- [Fix permission check for confidential quick action](gitlab-org/gitlab@561f4402419cf535d97b16331439e0a71cfe68b6) ([merge request](gitlab-org/gitlab!73515))
- [Fix Geo: Secondaries may be orphaning Upload files](gitlab-org/gitlab@d4e54efcfe1d9fbdcb24e7bc6cd4fb0ea1861988) ([merge request](gitlab-org/gitlab!69763)) **GitLab Enterprise Edition**
- [Add better error handling to BulkImports::GroupLoader](gitlab-org/gitlab@b470e9bbe761094f4d90f200dd58def3837014ed) ([merge request](gitlab-org/gitlab!73191))
- [Ensure that GlSingleStat animates](gitlab-org/gitlab@1402f8303ac1a5582ce405d6bb53af8c09c50b61) ([merge request](gitlab-org/gitlab!72759))
- [Fix tasklist header counts in Test Cases](gitlab-org/gitlab@0303c8b1322093c0d8f26bb8ef079f5a78772411) ([merge request](gitlab-org/gitlab!73453)) **GitLab Enterprise Edition**
- [Allow relative WebP image embed in markdown](gitlab-org/gitlab@9d9618fc821f12d1441b668e8f6ce7ae0cd6ca4b) by @KevSlashNull ([merge request](gitlab-org/gitlab!73426))
- [Fix uninitialized constant STICK_OBJECT](gitlab-org/gitlab@be042a560485a17907613828147981b675255060) by @leetickett ([merge request](gitlab-org/gitlab!73405))
- [Increase file import size validator timeout](gitlab-org/gitlab@d7bbc0784a5badf2c3810d5f3b209e94437c55b3) ([merge request](gitlab-org/gitlab!73400))
- [Fix breadcrumb click event handling](gitlab-org/gitlab@5d05b3d8a5c688ec06d63b252d373ed3b64cf336) ([merge request](gitlab-org/gitlab!73287))
- [Do not update feedback when it is persisted](gitlab-org/gitlab@18861c4269a6d246f777e63c99c42ef27bc73e58) ([merge request](gitlab-org/gitlab!73311)) **GitLab Enterprise Edition**
- [Increase the deduplication TTL for future jobs](gitlab-org/gitlab@24318caeb54f6479e2aafe3c46c1c7e3a2694743) ([merge request](gitlab-org/gitlab!73257))
- [Fix filtering of "Not connected" runners](gitlab-org/gitlab@e4ccc98de6febe9f550c53a5c7207523e446a4e1) ([merge request](gitlab-org/gitlab!73292))
- [Exclude project bots from deactivation in DeactivateDormantUsersWorker](gitlab-org/gitlab@7320c15f48c10ea67979dbe26cb50179cfe7eabf) ([merge request](gitlab-org/gitlab!73028))
- [Fix 2FA management on Safari](gitlab-org/gitlab@65389a3bafd68315abe54e09ab081e64fea5656a) ([merge request](gitlab-org/gitlab!73218))
- [Fix slight scroll bounce when jumping between unresolved discussions](gitlab-org/gitlab@78cd69f9013aa77a4c5e28a7f12cc62f6d8ce36e) ([merge request](gitlab-org/gitlab!73281))
- [Don't limit number of Gitaly client keepalives](gitlab-org/gitlab@4636ed9bdeab3f3a664c52e8876b17391c0bbc19) ([merge request](gitlab-org/gitlab!73302))
- [Silence unknown PostgreSQL OIDs warnings](gitlab-org/gitlab@71917b7313e7232a623a52f5ebbedf7936790f7e) ([merge request](gitlab-org/gitlab!73244))
- [Do not auto-retry unrecoverable job failure](gitlab-org/gitlab@f049bb62c76a6192136fc45f4e8516812c53cb13) ([merge request](gitlab-org/gitlab!73150))
- [Fix: filename display when copy/paste in comment](gitlab-org/gitlab@f4737a3a585d2e205bca19e5b3ba3f2d5a7e344d) by @orozot ([merge request](gitlab-org/gitlab!72878))
- [Do now unescape branch name when deleting branch](gitlab-org/gitlab@f3e44598b1a9e06fc93a6ec58c0acb3b89c5a1fc) ([merge request](gitlab-org/gitlab!73253))
- [Enable surface_environment_creation_failure feature flag by default](gitlab-org/gitlab@82a474083a87962473a45bd25bab8bd0ed6af7e1) ([merge request](gitlab-org/gitlab!72194))
- [Prevent timeouts when updating `share_with_group_lock` of a group](gitlab-org/gitlab@2dfecc4fa25ed9b87ca4fc8dc45ba4bbb6a32a96) ([merge request](gitlab-org/gitlab!72955))
- [Fix epic board scope text](gitlab-org/gitlab@aec0eb917ad7c9165cd23097012e33b28bb304c0) ([merge request](gitlab-org/gitlab!73234))
- [Standardize error message field in structured logs](gitlab-org/gitlab@400dd57ba4207079d70b9b0fcd509297b2b5da3a) ([merge request](gitlab-org/gitlab!73196))
- [Make `LoadBalancer` to configure pool sizes of all classes](gitlab-org/gitlab@fcc216a23746cfa52ba86a869f26e0a2c40fb8f0) ([merge request](gitlab-org/gitlab!72989))
- [Sort epic ancestors in hierarchical order in graphQL endpoint](gitlab-org/gitlab@758d5a3738d85677f45b8e988514b7a06c82dee0) ([merge request](gitlab-org/gitlab!72811)) **GitLab Enterprise Edition**
- [Fix cascading settings attr reader behavior](gitlab-org/gitlab@f7c013d8931d84dba719cd929147dfa9f3b578f5) by @gizero ([merge request](gitlab-org/gitlab!72962))
- [Don't fail DeleteStoredFilesWorker if one of the files is missing](gitlab-org/gitlab@7915af8aae24a76586a43eaf08e68de3677d11e1) ([merge request](gitlab-org/gitlab!73084))
- [Schedule AutoFix background job after ingesting the security reports](gitlab-org/gitlab@f496649ec5100ebda2933ca4d0693f1fe8b45df4) ([merge request](gitlab-org/gitlab!72957)) **GitLab Enterprise Edition**
- [Move yaml processor secrets configuration to EE](gitlab-org/gitlab@80adf2e64a5b547925398f123a20528876e7cfa3) ([merge request](gitlab-org/gitlab!73017)) **GitLab Enterprise Edition**
- [Remove the pipelines link from Auto DevOps toast](gitlab-org/gitlab@0c144e2ff0c51c9d47ca3b880a3cbce60882bf7f) ([merge request](gitlab-org/gitlab!73054))
- [Fix 'private method 'load' called' when posting non-whitelisted webhook](gitlab-org/gitlab@0fcfb496c725d3c87f888474378c04bb7de281bf) by @perlun ([merge request](gitlab-org/gitlab!72672))
- [Change manage events metric counter method](gitlab-org/gitlab@e8e0288768709f812f12cdb2fae13c82ada96529) ([merge request](gitlab-org/gitlab!72975))
- [Fix `canUpdate` console error on external issues](gitlab-org/gitlab@e093779ae951f21359966475a9bfdcb21326f244) ([merge request](gitlab-org/gitlab!72950)) **GitLab Enterprise Edition**
- [Show captcha verification on issue boards](gitlab-org/gitlab@fddd98bf2fd70ca2591e16259558d8ae488de155) ([merge request](gitlab-org/gitlab!72818))
- [Fix error when archiving requirements](gitlab-org/gitlab@500cef40295d5158d4a16847cbe22c2ab645d411) ([merge request](gitlab-org/gitlab!73010)) **GitLab Enterprise Edition**
- [Persist solution, message and description fields](gitlab-org/gitlab@ed62453626233c9c411648acb72d7ccf82270fd8) ([merge request](gitlab-org/gitlab!72883)) **GitLab Enterprise Edition**
- [Skip st_diff setting on LegacyDiffNote during import](gitlab-org/gitlab@e2c6b1390b0e4d17fbe9924dc619a3545905c6db) ([merge request](gitlab-org/gitlab!72897))
- [Use `overridden_uuid` as primary lookup for the report finding](gitlab-org/gitlab@643582f6c1b0e70f823938f2e0ec481406ef1c58) ([merge request](gitlab-org/gitlab!72835)) **GitLab Enterprise Edition**
- [Remove duplicate text from create group description](gitlab-org/gitlab@1467e1d396beb37032566cba8c2ca8556c3f5e96) ([merge request](gitlab-org/gitlab!72954))
- [Add reschedule option to Resource Group worker](gitlab-org/gitlab@63cc19469b1d7fd2085cc78efc76cbc46850ef66) ([merge request](gitlab-org/gitlab!72961))
- [Fix SMIME signature for emails on push](gitlab-org/gitlab@20439de242730db94622f1cf92ad2a6cac159ecd) ([merge request](gitlab-org/gitlab!72956))
- [Fix error 500 loading branch with UTF-8 characters with performance bar](gitlab-org/gitlab@cbbe03492b18ee07901bde5f055c2b4cd0a00a44) ([merge request](gitlab-org/gitlab!72925))
- [Fix file mode changes not always visible in MRs](gitlab-org/gitlab@3fbaa336ea9f8a54df8f41bfd0e63b504dc25eaf) by @hypemc ([merge request](gitlab-org/gitlab!72937))
- [Allow job token to perform all release REST API operations](gitlab-org/gitlab@3cea963ff14e61f60fe9fff45d81fd3bdbd39d1d) by @guillaume.chauvel ([merge request](gitlab-org/gitlab!72448))
- [Fix 2+ discussions on one line not working](gitlab-org/gitlab@b6a340c9cd8dccebcb0f165d5757b536506423b2) ([merge request](gitlab-org/gitlab!72915))
- [Fix issues with frame-src CSP directive](gitlab-org/gitlab@ee10fb1e26b51b91befa68a19b537986b365f957) ([merge request](gitlab-org/gitlab!72830))
- [Fix shared runners form injections](gitlab-org/gitlab@467733230658dcc101ae5c60f9b11bcd5592c866) ([merge request](gitlab-org/gitlab!72907))
- [Fix deployment merge request link creation](gitlab-org/gitlab@dcda9b1eebf5a88f1219cf7bc6983ca1d7af411d) ([merge request](gitlab-org/gitlab!72757))
- [Add latest commit hash to compare cache key](gitlab-org/gitlab@2cd7de9991329356e27f72b7902af1a54d964520) ([merge request](gitlab-org/gitlab!72388))
- [Move DAST CI Job keys to the EE Variant](gitlab-org/gitlab@cc91cf3e86b862441990a5b15c8f40f2ed172c2c) ([merge request](gitlab-org/gitlab!72829)) **GitLab Enterprise Edition**
- [Fix issue with CSP using Safari in dev mode](gitlab-org/gitlab@1890efe73df4173104917c7031c38764c355272f) ([merge request](gitlab-org/gitlab!72728))
- [Remove compliance framework section for unlicensed EE](gitlab-org/gitlab@3578a1c857c7a32f776ccca445faea415ab350a7) ([merge request](gitlab-org/gitlab!72691)) **GitLab Enterprise Edition**
- [Fix unnecessary epics fetch req with empty filters](gitlab-org/gitlab@689b1f691ad88b3426a1bbe791f24e18d4288b56) ([merge request](gitlab-org/gitlab!72774)) **GitLab Enterprise Edition**
- [Fix object deduplication on Geo first sync](gitlab-org/gitlab@f7fd7b0392476503b1d2d7d040861de1cfc42186) ([merge request](gitlab-org/gitlab!72605)) **GitLab Enterprise Edition**
- [Allow newlines in HTTP URLs](gitlab-org/gitlab@f1c1b914082c6c90ee2964f956436ce1709e86e3) ([merge request](gitlab-org/gitlab!72655))
- [Fix `Security::OverrideUuidsService` matching logic](gitlab-org/gitlab@25db632a95b5f2575d937864b8ee02dd55ab4952) ([merge request](gitlab-org/gitlab!72723)) **GitLab Enterprise Edition**
- [Add cloak-startup class and apply to mobile overlay](gitlab-org/gitlab@b4d6183adbbf96cefbd74ab7971b72010f5f202f) by @leetickett ([merge request](gitlab-org/gitlab!71148))
- [Stop polling when checking task lists on an issue](gitlab-org/gitlab@7b42afcd7fa71a0c09ed8899fe90740914cb7499) ([merge request](gitlab-org/gitlab!72629))
- [Modify error message for clarity](gitlab-org/gitlab@cba9950182b23a78dda3da5994167fb0ac5c284b) ([merge request](gitlab-org/gitlab!72658))
- [Ensure Azure-related gems are loaded](gitlab-org/gitlab@b221a58d23caf99293a61ca7f2987eaa247f23a5) ([merge request](gitlab-org/gitlab!72433))
- [Ensure commits limit is always positive](gitlab-org/gitlab@bb179a08051c46555d96e7c446702aa4ada300b9) ([merge request](gitlab-org/gitlab!72274))
- [Add DEFAULT_CERT_DIR handling to Spamcheck and fix Gitaly GRPC Bug](gitlab-org/gitlab@2c6b10b8ce4d3dbbc76415c58ee8ed493311d4c8) ([merge request](gitlab-org/gitlab!72386))
- [Fix a join in the postgres_indexes view](gitlab-org/gitlab@1ab9822a16cace04f1efd6b9d057fb2da1dfd60f) ([merge request](gitlab-org/gitlab!72540))
- [Fix spacing around code quality problem icon in diff view](gitlab-org/gitlab@3b6a3ecb77d0406d9f4fd0f83560ef56baf342b7) by @antonykor.ak ([merge request](gitlab-org/gitlab!72137)) **GitLab Enterprise Edition**
- [Transaction metrics from workers are not collected](gitlab-org/gitlab@c64c0191b944c889539b172d77d7e1913b30ad55) ([merge request](gitlab-org/gitlab!72108))
- [Fix nil value in location column in vulnerability_occurrences](gitlab-org/gitlab@9f192fd6c4d7859879e4582051023b5cb0c02143) ([merge request](gitlab-org/gitlab!72224)) **GitLab Enterprise Edition**
### Changed (142 changes)
- [Update deprecation notice](gitlab-org/gitlab@4d9e007e329055246968251a225f5e305702308e) ([merge request](gitlab-org/gitlab!74729))
- [Increase LFS token entropy for keys/deploy keys](gitlab-org/gitlab@9a2e2837a94603b0beff2d26ddd27019b47433b1) ([merge request](gitlab-org/gitlab!74699))
- [Fixes cross-db modification for Ci::JobArtifacts::DestroyBatchService](gitlab-org/gitlab@78e6a0de07eacc59da0cb85bbe889f54f0caea0c) ([merge request](gitlab-org/gitlab!74583))
- [Remove query_project_ci_feature_usages_for_coverage flag](gitlab-org/gitlab@b92364cc5ac02aeba68a17412b92c2a1e9481242) ([merge request](gitlab-org/gitlab!74230)) **GitLab Enterprise Edition**
- [Replace `window.confirm` with `GlModal` confirmation](gitlab-org/gitlab@ee280ed2b763d1278ad38c6e7e8a0aff092f617a) ([merge request](gitlab-org/gitlab!73950))
- [Update audit events to filter by username](gitlab-org/gitlab@406fef79f6b2e06cef5a57d348ccebb78662e3e9) ([merge request](gitlab-org/gitlab!73742)) **GitLab Enterprise Edition**
- [Fix OpenStruct use](gitlab-org/gitlab@e52f31cd736617f19018b23c376f3b834dc7b256) by @mehulsharma ([merge request](gitlab-org/gitlab!74192))
- [Fix OpenStruct use](gitlab-org/gitlab@7077c3d2bd4ecd9a6a2f7c2d5c0cf399d5ef8617) by @mehulsharma ([merge request](gitlab-org/gitlab!74420))
- [Move API fuzzing YAML generation to the client](gitlab-org/gitlab@6e204daf0ee57b4f9486f0c1a46a7b1f0040fced) ([merge request](gitlab-org/gitlab!74514)) **GitLab Enterprise Edition**
- [Use after_commit in Vulnerabilities::Feedback](gitlab-org/gitlab@82ce5be4a8a9451e5f180bacbf5bfa39463cb5ed) ([merge request](gitlab-org/gitlab!74508))
- [Use allowlist of allowed attributes for imported models](gitlab-org/gitlab@4af697f6983abfb13a356ae8f9ec65124d45b8db) ([merge request](gitlab-org/gitlab!72152))
- [Use image digest for Auto DevOps deployments](gitlab-org/gitlab@782c95ec8dfaf50e259cefcdd30ff8c7995098de) by @kinolaev ([merge request](gitlab-org/gitlab!68783))
- [Make capitalization of incident management objects uniform in modal](gitlab-org/gitlab@294974a95b8a94953a47ac8a974e4f7882e683b5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74453))
- [feat: Update default PAT prefix when not set](gitlab-org/gitlab@0762b5ca672b8eabe3567ed3b3bd73fdf90abe00) ([merge request](gitlab-org/gitlab!74439))
- [Use rectangular avatar on topic detail page](gitlab-org/gitlab@242281e38af1cca1ff522076449fedaff0d1912e) by @wwwjon ([merge request](gitlab-org/gitlab!74424))
- [Fix OpenStruct use](gitlab-org/gitlab@e960176b022d49e95cb04a37ab91b8e0a3fd4786) by @mehulsharma ([merge request](gitlab-org/gitlab!74419))
- [Fixed OpenStruct use offense](gitlab-org/gitlab@924eb6d05e99001dc04d00c5a637086a19ebc73b) by @mehulsharma ([merge request](gitlab-org/gitlab!73398))
- [Fix OpenStruct usage](gitlab-org/gitlab@b7b81a84417c6d92301e3267fb8534c77a4a968f) by @mehulsharma ([merge request](gitlab-org/gitlab!74405))
- [Release the NPM metadata abbreviated support](gitlab-org/gitlab@b6e2d1462922f5699451697c6d3f762122869071) ([merge request](gitlab-org/gitlab!74409))
- [Deprecation of the cert-based K8s integration](gitlab-org/gitlab@9c2253808d054d48146df3203203d7a7ae5f95ac) ([merge request](gitlab-org/gitlab!74194))
- [Use token authentication in the Debian distribution APIs](gitlab-org/gitlab@e81e649f72acf09023b8ff28717c84cb802f78d5) by @sathieu ([merge request](gitlab-org/gitlab!71911))
- [Get cluster_id from kubernetes_resource for CIS](gitlab-org/gitlab@2bcd97376543347ee65d3468c48c2134939bc222) ([merge request](gitlab-org/gitlab!74300)) **GitLab Enterprise Edition**
- [Remove Apollo error suppression feature flag](gitlab-org/gitlab@65dd9c132dad0d8c41f35c33d19374cbb24fd2a0) ([merge request](gitlab-org/gitlab!74291))
- [Show validation error for setting project suffix](gitlab-org/gitlab@16b13f2ddf5c198a3f53749c4a7bbefb101edf46) ([merge request](gitlab-org/gitlab!73458))
- [Update admin deploy keys table to comply with Pajamas design system](gitlab-org/gitlab@62bdd95d3a1a5d805fc74995ab855ae6b1286c2d) ([merge request](gitlab-org/gitlab!73860))
- [Go back denylist for importing project](gitlab-org/gitlab@90cf3aca8a230a5c5e1251b97ef581217c1783ca) ([merge request](gitlab-org/gitlab!74248))
- [Add shared_runners_duration field to NamespaceMonthlyUsageType](gitlab-org/gitlab@56813743c4b208e3bb65f0525b72b6d52edc3d74) ([merge request](gitlab-org/gitlab!74114))
- [Update vendored cluster management project template](gitlab-org/gitlab@dd487e2d5c0b3eb7d19aa9a0e2fac6674daf46b8) ([merge request](gitlab-org/gitlab!74118))
- [Move creation of external cross-references into background worker](gitlab-org/gitlab@200f731230da192375ceac6276b1779bff5129ef) ([merge request](gitlab-org/gitlab!72794))
- [Enable by default new refactored page](gitlab-org/gitlab@c019228102cf9b303fed28d0403c0a0214f7659b) ([merge request](gitlab-org/gitlab!73367))
- [Remove cached_loading_hints feature flag](gitlab-org/gitlab@6a0dd5846d3716d060a45e5e9d99c8cb3fb82a25) ([merge request](gitlab-org/gitlab!74226))
- [Restore TagsFinder class interface](gitlab-org/gitlab@707830697dfb8f9bb72364f8629b9e348fdbdfce) ([merge request](gitlab-org/gitlab!74210))
- [Refactor profile authentication log to show relevent events](gitlab-org/gitlab@aebb2e0c2db0306b178b9348cb56483e07788671) ([merge request](gitlab-org/gitlab!73890))
- [Redirect to Pipeline Editor from Suggest Pipeline banner CTA](gitlab-org/gitlab@82418b00474d7950e39af4121a664a70c4e0ca40) ([merge request](gitlab-org/gitlab!73514))
- [Fixed OpenStruct use](gitlab-org/gitlab@e1f7f314bb2f7ca024a3b2ea84930e4005fce8e4) by @mehulsharma ([merge request](gitlab-org/gitlab!73935)) **GitLab Enterprise Edition**
- [Create ProjectNamespace when a Project is created](gitlab-org/gitlab@63220fc84e2e581e2c5e5967a9655bbc1ec1dd14) ([merge request](gitlab-org/gitlab!70972))
- [Source Editor Extension module](gitlab-org/gitlab@6e41c79c94e225220f28ff6173b0d579535f36cd) ([merge request](gitlab-org/gitlab!73797))
- [Update workflow propeties in CI json schema](gitlab-org/gitlab@edd6282071e6dac437ee6aca44bbca6106cf8266) ([merge request](gitlab-org/gitlab!74164))
- [Avoid sending send-data headers in API response body](gitlab-org/gitlab@fe3740277d26bf53a147f26b9fbfb3308723a4f3) ([merge request](gitlab-org/gitlab!74161))
- [Fixed OpenStruct use](gitlab-org/gitlab@572063f311cddb76ec567d5d763c3d218fa34774) by @mehulsharma ([merge request](gitlab-org/gitlab!73932))
- [Add tooltip and commit title to pipeline editor's status header](gitlab-org/gitlab@2b56a27749d6e5c4ce41232d30a53ba4a3706729) ([merge request](gitlab-org/gitlab!73724))
- [Add user popup to CI pipeline header](gitlab-org/gitlab@18c3d927c691f265b2c19b29f3c252772f1f1865) by @KevSlashNull ([merge request](gitlab-org/gitlab!60841))
- [Redirect to continuous onboarding after trial reg](gitlab-org/gitlab@d48f786d554066533355850bbcc4e19d02af67c5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73594)) **GitLab Enterprise Edition**
- [Add read_at to dependency proxy objects](gitlab-org/gitlab@af9efed71e5739b63bf78c1d08dcc5399ac388dc) ([merge request](gitlab-org/gitlab!73842))
- [Add pipeline artifacts size to admin area project statistics](gitlab-org/gitlab@510aa2d6c5c1255a3832a430cbd5c7e099e666b2) by @guillaume.chauvel ([merge request](gitlab-org/gitlab!72216))
- [Spin reviewer on UX label](gitlab-org/gitlab@2561d97993dcba11251d4ce00dd12ea7e6717fd6) ([merge request](gitlab-org/gitlab!51127))
- [Refactor fetching board scope to GraphQL](gitlab-org/gitlab@703f89dff03efeab9732d1962257ba5b3903ab87) ([merge request](gitlab-org/gitlab!73604)) **GitLab Enterprise Edition**
- [Use allowlist for importing project attributes](gitlab-org/gitlab@c8c6f4687836bef271b162c5992ae034ad0ce080) ([merge request](gitlab-org/gitlab!72457))
- [Filter runner type via tabs](gitlab-org/gitlab@2f27901f299eb7555a486316110af253cbeb26a6) ([merge request](gitlab-org/gitlab!73680))
- [Update runner status badges and locked icon](gitlab-org/gitlab@02ab624c7642d0e1eaeb580e87fcdd4564913b28) ([merge request](gitlab-org/gitlab!73254))
- [Reorganise Jira Connect UI](gitlab-org/gitlab@b000e17571d15d04b89bc0264495dfa7a6b65d92) ([merge request](gitlab-org/gitlab!73714))
- [Update Rugged to v1.2.0](gitlab-org/gitlab@5def0d1caf9138d7ae7853ca65397ee5b5ce43f2) ([merge request](gitlab-org/gitlab!73915))
- [Vulnerability Chart: Fix selected state of buttons](gitlab-org/gitlab@31c993cd04803978ecebd8930f019fd5cd699cc8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73516)) **GitLab Enterprise Edition**
- [Log when primary host for DB load balancing is marked offline](gitlab-org/gitlab@9a13e3ee52e545fb3d8b02937045184b03ee3912) ([merge request](gitlab-org/gitlab!73904))
- [Review Adv Search admin UI text](gitlab-org/gitlab@998c396d2654eaf2d9dc5087961724939e0d2426) ([merge request](gitlab-org/gitlab!73269))
- [Load MR widget artifacts on mount](gitlab-org/gitlab@139a59e67ae54dd95ca87354c08b7906c6b964f8) ([merge request](gitlab-org/gitlab!71785))
- [Change API permissions to set epic of an issue](gitlab-org/gitlab@f97684dea8d3058001a88aabcb49c49c3a1de51c) ([merge request](gitlab-org/gitlab!66865)) **GitLab Enterprise Edition**
- [Use path_with_namespace for delete confirmation phrase](gitlab-org/gitlab@451f206d17989f0d6017bca6d5fc45e065504bf2) ([merge request](gitlab-org/gitlab!73506))
- [Flash a warning when not using index aliases](gitlab-org/gitlab@14d035b487afa677ad461bb672d98d6e5a95fa61) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71609)) **GitLab Enterprise Edition**
- [Toggle file tree bolding based on file "Viewed" status](gitlab-org/gitlab@b3cc00ac9ea8e950ed9fc349a8fee858e0fb0d0f) ([merge request](gitlab-org/gitlab!73688))
- [Change Geo SSH proxy to internal primary URL](gitlab-org/gitlab@d7111269af72e6a331e87954559868ab864b2f8f) ([merge request](gitlab-org/gitlab!73738)) **GitLab Enterprise Edition**
- [Add empty state for CI mintues](gitlab-org/gitlab@8abb5284b3ff43a58d67c9cb4bb0e4c2a7939c61) ([merge request](gitlab-org/gitlab!73681)) **GitLab Enterprise Edition**
- [Runner status won't return "paused"](gitlab-org/gitlab@7c5173b6345f8d83a5313fa0364a072207ad7744) ([merge request](gitlab-org/gitlab!73530))
- [Add policy name to ScanExecutionPolicyCommit mutation](gitlab-org/gitlab@35a53cae27785da6d0b851a3709d8548cdb0f533) ([merge request](gitlab-org/gitlab!71994)) **GitLab Enterprise Edition**
- [Update omniauth-oauth2 and remove error verification monkey-patch](gitlab-org/gitlab@e54d847effd7dc00008c40f9f387365830a7f061) ([merge request](gitlab-org/gitlab!73658))
- [Add optional include_jobs param for CI lint APIs](gitlab-org/gitlab@55762622ad4c2982a7bb88ac60bd621a922d7241) ([merge request](gitlab-org/gitlab!72539))
- [Shift a user's contribution calendar based on their timezone setting](gitlab-org/gitlab@45f0d6aadc77fd0fd966d2d7c1eb911c6ccbb056) by @davebarr ([merge request](gitlab-org/gitlab!72938))
- [Updated texts and illustrations on Kubernetes page](gitlab-org/gitlab@9154ad4a14a2c74e8d43615c0860d0647cdd56ff) ([merge request](gitlab-org/gitlab!73586))
- [Improve run pipeline ux](gitlab-org/gitlab@32bfb6ac3e6ecc951f2928f625d6fea54f6a60ef) ([merge request](gitlab-org/gitlab!73479))
- [Add project count and coverage count to tooltip](gitlab-org/gitlab@bf87128d1707c90271802405f6806cc391fd01cb) ([merge request](gitlab-org/gitlab!73215)) **GitLab Enterprise Edition**
- [Remove not_null constraint and default for public_email](gitlab-org/gitlab@9ba66b0181b8c36e90b70c76b7dc26dc5d36def9) ([merge request](gitlab-org/gitlab!72514))
- [Replaced v-html with v-safe-html](gitlab-org/gitlab@7448898ed877680d979e7dd93618c53080c800bd) by @mehulsharma ([merge request](gitlab-org/gitlab!73371))
- [Refactor manual variables form](gitlab-org/gitlab@770107542007fa2094d0c83f82a3cc5965501921) ([merge request](gitlab-org/gitlab!73013))
- [Remove jira_connect_asymmetric_jwt feature flag](gitlab-org/gitlab@d5bbb49f5360cf50df66bbf1501a1b627000dab0) ([merge request](gitlab-org/gitlab!73540))
- [Revert temporary change for sending expiration email for all ssh keys](gitlab-org/gitlab@62dad96d489597400e3bf4bc4de1ea084ea1101a) ([merge request](gitlab-org/gitlab!73185))
- [Add clarification of repo size limits](gitlab-org/gitlab@e9fa6a15f912e834a282953940df6d271ec68c5d) ([merge request](gitlab-org/gitlab!73531))
- [Pluralize DevOps Report to DevOps Reports](gitlab-org/gitlab@13e84237be2d43fc6812efa7d870e5e2dd6c8ef7) ([merge request](gitlab-org/gitlab!73319))
- [Add limit-container-width to Jira create branch](gitlab-org/gitlab@1b29508bdb8a84f736b8a5395451d96e710f3f59) ([merge request](gitlab-org/gitlab!73521))
- [Restore namespace requirement for project deletion confirmation](gitlab-org/gitlab@d20ed309e7351854da31db2c4690bef7738e405d) ([merge request](gitlab-org/gitlab!73176))
- [Handle `Errno::ENETUNREACH` in `Gitlab::HTTP`](gitlab-org/gitlab@9e1e36c1e71c1f142b12b2f34562edf8cc047824) ([merge request](gitlab-org/gitlab!73507))
- [Enable `terms_of_service_vue` feature flag by default](gitlab-org/gitlab@b8174778b9593cbba708be6db472f1007af6c91b) ([merge request](gitlab-org/gitlab!73502))
- [Add links to Jira-related error messages](gitlab-org/gitlab@4a4c9839edb7ffdcbe59745212a314b6a4707741) ([merge request](gitlab-org/gitlab!72854))
- [Update breadcrumb toggle to inline](gitlab-org/gitlab@16e7f7a248accc22cd3cf08e821f734450899a9c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72754))
- [Use GlAvatar in approval rule selector](gitlab-org/gitlab@20082d12e5174f3da1bed0d0d15d39b150fe417e) ([merge request](gitlab-org/gitlab!73334)) **GitLab Enterprise Edition**
- [Change the active link color in the sidebar](gitlab-org/gitlab@61ed7221c570530ce2eb22b0b0ba653e172737be) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73077))
- [Moved clusters empty state to Vue component](gitlab-org/gitlab@b28bf503503cc9de7e734c1d661afa74b0bc2d57) ([merge request](gitlab-org/gitlab!73064))
- [Store trace files outside of a database transaction](gitlab-org/gitlab@6d80cdc624a8a27699201ec3c1036b1b5485a648) ([merge request](gitlab-org/gitlab!66203))
- [Exclude internal API and Geo git_ssh routes from secondary proxying](gitlab-org/gitlab@6b01a82a705882227e0000d524960bc9622ddd58) ([merge request](gitlab-org/gitlab!73202)) **GitLab Enterprise Edition**
- [Remove jQuery from Jira connect app](gitlab-org/gitlab@f531c64b3ad62fb69ff7809bebd7ce9bdcb67831) ([merge request](gitlab-org/gitlab!72105))
- [Add GITLAB_CDN_HOST to frame-src and worker-src](gitlab-org/gitlab@63daa954bd7ed4581852a12482dcfe0ad2c3d465) ([merge request](gitlab-org/gitlab!72542))
- [Only delete data from Elasticsearch 30 days after subscription expires](gitlab-org/gitlab@39a1ed5f4aabda478b56fb522c8c8e508354b47f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72923)) **GitLab Enterprise Edition**
- [feat: Set PersonalAccessToken default prefix](gitlab-org/gitlab@1f7d3d1832abd3c47fb6d0e8245477fc9fe2cdc6) ([merge request](gitlab-org/gitlab!73314))
- [Turn on Feature Flag of ZenTao](gitlab-org/gitlab@499a27c8587abe2dc8f6ea0f1e5f673641a138db) by @icbd ([merge request](gitlab-org/gitlab!72958))
- [Skip already imported merge requests on importer](gitlab-org/gitlab@4ac0e6711f357abe1e96ff53091fbaaa7b98ba50) ([merge request](gitlab-org/gitlab!69478))
- [Say when MR was approved by me](gitlab-org/gitlab@2846f45a8b547c95d826645be4a10f92c93eeaf6) by @KevSlashNull ([merge request](gitlab-org/gitlab!63174))
- [Update clusters index help paths](gitlab-org/gitlab@b74b6367a1b5b67e266e58950e182e03d657baa7) ([merge request](gitlab-org/gitlab!72012))
- [Change question marks to Learn More in Settings](gitlab-org/gitlab@1bea1a18a4323239c38ee47e1e1dc81be1cc2950) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73130))
- [Enable dependency proxy by default](gitlab-org/gitlab@d9c19aa16db2fae08f8adae58cdfaf7cc4a49814) ([merge request](gitlab-org/gitlab!73290))
- [Re-position merge train help icon](gitlab-org/gitlab@00cd1f2e28fe9e881572eddbbe817069f15e2a8f) ([merge request](gitlab-org/gitlab!73184)) **GitLab Enterprise Edition**
- [Rename crm related policies and consider feature flag status](gitlab-org/gitlab@9b46e46671dbf2ffd2b7b7b4a8f8507799f8b782) by @leetickett ([merge request](gitlab-org/gitlab!73209))
- [Remove skip_legacy_diff_note_callback_on_import feature flag](gitlab-org/gitlab@d2e74ca749f3aaeeb147a0c1788818334f9170df) ([merge request](gitlab-org/gitlab!73207))
- [Use secured analyzer image for cluster image scanning](gitlab-org/gitlab@a10845868073e609ada3b2ac6f916581c2bb5cad) ([merge request](gitlab-org/gitlab!72940)) **GitLab Enterprise Edition**
- [Edit UI text](gitlab-org/gitlab@88e7205228551acfc08e51c6f09893201c6fae37) ([merge request](gitlab-org/gitlab!71985))
- [Add response in Publish a package file endpoint](gitlab-org/gitlab@18148d1dd5b247d9819ff56ca56aa9b82fc3260c) ([merge request](gitlab-org/gitlab!72201))
- [Update copy of branches_to_be_notified label](gitlab-org/gitlab@f3dcb70e907d72e6a723d6d91104c537ee9c914a) ([merge request](gitlab-org/gitlab!73098))
- [Migrate Terraform template to use rules syntax](gitlab-org/gitlab@a8684074106ba89f88680119a912e036c6393f2d) by @willianpaixao ([merge request](gitlab-org/gitlab!69634))
- [Link Pipeline Editor button to open in correct branch](gitlab-org/gitlab@2e42c5b1b9e3d1f074061d9004e0dec48a7105c9) ([merge request](gitlab-org/gitlab!73011))
- [Admin: card match can have different holder name](gitlab-org/gitlab@a9d489ca0d3d1f6985abbbd251ef05f9c1431702) ([merge request](gitlab-org/gitlab!72574)) **GitLab Enterprise Edition**
- [Fix translation of title of ZenTao](gitlab-org/gitlab@dd0fd0c5051f101c827ad8754a9f2b27e7b92914) by @icbd ([merge request](gitlab-org/gitlab!72960)) **GitLab Enterprise Edition**
- [Add "Load more" button to environment dropdown](gitlab-org/gitlab@995503b722f4d4d21adf2274bf0ebee016967168) ([merge request](gitlab-org/gitlab!72731)) **GitLab Enterprise Edition**
- [Convert dropdowns in Admin / Visiblity and access to radio buttons](gitlab-org/gitlab@6e0c8d37b0b5b203e855e046ac4300566c1f9ffa) ([merge request](gitlab-org/gitlab!72721))
- [Make cosmetic improvements to Geo Admin UI](gitlab-org/gitlab@166df95959632f25b6077a2ae3f17e4e4a1f01b4) ([merge request](gitlab-org/gitlab!72035)) **GitLab Enterprise Edition**
- [Remove the left-overs of `use-deprecated-sizes` attributes](gitlab-org/gitlab@fa536eede049a96e6ef94c356981c78e2d4cbdfa) ([merge request](gitlab-org/gitlab!73012))
- [Remove stage default from CI schema](gitlab-org/gitlab@99f2bd99e146a62eed4922cc83a22e45f18f5c98) ([merge request](gitlab-org/gitlab!72747))
- [Enable feature flag default on](gitlab-org/gitlab@caa0906e7f06d01bf310b4062b998a2d04319d2a) ([merge request](gitlab-org/gitlab!72837))
- [Replace registration token in registration modal](gitlab-org/gitlab@972d777103aa0f81efc80ec369fa1263d3863066) ([merge request](gitlab-org/gitlab!72705))
- [Move register runner information to a dropdown](gitlab-org/gitlab@e4071f727ba70745f4e48c12e43a7301a79b5bc4) ([merge request](gitlab-org/gitlab!72529))
- [Run GraphQL docs rake task on changes](gitlab-org/gitlab@15ceccd30c6dafb4e32aa801ce55207c83814a46) ([merge request](gitlab-org/gitlab!72891))
- [Removes cross-joins FF in MergeRequest#environements](gitlab-org/gitlab@48359ce146c03a020904a1b530cf9560dabbcb22) ([merge request](gitlab-org/gitlab!72884))
- [Redirect Geo HTTP(s) pulls to different path with missing repo](gitlab-org/gitlab@c98b04348cb7bed4dfe5438fac3808dac0526f95) ([merge request](gitlab-org/gitlab!72881)) **GitLab Enterprise Edition**
- [Hide private group name when access request is denied](gitlab-org/gitlab@a5594b08d3e21cbe10cc3aa3a5b2493567a790e5) ([merge request](gitlab-org/gitlab!72708))
- [Improve empty state when artifacts fail to load](gitlab-org/gitlab@e9bc002c93a11bf171f1b6ab8e105fd41714ae8e) by @mehulsharma ([merge request](gitlab-org/gitlab!71666))
- [Change enforcement label to status](gitlab-org/gitlab@63bdd6720e026dcde8f361a18872aeefb016824c) ([merge request](gitlab-org/gitlab!72394)) **GitLab Enterprise Edition**
- [Remove retarget_merge_requests feature flag](gitlab-org/gitlab@8d38b170a6c92d174b8109b9c5ab1491a33705e8) ([merge request](gitlab-org/gitlab!72782))
- [Handle MissingPersonalAccessTokenError on Go middleware](gitlab-org/gitlab@0ebc748804404d13b2b37a04e98a2ed6a3741421) ([merge request](gitlab-org/gitlab!72671))
- [Add missing labels when password is filled out](gitlab-org/gitlab@e9d27520a5e540e576564768a4b7b3544ce535c2) ([merge request](gitlab-org/gitlab!71970))
- [UI polish on the webhook log page](gitlab-org/gitlab@91733c8dcf9ed694b144ee238a982c4a3009801c) ([merge request](gitlab-org/gitlab!71872))
- [Fix ZenTao spelling](gitlab-org/gitlab@c9c4b607bccd1d758f171e6cfaf1c1b806b08349) by @icbd ([merge request](gitlab-org/gitlab!72561)) **GitLab Enterprise Edition**
- [Update audit events date range filter](gitlab-org/gitlab@ff64ae2df3ee5116405f901d186a8e0d34b53007) ([merge request](gitlab-org/gitlab!71671)) **GitLab Enterprise Edition**
- [Improve merge blocked text](gitlab-org/gitlab@94ab56adecf63ecfb7e2d9b3218f27e67d78c789) ([merge request](gitlab-org/gitlab!72520)) **GitLab Enterprise Edition**
- [Show CSV and json artifact download on security tab and merge request](gitlab-org/gitlab@f285c4917b5c90e1e2c01be4eb431b9b8cdac0d6) ([merge request](gitlab-org/gitlab!72060))
- [Add custom label GitHub status check checkbox](gitlab-org/gitlab@3091c55fe6cce44df58fc5830710672cd0677295) ([merge request](gitlab-org/gitlab!72566)) **GitLab Enterprise Edition**
- [Use default timeouts for Jira calls](gitlab-org/gitlab@9d854558304b005bfb385f61ed11dd11a13ab8c8) ([merge request](gitlab-org/gitlab!72571))
- [Deduplicate http transport creation](gitlab-org/gitlab@c8a45af37ee4fb99ee84241c78fa3a5331d1c09b) ([merge request](gitlab-org/gitlab!69471))
- [Update Terraform.latest.gitlab-ci.yml template](gitlab-org/gitlab@a36e00c1b8a42bf22280734cd21cd26c8323ba43) by @willianpaixao ([merge request](gitlab-org/gitlab!71188))
- [Does not update Geo node if running on a primary site](gitlab-org/gitlab@651dd5cf0c671d9ecce213ef3cdb2bae9e7af59c) ([merge request](gitlab-org/gitlab!72530)) **GitLab Enterprise Edition**
- [Remove `roadmap_daterange_filter` ff & legacy code](gitlab-org/gitlab@605d5dca2b2dd53364ffa70ce8d70a08ea58acb3) ([merge request](gitlab-org/gitlab!72419)) **GitLab Enterprise Edition**
- [Use Gitlab::HTTP in download method](gitlab-org/gitlab@e225ad3e80db5af9e4cae6fbb175e0b47048eb7f) ([merge request](gitlab-org/gitlab!72465))
- [Order Deployments by Finish Time](gitlab-org/gitlab@75c9f7e32b16a4b7069b283d2d0c2d7f026507ad) ([merge request](gitlab-org/gitlab!71767))
- [Enable flag group_authorized_agents by default](gitlab-org/gitlab@09bb3c0445a5787c97fe26e9f8e83049647bce5e) ([merge request](gitlab-org/gitlab!72319))
- [Drop Vulnerabilites that would be invalid as well](gitlab-org/gitlab@317151e170fcdf7d50550a05f701b8b7d7a8f405) ([merge request](gitlab-org/gitlab!71752))
- [Rename Import Uploader Extension Allowlist Constant](gitlab-org/gitlab@27bf30563fba8d71ebfe28dd92a13b4633165611) ([merge request](gitlab-org/gitlab!63236))
### Deprecated (1 change)
- [Remove include MR description checkbox and deprecate related API field](gitlab-org/gitlab@18819eeca2922f9d52959c99f9d9ce28940e6784) by @trakos ([merge request](gitlab-org/gitlab!64437))
### Removed (6 changes)
- [Remove chat_names -> ci_pipeline_chat_data FK](gitlab-org/gitlab@155c821a513aaec5e525ce79f4d35bdaf7dc5670) ([merge request](gitlab-org/gitlab!74404))
- [Remove deprecated WIP from GraphQL](gitlab-org/gitlab@29a85cfe949c428afe362c2b8dd2e54b8e497ee7) ([merge request](gitlab-org/gitlab!73349))
- [Remove frontend for editing of Jira labels](gitlab-org/gitlab@83e98e05d3843e881d338a3fecdd06b29c49f03a) ([merge request](gitlab-org/gitlab!73668)) **GitLab Enterprise Edition**
- [Remove jobs and projects columns](gitlab-org/gitlab@e15a5196f4368ba951e3f8108d2ca058a9af863b) ([merge request](gitlab-org/gitlab!73472))
- [Remove the DORA DF feature flag in VSA](gitlab-org/gitlab@8d83b74453f8d4c18f67ee6b4958027bc2970a41) ([merge request](gitlab-org/gitlab!73719))
- [Remove product analytics tracking](gitlab-org/gitlab@eae5f187c4d0ab6dcd0168d5db89850740ae0c9b) ([merge request](gitlab-org/gitlab!72042))
### Security (15 changes)
- [Add reCAPTCHA to password reset and confirmation email forms](gitlab-org/gitlab@6fa2efdfe258414b2acf41fba11044e997a88ad7) ([merge request](gitlab-org/gitlab!72331))
- [Highlight usage of unicode bidi characters](gitlab-org/gitlab@3fb44197195b5789b99a13f7bf482e9a895dfc58)
- [Fix dompurify.js to prevent path traversal attacks](gitlab-org/gitlab@bff4673d75cefd130b567f1b02ba3f26d62f983d)
- [Refresh authorizations on transfer of groups having project shares](gitlab-org/gitlab@f35d2f170059bf667936b7bca7a72c6f30c677d3)
- [Don't allow author to resolve discussions when MR is locked via GraphQL](gitlab-org/gitlab@ba230b385b1246ec19b755a61745de28efcf782e)
- [Workhorse: Allow uploading only a single file](gitlab-org/gitlab@254e11b7a8d2ac081cf5602c19646040453af7fc)
- [Adding a '[redacted]' to mask private email addresses](gitlab-org/gitlab@b84cf6dd7ddfc1c17c2327150975930669cadf95)
- [Avoid decoding the whole tiff image on isTIFF check](gitlab-org/gitlab@486ee8411cde78eb3a510456f3e3e6277f360c45)
- [Respect visibility level settings when updating project via API](gitlab-org/gitlab@35a1f06f3748a0da0d50c72db5e18698a7116627)
- [Only include visible groups a project is shared with](gitlab-org/gitlab@4d1265e4ac6cda24ae7a12fbb5183e64de0472a8)
- [Stop using 'self' in the CSP's frame-src directive](gitlab-org/gitlab@005603b24f2dc92dc78be53c1a0b647657c12c7c) ([merge request](gitlab-org/gitlab!71345))
- [Do not display the root password by default](gitlab-org/gitlab@b4b8d80d00780fbb80ecac7506dcdcfb328d4f03)
- [Group owners should see SCIM token only once](gitlab-org/gitlab@7cec14e42e40e6489665828ee88bb6fa9f9653c1) **GitLab Enterprise Edition**
- [Set PipelineSchedules to inactive](gitlab-org/gitlab@03d2b9600b226593b896a222f291202fff0d40ac)
- [Do not allow Applications API to create apps with blank scopes](gitlab-org/gitlab@0c59b0a577915c3ed530ef2dee1543f7251aaaa5)
### Performance (25 changes)
- [Enable API v3 `branches/:sha` partial response](gitlab-org/gitlab@7a20e62e39bebbe6ca2fcc2c638e1527a4620af5) ([merge request](gitlab-org/gitlab!74355))
- [Avoid cross-joins in PipelinesForMergeRequestFinder](gitlab-org/gitlab@51df5a072802b71d0c69f7a7ea411b83c1429fbf) ([merge request](gitlab-org/gitlab!74293))
- [Improve ETag caching for issue discussions](gitlab-org/gitlab@4c550234b090a2de5c47469ea4791fbdc1ef9faf) ([merge request](gitlab-org/gitlab!74272))
- [GraphQL user.groups node authorization DB query count optimization](gitlab-org/gitlab@58fd8844fbc4c1abb331213755dc9868dbd6efa2) ([merge request](gitlab-org/gitlab!73121))
- [Remove unused index index_for_resource_group on ci_builds](gitlab-org/gitlab@27c4a288e1788fa0b3715717f6bed36ed99fbfef) ([merge request](gitlab-org/gitlab!74018))
- [Remove startup JS call for issue notes](gitlab-org/gitlab@62afe29cc5cbead8c0a24ee7de80a7c0b04f106f) ([merge request](gitlab-org/gitlab!74146))
- [Use keyset pagination when fixing diff commits](gitlab-org/gitlab@0687ed31ca5f002c96132d0d733d931fdca2d677) ([merge request](gitlab-org/gitlab!73836))
- [Enable workhorse_use_sidechannel by default](gitlab-org/gitlab@a09edca131894868c060ab9e2b1b5d99a9e6a3c1) ([merge request](gitlab-org/gitlab!73536))
- [Omit query params for discussions.json](gitlab-org/gitlab@31aa4311d1429a39d936b368c56d0c926497516e) ([merge request](gitlab-org/gitlab!73089))
- [Add index to events table support UMAU metric](gitlab-org/gitlab@8b781a35d79e5214d3195c9f3e135c359d32355f) ([merge request](gitlab-org/gitlab!73273))
- [Use new worker/service to refresh authorizations of project members](gitlab-org/gitlab@f28aeac8c21d39a02e18524efbdb5c5b9563e3e9) ([merge request](gitlab-org/gitlab!73337))
- [Add an index on vulnerability_occurrence_pipelines](gitlab-org/gitlab@a09fb11d6fccb7fb4d951717016df521b147db36) ([merge request](gitlab-org/gitlab!73255))
- [Add index for cluster_id in vulnerability_occurrences location](gitlab-org/gitlab@3b6bc848186e2e17fad3ef3d6247317c5240d381) ([merge request](gitlab-org/gitlab!72882))
- [Default enable new_graphql_keyset_pagination](gitlab-org/gitlab@6032662ecba69405c891e8aa9fe6dc983fe0b72f) ([merge request](gitlab-org/gitlab!72942))
- [Omit WHERE clause for NOT labels filter when empty](gitlab-org/gitlab@dce09398e054c26d9aae5fce884e34af62e9055d) ([merge request](gitlab-org/gitlab!73230))
- [Remove releases author_id index](gitlab-org/gitlab@45f7b0d53fba3b2f8beca308b77f79462e16c43a) ([merge request](gitlab-org/gitlab!72993))
- [Optimize JIRA ref lookup](gitlab-org/gitlab@1993feb5e100c04f33c876ba1b9b7a9083227d8a) ([merge request](gitlab-org/gitlab!72739))
- [Recreate broken ci_builds index](gitlab-org/gitlab@3c69765c0aaf8360171d8fb929eb62a1421e5368) ([merge request](gitlab-org/gitlab!71990))
- [Fix N+1 query in VulnerabilitiesResolver](gitlab-org/gitlab@17d45deea3692293f20b9ce17024d69483966f75) ([merge request](gitlab-org/gitlab!72985)) **GitLab Enterprise Edition**
- [Cleanup update_deployment_after_transaction_commit feature flag](gitlab-org/gitlab@f823b146446019eb6b0f6f17214ba0bc7e36d566) ([merge request](gitlab-org/gitlab!72755))
- [Search for group descendants through a btree](gitlab-org/gitlab@ec0cdd21e7b09b4e06aba529f4b9f8813a133a17) ([merge request](gitlab-org/gitlab!69535))
- [Improve TBT on file source view](gitlab-org/gitlab@95dae81e11ab95bf8793471b00e5213dcffbddf8) ([merge request](gitlab-org/gitlab!72606))
- [Cache CI variables used for rules evaluation](gitlab-org/gitlab@084f1ad54b0eafa53d21c83e002efc005d487e4a) ([merge request](gitlab-org/gitlab!72602))
- [Speed up Sidekiq size limiter middleware](gitlab-org/gitlab@af9327e6ea6e1915aa4f392ac0519c51f41de965) ([merge request](gitlab-org/gitlab!72435))
- [Remove use of Redis multi in Sidekiq client](gitlab-org/gitlab@e2afebc199f13f5d9321d5883e47916d3d0a7bbf) ([merge request](gitlab-org/gitlab!72473))
### Other (78 changes)
- [Fix the offenses introduced by Style/OpenStructUse](gitlab-org/gitlab@8f392435bbc402476b06b6ca197d388398c8b3bb) by @edith007 ([merge request](gitlab-org/gitlab!74197))
- [Fix OpenStruct use](gitlab-org/gitlab@29afe4ac550e25ef377298e117af18c49d8ea7d5) by @mehulsharma ([merge request](gitlab-org/gitlab!74415)) **GitLab Enterprise Edition**
- [Fix OpenStruct use](gitlab-org/gitlab@cab0eb279117f1e349d0fffda8686c07fcfada7f) by @mehulsharma ([merge request](gitlab-org/gitlab!74620))
- [Set total of Progress bar nil when replication is disabled](gitlab-org/gitlab@64716b33b1a79c1d4991d23324cc8625c8dee47d) by @edith007 ([merge request](gitlab-org/gitlab!68303)) **GitLab Enterprise Edition**
- [Add post deploy migration to remove open_project_data](gitlab-org/gitlab@e5543c4b536b41a82d78500464648157bbbc51e8) by @lenikadali ([merge request](gitlab-org/gitlab!71116))
- [Create pipeline trigger application limits](gitlab-org/gitlab@e7b6e65aff212a749fb40232a79c4fc4089ab805) ([merge request](gitlab-org/gitlab!73985))
- [Convert admin users page tabs to Pajamas](gitlab-org/gitlab@b82a4bd4a65a0788a643b10815aca79cb1a256e1) ([merge request](gitlab-org/gitlab!74011))
- [Geo: Remove legacy code for upload sync](gitlab-org/gitlab@3fc77c2bf6828f8f3bb602324085644e02e14b90) ([merge request](gitlab-org/gitlab!72714))
- [Cleanup feature flag gitaly_tags_finder](gitlab-org/gitlab@ede40667b60504b6b69108875d1c1551ea8a452f) ([merge request](gitlab-org/gitlab!74406))
- [Remove `paginated_tree_graphql_query` feature flag](gitlab-org/gitlab@af6c4bf7f749bce63ec8bf4767175c55c34ff45e) ([merge request](gitlab-org/gitlab!72512))
- [Convert labels page tabs to Pajamas](gitlab-org/gitlab@ad9a628a3139c458c2e0e551a95025a00b99d7e0) ([merge request](gitlab-org/gitlab!74006))
- [Set user's highlight theme for the Blame page during SSR](gitlab-org/gitlab@3d9da5c498baafe93f8774b69107b519dcaa4503) by @cyberap ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74335))
- [Convert projects dashboard tabs to Pajamas](gitlab-org/gitlab@fefe70a1826261e0d943032f4db7f1e61f4c0ffc) ([merge request](gitlab-org/gitlab!74004))
- [Convert snippets page tabs to Pajamas](gitlab-org/gitlab@f151421ec1c75750c3e736c500e4c197e51dab0e) ([merge request](gitlab-org/gitlab!73995))
- [Convert projects explore page tabs to Pajamas](gitlab-org/gitlab@f599bf0ccb146cfcb84f655ecbd2a6b9d8546774) ([merge request](gitlab-org/gitlab!74007))
- [Convert admin users page tabs to Pajamas](gitlab-org/gitlab@c96a99d2f8addd95540bd40b203a520ff222ddf6) ([merge request](gitlab-org/gitlab!74014))
- [Convert pipeline schedules page tabs to Pajamas](gitlab-org/gitlab@60ff426c309e191f7b1af8586906b5c3d4ff33a7) ([merge request](gitlab-org/gitlab!74002))
- [Convert commit tabs to pajamas](gitlab-org/gitlab@ce5e44e69c8ce593bbc7fe6e15ddd90d0e83eba8) ([merge request](gitlab-org/gitlab!73970))
- [Decouple group's storage table from feature flag](gitlab-org/gitlab@0aa7613a05c05dc99d3277495197367dcb617624) ([merge request](gitlab-org/gitlab!73237)) **GitLab Enterprise Edition**
- [Add with_highest_role_minimal_access to statistics](gitlab-org/gitlab@15b863d07246e475ba7627726cf6b701f1a4e925) ([merge request](gitlab-org/gitlab!73651))
- [Update GlTab helpers](gitlab-org/gitlab@09d95dcac1938ccf49e7cfed4fcbbe6a3dfcb280) ([merge request](gitlab-org/gitlab!74181))
- [Hide details for invited members in seats usage](gitlab-org/gitlab@5601765b04a4aaadde4e40f24591fc4e8ef5df63) ([merge request](gitlab-org/gitlab!74224)) **GitLab Enterprise Edition**
- [Adds margin to billings page](gitlab-org/gitlab@e0de376b574c1801e76acf036722f4595a5f2a60) ([merge request](gitlab-org/gitlab!74221)) **GitLab Enterprise Edition**
- [Enabling jupyter_clean_diff by default](gitlab-org/gitlab@a578853e0d21f8dcfec3c176f8e51d0b5b3e7df7) ([merge request](gitlab-org/gitlab!74187))
- [Remove report_on_long_redis_durations flag](gitlab-org/gitlab@11eb211ee655d9d95b02275b678c431d5e2c36b5) ([merge request](gitlab-org/gitlab!74183))
- [Replace dotenv constants with application limits](gitlab-org/gitlab@8fc6799a56220d78d6910220d55aac9525f905fe) ([merge request](gitlab-org/gitlab!73855))
- [Convert search tabs to pajamas](gitlab-org/gitlab@c0d202b20fefd7f06c6152b07640844c62369043) ([merge request](gitlab-org/gitlab!73983))
- [Convert blob editor tabs to pajamas](gitlab-org/gitlab@77f6de74044cf0f5b61f9dafe68281bfb1d90058) ([merge request](gitlab-org/gitlab!73993))
- [Convert markdown field tabs to pajamas](gitlab-org/gitlab@b288ae83d010442b89ecd55ff64508c1446d7411) ([merge request](gitlab-org/gitlab!73987))
- [Convert credential inventory tabs to pajamas](gitlab-org/gitlab@389c65bdcaaa80ea06c4004c94ec5aa134ae45a9) ([merge request](gitlab-org/gitlab!73974)) **GitLab Enterprise Edition**
- [Migrate requirement to work items](gitlab-org/gitlab@d787d48626a92fcd545c10947b9c9c5bc0e1347e) ([merge request](gitlab-org/gitlab!71778))
- [Convert explore tabs to pajamas](gitlab-org/gitlab@e043fff6625130c7b1f144056f11f5daf0220557) ([merge request](gitlab-org/gitlab!73956))
- [Convert explore tabs to pajamas](gitlab-org/gitlab@e406816c3f528621123f9e7f1a6d111f90a08bc2) ([merge request](gitlab-org/gitlab!73959))
- [Remove rate limiter feature flag](gitlab-org/gitlab@395d7ca5a95e1e0e6dd2c0af139f93d7cf057df6) ([merge request](gitlab-org/gitlab!73939))
- [Improve Blame Page rendering performance](gitlab-org/gitlab@32e45383f01517c687294b2e72aeb8f9f9f74a97) by @cyberap ([merge request](gitlab-org/gitlab!73885))
- [Convert product analytics tabs to pajamas](gitlab-org/gitlab@8c18ed02a7d1020c233ab767e743dc4455ddcf37) ([merge request](gitlab-org/gitlab!73862))
- [Drop ci_build_trace_sections table and related](gitlab-org/gitlab@b24c3873de1f99179ebfd115ce44ee2fef993b6b) ([merge request](gitlab-org/gitlab!73841))
- [Changed the chronological order of Job history sequence on CI Job](gitlab-org/gitlab@729f105ee2b2ee65d28c0e6ebd5aed5372a7af66) by @edith007 ([merge request](gitlab-org/gitlab!68753))
- [Remove FF ci_create_external_pr_pipeline_async](gitlab-org/gitlab@cb49dc14536d3b1c7837a8e30c5f7b15792f5667) ([merge request](gitlab-org/gitlab!73828))
- [Remove FF ci_new_artifact_file_reader](gitlab-org/gitlab@ca8e9af383be73b826a9df6cb12682661860ca54) ([merge request](gitlab-org/gitlab!73763))
- [Fix the Style/OpenStructUse Cop offense for Guardfile](gitlab-org/gitlab@ad3b51bbdb948f37926a32ceaf395adee8049457) by @edith007 ([merge request](gitlab-org/gitlab!65386))
- [Remove the packages_remove_cross_joins_to_pipelines feature flag](gitlab-org/gitlab@aad1b85da4e13e357782bfa1036b1a6c0a53cbba) ([merge request](gitlab-org/gitlab!73751))
- [Remove the container_registry_expiration_policies_caching feature flag](gitlab-org/gitlab@7cced2645d8ee55c02d9ebf0e5b028bb006e546d) ([merge request](gitlab-org/gitlab!73737))
- [Remove include_sti_condition flag](gitlab-org/gitlab@a4b4fbfe224232cc8550b3db92240e5d5f16b053) ([merge request](gitlab-org/gitlab!73734))
- [Expose 'blocked' attribute on epic issues endpoint](gitlab-org/gitlab@036e9852a72dcc8f43bb805afcf13db50a4d4316) ([merge request](gitlab-org/gitlab!73308)) **GitLab Enterprise Edition**
- [Removed new_customersdot_staging_url feature flag](gitlab-org/gitlab@35eda894e1cd509380ff91461381df65e06004d5) ([merge request](gitlab-org/gitlab!73666))
- [Remove variable_inside_variable feature flag](gitlab-org/gitlab@9e60bd9a471849eaaff7aa954afc714778f245aa) ([merge request](gitlab-org/gitlab!73662))
- [Add spacing at top of project/group blank new forms](gitlab-org/gitlab@b9353cee2290e603b214e2fb91b43f263d40166a) ([merge request](gitlab-org/gitlab!73205))
- [Exclude ProjectNamespaces from GraphQL namespace results](gitlab-org/gitlab@baf4ef770f03a1234224d29c88731791b8c3a3b2) ([merge request](gitlab-org/gitlab!73351))
- [Pass formats explicitly when rendering .md.erb](gitlab-org/gitlab@4a307a690bd6aeed824317056a0dde14bfdc7bd4) by @edith007 ([merge request](gitlab-org/gitlab!73420)) **GitLab Enterprise Edition**
- [Remove pipeline association from Vulnerabilities::Finding](gitlab-org/gitlab@84b9c5bcaa988e30501632c66de068fbfa489673) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73115)) **GitLab Enterprise Edition**
- [Remove release_evidence feature flag](gitlab-org/gitlab@8d9f643b380b72d14ba6c0fa7d0bf789291d61f4) ([merge request](gitlab-org/gitlab!73503))
- [Fix the offences introduced by Performance/OpenStruct](gitlab-org/gitlab@4b9efcaf9bed5895d312679ee60c8aa1537900d7) by @edith007 ([merge request](gitlab-org/gitlab!70900))
- [Add icons to project's storage table](gitlab-org/gitlab@450f6c19708f0fb5d95800f841560ad3d56d2e8d) ([merge request](gitlab-org/gitlab!72524))
- [Cleanup unused tagging records](gitlab-org/gitlab@2cd94915d477b0e6fc7199a13a6a66c1ca015a37) ([merge request](gitlab-org/gitlab!73260))
- [Backfill default namespace as User namespace](gitlab-org/gitlab@f9d95243da3e0f9006fe4dcdfda8cc9492655970) ([merge request](gitlab-org/gitlab!71510))
- [Pass formats explicitly when rendering svg icons](gitlab-org/gitlab@2852c6055781cab52202cb32deb0cc2e6462eaac) by @edith007 ([merge request](gitlab-org/gitlab!73418))
- [Pass formats explicitly when rendering svg icons](gitlab-org/gitlab@6f9b1968774a9b87a4cd9b69dba6d724148270e1) by @edith007 ([merge request](gitlab-org/gitlab!73417))
- [Pass formats explicitly when rendering svg icons](gitlab-org/gitlab@e0a3233df796f3d9f35c977024c3dd13c0cd3f89) by @edith007 ([merge request](gitlab-org/gitlab!73415))
- [Enable quarantined service ping metrics](gitlab-org/gitlab@7197509e00b6929f88da465ec9dba59ff0d2311d) ([merge request](gitlab-org/gitlab!73348)) **GitLab Enterprise Edition**
- [Replace v-html with v-safe-html to improve frontend security posture](gitlab-org/gitlab@809b12710d0e65671cddfc8a6c8a88fe5d48c30f) by @edith007 ([merge request](gitlab-org/gitlab!72912))
- [Improve User Exprience for Blame page](gitlab-org/gitlab@53ec56009b1092a58e57fe003eb91f2797e53b90) by @cyberap ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73173))
- [Mark all time events ServicePing metric as broken](gitlab-org/gitlab@3af1f00ff62be735735d3fce875c1f9a09276631) ([merge request](gitlab-org/gitlab!73266))
- [Restore MR to populate MR diff commit users](gitlab-org/gitlab@422f65be80087c0f2c7d83186e7b866d70870570) ([merge request](gitlab-org/gitlab!73068))
- [Fixing the deprecation warning as using `.` in template has deprecated](gitlab-org/gitlab@58d603bd3dfeddb0194d23c7df7e99cf869c50e1) by @edith007 ([merge request](gitlab-org/gitlab!72842))
- [Drop redundant broken index](gitlab-org/gitlab@6f061f0b9c33c666769ef16a993c2c6ab053a9c7) ([merge request](gitlab-org/gitlab!72889))
- [Refactor protected paths UI and documentation](gitlab-org/gitlab@0f8fc0b0f2cac8d1deca5a6f9d671db7564cb761) ([merge request](gitlab-org/gitlab!72157))
- [Update GitLab Runner Helm Chart to 0.34.0](gitlab-org/gitlab@39538ec722da0fe70d5b570bde2762cc0f03700e) ([merge request](gitlab-org/gitlab!73001))
- [Update gitlab-dangerfiles to 2.3.1](gitlab-org/gitlab@cd8dd8e4a9151e6e487efb045ced15e2cca51b8a) ([merge request](gitlab-org/gitlab!72422))
- [Remove the dast_on_demand_scans_scheduler feature flag](gitlab-org/gitlab@e12031e32b4e24dc36ea246d6fa4e433cc340887) ([merge request](gitlab-org/gitlab!72953)) **GitLab Enterprise Edition**
- [Fix storage row line height](gitlab-org/gitlab@ebb97b803461a0c0007ff70e202427814e9cf7d9) ([merge request](gitlab-org/gitlab!72861)) **GitLab Enterprise Edition**
- [Remove managed cluster alerts feature flag](gitlab-org/gitlab@e76d58137167358d2a934846cbdca299d9ba2e5e) ([merge request](gitlab-org/gitlab!63829))
- [Schedule migration to remove duplicate Findings](gitlab-org/gitlab@59da2c5664f161dc8cbd1eed5b7afb3fce43b65c) ([merge request](gitlab-org/gitlab!72528))
- [Show all storage types in project's storage usage](gitlab-org/gitlab@8d5273b22a395ddcfc901d2c82db242ef17be938) ([merge request](gitlab-org/gitlab!72582))
- [Remove ci_synchronous_artifact_parsing feature flag](gitlab-org/gitlab@06c45bd2db99fe8fda85b2d383a6472c104137f6) ([merge request](gitlab-org/gitlab!72618))
- [Add pipeline artifacts, packages and uploads size to group REST API](gitlab-org/gitlab@fc6fdede8e459e83df4d048868ee96f3e1a49489) by @guillaume.chauvel ([merge request](gitlab-org/gitlab!72075))
- [Add pipeline artifacts and uploads sizes to project REST API](gitlab-org/gitlab@58d66f28faf42ae98ca11ff1ba0bdd9180e988ad) by @guillaume.chauvel ([merge request](gitlab-org/gitlab!72075))
- [Remove not used parameter from epics finder](gitlab-org/gitlab@49fce172b57b2f376a114726b1dd1900fe36a238) ([merge request](gitlab-org/gitlab!72285)) **GitLab Enterprise Edition**
## 14.4.2 (2021-11-08) ## 14.4.2 (2021-11-08)
@ -440,6 +967,24 @@ No changes.
- [Cleanup bigint conversion for ci_builds](gitlab-org/gitlab@176992aa2b2e76b22637a07d5bafbd6541324a7d) ([merge request](gitlab-org/gitlab!70351)) - [Cleanup bigint conversion for ci_builds](gitlab-org/gitlab@176992aa2b2e76b22637a07d5bafbd6541324a7d) ([merge request](gitlab-org/gitlab!70351))
- [Drop support for data-track-event](gitlab-org/gitlab@ac6027fbef6adf41643412a84945fda6f15c9666) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70234)) - [Drop support for data-track-event](gitlab-org/gitlab@ac6027fbef6adf41643412a84945fda6f15c9666) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70234))
## 14.3.4 (2021-10-28)
### Security (13 changes)
- [Highlight usage of unicode bidi characters](gitlab-org/security/gitlab@0b9bcafa73bc12ad873f75584b993f7b94f1f2e7) ([merge request](gitlab-org/security/gitlab!1938))
- [Fix dompurify.js to prevent path traversal attacks](gitlab-org/security/gitlab@6599afd4d7357ab356fcb773af19f8388978b3ed) ([merge request](gitlab-org/security/gitlab!1930))
- [Refresh authorizations on transfer of groups having project shares](gitlab-org/security/gitlab@faad71f44a1b1048b73897d450c923a18ec18c0b) ([merge request](gitlab-org/security/gitlab!1917))
- [Do not allow Applications API to create apps with blank scopes](gitlab-org/security/gitlab@293931500c84ef7ea9a2117d3ddf094f8ac15dcf) ([merge request](gitlab-org/security/gitlab!1923))
- [Don't allow author to resolve discussions when MR is locked via GraphQL](gitlab-org/security/gitlab@5027cb2b0303645a921b95d324d3d55dcf7632e4) ([merge request](gitlab-org/security/gitlab!1920))
- [Workhorse: Allow uploading only a single file](gitlab-org/security/gitlab@c18c2ddfa34a4c3e476136ab3eba9be7f265ad59) ([merge request](gitlab-org/security/gitlab!1914))
- [Group owners should see SCIM token only once](gitlab-org/security/gitlab@3d6664461da720fb256d8e139961b383e33a3b90) ([merge request](gitlab-org/security/gitlab!1907)) **GitLab Enterprise Edition**
- [Respect visibility level settings when updating project via API](gitlab-org/security/gitlab@124ca62c02bfa8ef6f7de7b328f80756fd01c052) ([merge request](gitlab-org/security/gitlab!1904))
- [Avoid decoding the whole tiff image on isTIFF check](gitlab-org/security/gitlab@8e6ffd52f50170a5cf2761e50a3d6efaca5fe64f) ([merge request](gitlab-org/security/gitlab!1900))
- [Adding a '[redacted]' to mask private email addresses](gitlab-org/security/gitlab@6f2a2b2240eb7590bbc773f35d3927d4854a31b5) ([merge request](gitlab-org/security/gitlab!1894))
- [Do not display the root password by default](gitlab-org/security/gitlab@87893548183fc4a111e12c0bdb3e409175a41668) ([merge request](gitlab-org/security/gitlab!1803))
- [Set PipelineSchedules to inactive](gitlab-org/security/gitlab@0e77e1cd938f876f3e9c049a84486c8c90cd0f3f) ([merge request](gitlab-org/security/gitlab!1879))
- [Remove external_webhook_token from exported project](gitlab-org/security/gitlab@1362f7481aad5e4295da11f0db53e31600c7c7b5) ([merge request](gitlab-org/security/gitlab!1866))
## 14.3.3 (2021-10-12) ## 14.3.3 (2021-10-12)
### Fixed (3 changes) ### Fixed (3 changes)
@ -988,6 +1533,24 @@ No changes.
- [Remove the FF ci_reset_bridge_with_subsequent_jobs](gitlab-org/gitlab@a4a75095b9b0250d0b1bdadea90c8a4cd24449b2) ([merge request](gitlab-org/gitlab!68295)) - [Remove the FF ci_reset_bridge_with_subsequent_jobs](gitlab-org/gitlab@a4a75095b9b0250d0b1bdadea90c8a4cd24449b2) ([merge request](gitlab-org/gitlab!68295))
- [Removes ci_same_stage_job_needs ff](gitlab-org/gitlab@5e509cf7aa90041a541b19dda563120a359f0bf9) ([merge request](gitlab-org/gitlab!68041)) - [Removes ci_same_stage_job_needs ff](gitlab-org/gitlab@5e509cf7aa90041a541b19dda563120a359f0bf9) ([merge request](gitlab-org/gitlab!68041))
## 14.2.6 (2021-10-28)
### Security (13 changes)
- [Highlight usage of unicode bidi characters](gitlab-org/security/gitlab@18a768bb3cd19b6dc780bb85d91a93605ec8aa4f) ([merge request](gitlab-org/security/gitlab!1939))
- [Fix dompurify.js to prevent path traversal attacks](gitlab-org/security/gitlab@cfd7c715162c22060b9b80268ef501a9e604421a) ([merge request](gitlab-org/security/gitlab!1931))
- [Refresh authorizations on transfer of groups having project shares](gitlab-org/security/gitlab@3fc08eb869156a090b015e78da79c8ced16a7162) ([merge request](gitlab-org/security/gitlab!1918))
- [Do not allow Applications API to create apps with blank scopes](gitlab-org/security/gitlab@c4ffc8c0ee5356bcb9b76dbfa92517589b4225a8) ([merge request](gitlab-org/security/gitlab!1924))
- [Don't allow author to resolve discussions when MR is locked via GraphQL](gitlab-org/security/gitlab@fe2d0b6f250b60619da97f162c93c9e645daf4af) ([merge request](gitlab-org/security/gitlab!1921))
- [Workhorse: Allow uploading only a single file](gitlab-org/security/gitlab@89b04599592b7dfc0e4883cfde5d3ecd9ea855b2) ([merge request](gitlab-org/security/gitlab!1915))
- [Group owners should see SCIM token only once](gitlab-org/security/gitlab@d52c1e41f38039db075a7a3418b8eb9ed8474c2a) ([merge request](gitlab-org/security/gitlab!1908)) **GitLab Enterprise Edition**
- [Respect visibility level settings when updating project via API](gitlab-org/security/gitlab@3051d6a00d1a56133a77ecd24313bafb4565d576) ([merge request](gitlab-org/security/gitlab!1905))
- [Avoid decoding the whole tiff image on isTIFF check](gitlab-org/security/gitlab@bab7f45def8fc81fe4b0961a21b4c90a60358ff9) ([merge request](gitlab-org/security/gitlab!1901))
- [Adding a '[redacted]' to mask private email addresses](gitlab-org/security/gitlab@8eb9749f40b87b9b49b034bceb263219a4d3b114) ([merge request](gitlab-org/security/gitlab!1895))
- [Do not display the root password by default](gitlab-org/security/gitlab@4ccf08b6645b9f616657edd266d9d31e3602d170) ([merge request](gitlab-org/security/gitlab!1802))
- [Set PipelineSchedules to inactive](gitlab-org/security/gitlab@ebee16945325d22ceb5c07b7ba48df6fd0b2f067) ([merge request](gitlab-org/security/gitlab!1878))
- [Remove external_webhook_token from exported project](gitlab-org/security/gitlab@f3ef12185902f3ed5c9d62ffce07418fd704a753) ([merge request](gitlab-org/security/gitlab!1865))
## 14.2.5 (2021-09-30) ## 14.2.5 (2021-09-30)
### Security (28 changes) ### Security (28 changes)
@ -1612,6 +2175,19 @@ No changes.
- [Add helpful text to URL group validation and limit text](gitlab-org/gitlab@59a5a6266cb0d5434596170ffa36e4e74b8d2c2c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65369)) **GitLab Enterprise Edition** - [Add helpful text to URL group validation and limit text](gitlab-org/gitlab@59a5a6266cb0d5434596170ffa36e4e74b8d2c2c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65369)) **GitLab Enterprise Edition**
- [Refactor external storage admin area configuration UI and docs](gitlab-org/gitlab@497ba4fc8f4ec1d234c9f5f1ec5c69712b8c7cb3) ([merge request](gitlab-org/gitlab!66219)) - [Refactor external storage admin area configuration UI and docs](gitlab-org/gitlab@497ba4fc8f4ec1d234c9f5f1ec5c69712b8c7cb3) ([merge request](gitlab-org/gitlab!66219))
## 14.1.8 (2021-11-15)
### Fixed (1 change)
- [Prevent Git operations from checking replication lag on non-Geo-secondary sites](gitlab-org/gitlab@5abc66f89524b63873b0ce96b0f78c0acc2687f6) ([merge request](gitlab-org/gitlab!73980)) **GitLab Enterprise Edition**
### Changed (4 changes)
- [Geo: Alternate redownload and normal design sync attempts](gitlab-org/gitlab@c23c94e9d791770fd169723845b12097b8512a9e) ([merge request](gitlab-org/gitlab!73980)) **GitLab Enterprise Edition**
- [Geo: Alternate redownload and normal SSF sync attempts](gitlab-org/gitlab@5aba12770829d43041ef4307049ed500c02b1d77) ([merge request](gitlab-org/gitlab!73980)) **GitLab Enterprise Edition**
- [Geo: Alternate redownload and normal project syncs](gitlab-org/gitlab@4d3a5798e1f136a027c0b7aab6a35afb3c207ce7) ([merge request](gitlab-org/gitlab!73980)) **GitLab Enterprise Edition**
- [Geo: Reduce frequency of redownload attempts](gitlab-org/gitlab@795271787c70b7c92a85daa253d2d61561603443) ([merge request](gitlab-org/gitlab!73980)) **GitLab Enterprise Edition**
## 14.1.7 (2021-09-30) ## 14.1.7 (2021-09-30)
### Security (28 changes) ### Security (28 changes)
@ -2288,6 +2864,15 @@ No changes.
- [Remove diffs gradual load feature flag](gitlab-org/gitlab@027d7c4327b5b6205a84281239027273517bf81b) ([merge request](gitlab-org/gitlab!55478)) - [Remove diffs gradual load feature flag](gitlab-org/gitlab@027d7c4327b5b6205a84281239027273517bf81b) ([merge request](gitlab-org/gitlab!55478))
- [Remove partial index for Hashed Storage migration](gitlab-org/gitlab@3ed017a1023d7b0941a7606b69e6caee8d22f15c) ([merge request](gitlab-org/gitlab!62920)) - [Remove partial index for Hashed Storage migration](gitlab-org/gitlab@3ed017a1023d7b0941a7606b69e6caee8d22f15c) ([merge request](gitlab-org/gitlab!62920))
## 14.0.12 (2021-11-05)
### Changed (4 changes)
- [Geo: Alternate redownload and normal design sync attempts](gitlab-org/gitlab@ed34172e5c7425316480efb732a9429e93e81017) ([merge request](gitlab-org/gitlab!73722)) **GitLab Enterprise Edition**
- [Geo: Alternate redownload and normal SSF sync attempts](gitlab-org/gitlab@c0f2f40b98c4b9fc72c21c474a2224e045263ea2) ([merge request](gitlab-org/gitlab!73722)) **GitLab Enterprise Edition**
- [Geo: Alternate redownload and normal project syncs](gitlab-org/gitlab@6370a7258719d5eb0ad83c54383ecb7f4fd54fc2) ([merge request](gitlab-org/gitlab!73722)) **GitLab Enterprise Edition**
- [Geo: Reduce frequency of redownload attempts](gitlab-org/gitlab@1bcd41f28733b01286a42689857f6530c0805186) ([merge request](gitlab-org/gitlab!73722)) **GitLab Enterprise Edition**
## 14.0.11 (2021-09-23) ## 14.0.11 (2021-09-23)
### Fixed (1 change) ### Fixed (1 change)
@ -3059,6 +3644,21 @@ No changes.
- [Add missing metrics information](gitlab-org/gitlab@89cd7fe3b95323e635b2d73e08549b2e6153dc4d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61772/edit)) - [Add missing metrics information](gitlab-org/gitlab@89cd7fe3b95323e635b2d73e08549b2e6153dc4d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61772/edit))
- [Track usage of the resolve UI](gitlab-org/gitlab@35c8e30fce288cecefcf2f7c0077d4608e696519) ([merge request](gitlab-org/gitlab!61654)) - [Track usage of the resolve UI](gitlab-org/gitlab@35c8e30fce288cecefcf2f7c0077d4608e696519) ([merge request](gitlab-org/gitlab!61654))
## 13.12.15 (2021-11-03)
### Fixed (2 changes)
- [Allow nil for remaining ci cd settings](gitlab-org/gitlab@896fd7ecf23714fa9f710efa4af245a26c677dce) ([merge request](gitlab-org/gitlab!73522))
- [Allow nil on delegated CI/CD settings](gitlab-org/gitlab@d57a9ea79080fc473eb54c0ee696a50fd270e8a4) ([merge request](gitlab-org/gitlab!73522))
## 13.12.14 (2021-11-03)
This version has been skipped due to QA problems.
## 13.12.13 (2021-10-29)
This version has been skipped due to QA problems.
## 13.12.12 (2021-09-21) ## 13.12.12 (2021-09-21)
No changes. No changes.

View file

@ -17,6 +17,21 @@ end
anything_to_post = status_report.values.any? { |data| data.any? } anything_to_post = status_report.values.any? { |data| data.any? }
if helper.ci? && anything_to_post return unless helper.ci?
def post_labels
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
gitlab.mr_json['iid'],
add_labels: project_helper.labels_to_add.join(','))
rescue Gitlab::Error::Forbidden
labels = project_helper.labels_to_add.map { |label| %Q(~"#{label}") }
warn("This Merge Request needs to be labelled with #{labels.join(' ')}. Please request a reviewer or maintainer to add them.")
end
if project_helper.labels_to_add.any?
post_labels
end
if anything_to_post
markdown("**If needed, you can retry the [`danger-review` job](#{ENV['CI_JOB_URL']}) that generated this comment.**") markdown("**If needed, you can retry the [`danger-review` job](#{ENV['CI_JOB_URL']}) that generated this comment.**")
end end

View file

@ -1 +1 @@
14.4.4 14.5.2

View file

@ -1 +1 @@
14.4.0 14.5.0

View file

@ -1 +1 @@
1.46.0 1.48.0

View file

@ -1 +1 @@
13.21.1 13.22.1

24
Gemfile
View file

@ -4,7 +4,7 @@ source 'https://rubygems.org'
gem 'rails', '~> 6.1.4.1' gem 'rails', '~> 6.1.4.1'
gem 'bootsnap', '~> 1.4.6' gem 'bootsnap', '~> 1.9.1', require: false
# Responders respond_to and respond_with # Responders respond_to and respond_with
gem 'responders', '~> 3.0' gem 'responders', '~> 3.0'
@ -17,14 +17,14 @@ gem 'default_value_for', '~> 3.4.0'
# Supported DBs # Supported DBs
gem 'pg', '~> 1.1' gem 'pg', '~> 1.1'
gem 'rugged', '~> 1.1' gem 'rugged', '~> 1.2'
gem 'grape-path-helpers', '~> 1.7.0' gem 'grape-path-helpers', '~> 1.7.0'
gem 'faraday', '~> 1.0' gem 'faraday', '~> 1.0'
gem 'marginalia', '~> 1.10.0' gem 'marginalia', '~> 1.10.0'
# Authorization # Authorization
gem 'declarative_policy', '~> 1.0.0' gem 'declarative_policy', '~> 1.1.0'
# Authentication libraries # Authentication libraries
gem 'devise', '~> 4.7.2' gem 'devise', '~> 4.7.2'
@ -38,6 +38,7 @@ gem 'omniauth-auth0', '~> 2.0.0'
gem 'omniauth-azure-activedirectory-v2', '~> 1.0' gem 'omniauth-azure-activedirectory-v2', '~> 1.0'
gem 'omniauth-azure-oauth2', '~> 0.0.9' # Deprecated v1 version gem 'omniauth-azure-oauth2', '~> 0.0.9' # Deprecated v1 version
gem 'omniauth-cas3', '~> 1.1.4' gem 'omniauth-cas3', '~> 1.1.4'
gem 'omniauth-dingtalk-oauth2', '~> 1.0'
gem 'omniauth-facebook', '~> 4.0.0' gem 'omniauth-facebook', '~> 4.0.0'
gem 'omniauth-github', '~> 1.4' gem 'omniauth-github', '~> 1.4'
gem 'omniauth-gitlab', '~> 1.0.2' gem 'omniauth-gitlab', '~> 1.0.2'
@ -129,7 +130,7 @@ gem 'fog-local', '~> 0.6'
gem 'fog-openstack', '~> 1.0' gem 'fog-openstack', '~> 1.0'
gem 'fog-rackspace', '~> 0.1.1' gem 'fog-rackspace', '~> 0.1.1'
gem 'fog-aliyun', '~> 0.3' gem 'fog-aliyun', '~> 0.3'
gem 'gitlab-fog-azure-rm', '~> 1.2.0', require: false gem 'gitlab-fog-azure-rm', '~> 1.2.0', require: 'fog/azurerm'
# for Google storage # for Google storage
gem 'google-api-client', '~> 0.33' gem 'google-api-client', '~> 0.33'
@ -186,6 +187,7 @@ gem 'rack-timeout', '~> 0.5.1', require: 'rack/timeout/base'
group :puma do group :puma do
gem 'puma', '~> 5.3.1', require: false gem 'puma', '~> 5.3.1', require: false
gem 'puma_worker_killer', '~> 0.3.1', require: false gem 'puma_worker_killer', '~> 0.3.1', require: false
gem 'sd_notify', '~> 0.1.0', require: false
end end
# State machine # State machine
@ -290,7 +292,7 @@ gem 'autoprefixer-rails', '10.2.5.1'
gem 'terser', '1.0.2' gem 'terser', '1.0.2'
gem 'addressable', '~> 2.8' gem 'addressable', '~> 2.8'
gem 'gemojione', '~> 3.3' gem 'tanuki_emoji', '~> 0.5'
gem 'gon', '~> 6.4.0' gem 'gon', '~> 6.4.0'
gem 'request_store', '~> 1.5' gem 'request_store', '~> 1.5'
gem 'base32', '~> 0.3.0' gem 'base32', '~> 0.3.0'
@ -341,13 +343,15 @@ group :development do
gem 'lefthook', '~> 0.7.0', require: false gem 'lefthook', '~> 0.7.0', require: false
gem 'solargraph', '~> 0.43', require: false gem 'solargraph', '~> 0.43', require: false
gem 'letter_opener_web', '~> 1.4.1' gem 'letter_opener_web', '~> 2.0.0'
# Better errors handler # Better errors handler
gem 'better_errors', '~> 2.9.0' gem 'better_errors', '~> 2.9.0'
# thin instead webrick # thin instead webrick
gem 'thin', '~> 1.8.0' gem 'thin', '~> 1.8.0'
gem 'sprite-factory', '~> 1.7'
end end
group :development, :test do group :development, :test do
@ -372,7 +376,7 @@ group :development, :test do
gem 'spring', '~> 2.1.0' gem 'spring', '~> 2.1.0'
gem 'spring-commands-rspec', '~> 1.0.4' gem 'spring-commands-rspec', '~> 1.0.4'
gem 'gitlab-styles', '~> 6.3.0', require: false gem 'gitlab-styles', '~> 6.4.0', require: false
gem 'haml_lint', '~> 0.36.0', require: false gem 'haml_lint', '~> 0.36.0', require: false
gem 'bundler-audit', '~> 0.7.0.1', require: false gem 'bundler-audit', '~> 0.7.0.1', require: false
@ -396,7 +400,7 @@ group :development, :test do
end end
group :development, :test, :danger do group :development, :test, :danger do
gem 'gitlab-dangerfiles', '~> 2.3.0', require: false gem 'gitlab-dangerfiles', '~> 2.5.0', require: false
end end
group :development, :test, :coverage do group :development, :test, :coverage do
@ -474,7 +478,7 @@ end
gem 'spamcheck', '~> 0.1.0' gem 'spamcheck', '~> 0.1.0'
# Gitaly GRPC protocol definitions # Gitaly GRPC protocol definitions
gem 'gitaly', '~> 14.3.0.pre.rc2' gem 'gitaly', '~> 14.4.0.pre.rc43'
# KAS GRPC protocol definitions # KAS GRPC protocol definitions
gem 'kas-grpc', '~> 0.0.2' gem 'kas-grpc', '~> 0.0.2'
@ -534,3 +538,5 @@ gem 'webauthn', '~> 2.3'
gem 'ipaddress', '~> 0.8.3' gem 'ipaddress', '~> 0.8.3'
gem 'parslet', '~> 1.8' gem 'parslet', '~> 1.8'
gem 'ipynbdiff', '0.3.7'

View file

@ -148,7 +148,7 @@ GEM
rack (>= 0.9.0) rack (>= 0.9.0)
bindata (2.4.10) bindata (2.4.10)
binding_ninja (0.2.3) binding_ninja (0.2.3)
bootsnap (1.4.6) bootsnap (1.9.1)
msgpack (~> 1.0) msgpack (~> 1.0)
bootstrap_form (4.2.0) bootstrap_form (4.2.0)
actionpack (>= 5.0) actionpack (>= 5.0)
@ -222,7 +222,7 @@ GEM
css_parser (1.7.0) css_parser (1.7.0)
addressable addressable
daemons (1.3.1) daemons (1.3.1)
danger (8.3.1) danger (8.4.1)
claide (~> 1.0) claide (~> 1.0)
claide-plugins (>= 0.9.2) claide-plugins (>= 0.9.2)
colored2 (~> 3.1) colored2 (~> 3.1)
@ -244,7 +244,7 @@ GEM
html-pipeline html-pipeline
declarative (0.0.20) declarative (0.0.20)
declarative-option (0.1.0) declarative-option (0.1.0)
declarative_policy (1.0.0) declarative_policy (1.1.0)
default_value_for (3.4.0) default_value_for (3.4.0)
activerecord (>= 3.2.0, < 7.0) activerecord (>= 3.2.0, < 7.0)
deprecation_toolkit (1.5.1) deprecation_toolkit (1.5.1)
@ -436,8 +436,6 @@ GEM
ruby-progressbar (~> 1.4) ruby-progressbar (~> 1.4)
fuzzyurl (0.9.0) fuzzyurl (0.9.0)
gemoji (3.0.1) gemoji (3.0.1)
gemojione (3.3.0)
json
get_process_mem (0.2.5) get_process_mem (0.2.5)
ffi (~> 1.0) ffi (~> 1.0)
gettext (3.3.6) gettext (3.3.6)
@ -452,7 +450,7 @@ GEM
rails (>= 3.2.0) rails (>= 3.2.0)
git (1.7.0) git (1.7.0)
rchardet (~> 1.8) rchardet (~> 1.8)
gitaly (14.3.0.pre.rc2) gitaly (14.4.0.pre.rc43)
grpc (~> 1.0) grpc (~> 1.0)
github-markup (1.7.0) github-markup (1.7.0)
gitlab (4.16.1) gitlab (4.16.1)
@ -460,7 +458,7 @@ GEM
terminal-table (~> 1.5, >= 1.5.1) terminal-table (~> 1.5, >= 1.5.1)
gitlab-chronic (0.10.5) gitlab-chronic (0.10.5)
numerizer (~> 0.2) numerizer (~> 0.2)
gitlab-dangerfiles (2.3.0) gitlab-dangerfiles (2.5.0)
danger (>= 8.3.1) danger (>= 8.3.1)
danger-gitlab (>= 8.0.0) danger-gitlab (>= 8.0.0)
gitlab-experiment (0.6.4) gitlab-experiment (0.6.4)
@ -492,7 +490,7 @@ GEM
openid_connect (~> 1.2) openid_connect (~> 1.2)
gitlab-sidekiq-fetcher (0.8.0) gitlab-sidekiq-fetcher (0.8.0)
sidekiq (~> 6.1) sidekiq (~> 6.1)
gitlab-styles (6.3.0) gitlab-styles (6.4.0)
rubocop (~> 0.91, >= 0.91.1) rubocop (~> 0.91, >= 0.91.1)
rubocop-gitlab-security (~> 0.1.1) rubocop-gitlab-security (~> 0.1.1)
rubocop-performance (~> 1.9.2) rubocop-performance (~> 1.9.2)
@ -642,6 +640,9 @@ GEM
invisible_captcha (1.1.0) invisible_captcha (1.1.0)
rails (>= 4.2) rails (>= 4.2)
ipaddress (0.8.3) ipaddress (0.8.3)
ipynbdiff (0.3.7)
diffy (= 3.3.0)
json (= 2.5.1)
jaeger-client (1.1.0) jaeger-client (1.1.0)
opentracing (~> 0.3) opentracing (~> 0.3)
thrift thrift
@ -699,10 +700,11 @@ GEM
lefthook (0.7.5) lefthook (0.7.5)
letter_opener (1.7.0) letter_opener (1.7.0)
launchy (~> 2.2) launchy (~> 2.2)
letter_opener_web (1.4.1) letter_opener_web (2.0.0)
actionmailer (>= 3.2) actionmailer (>= 5.2)
letter_opener (~> 1.0) letter_opener (~> 1.7)
railties (>= 3.2) railties (>= 5.2)
rexml
libyajl2 (1.2.0) libyajl2 (1.2.0)
license_finder (6.0.0) license_finder (6.0.0)
bundler bundler
@ -839,6 +841,8 @@ GEM
addressable (~> 2.3) addressable (~> 2.3)
nokogiri (~> 1.7, >= 1.7.1) nokogiri (~> 1.7, >= 1.7.1)
omniauth (~> 1.2) omniauth (~> 1.2)
omniauth-dingtalk-oauth2 (1.0.0)
omniauth-oauth2 (~> 1.7.1)
omniauth-facebook (4.0.0) omniauth-facebook (4.0.0)
omniauth-oauth2 (~> 1.2) omniauth-oauth2 (~> 1.2)
omniauth-github (1.4.0) omniauth-github (1.4.0)
@ -859,7 +863,7 @@ GEM
omniauth-oauth (1.1.0) omniauth-oauth (1.1.0)
oauth oauth
omniauth (~> 1.0) omniauth (~> 1.0)
omniauth-oauth2 (1.7.1) omniauth-oauth2 (1.7.2)
oauth2 (~> 1.4) oauth2 (~> 1.4)
omniauth (>= 1.9, < 3) omniauth (>= 1.9, < 3)
omniauth-oauth2-generic (0.2.2) omniauth-oauth2-generic (0.2.2)
@ -1129,7 +1133,7 @@ GEM
rubyntlm (0.6.2) rubyntlm (0.6.2)
rubypants (0.2.0) rubypants (0.2.0)
rubyzip (2.0.0) rubyzip (2.0.0)
rugged (1.1.0) rugged (1.2.0)
safe_yaml (1.0.4) safe_yaml (1.0.4)
safety_net_attestation (0.4.0) safety_net_attestation (0.4.0)
jwt (~> 2.0) jwt (~> 2.0)
@ -1155,6 +1159,7 @@ GEM
addressable (>= 2.3.5) addressable (>= 2.3.5)
faraday (> 0.8, < 2.0) faraday (> 0.8, < 2.0)
scientist (1.6.0) scientist (1.6.0)
sd_notify (0.1.0)
securecompare (1.0.0) securecompare (1.0.0)
seed-fu (2.3.7) seed-fu (2.3.7)
activerecord (>= 3.1) activerecord (>= 3.1)
@ -1216,6 +1221,7 @@ GEM
spring (2.1.1) spring (2.1.1)
spring-commands-rspec (1.0.4) spring-commands-rspec (1.0.4)
spring (>= 0.9.1) spring (>= 0.9.1)
sprite-factory (1.7.1)
sprockets (3.7.2) sprockets (3.7.2)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) rack (> 1, < 3)
@ -1246,6 +1252,7 @@ GEM
sys-filesystem (1.1.9) sys-filesystem (1.1.9)
ffi ffi
sysexits (1.2.0) sysexits (1.2.0)
tanuki_emoji (0.5.0)
temple (0.8.2) temple (0.8.2)
terminal-table (1.8.0) terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1) unicode-display_width (~> 1.1, >= 1.1.1)
@ -1399,7 +1406,7 @@ DEPENDENCIES
benchmark-ips (~> 2.3.0) benchmark-ips (~> 2.3.0)
benchmark-memory (~> 0.1) benchmark-memory (~> 0.1)
better_errors (~> 2.9.0) better_errors (~> 2.9.0)
bootsnap (~> 1.4.6) bootsnap (~> 1.9.1)
bootstrap_form (~> 4.2.0) bootstrap_form (~> 4.2.0)
browser (~> 4.2) browser (~> 4.2)
bullet (~> 6.1.3) bullet (~> 6.1.3)
@ -1416,7 +1423,7 @@ DEPENDENCIES
crystalball (~> 0.7.0) crystalball (~> 0.7.0)
database_cleaner (~> 1.7.0) database_cleaner (~> 1.7.0)
deckar01-task_list (= 2.3.1) deckar01-task_list (= 2.3.1)
declarative_policy (~> 1.0.0) declarative_policy (~> 1.1.0)
default_value_for (~> 3.4.0) default_value_for (~> 3.4.0)
deprecation_toolkit (~> 1.5.1) deprecation_toolkit (~> 1.5.1)
derailed_benchmarks derailed_benchmarks
@ -1454,14 +1461,13 @@ DEPENDENCIES
fog-rackspace (~> 0.1.1) fog-rackspace (~> 0.1.1)
fugit (~> 1.2.1) fugit (~> 1.2.1)
fuubar (~> 2.2.0) fuubar (~> 2.2.0)
gemojione (~> 3.3)
gettext (~> 3.3) gettext (~> 3.3)
gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3) gettext_i18n_rails_js (~> 1.3)
gitaly (~> 14.3.0.pre.rc2) gitaly (~> 14.4.0.pre.rc43)
github-markup (~> 1.7.0) github-markup (~> 1.7.0)
gitlab-chronic (~> 0.10.5) gitlab-chronic (~> 0.10.5)
gitlab-dangerfiles (~> 2.3.0) gitlab-dangerfiles (~> 2.5.0)
gitlab-experiment (~> 0.6.4) gitlab-experiment (~> 0.6.4)
gitlab-fog-azure-rm (~> 1.2.0) gitlab-fog-azure-rm (~> 1.2.0)
gitlab-labkit (~> 0.21.1) gitlab-labkit (~> 0.21.1)
@ -1471,7 +1477,7 @@ DEPENDENCIES
gitlab-net-dns (~> 0.9.1) gitlab-net-dns (~> 0.9.1)
gitlab-omniauth-openid-connect (~> 0.8.0) gitlab-omniauth-openid-connect (~> 0.8.0)
gitlab-sidekiq-fetcher (= 0.8.0) gitlab-sidekiq-fetcher (= 0.8.0)
gitlab-styles (~> 6.3.0) gitlab-styles (~> 6.4.0)
gitlab_chronic_duration (~> 0.10.6.2) gitlab_chronic_duration (~> 0.10.6.2)
gitlab_omniauth-ldap (~> 2.1.1) gitlab_omniauth-ldap (~> 2.1.1)
gon (~> 6.4.0) gon (~> 6.4.0)
@ -1501,6 +1507,7 @@ DEPENDENCIES
icalendar icalendar
invisible_captcha (~> 1.1.0) invisible_captcha (~> 1.1.0)
ipaddress (~> 0.8.3) ipaddress (~> 0.8.3)
ipynbdiff (= 0.3.7)
jira-ruby (~> 2.1.4) jira-ruby (~> 2.1.4)
js_regex (~> 3.7) js_regex (~> 3.7)
json (~> 2.5.1) json (~> 2.5.1)
@ -1512,7 +1519,7 @@ DEPENDENCIES
kramdown (~> 2.3.1) kramdown (~> 2.3.1)
kubeclient (~> 4.9.2) kubeclient (~> 4.9.2)
lefthook (~> 0.7.0) lefthook (~> 0.7.0)
letter_opener_web (~> 1.4.1) letter_opener_web (~> 2.0.0)
license_finder (~> 6.0) license_finder (~> 6.0)
licensee (~> 9.14.1) licensee (~> 9.14.1)
lockbox (~> 0.6.2) lockbox (~> 0.6.2)
@ -1542,6 +1549,7 @@ DEPENDENCIES
omniauth-azure-activedirectory-v2 (~> 1.0) omniauth-azure-activedirectory-v2 (~> 1.0)
omniauth-azure-oauth2 (~> 0.0.9) omniauth-azure-oauth2 (~> 0.0.9)
omniauth-cas3 (~> 1.1.4) omniauth-cas3 (~> 1.1.4)
omniauth-dingtalk-oauth2 (~> 1.0)
omniauth-facebook (~> 4.0.0) omniauth-facebook (~> 4.0.0)
omniauth-github (~> 1.4) omniauth-github (~> 1.4)
omniauth-gitlab (~> 1.0.2) omniauth-gitlab (~> 1.0.2)
@ -1603,9 +1611,10 @@ DEPENDENCIES
ruby-saml (~> 1.13.0) ruby-saml (~> 1.13.0)
ruby_parser (~> 3.15) ruby_parser (~> 3.15)
rubyzip (~> 2.0.0) rubyzip (~> 2.0.0)
rugged (~> 1.1) rugged (~> 1.2)
sanitize (~> 5.2.1) sanitize (~> 5.2.1)
sassc-rails (~> 2.1.0) sassc-rails (~> 2.1.0)
sd_notify (~> 0.1.0)
seed-fu (~> 2.3.7) seed-fu (~> 2.3.7)
selenium-webdriver (~> 3.142) selenium-webdriver (~> 3.142)
sentry-raven (~> 3.1) sentry-raven (~> 3.1)
@ -1622,11 +1631,13 @@ DEPENDENCIES
spamcheck (~> 0.1.0) spamcheck (~> 0.1.0)
spring (~> 2.1.0) spring (~> 2.1.0)
spring-commands-rspec (~> 1.0.4) spring-commands-rspec (~> 1.0.4)
sprite-factory (~> 1.7)
sprockets (~> 3.7.0) sprockets (~> 3.7.0)
sshkey (~> 2.0) sshkey (~> 2.0)
stackprof (~> 0.2.15) stackprof (~> 0.2.15)
state_machines-activerecord (~> 0.8.0) state_machines-activerecord (~> 0.8.0)
sys-filesystem (~> 1.1.6) sys-filesystem (~> 1.1.6)
tanuki_emoji (~> 0.5)
terser (= 1.0.2) terser (= 1.0.2)
test-prof (~> 1.0.7) test-prof (~> 1.0.7)
test_file_finder (~> 0.1.3) test_file_finder (~> 0.1.3)

View file

@ -9,7 +9,7 @@ cmd = ENV['GUARD_CMD'] || (ENV['SPRING'] ? 'spring rspec' : 'bundle exec rspec')
directories %w(app ee lib rubocop tooling spec) directories %w(app ee lib rubocop tooling spec)
rspec_context_for = proc do |context_path| rspec_context_for = proc do |context_path|
OpenStruct.new(to_s: "spec").tap do |rspec| OpenStruct.new(to_s: "spec").tap do |rspec| # rubocop:disable Style/OpenStructUse
rspec.spec_dir = "#{context_path}spec" rspec.spec_dir = "#{context_path}spec"
rspec.spec = ->(m) { Guard::RSpec::Dsl.detect_spec_file_for(rspec, m) } rspec.spec = ->(m) { Guard::RSpec::Dsl.detect_spec_file_for(rspec, m) }
rspec.spec_helper = "#{rspec.spec_dir}/spec_helper.rb" rspec.spec_helper = "#{rspec.spec_dir}/spec_helper.rb"
@ -19,7 +19,7 @@ rspec_context_for = proc do |context_path|
end end
rails_context_for = proc do |context_path, exts| rails_context_for = proc do |context_path, exts|
OpenStruct.new.tap do |rails| OpenStruct.new.tap do |rails| # rubocop:disable Style/OpenStructUse
rails.app_files = %r{^#{context_path}app/(.+)\.rb$} rails.app_files = %r{^#{context_path}app/(.+)\.rb$}
rails.views = %r{^#{context_path}app/(views/.+/[^/]*\.(?:#{exts}))$} rails.views = %r{^#{context_path}app/(views/.+/[^/]*\.(?:#{exts}))$}

View file

@ -71,7 +71,7 @@ To work on GitLab itself, we recommend setting up your development environment w
If you do not use the GitLab Development Kit you need to install and configure all the dependencies yourself, this is a lot of work and error prone. If you do not use the GitLab Development Kit you need to install and configure all the dependencies yourself, this is a lot of work and error prone.
One small thing you also have to do when installing it yourself is to copy the example development Puma configuration file: One small thing you also have to do when installing it yourself is to copy the example development Puma configuration file:
cp config/puma.rb.example.development config/puma.rb cp config/puma.example.development.rb config/puma.rb
Instructions on how to start GitLab and how to run the tests can be found in the [getting started section of the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit#getting-started). Instructions on how to start GitLab and how to run the tests can be found in the [getting started section of the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit#getting-started).

View file

@ -1 +1 @@
14.4.4 14.5.2

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 953 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

Some files were not shown because too many files have changed in this diff Show more