New upstream version 14.2.5+ds1

This commit is contained in:
Pirate Praveen 2021-10-27 15:23:28 +05:30
parent bea6aeeaf6
commit edb4c77020
6289 changed files with 226762 additions and 172617 deletions

View file

@ -3,7 +3,7 @@ extends:
- plugin:@gitlab/i18n
- plugin:no-jquery/slim
- plugin:no-jquery/deprecated-3.4
- ./tooling/eslint-config/conditionally_ignore_ee.js
- ./tooling/eslint-config/conditionally_ignore.js
globals:
__webpack_public_path__: true
gl: false

View file

@ -36,8 +36,16 @@ workflow:
# they serve no purpose and will run anyway when the changes are merged.
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^release-tools\/\d+\.\d+\.\d+-rc\d+$/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^[\d-]+-stable(-ee)?$/ && $CI_PROJECT_PATH == "gitlab-org/gitlab"'
when: never
# For merge requests, create a pipeline.
# For merged result pipelines, set $QA_IMAGE, since $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is only available for merged result pipelines.
- if: '$CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train"'
variables:
QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}"
# Also run (detached) merge request pipelines.
- if: '$CI_MERGE_REQUEST_IID'
# For the 2-hourly scheduled pipelines, we set specific variables.
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"'
variables:
CRYSTALBALL: "true"
# For `$CI_DEFAULT_BRANCH` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
# For tags, create a pipeline.
@ -84,6 +92,9 @@ variables:
RSPEC_FAIL_FAST_ENABLED: "true" # Set it to "false" to disable RSpec fail-fast
SIMPLECOV: "true"
# For the default QA image, we use $CI_COMMIT_SHA as tag since it's always available and we override it for specific workflow.rules (see above)
QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_SHA}"
# Preparing custom clone path to reduce space used by all random forks
# on GitLab.com's Shared Runners. Our main forks - especially the security
# ones - will have this variable overwritten in the project settings, so that

View file

@ -49,7 +49,6 @@
/doc/user/clusters/ @marcia
/doc/user/compliance/ @rdickenson @eread
/doc/user/group/ @msedlakjakubowski
/doc/user/group/bulk_editing/ @msedlakjakubowski
/doc/user/group/devops_adoption/ @msedlakjakubowski
/doc/user/group/epics/ @msedlakjakubowski
/doc/user/group/insights/ @msedlakjakubowski
@ -115,7 +114,7 @@
/doc/api/tags.md @aqualls
/doc/api/visual_review_discussions.md @aqualls
/doc/api/wikis.md @aqualls
/doc/intro/README.md @aqualls
/doc/intro/index.md @aqualls
/doc/topics/gitlab_flow.md @aqualls
/doc/user/admin_area/settings/account_and_limit_settings.md @aqualls
/doc/user/admin_area/settings/instance_template_repository.md @aqualls
@ -145,7 +144,7 @@
/doc/api/experiments.md @kpaizee
/doc/development/experiment_guide/ @kpaizee
/doc/development/snowplow/ @kpaizee
/doc/development/usage_ping/ @kpaizee
/doc/development/service_ping/ @kpaizee
/doc/user/admin_area/license.md @kpaizee
[Frontend]

View file

@ -25,10 +25,9 @@ build-qa-image:
- .build-images:rules:build-qa-image
stage: build-images
needs: []
variables:
QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}"
script:
- !reference [.base-image-build, script]
- echo $QA_IMAGE
- /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true
# This image is used by:

View file

@ -7,4 +7,4 @@ cloud-native-image:
GIT_DEPTH: "1"
script:
- install_gitlab_gem
- CNG_PROJECT_PATH="gitlab-org/build/CNG" ./scripts/trigger-build cng
- ./scripts/trigger-build cng

View file

@ -44,7 +44,7 @@ docs-lint markdown:
- .default-retry
- .docs:rules:docs-lint
# When updating the image version here, update it in /scripts/lint-doc.sh too.
image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.13-vale-2.10.2-markdownlint-0.26.0
image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.14-vale-2.10.4-markdownlint-0.28.1
stage: test
needs: []
script:

View file

@ -143,7 +143,7 @@ rspec-ee frontend_fixture:
extends:
- .frontend-fixtures-base
- .frontend:rules:default-frontend-jobs-ee
parallel: 2
parallel: 3
graphql-schema-dump:
variables:
@ -242,7 +242,7 @@ jest:
- tmp/tests/frontend/
reports:
junit: junit_jest.xml
parallel: 4
parallel: 5
jest-integration:
extends:

View file

@ -7,22 +7,32 @@ pages:
- .default-retry
- .pages:rules
stage: pages
environment: pages
resource_group: pages
needs:
- rspec:coverage
- coverage-frontend
- karma
- compile-production-assets
- compile-storybook
- job: "rspec:coverage"
- job: "coverage-frontend"
- job: "karma"
- job: "compile-production-assets"
- job: "compile-storybook"
# `update-tests-metadata` only runs on GitLab.com's EE schedules pipelines
# while `pages` runs for all the 2-hourly schedules.
- job: "update-tests-metadata"
optional: true
before_script:
- apt-get update && apt-get -y install brotli gzip
script:
- mv public/ .public/
- mkdir public/
- mkdir -p public/$(dirname "$KNAPSACK_RSPEC_SUITE_REPORT_PATH") public/$(dirname "$FLAKY_RSPEC_SUITE_REPORT_PATH") public/$(dirname "$RSPEC_PACKED_TESTS_MAPPING_PATH")
- mv coverage/ public/coverage-ruby/ || true
- mv coverage-frontend/ public/coverage-frontend/ || true
- mv coverage-javascript/ public/coverage-javascript/ || true
- mv storybook/public public/storybook || true
- cp .public/assets/application-*.css public/application.css || true
- mv $KNAPSACK_RSPEC_SUITE_REPORT_PATH public/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || true
- mv $FLAKY_RSPEC_SUITE_REPORT_PATH public/$FLAKY_RSPEC_SUITE_REPORT_PATH || true
- mv $RSPEC_PACKED_TESTS_MAPPING_PATH.gz public/$RSPEC_PACKED_TESTS_MAPPING_PATH.gz || true
- *compress-public
artifacts:
paths:

View file

@ -51,9 +51,10 @@ update-qa-cache:
image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine
stage: qa
retry: 0
script:
before_script:
- source scripts/utils.sh
- install_gitlab_gem
script:
- ./scripts/trigger-build omnibus
package-and-qa:

View file

@ -29,7 +29,6 @@
variables:
RUBY_GC_MALLOC_LIMIT: 67108864
RUBY_GC_MALLOC_LIMIT_MAX: 134217728
CRYSTALBALL: "true"
RECORD_DEPRECATIONS: "true"
needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets", "detect-tests"]
script:
@ -394,8 +393,7 @@ db:migrate-from-previous-major-version:
- sed -i -e "s/gem 'google-protobuf', '~> 3.8.0'/gem 'google-protobuf', '~> 3.12'/" Gemfile
- sed -i -e "s/gem 'nokogiri', '~> 1.10.5'/gem 'nokogiri', '~> 1.11.0'/" Gemfile
- sed -i -e "s/gem 'mimemagic', '~> 0.3.2'/gem 'ruby-magic', '~> 0.4.0'/" Gemfile
- run_timed_command "gem install bundler:1.17.3"
- run_timed_command "bundle update google-protobuf nokogiri grpc mimemagic bootsnap"
- run_timed_command "bundle update --bundler google-protobuf nokogiri grpc mimemagic bootsnap"
- SETUP_DB=false USE_BUNDLE_INSTALL=true bash scripts/prepare_build.sh
- run_timed_command "bundle exec rake db:drop db:create db:structure:load db:migrate db:seed_fu"
- git checkout -f $CI_COMMIT_SHA
@ -449,7 +447,9 @@ db:backup_and_restore:
- date
- bundle exec rake gitlab:backup:restore
rules:
- changes: ["lib/backup/**/*"]
- changes:
- "lib/backup/**/*"
- "lib/tasks/gitlab/backup.rake"
rspec:deprecations:
extends:
@ -645,36 +645,33 @@ rspec-ee unit pg12 geo:
- .rails:rules:ee-only-unit
- .rspec-ee-unit-geo-parallel
# FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212
#rspec-ee unit pg12 geo minimal:
# extends:
# - rspec-ee unit pg12 geo
# - .minimal-rspec-tests
# - .rails:rules:ee-only-unit:minimal
rspec-ee unit pg12 geo minimal:
extends:
- rspec-ee unit pg12 geo
- .minimal-rspec-tests
- .rails:rules:ee-only-unit:minimal
rspec-ee integration pg12 geo:
extends:
- .rspec-ee-base-geo-pg12
- .rails:rules:ee-only-integration
# FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212
#rspec-ee integration pg12 geo minimal:
# extends:
# - rspec-ee integration pg12 geo
# - .minimal-rspec-tests
# - .rails:rules:ee-only-integration:minimal
rspec-ee integration pg12 geo minimal:
extends:
- rspec-ee integration pg12 geo
- .minimal-rspec-tests
- .rails:rules:ee-only-integration:minimal
rspec-ee system pg12 geo:
extends:
- .rspec-ee-base-geo-pg12
- .rails:rules:ee-only-system
# FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212
#rspec-ee system pg12 geo minimal:
# extends:
# - rspec-ee system pg12 geo
# - .minimal-rspec-tests
# - .rails:rules:ee-only-system:minimal
rspec-ee system pg12 geo minimal:
extends:
- rspec-ee system pg12 geo
- .minimal-rspec-tests
- .rails:rules:ee-only-system:minimal
db:rollback geo:
extends:

View file

@ -41,6 +41,22 @@ nodejs-scan-sast:
semgrep-sast:
rules: !reference [".reports:rules:sast", rules]
gosec-sast:
variables:
GOPATH: "$CI_PROJECT_DIR/vendor/go"
COMPILE: "false"
GOSEC_GO_PKG_PATH: "$CI_PROJECT_DIR"
SECURE_LOG_LEVEL: "debug"
before_script:
- mkdir -p $GOPATH
- cd workhorse
- go get -d ./...
- cd ..
cache:
paths:
- vendor/go
rules: !reference [".reports:rules:sast", rules]
.secret-analyzer:
extends: .default-retry
needs: []

View file

@ -2,7 +2,7 @@ review-cleanup:
extends:
- .default-retry
- .review:rules:review-cleanup
image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3.5-kubectl1.17
image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3-kubectl1.14
stage: prepare
environment:
name: review/auto-cleanup
@ -27,12 +27,15 @@ review-build-cng:
- .review:rules:review-build-cng
image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13
stage: review-prepare
before_script:
- source ./scripts/utils.sh
- install_gitlab_gem
needs:
- job: compile-production-assets
artifacts: false
variables:
CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}" # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens
CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror"
before_script:
- source ./scripts/utils.sh
- install_gitlab_gem
script:
- ./scripts/trigger-build cng
@ -43,7 +46,7 @@ review-build-cng:
variables:
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
GITLAB_HELM_CHART_REF: "v4.12.0"
GITLAB_HELM_CHART_REF: "v5.1.0"
environment:
name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY}
url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}
@ -114,7 +117,7 @@ review-stop:
extends:
- .use-docker-in-docker
image:
name: ${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}
name: ${QA_IMAGE}
entrypoint: [""]
stage: qa
needs: ["build-qa-image", "review-deploy"]

View file

@ -19,12 +19,6 @@
.if-default-branch-push: &if-default-branch-push
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
.if-default-branch-schedule-2-hourly: &if-default-branch-schedule-2-hourly
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"'
.if-default-branch-schedule-nightly: &if-default-branch-schedule-nightly
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"'
.if-auto-deploy-branches: &if-auto-deploy-branches
if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/'
@ -34,24 +28,51 @@
.if-merge-request: &if-merge-request
if: '$CI_MERGE_REQUEST_IID'
.if-merge-request-approved: &if-merge-request-approved
if: '$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_APPROVED'
.if-merge-request-not-approved: &if-merge-request-not-approved
if: '$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_APPROVED != "true"'
.if-automated-merge-request: &if-automated-merge-request
if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "release-tools/update-gitaly" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /stable-ee$/'
.if-merge-request-title-as-if-foss: &if-merge-request-title-as-if-foss
if: '$CI_MERGE_REQUEST_TITLE =~ /RUN AS-IF-FOSS/'
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-foss/'
.if-merge-request-title-update-caches: &if-merge-request-title-update-caches
if: '$CI_MERGE_REQUEST_TITLE =~ /UPDATE CACHE/'
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:update-cache/'
.if-merge-request-title-run-all-rspec: &if-merge-request-title-run-all-rspec
if: '$CI_MERGE_REQUEST_TITLE =~ /RUN ALL RSPEC/'
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-all-rspec/'
.if-security-merge-request: &if-security-merge-request
if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID'
.if-default-branch-schedule-2-hourly: &if-default-branch-schedule-2-hourly
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"'
.if-default-branch-schedule-nightly: &if-default-branch-schedule-nightly
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"'
.if-security-schedule: &if-security-schedule
if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_PIPELINE_SOURCE == "schedule"'
.if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"'
.if-dot-com-ee-schedule: &if-dot-com-ee-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule"'
.if-dot-com-ee-2-hourly-schedule: &if-dot-com-ee-2-hourly-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"'
.if-dot-com-ee-nightly-schedule: &if-dot-com-ee-nightly-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"'
.if-cache-credentials-schedule: &if-cache-credentials-schedule
if: '$CI_REPO_CACHE_CREDENTIALS && $CI_PIPELINE_SOURCE == "schedule"'
.if-dot-com-gitlab-org-default-branch: &if-dot-com-gitlab-org-default-branch
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH'
@ -64,20 +85,12 @@
.if-dot-com-gitlab-org-and-security-tag: &if-dot-com-gitlab-org-and-security-tag
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_COMMIT_TAG'
.if-dot-com-ee-schedule: &if-dot-com-ee-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule"'
.if-cache-credentials-schedule: &if-cache-credentials-schedule
if: '$CI_REPO_CACHE_CREDENTIALS && $CI_PIPELINE_SOURCE == "schedule"'
.if-merge-request-rspec-minimal-disabled: &if-merge-request-rspec-minimal-disabled
if: '$CI_MERGE_REQUEST_IID && $RSPEC_MINIMAL_ENABLED != "true"'
.if-rspec-fail-fast-disabled: &if-rspec-fail-fast-disabled
if: '$RSPEC_FAIL_FAST_ENABLED != "true"'
.if-rspec-fail-fast-skipped: &if-rspec-fail-fast-skipped
if: '$CI_MERGE_REQUEST_TITLE =~ /SKIP RSPEC FAIL-FAST/'
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:skip-rspec-fail-fast/'
# For Security merge requests, the gitlab-release-tools-bot triggers a new
# pipeline for the "Pipelines for merged results" feature. If the pipeline
@ -205,6 +218,7 @@
- "{,ee/,jh/}spec/support/helpers/database/**/*"
- "config/prometheus/common_metrics.yml" # Used by Gitlab::DatabaseImporters::CommonMetrics::Importer
- "{,ee/,jh/}app/models/project_statistics.rb" # Used to calculate sizes in migration specs
- "GITALY_SERVER_VERSION" # Has interactions with background migrations:https://gitlab.com/gitlab-org/gitlab/-/issues/336538
# CI changes
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
@ -551,9 +565,7 @@
###############
.pages:rules:
rules:
- <<: *if-not-ee
when: never
- <<: *if-default-branch-schedule-2-hourly
- <<: *if-dot-com-ee-2-hourly-schedule
############
# QA rules #
@ -597,12 +609,20 @@
###############
.rails:rules:ee-and-foss-migration:
rules:
- changes: *db-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *db-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *db-patterns
.rails:rules:ee-and-foss-migration:minimal:
rules:
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -628,12 +648,20 @@
.rails:rules:ee-and-foss-unit:
rules:
- changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *backend-patterns
.rails:rules:ee-and-foss-unit:minimal:
rules:
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -645,12 +673,20 @@
.rails:rules:ee-and-foss-integration:
rules:
- changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *backend-patterns
.rails:rules:ee-and-foss-integration:minimal:
rules:
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -662,12 +698,20 @@
.rails:rules:ee-and-foss-system:
rules:
- changes: *code-backstage-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *code-backstage-patterns
.rails:rules:ee-and-foss-system:minimal:
rules:
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -679,12 +723,20 @@
.rails:rules:ee-and-foss-fast_spec_helper:
rules:
- changes: ["config/**/*"]
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: ["config/**/*"]
- <<: *if-merge-request-not-approved
when: never
- changes: ["config/**/*"]
.rails:rules:ee-and-foss-fast_spec_helper:minimal:
rules:
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -703,14 +755,22 @@
rules:
- <<: *if-not-ee
when: never
- changes: *db-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *db-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *db-patterns
.rails:rules:ee-only-migration:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -724,14 +784,22 @@
rules:
- <<: *if-not-ee
when: never
- changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *backend-patterns
.rails:rules:ee-only-unit:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -745,14 +813,22 @@
rules:
- <<: *if-not-ee
when: never
- changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *backend-patterns
.rails:rules:ee-only-integration:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -766,14 +842,22 @@
rules:
- <<: *if-not-ee
when: never
- changes: *code-backstage-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *code-backstage-patterns
.rails:rules:ee-only-system:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request-title-run-all-rspec
when: never
@ -787,19 +871,25 @@
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *db-patterns
- <<: *if-merge-request-not-approved
when: never
- <<: *if-security-merge-request
changes: *db-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *db-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
.rails:rules:as-if-foss-migration:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request
changes: *ci-patterns
@ -808,25 +898,30 @@
changes: *db-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *db-patterns
- <<: *if-merge-request-title-run-all-rspec
.rails:rules:as-if-foss-unit:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
- <<: *if-security-merge-request
changes: *backend-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
.rails:rules:as-if-foss-unit:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request
changes: *ci-patterns
@ -835,25 +930,30 @@
changes: *backend-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
.rails:rules:as-if-foss-integration:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
- <<: *if-security-merge-request
changes: *backend-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
.rails:rules:as-if-foss-integration:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request
changes: *ci-patterns
@ -862,25 +962,30 @@
changes: *backend-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *backend-patterns
- <<: *if-merge-request-title-run-all-rspec
.rails:rules:as-if-foss-system:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
- <<: *if-automated-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-not-approved
when: never
- <<: *if-security-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *code-backstage-patterns
- <<: *if-merge-request-title-run-all-rspec
- <<: *if-merge-request
changes: *ci-patterns
.rails:rules:as-if-foss-system:minimal:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-rspec-minimal-disabled
- <<: *if-merge-request-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-merge-request
changes: *ci-patterns
@ -889,7 +994,6 @@
changes: *code-backstage-patterns
- <<: *if-merge-request-title-as-if-foss
changes: *code-backstage-patterns
- <<: *if-merge-request-title-run-all-rspec
.rails:rules:ee-and-foss-db-library-code:
rules:
@ -1209,6 +1313,8 @@
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-qa-patterns
allow_failure: true
- <<: *if-dot-com-ee-schedule
allow_failure: true
# The rule needs to be duplicated between `on_success` and `on_failure`
# because the jobs `needs` the previous job to complete.
@ -1235,6 +1341,10 @@
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-qa-patterns
when: on_failure
- <<: *if-dot-com-ee-schedule
when: on_success
- <<: *if-dot-com-ee-schedule
when: on_failure
.review:rules:review-qa-all:
rules:
@ -1247,6 +1357,8 @@
- <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
allow_failure: true
- <<: *if-dot-com-ee-nightly-schedule
allow_failure: true
# The rule needs to be duplicated between `on_success` and `on_failure`
# because the jobs `needs` the previous job to complete.
@ -1261,12 +1373,18 @@
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
allow_failure: true
when: on_success
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
allow_failure: true
when: on_failure
allow_failure: true
- <<: *if-dot-com-ee-nightly-schedule
when: on_success
allow_failure: true
- <<: *if-dot-com-ee-nightly-schedule
when: on_failure
allow_failure: true
.review:rules:review-cleanup:
rules:
@ -1354,10 +1472,10 @@
rules:
- <<: *if-not-ee
when: never
- <<: *if-dot-com-ee-2-hourly-schedule
- changes:
- ".gitlab/ci/test-metadata.gitlab-ci.yml"
- "scripts/rspec_helpers.sh"
- <<: *if-dot-com-ee-schedule
###################
# workhorse rules #

View file

@ -43,5 +43,6 @@ update-tests-metadata:
script:
- run_timed_command "retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document"
- source ./scripts/rspec_helpers.sh
- test -f rspec_flaky/report-suite.json || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m"
- update_tests_metadata
- update_tests_mapping

View file

@ -1,5 +1,9 @@
<!-- Title: Design Sprint -->
This template outlines a sample set-up process, activities and deliverables for running a Remote Design Sprint. The specific activities and deliverables should be customized based on your objectives and timeline.
Please refer to the [Remote Design Sprint Handbook page](#anchor-tag-to-handbook-page) for additional recommendations.
## Design Sprint Focus
* [ ] Have you [determined that a Design Sprint is appropriate for this project](#anchor-tag-to-handbook-page)?
<!-- What is the focus of the [Design Sprint](https://about.gitlab.com/handbook/product/product-processes/#design-sprint)? What problem area will you be solving for and who is the target user? -->

View file

@ -62,38 +62,36 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org
disable_ddl_transaction!
def up
unless table_exists?(:cool_widget_registry)
ActiveRecord::Base.transaction do
create_table :cool_widget_registry, id: :bigserial, force: :cascade do |t|
t.bigint :cool_widget_id, null: false
t.datetime_with_timezone :created_at, null: false
t.datetime_with_timezone :last_synced_at
t.datetime_with_timezone :retry_at
t.datetime_with_timezone :verified_at
t.datetime_with_timezone :verification_started_at
t.datetime_with_timezone :verification_retry_at
t.integer :state, default: 0, null: false, limit: 2
t.integer :verification_state, default: 0, null: false, limit: 2
t.integer :retry_count, default: 0, limit: 2, null: false
t.integer :verification_retry_count, default: 0, limit: 2, null: false
t.boolean :checksum_mismatch, default: false, null: false
t.boolean :force_to_redownload, default: false, null: false
t.boolean :missing_on_primary, default: false, null: false
t.binary :verification_checksum
t.binary :verification_checksum_mismatched
t.string :verification_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806
t.string :last_sync_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806
ActiveRecord::Base.transaction do
create_table :cool_widget_registry, id: :bigserial, force: :cascade do |t|
t.bigint :cool_widget_id, null: false
t.datetime_with_timezone :created_at, null: false
t.datetime_with_timezone :last_synced_at
t.datetime_with_timezone :retry_at
t.datetime_with_timezone :verified_at
t.datetime_with_timezone :verification_started_at
t.datetime_with_timezone :verification_retry_at
t.integer :state, default: 0, null: false, limit: 2
t.integer :verification_state, default: 0, null: false, limit: 2
t.integer :retry_count, default: 0, limit: 2, null: false
t.integer :verification_retry_count, default: 0, limit: 2, null: false
t.boolean :checksum_mismatch, default: false, null: false
t.boolean :force_to_redownload, default: false, null: false
t.boolean :missing_on_primary, default: false, null: false
t.binary :verification_checksum
t.binary :verification_checksum_mismatched
t.string :verification_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806
t.string :last_sync_failure, limit: 255 # rubocop:disable Migration/PreventStrings see https://gitlab.com/gitlab-org/gitlab/-/issues/323806
t.index :cool_widget_id, name: :index_cool_widget_registry_on_cool_widget_id, unique: true
t.index :retry_at
t.index :state
# To optimize performance of CoolWidgetRegistry.verification_failed_batch
t.index :verification_retry_at, name: :cool_widget_registry_failed_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 3))"
# To optimize performance of CoolWidgetRegistry.needs_verification_count
t.index :verification_state, name: :cool_widget_registry_needs_verification, where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))"
# To optimize performance of CoolWidgetRegistry.verification_pending_batch
t.index :verified_at, name: :cool_widget_registry_pending_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 0))"
end
t.index :cool_widget_id, name: :index_cool_widget_registry_on_cool_widget_id, unique: true
t.index :retry_at
t.index :state
# To optimize performance of CoolWidgetRegistry.verification_failed_batch
t.index :verification_retry_at, name: :cool_widget_registry_failed_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 3))"
# To optimize performance of CoolWidgetRegistry.needs_verification_count
t.index :verification_state, name: :cool_widget_registry_needs_verification, where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))"
# To optimize performance of CoolWidgetRegistry.verification_pending_batch
t.index :verified_at, name: :cool_widget_registry_pending_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 0))"
end
end
end
@ -454,7 +452,7 @@ That's all of the required database changes.
```
- [ ] Update `REGISTRY_CLASSES` in `ee/app/workers/geo/secondary/registry_consistency_worker.rb`.
- [ ] Update `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`.
- [ ] Add a custom factory name if needed in `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`.
- [ ] Update `it 'creates missing registries for each registry class'` in `ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb`.
- [ ] Add `cool_widget_registry` to `ActiveSupport::Inflector.inflections` in `config/initializers_before_autoloader/000_inflections.rb`.
- [ ] Create `ee/spec/factories/geo/cool_widget_registry.rb`:
@ -537,9 +535,11 @@ If you did not add verification state fields to a separate table, `cool_widget_s
Otherwise, you can follow [the example of Merge Request Diffs](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63309).
- [ ] Add a `Geo::CoolWidgetState` model in `ee/app/models/ee/geo/cool_widget_state.rb`:
- [ ] Add a `Geo::CoolWidgetState` model in `ee/app/models/geo/cool_widget_state.rb`:
``` ruby
# frozen_string_literal: true
module Geo
class CoolWidgetState < ApplicationRecord
self.primary_key = :cool_widget_id
@ -745,7 +745,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
graphql_name 'CoolWidgetRegistry'
description 'Represents the Geo replication and verification state of a cool_widget'
field :cool_widget_id, GraphQL::ID_TYPE, null: false, description: 'ID of the Cool Widget'
field :cool_widget_id, GraphQL::Types::ID, null: false, description: 'ID of the Cool Widget.'
end
end
end

View file

@ -421,7 +421,7 @@ That's all of the required database changes.
```
- [ ] Update `REGISTRY_CLASSES` in `ee/app/workers/geo/secondary/registry_consistency_worker.rb`.
- [ ] Update `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`.
- [ ] Add a custom factory name if needed in `def model_class_factory_name` in `ee/spec/services/geo/registry_consistency_service_spec.rb`.
- [ ] Update `it 'creates missing registries for each registry class'` in `ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb`.
- [ ] Add `cool_widget_registry` to `ActiveSupport::Inflector.inflections` in `config/initializers_before_autoloader/000_inflections.rb`.
- [ ] Create `ee/spec/factories/geo/cool_widget_registry.rb`:

View file

@ -38,4 +38,11 @@
For example, if the solution will take a product manager, designer, and engineer two weeks of effort - you may quantify this as 1.5 (based on 0.5 months x 3 people). -->
## Definition of Done
- [ ] The problem is well understood by the PM to have an understanding summarized in a RICE score
- [ ] The problem is well understood by the PM to decide if they want to move forward with this idea or drop it
- [ ] The problem is well described and detailed with necessary requirements for product design to understand the problem
- [ ] The problem is well described and detailed with necessary requirements for engineering to understand the problem
/label ~"workflow::validation backlog" ~devops:: ~category: ~group::

View file

@ -9,7 +9,9 @@ Set the title to: `Description of the original issue`
## Prior to starting the security release work
- [ ] Read the [security process for developers] if you are not familiar with it.
- [ ] Make sure the issue really needs to follow the security release workflow.
- Verify if the issue you're working on `gitlab-org/gitlab` is confidential, if it's public fix should be placed on GitLab canonical and no backports are required.
- If the issue you're fixing doesn't appear to be something that can be exploited by a malicious person and is instead simply a security enhancement do not hesitate to ping `@gitlab-com/gl-security/appsec` to discuss if the issue can be fixed in the canonical repository.
- [ ] **IMPORTANT**: Mark this [issue as linked] to the Security Release Tracking Issue. You can find it on the topic of the `#releases` Slack channel. This issue
MUST be linked for the release bot to know that the associated merge requests should be merged for this security release.
- Fill out the [Links section](#links):

View file

@ -0,0 +1,9 @@
## Scope
This issue is part of a bigger development effort described in detail by its epic. The scope of this issue is to ...
## Actions
<!-- Likely in the form of checkboxed elements -->
- [ ] TODO

View file

@ -1,6 +1,8 @@
<!--See the general Documentation guidelines https://docs.gitlab.com/ee/development/documentation/ -->
<!-- Use this description template for changing documentation location. For new docs or updates to existing docs, use the "Documentation" template -->
<!--
See the general Documentation guidelines https://docs.gitlab.com/ee/development/documentation/
Use this description template for changing documentation location. For new documentation or
updates to existing documentation, use the Documentation.md template.
-->
## What does this MR do?
@ -25,4 +27,4 @@ https://docs.gitlab.com/ee/development/documentation/index.html#move-or-rename-a
- [ ] Update the link in `features.yml` (if applicable)
- [ ] Assign one of the technical writers for review.
/label ~documentation
/label ~documentation ~"Technical Writing"

View file

@ -1,9 +1,12 @@
<!-- Follow the documentation workflow https://docs.gitlab.com/ee/development/documentation/workflow.html -->
<!-- Additional information is located at https://docs.gitlab.com/ee/development/documentation/ -->
<!-- To find the designated Tech Writer for the stage/group, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers -->
<!--
Follow the documentation workflow https://docs.gitlab.com/ee/development/documentation/workflow.html
Additional information is located at https://docs.gitlab.com/ee/development/documentation/
To find the designated Tech Writer for the stage/group, see
https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
<!-- Mention "documentation" or "docs" in the MR title -->
<!-- For changing documentation location use the "Change documentation location" template -->
Mention "documentation" or "docs" in the MR title
For changing documentation location use the Change Documentation Location.md template
-->
## What does this MR do?
@ -15,11 +18,23 @@
## Author's checklist
- [ ] Follow the [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/) and [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide/).
- [ ] Ensure that the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges) is added to doc's `h1`.
- [ ] [Request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-reviewers-feature) based on the documentation page's metadata and [associated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments).
- [ ] Follow the:
- [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/).
- [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide/).
- [ ] Ensure that the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges) is added to topic's `h1`.
- [ ] [Request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-reviewers-feature) based on the:
- The documentation page's [metadata](https://docs.gitlab.com/ee/development/documentation/#metadata).
- The [associated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments).
To avoid having this MR be added to code verification QA issues, don't add these labels: ~"feature", ~"frontend", ~"backend", ~"bug", or ~"database"
If you are only adding documentation, do not add any of the following labels:
- `~"feature"`
- `~"frontend"`
- `~"backend"`
- `~"bug"`
- `~"database"`
These labels cause the MR to be added to code verification QA issues.
## Review checklist

View file

@ -48,6 +48,8 @@ tasks:
make gitlab-db-migrate
fi
cd /workspace/gitlab-development-kit/gitlab
# Display which branch we're on
git branch --show-current
# Install Lefthook
bundle exec lefthook install
git checkout db/structure.sql
@ -55,16 +57,24 @@ tasks:
# Waiting for GitLab ...
gp await-port 3000
printf "Waiting for GitLab at $(gp url 3000) ..."
until $(curl -sNL $(gp url 3000) | grep -q "GitLab"); do printf '.'; sleep 5; done && echo ""
# 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
# 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 ""
# Give Gitpod a few more seconds to set up everything ...
sleep 5
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
# Speed up backend tests
export GITLAB_TEST_EAGER_LOAD=false
)
ports:
- port: 3000 # rails-web
- port: 2222 # sshd
onOpen: ignore
- port: 3000 # rails-web
onOpen: notify
- port: 3010 # gitlab-pages
onOpen: ignore
- port: 3808 # webpack

View file

@ -49,6 +49,7 @@
"Geo",
"Git LFS",
"git-annex",
"git-sizer",
"Git",
"Gitaly",
"GitHub",

View file

@ -15,6 +15,22 @@
"alternate": "lib/{}.rb",
"type": "test"
},
"lib/api/*.rb": {
"alternate": "spec/requests/api/{}_spec.rb",
"type": "source"
},
"spec/requests/api/*_spec.rb": {
"alternate": "lib/api/{}.rb",
"type": "test"
},
"ee/lib/api/*.rb": {
"alternate": "ee/spec/requests/api/{}_spec.rb",
"type": "source"
},
"ee/spec/requests/api/*_spec.rb": {
"alternate": "ee/lib/api/{}.rb",
"type": "test"
},
"ee/app/*.rb": {
"alternate": "ee/spec/{}_spec.rb",
"type": "source"
@ -31,6 +47,30 @@
"alternate": "ee/lib/{}.rb",
"type": "test"
},
"app/assets/javascripts/*.js": {
"alternate": "spec/frontend/{}_spec.js",
"type": "source"
},
"app/assets/javascripts/*.vue": {
"alternate": "spec/frontend/{}_spec.js",
"type": "source"
},
"spec/frontend/*_spec.js": {
"alternate": ["app/assets/javascripts/{}.vue", "app/assets/javascripts/{}.js"],
"type": "test"
},
"ee/app/assets/javascripts/*.js": {
"alternate": "ee/spec/frontend/{}_spec.js",
"type": "source"
},
"ee/app/assets/javascripts/*.vue": {
"alternate": "ee/spec/frontend/{}_spec.js",
"type": "source"
},
"ee/spec/frontend/*_spec.js": {
"alternate": ["ee/app/assets/javascripts/{}.vue", "ee/app/assets/javascripts/{}.js"],
"type": "test"
},
"*.rb": {"dispatch": "bundle exec rubocop {file}"},
"*_spec.rb": {"dispatch": "bundle exec rspec {file}"}
}

View file

@ -37,6 +37,7 @@ AllCops:
- 'file_hooks/**/*'
- 'workhorse/**/*'
- 'spec/support/*.git/**/*' # e.g. spec/support/gitlab-git-test.git
- 'db/ci_migrate/*.rb' # since the `db/ci_migrate` is a symlinked to `db/migrate`
CacheRootDirectory: tmp
MaxFilesInCache: 25000
@ -254,7 +255,6 @@ Gitlab/HTTParty:
Gitlab/Json:
Enabled: true
Exclude:
- 'db/**/*'
- 'qa/**/*'
- 'scripts/**/*'
- 'tooling/rspec_flaky/**/*'
@ -442,6 +442,16 @@ Graphql/JSONType:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Graphql/OldTypes:
Enabled: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
- 'spec/graphql/**/*'
- 'spec/requests/api/graphql/**/*'
- 'ee/spec/graphql/**/*'
- 'ee/spec/requests/api/graphql/**/*'
RSpec/EnvAssignment:
Enable: true
Include:
@ -693,3 +703,11 @@ RSpec/TopLevelDescribePath:
Exclude:
- 'spec/fixtures/**/*.rb'
- 'ee/spec/fixtures/**/*.rb'
QA/SelectorUsage:
Enabled: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Exclude:
- 'spec/rubocop/**/*_spec.rb'

View file

@ -10,7 +10,7 @@
# - guidelines for use found in
# https://docs.gitlab.com/ee/development/contributing/style_guides.html#resolving-rubocop-exceptions.
# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/322903
# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/337596
Graphql/Descriptions:
Exclude:
- 'ee/app/graphql/types/iteration_state_enum.rb'
@ -22,6 +22,178 @@ Graphql/Descriptions:
- 'ee/app/graphql/types/vulnerability_report_type_enum.rb'
- 'ee/app/graphql/types/vulnerability_severity_enum.rb'
- 'ee/app/graphql/types/vulnerability_state_enum.rb'
- 'ee/app/graphql/types/vulnerability_confidence_enum.rb'
- 'app/graphql/resolvers/labels_resolver.rb'
- 'app/graphql/resolvers/merge_requests_resolver.rb'
- 'app/graphql/resolvers/milestones_resolver.rb'
- 'app/graphql/resolvers/package_details_resolver.rb'
- 'app/graphql/resolvers/paginated_tree_resolver.rb'
- 'app/graphql/resolvers/release_resolver.rb'
- 'app/graphql/resolvers/repository_branch_names_resolver.rb'
- 'app/graphql/resolvers/snippets_resolver.rb'
- 'app/graphql/resolvers/todo_resolver.rb'
- 'app/graphql/resolvers/tree_resolver.rb'
- 'app/graphql/resolvers/users/snippets_resolver.rb'
- 'app/graphql/types/admin/analytics/usage_trends/measurement_type.rb'
- 'app/graphql/types/admin/sidekiq_queues/delete_jobs_response_type.rb'
- 'app/graphql/types/alert_management/alert_type.rb'
- 'app/graphql/types/award_emojis/award_emoji_type.rb'
- 'app/graphql/types/ci/config/job_restriction_type.rb'
- 'app/graphql/types/ci/config/status_enum.rb'
- 'app/graphql/types/ci/pipeline_type.rb'
- 'app/graphql/types/ci_configuration/sast/ui_component_size_enum.rb'
- 'app/graphql/types/commit_action_type.rb'
- 'app/graphql/types/container_repository_cleanup_status_enum.rb'
- 'app/graphql/types/container_repository_tag_type.rb'
- 'app/graphql/types/container_repository_type.rb'
- 'app/graphql/types/custom_emoji_type.rb'
- 'app/graphql/types/design_management/design_at_version_type.rb'
- 'app/graphql/types/design_management/design_fields.rb'
- 'app/graphql/types/diff_paths_input_type.rb'
- 'app/graphql/types/environment_type.rb'
- 'app/graphql/types/eventable_type.rb'
- 'app/graphql/types/group_type.rb'
- 'app/graphql/types/merge_request_type.rb'
- 'app/graphql/types/metadata/kas_type.rb'
- 'app/graphql/types/milestone_wildcard_id_enum.rb'
- 'app/graphql/types/namespace_type.rb'
- 'app/graphql/types/notes/note_type.rb'
- 'app/graphql/types/notes/position_type_enum.rb'
- 'app/graphql/types/packages/composer/json_type.rb'
- 'app/graphql/types/packages/package_details_type.rb'
- 'app/graphql/types/packages/package_file_type.rb'
- 'app/graphql/types/packages/package_tag_type.rb'
- 'app/graphql/types/packages/package_type.rb'
- 'app/graphql/types/project_type.rb'
- 'app/graphql/types/prometheus_alert_type.rb'
- 'app/graphql/types/query_type.rb'
- 'app/graphql/types/range_input_type.rb'
- 'app/graphql/types/release_asset_link_shared_input_arguments.rb'
- 'app/graphql/types/release_assets_input_type.rb'
- 'app/graphql/types/release_type.rb'
- 'app/graphql/types/repository/blob_type.rb'
- 'app/graphql/types/root_storage_statistics_type.rb'
- 'app/graphql/types/snippet_type.rb'
- 'app/graphql/types/snippets/blob_type.rb'
- 'app/graphql/types/snippets/visibility_scopes_enum.rb'
- 'app/graphql/types/terraform/state_type.rb'
- 'app/graphql/types/terraform/state_version_type.rb'
- 'app/graphql/types/timelog_type.rb'
- 'app/graphql/types/todo_state_enum.rb'
- 'app/graphql/types/todo_target_enum.rb'
- 'app/graphql/types/todo_type.rb'
- 'app/graphql/types/user_interface.rb'
- 'app/graphql/types/user_merge_request_interaction_type.rb'
- 'app/graphql/types/user_state_enum.rb'
- 'ee/app/graphql/ee/mutations/alert_management/http_integration/create.rb'
- 'ee/app/graphql/ee/mutations/alert_management/http_integration/update.rb'
- 'ee/app/graphql/ee/mutations/boards/issues/issue_move_list.rb'
- 'ee/app/graphql/ee/mutations/issues/create.rb'
- 'ee/app/graphql/ee/mutations/issues/update.rb'
- 'ee/app/graphql/ee/types/alert_management/http_integration_type.rb'
- 'ee/app/graphql/ee/types/board_list_type.rb'
- 'ee/app/graphql/ee/types/board_type.rb'
- 'ee/app/graphql/ee/types/group_type.rb'
- 'ee/app/graphql/ee/types/project_type.rb'
- 'ee/app/graphql/ee/types/query_type.rb'
- 'ee/app/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create.rb'
- 'ee/app/graphql/mutations/boards/epic_boards/create.rb'
- 'ee/app/graphql/mutations/boards/epic_boards/epic_move_list.rb'
- 'ee/app/graphql/mutations/boards/epic_boards/update.rb'
- 'ee/app/graphql/mutations/boards/epic_lists/destroy.rb'
- 'ee/app/graphql/mutations/boards/lists/update_limit_metrics.rb'
- 'ee/app/graphql/mutations/boards/update_epic_user_preferences.rb'
- 'ee/app/graphql/mutations/compliance_management/frameworks/create.rb'
- 'ee/app/graphql/mutations/compliance_management/frameworks/destroy.rb'
- 'ee/app/graphql/mutations/compliance_management/frameworks/update.rb'
- 'ee/app/graphql/mutations/concerns/mutations/shared_epic_arguments.rb'
- 'ee/app/graphql/mutations/dast/profiles/create.rb'
- 'ee/app/graphql/mutations/dast/profiles/update.rb'
- 'ee/app/graphql/mutations/dast_on_demand_scans/create.rb'
- 'ee/app/graphql/mutations/dast_scanner_profiles/create.rb'
- 'ee/app/graphql/mutations/dast_scanner_profiles/update.rb'
- 'ee/app/graphql/mutations/dast_site_profiles/create.rb'
- 'ee/app/graphql/mutations/dast_site_profiles/delete.rb'
- 'ee/app/graphql/mutations/dast_site_profiles/update.rb'
- 'ee/app/graphql/mutations/dast_site_tokens/create.rb'
- 'ee/app/graphql/mutations/dast_site_validations/create.rb'
- 'ee/app/graphql/mutations/dast_site_validations/revoke.rb'
- 'ee/app/graphql/mutations/epic_tree/reorder.rb'
- 'ee/app/graphql/mutations/epics/add_issue.rb'
- 'ee/app/graphql/mutations/epics/base.rb'
- 'ee/app/graphql/mutations/epics/create.rb'
- 'ee/app/graphql/mutations/epics/set_subscription.rb'
- 'ee/app/graphql/mutations/gitlab_subscriptions/activate.rb'
- 'ee/app/graphql/mutations/incident_management/escalation_policy/base.rb'
- 'ee/app/graphql/mutations/incident_management/escalation_policy/create.rb'
- 'ee/app/graphql/mutations/incident_management/escalation_policy/destroy.rb'
- 'ee/app/graphql/mutations/incident_management/escalation_policy/update.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_rotation/base.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_rotation/create.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_rotation/destroy.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_rotation/update.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/create.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/destroy.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/oncall_schedule_base.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/update.rb'
- 'ee/app/graphql/mutations/issues/common_ee_mutation_arguments.rb'
- 'ee/app/graphql/mutations/issues/promote_to_epic.rb'
- 'ee/app/graphql/mutations/issues/set_iteration.rb'
- 'ee/app/graphql/mutations/iterations/cadences/create.rb'
- 'ee/app/graphql/mutations/iterations/cadences/update.rb'
- 'ee/app/graphql/mutations/iterations/create.rb'
- 'ee/app/graphql/mutations/namespaces/base.rb'
- 'ee/app/graphql/mutations/quality_management/test_cases/create.rb'
- 'ee/app/graphql/mutations/requirements_management/update_requirement.rb'
- 'ee/app/graphql/mutations/vulnerabilities/confirm.rb'
- 'ee/app/graphql/mutations/vulnerabilities/create_external_issue_link.rb'
- 'ee/app/graphql/mutations/vulnerabilities/destroy_external_issue_link.rb'
- 'ee/app/graphql/mutations/vulnerabilities/dismiss.rb'
- 'ee/app/graphql/mutations/vulnerabilities/resolve.rb'
- 'ee/app/graphql/mutations/vulnerabilities/revert_to_detected.rb'
- 'ee/app/graphql/resolvers/dora_metrics_resolver.rb'
- 'ee/app/graphql/resolvers/geo/geo_node_resolver.rb'
- 'ee/app/graphql/resolvers/network_policy_resolver.rb'
- 'ee/app/graphql/resolvers/requirements_management/requirements_resolver.rb'
- 'ee/app/graphql/types/alert_management/payload_alert_field_input_type.rb'
- 'ee/app/graphql/types/alert_management/payload_alert_mapping_field_type.rb'
- 'ee/app/graphql/types/analytics/devops_adoption/snapshot_type.rb'
- 'ee/app/graphql/types/app_sec/fuzzing/api/scan_profile_type.rb'
- 'ee/app/graphql/types/ci/code_quality_degradation_type.rb'
- 'ee/app/graphql/types/ci/minutes/namespace_monthly_usage_type.rb'
- 'ee/app/graphql/types/ci/minutes/project_monthly_usage_type.rb'
- 'ee/app/graphql/types/clusters/agent_token_type.rb'
- 'ee/app/graphql/types/clusters/agent_type.rb'
- 'ee/app/graphql/types/dast/profile_branch_type.rb'
- 'ee/app/graphql/types/dast/profile_type.rb'
- 'ee/app/graphql/types/dast/site_profile_auth_input_type.rb'
- 'ee/app/graphql/types/dast/site_profile_auth_type.rb'
- 'ee/app/graphql/types/dast_scanner_profile_type.rb'
- 'ee/app/graphql/types/dast_site_profile_type.rb'
- 'ee/app/graphql/types/epic_tree/epic_tree_node_input_type.rb'
- 'ee/app/graphql/types/epic_type.rb'
- 'ee/app/graphql/types/geo/geo_node_type.rb'
- 'ee/app/graphql/types/incident_management/escalation_policy_type.rb'
- 'ee/app/graphql/types/incident_management/escalation_rule_input_type.rb'
- 'ee/app/graphql/types/incident_management/escalation_rule_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_participant_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_active_period_input_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_active_period_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_date_input_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_length_input_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_user_input_type.rb'
- 'ee/app/graphql/types/move_type_enum.rb'
- 'ee/app/graphql/types/network_policy_kind_enum.rb'
- 'ee/app/graphql/types/path_lock_type.rb'
- 'ee/app/graphql/types/pipeline_security_report_finding_type.rb'
- 'ee/app/graphql/types/scanned_resource_type.rb'
- 'ee/app/graphql/types/security_report_summary_section_type.rb'
- 'ee/app/graphql/types/timebox_metrics_type.rb'
- 'ee/app/graphql/types/vulnerability/issue_link_type.rb'
- 'ee/app/graphql/types/vulnerability_details/commit_type.rb'
- 'ee/app/graphql/types/vulnerability_type.rb'
- 'ee/app/graphql/types/vulnerable_dependency_type.rb'
- 'ee/app/graphql/types/vulnerable_package_type.rb'
# WIP: See https://gitlab.com/gitlab-org/gitlab/-/issues/220040
Rails/SaveBang:
@ -1014,6 +1186,7 @@ Gitlab/NamespacedClass:
- 'app/finders/joined_groups_finder.rb'
- 'app/finders/keys_finder.rb'
- 'app/finders/labels_finder.rb'
- 'app/finders/lfs_pointers_finder.rb'
- 'app/finders/license_template_finder.rb'
- 'app/finders/members_finder.rb'
- 'app/finders/merge_request_target_project_finder.rb'
@ -1640,7 +1813,7 @@ Gitlab/NamespacedClass:
- 'app/services/reset_project_cache_service.rb'
- 'app/services/search_service.rb'
- 'app/services/service_response.rb'
- 'app/services/submit_usage_ping_service.rb'
- 'app/services/service_ping/submit_service.rb'
- 'app/services/system_hooks_service.rb'
- 'app/services/task_list_toggle_service.rb'
- 'app/services/todo_service.rb'
@ -1667,6 +1840,7 @@ Gitlab/NamespacedClass:
- 'app/uploaders/personal_file_uploader.rb'
- 'app/validators/abstract_path_validator.rb'
- 'app/validators/addressable_url_validator.rb'
- 'app/validators/any_field_validator.rb'
- 'app/validators/array_members_validator.rb'
- 'app/validators/branch_filter_validator.rb'
- 'app/validators/certificate_fingerprint_validator.rb'
@ -2097,7 +2271,6 @@ Gitlab/NamespacedClass:
- 'ee/app/workers/sync_security_reports_to_report_approval_rules_worker.rb'
- 'ee/app/workers/update_all_mirrors_worker.rb'
- 'ee/app/workers/update_max_seats_used_for_gitlab_com_subscriptions_worker.rb'
- 'ee/lib/generators/rails/geo_migration_generator.rb'
- 'ee/lib/gitlab/path_locks_finder.rb'
- 'ee/spec/support/elastic_query_name_inspector.rb'
- 'ee/spec/support/ssh_keygen.rb'
@ -2439,81 +2612,9 @@ Gitlab/FeatureAvailableUsage:
- 'lib/api/helpers/related_resources_helpers.rb'
- 'spec/models/concerns/featurable_spec.rb'
# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/327490
Style/RegexpLiteralMixedPreserve:
Exclude:
- 'ee/app/models/status_page/project_setting.rb'
- 'ee/app/presenters/vulnerability_presenter.rb'
- 'ee/lib/api/geo_nodes.rb'
- 'ee/lib/gitlab/vulnerabilities/standard_vulnerability.rb'
- 'lib/api/invitations.rb'
- 'lib/gitlab/ci/pipeline/expression/lexeme/pattern.rb'
- 'lib/gitlab/metrics/requests_rack_middleware.rb'
- 'lib/gitlab/metrics/subscribers/active_record.rb'
- 'lib/gitlab/regex.rb'
- 'lib/gitlab/utils.rb'
- 'lib/product_analytics/tracker.rb'
- 'qa/qa/page/project/settings/advanced.rb'
- 'qa/spec/service/docker_run/gitlab_runner_spec.rb'
- 'rubocop/cop/gitlab/duplicate_spec_location.rb'
- 'spec/features/clusters/cluster_health_dashboard_spec.rb'
- 'spec/features/markdown/metrics_spec.rb'
- 'spec/features/search/user_searches_for_code_spec.rb'
- 'spec/features/snippets/embedded_snippet_spec.rb'
- 'spec/helpers/diff_helper_spec.rb'
- 'spec/helpers/releases_helper_spec.rb'
- 'spec/lib/gitlab/ci/reports/test_case_spec.rb'
- 'spec/lib/gitlab/consul/internal_spec.rb'
- 'spec/lib/gitlab/import_export/shared_spec.rb'
- 'spec/lib/gitlab/utils/usage_data_spec.rb'
- 'spec/presenters/ci/build_runner_presenter_spec.rb'
- 'spec/requests/api/projects_spec.rb'
- 'spec/services/jira/requests/projects/list_service_spec.rb'
- 'spec/support/capybara.rb'
- 'spec/support/helpers/grafana_api_helpers.rb'
- 'spec/support/helpers/query_recorder.rb'
- 'spec/support/helpers/require_migration.rb'
- 'spec/views/layouts/_head.html.haml_spec.rb'
# WIP see: https://gitlab.com/gitlab-org/gitlab/-/issues/335808
Database/MultipleDatabases:
Exclude:
- 'app/mailers/previews/notify_preview.rb'
- 'app/models/application_setting.rb'
- 'app/models/internal_id.rb'
- 'app/services/auto_merge/base_service.rb'
- 'app/services/ci/delete_unit_tests_service.rb'
- 'app/services/ci/unlock_artifacts_service.rb'
- 'app/services/deployments/update_environment_service.rb'
- 'app/services/design_management/copy_design_collection/copy_service.rb'
- 'app/services/feature_flags/create_service.rb'
- 'app/services/feature_flags/destroy_service.rb'
- 'app/services/feature_flags/update_service.rb'
- 'app/services/issuable/clone/base_service.rb'
- 'app/services/issuable/common_system_notes_service.rb'
- 'app/services/issuable/destroy_label_links_service.rb'
- 'app/services/packages/create_dependency_service.rb'
- 'app/services/packages/go/create_package_service.rb'
- 'app/services/packages/npm/create_package_service.rb'
- 'app/services/packages/terraform_module/create_package_service.rb'
- 'app/services/projects/cleanup_service.rb'
- 'app/services/projects/fetch_statistics_increment_service.rb'
- 'app/services/releases/update_service.rb'
- 'app/services/todos/destroy/destroyed_issuable_service.rb'
- 'ee/app/models/dora/daily_metrics.rb'
- 'ee/app/services/analytics/devops_adoption/enabled_namespaces/bulk_delete_service.rb'
- 'ee/app/services/approval_rules/finalize_service.rb'
- 'ee/app/services/approval_rules/project_rule_destroy_service.rb'
- 'ee/app/services/app_sec/dast/site_profiles/create_service.rb'
- 'ee/app/services/app_sec/dast/site_profiles/update_service.rb'
- 'ee/app/services/ci/minutes/update_build_minutes_service.rb'
- 'ee/app/services/ee/issuable/common_system_notes_service.rb'
- 'ee/app/services/group_saml/group_managed_accounts/transfer_membership_service.rb'
- 'ee/app/services/group_saml/sign_up_service.rb'
- 'ee/app/services/iterations/roll_over_issues_service.rb'
- 'ee/app/services/security/store_scan_service.rb'
- 'ee/app/services/timebox_report_service.rb'
- 'ee/app/services/vulnerability_feedback/create_service.rb'
- 'ee/lib/ee/gitlab/checks/push_rule_check.rb'
- 'ee/lib/ee/gitlab/database.rb'
- 'ee/lib/gitlab/geo/database_tasks.rb'
- 'ee/lib/gitlab/geo/geo_tasks.rb'
@ -2527,16 +2628,8 @@ Database/MultipleDatabases:
- 'ee/spec/services/ee/merge_requests/update_service_spec.rb'
- 'lib/backup/database.rb'
- 'lib/after_commit_queue.rb'
- 'lib/api/rubygem_packages.rb'
- 'lib/backup/manager.rb'
- 'lib/gitlab/analytics/cycle_analytics/stage_query_helpers.rb'
- 'lib/gitlab/chaos.rb'
- 'lib/gitlab/current_settings.rb'
- 'lib/gitlab/database/batch_count.rb'
- 'lib/gitlab/database/batch_counter.rb'
- 'lib/gitlab/database/count/reltuples_count_strategy.rb'
- 'lib/gitlab/database/count/tablesample_count_strategy.rb'
- 'lib/gitlab/database/grant.rb'
- 'lib/gitlab/database/load_balancing/load_balancer.rb'
- 'lib/gitlab/database/load_balancing.rb'
- 'lib/gitlab/database/load_balancing/sticking.rb'
@ -2558,7 +2651,6 @@ Database/MultipleDatabases:
- '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/similarity_score.rb'
- 'lib/gitlab/database/unidirectional_copy_trigger.rb'
- 'lib/gitlab/database/with_lock_retries.rb'
- 'lib/gitlab/gitlab_import/importer.rb'
@ -2567,46 +2659,24 @@ Database/MultipleDatabases:
- 'lib/gitlab/import_export/relation_tree_restorer.rb'
- 'lib/gitlab/legacy_github_import/importer.rb'
- 'lib/gitlab/metrics/samplers/database_sampler.rb'
- 'lib/gitlab/optimistic_locking.rb'
- 'lib/gitlab/otp_key_rotator.rb'
- 'lib/gitlab/profiler.rb'
- 'lib/gitlab/seeder.rb'
- 'lib/gitlab/sherlock/query.rb'
- 'lib/gitlab/sql/glob.rb'
- 'lib/gitlab/sql/set_operator.rb'
- 'lib/system_check/orphans/repository_check.rb'
- 'spec/db/schema_spec.rb'
- 'spec/features/admin/dashboard_spec.rb'
- 'spec/initializers/database_config_spec.rb'
- 'spec/initializers/lograge_spec.rb'
- 'spec/lib/backup/manager_spec.rb'
- 'spec/lib/gitlab/current_settings_spec.rb'
- 'spec/lib/gitlab/database_spec.rb'
- 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb'
- 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb'
- 'spec/lib/gitlab/metrics/subscribers/active_record_spec.rb'
- 'spec/lib/gitlab/pagination/keyset/order_spec.rb'
- 'spec/lib/gitlab/profiler_spec.rb'
- 'spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb'
- 'spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb'
- 'spec/lib/gitlab/sql/cte_spec.rb'
- 'spec/lib/gitlab/sql/glob_spec.rb'
- 'spec/lib/gitlab/sql/recursive_cte_spec.rb'
- 'spec/lib/gitlab/usage_data_metrics_spec.rb'
- 'spec/lib/gitlab/usage_data_queries_spec.rb'
- 'spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/constraints_spec.rb'
- 'spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb'
- 'spec/lib/gitlab/usage/metrics/instrumentations/database_metric_spec.rb'
- 'spec/lib/gitlab/utils/usage_data_spec.rb'
- 'spec/models/application_setting_spec.rb'
- 'spec/models/concerns/case_sensitivity_spec.rb'
- 'spec/models/concerns/sortable_spec.rb'
- 'spec/models/concerns/where_composite_spec.rb'
- 'spec/models/experiment_spec.rb'
- 'spec/models/internal_id_spec.rb'
- 'spec/models/project_feature_usage_spec.rb'
- 'spec/models/users_statistics_spec.rb'
- 'spec/requests/api/statistics_spec.rb'
- 'spec/services/users/activity_service_spec.rb'
- 'spec/support/caching.rb'
- 'spec/support/gitlab/usage/metrics_instrumentation_shared_examples.rb'
@ -2618,399 +2688,3 @@ Database/MultipleDatabases:
- 'spec/support/helpers/usage_data_helpers.rb'
- 'spec/tasks/gitlab/backup_rake_spec.rb'
- 'spec/tasks/gitlab/db_rake_spec.rb'
- 'spec/workers/analytics/usage_trends/counter_job_worker_spec.rb'
- 'spec/workers/users/create_statistics_worker_spec.rb'
# See https://gitlab.com/gitlab-org/gitlab/-/issues/335170
Cop/WorkerDataConsistency:
Exclude:
- 'app/workers/admin_email_worker.rb'
- 'app/workers/analytics/usage_trends/count_job_trigger_worker.rb'
- 'app/workers/analytics/usage_trends/counter_job_worker.rb'
- 'app/workers/approve_blocked_pending_approval_users_worker.rb'
- 'app/workers/archive_trace_worker.rb'
- 'app/workers/authorized_keys_worker.rb'
- 'app/workers/authorized_project_update/periodic_recalculate_worker.rb'
- 'app/workers/authorized_project_update/project_create_worker.rb'
- 'app/workers/authorized_project_update/project_group_link_create_worker.rb'
- 'app/workers/authorized_project_update/project_recalculate_worker.rb'
- 'app/workers/authorized_project_update/user_refresh_from_replica_worker.rb'
- 'app/workers/authorized_projects_worker.rb'
- 'app/workers/auto_devops/disable_worker.rb'
- 'app/workers/auto_merge_process_worker.rb'
- 'app/workers/background_migration_worker.rb'
- 'app/workers/build_finished_worker.rb'
- 'app/workers/build_success_worker.rb'
- 'app/workers/bulk_import_worker.rb'
- 'app/workers/bulk_imports/entity_worker.rb'
- 'app/workers/bulk_imports/export_request_worker.rb'
- 'app/workers/bulk_imports/pipeline_worker.rb'
- 'app/workers/bulk_imports/relation_export_worker.rb'
- 'app/workers/chaos/cpu_spin_worker.rb'
- 'app/workers/chaos/db_spin_worker.rb'
- 'app/workers/chaos/kill_worker.rb'
- 'app/workers/chaos/leak_mem_worker.rb'
- 'app/workers/chaos/sleep_worker.rb'
- 'app/workers/chat_notification_worker.rb'
- 'app/workers/ci/archive_trace_worker.rb'
- 'app/workers/ci/archive_traces_cron_worker.rb'
- 'app/workers/ci/build_finished_worker.rb'
- 'app/workers/ci/build_prepare_worker.rb'
- 'app/workers/ci/build_schedule_worker.rb'
- 'app/workers/ci/build_trace_chunk_flush_worker.rb'
- 'app/workers/ci/daily_build_group_report_results_worker.rb'
- 'app/workers/ci/delete_objects_worker.rb'
- 'app/workers/ci/delete_unit_tests_worker.rb'
- 'app/workers/ci/drop_pipeline_worker.rb'
- 'app/workers/ci/initial_pipeline_process_worker.rb'
- 'app/workers/ci/merge_requests/add_todo_when_build_fails_worker.rb'
- 'app/workers/ci/pipeline_artifacts/coverage_report_worker.rb'
- 'app/workers/ci/pipeline_artifacts/create_quality_report_worker.rb'
- 'app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb'
- 'app/workers/ci/pipeline_success_unlock_artifacts_worker.rb'
- 'app/workers/ci/ref_delete_unlock_artifacts_worker.rb'
- 'app/workers/ci/resource_groups/assign_resource_from_resource_group_worker.rb'
- 'app/workers/ci/schedule_delete_objects_cron_worker.rb'
- 'app/workers/ci/test_failure_history_worker.rb'
- 'app/workers/ci_platform_metrics_update_cron_worker.rb'
- 'app/workers/cleanup_container_repository_worker.rb'
- 'app/workers/cluster_configure_istio_worker.rb'
- 'app/workers/cluster_install_app_worker.rb'
- 'app/workers/cluster_patch_app_worker.rb'
- 'app/workers/cluster_provision_worker.rb'
- 'app/workers/cluster_update_app_worker.rb'
- 'app/workers/cluster_upgrade_app_worker.rb'
- 'app/workers/cluster_wait_for_app_installation_worker.rb'
- 'app/workers/cluster_wait_for_app_update_worker.rb'
- 'app/workers/cluster_wait_for_ingress_ip_address_worker.rb'
- 'app/workers/clusters/applications/activate_service_worker.rb'
- 'app/workers/clusters/applications/check_prometheus_health_worker.rb'
- 'app/workers/clusters/applications/deactivate_service_worker.rb'
- 'app/workers/clusters/applications/uninstall_worker.rb'
- 'app/workers/clusters/applications/wait_for_uninstall_app_worker.rb'
- 'app/workers/container_expiration_policies/cleanup_container_repository_worker.rb'
- 'app/workers/container_expiration_policy_worker.rb'
- 'app/workers/create_commit_signature_worker.rb'
- 'app/workers/create_note_diff_file_worker.rb'
- 'app/workers/create_pipeline_worker.rb'
- 'app/workers/database/batched_background_migration_worker.rb'
- 'app/workers/database/partition_management_worker.rb'
- 'app/workers/delete_container_repository_worker.rb'
- 'app/workers/delete_diff_files_worker.rb'
- 'app/workers/delete_merged_branches_worker.rb'
- 'app/workers/delete_stored_files_worker.rb'
- 'app/workers/delete_user_worker.rb'
- 'app/workers/deployments/drop_older_deployments_worker.rb'
- 'app/workers/deployments/finished_worker.rb'
- 'app/workers/deployments/forward_deployment_worker.rb'
- 'app/workers/deployments/hooks_worker.rb'
- 'app/workers/deployments/link_merge_request_worker.rb'
- 'app/workers/deployments/success_worker.rb'
- 'app/workers/deployments/update_environment_worker.rb'
- 'app/workers/design_management/copy_design_collection_worker.rb'
- 'app/workers/design_management/new_version_worker.rb'
- 'app/workers/destroy_pages_deployments_worker.rb'
- 'app/workers/detect_repository_languages_worker.rb'
- 'app/workers/disallow_two_factor_for_group_worker.rb'
- 'app/workers/disallow_two_factor_for_subgroups_worker.rb'
- 'app/workers/email_receiver_worker.rb'
- 'app/workers/emails_on_push_worker.rb'
- 'app/workers/environments/auto_stop_cron_worker.rb'
- 'app/workers/environments/canary_ingress/update_worker.rb'
- 'app/workers/error_tracking_issue_link_worker.rb'
- 'app/workers/experiments/record_conversion_event_worker.rb'
- 'app/workers/expire_build_artifacts_worker.rb'
- 'app/workers/expire_build_instance_artifacts_worker.rb'
- 'app/workers/expire_job_cache_worker.rb'
- 'app/workers/export_csv_worker.rb'
- 'app/workers/file_hook_worker.rb'
- 'app/workers/flush_counter_increments_worker.rb'
- 'app/workers/gitlab/github_import/advance_stage_worker.rb'
- 'app/workers/gitlab/github_import/refresh_import_jid_worker.rb'
- 'app/workers/gitlab/github_import/stage/finish_import_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_base_data_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_lfs_objects_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_notes_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_pull_requests_merged_by_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_pull_requests_reviews_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_pull_requests_worker.rb'
- 'app/workers/gitlab/github_import/stage/import_repository_worker.rb'
- 'app/workers/gitlab/jira_import/advance_stage_worker.rb'
- 'app/workers/gitlab/jira_import/import_issue_worker.rb'
- 'app/workers/gitlab/jira_import/stage/start_import_worker.rb'
- 'app/workers/gitlab/phabricator_import/import_tasks_worker.rb'
- 'app/workers/gitlab_performance_bar_stats_worker.rb'
- 'app/workers/gitlab_service_ping_worker.rb'
- 'app/workers/gitlab_shell_worker.rb'
- 'app/workers/group_destroy_worker.rb'
- 'app/workers/group_export_worker.rb'
- 'app/workers/group_import_worker.rb'
- 'app/workers/hashed_storage/migrator_worker.rb'
- 'app/workers/hashed_storage/project_migrate_worker.rb'
- 'app/workers/hashed_storage/project_rollback_worker.rb'
- 'app/workers/hashed_storage/rollbacker_worker.rb'
- 'app/workers/import_export_project_cleanup_worker.rb'
- 'app/workers/import_issues_csv_worker.rb'
- 'app/workers/incident_management/add_severity_system_note_worker.rb'
- 'app/workers/incident_management/pager_duty/process_incident_worker.rb'
- 'app/workers/incident_management/process_alert_worker_v2.rb'
- 'app/workers/invalid_gpg_signature_update_worker.rb'
- 'app/workers/irker_worker.rb'
- 'app/workers/issuable/label_links_destroy_worker.rb'
- 'app/workers/issuable_export_csv_worker.rb'
- 'app/workers/issuables/clear_groups_issue_counter_worker.rb'
- 'app/workers/issue_due_scheduler_worker.rb'
- 'app/workers/issue_placement_worker.rb'
- 'app/workers/issue_rebalancing_worker.rb'
- 'app/workers/jira_connect/forward_event_worker.rb'
- 'app/workers/jira_connect/sync_branch_worker.rb'
- 'app/workers/jira_connect/sync_builds_worker.rb'
- 'app/workers/jira_connect/sync_deployments_worker.rb'
- 'app/workers/jira_connect/sync_feature_flags_worker.rb'
- 'app/workers/jira_connect/sync_merge_request_worker.rb'
- 'app/workers/jira_connect/sync_project_worker.rb'
- 'app/workers/mail_scheduler/issue_due_worker.rb'
- 'app/workers/mail_scheduler/notification_service_worker.rb'
- 'app/workers/member_invitation_reminder_emails_worker.rb'
- 'app/workers/members_destroyer/unassign_issuables_worker.rb'
- 'app/workers/merge_request_cleanup_refs_worker.rb'
- 'app/workers/merge_request_mergeability_check_worker.rb'
- 'app/workers/merge_requests/create_pipeline_worker.rb'
- 'app/workers/merge_requests/delete_source_branch_worker.rb'
- 'app/workers/merge_requests/handle_assignees_change_worker.rb'
- 'app/workers/merge_requests/resolve_todos_worker.rb'
- 'app/workers/merge_worker.rb'
- 'app/workers/metrics/dashboard/prune_old_annotations_worker.rb'
- 'app/workers/metrics/dashboard/schedule_annotations_prune_worker.rb'
- 'app/workers/metrics/dashboard/sync_dashboards_worker.rb'
- 'app/workers/migrate_external_diffs_worker.rb'
- 'app/workers/namespaceless_project_destroy_worker.rb'
- 'app/workers/namespaces/in_product_marketing_emails_worker.rb'
- 'app/workers/namespaces/onboarding_issue_created_worker.rb'
- 'app/workers/namespaces/onboarding_pipeline_created_worker.rb'
- 'app/workers/namespaces/onboarding_progress_worker.rb'
- 'app/workers/namespaces/onboarding_user_added_worker.rb'
- 'app/workers/namespaces/prune_aggregation_schedules_worker.rb'
- 'app/workers/namespaces/root_statistics_worker.rb'
- 'app/workers/namespaces/schedule_aggregation_worker.rb'
- 'app/workers/new_issue_worker.rb'
- 'app/workers/new_merge_request_worker.rb'
- 'app/workers/new_note_worker.rb'
- 'app/workers/object_pool/create_worker.rb'
- 'app/workers/object_pool/destroy_worker.rb'
- 'app/workers/object_pool/join_worker.rb'
- 'app/workers/object_pool/schedule_join_worker.rb'
- 'app/workers/object_storage/background_move_worker.rb'
- 'app/workers/object_storage/migrate_uploads_worker.rb'
- 'app/workers/packages/composer/cache_cleanup_worker.rb'
- 'app/workers/packages/composer/cache_update_worker.rb'
- 'app/workers/packages/debian/generate_distribution_worker.rb'
- 'app/workers/packages/debian/process_changes_worker.rb'
- 'app/workers/packages/go/sync_packages_worker.rb'
- 'app/workers/packages/helm/extraction_worker.rb'
- 'app/workers/packages/maven/metadata/sync_worker.rb'
- 'app/workers/packages/nuget/extraction_worker.rb'
- 'app/workers/packages/rubygems/extraction_worker.rb'
- 'app/workers/pages_domain_removal_cron_worker.rb'
- 'app/workers/pages_domain_ssl_renewal_cron_worker.rb'
- 'app/workers/pages_domain_ssl_renewal_worker.rb'
- 'app/workers/pages_domain_verification_cron_worker.rb'
- 'app/workers/pages_domain_verification_worker.rb'
- 'app/workers/pages_remove_worker.rb'
- 'app/workers/pages_transfer_worker.rb'
- 'app/workers/pages_update_configuration_worker.rb'
- 'app/workers/pages_worker.rb'
- 'app/workers/partition_creation_worker.rb'
- 'app/workers/personal_access_tokens/expired_notification_worker.rb'
- 'app/workers/personal_access_tokens/expiring_worker.rb'
- 'app/workers/pipeline_metrics_worker.rb'
- 'app/workers/pipeline_notification_worker.rb'
- 'app/workers/pipeline_process_worker.rb'
- 'app/workers/pipeline_schedule_worker.rb'
- 'app/workers/post_receive.rb'
- 'app/workers/process_commit_worker.rb'
- 'app/workers/project_cache_worker.rb'
- 'app/workers/project_daily_statistics_worker.rb'
- 'app/workers/project_destroy_worker.rb'
- 'app/workers/project_export_worker.rb'
- 'app/workers/project_service_worker.rb'
- 'app/workers/projects/post_creation_worker.rb'
- 'app/workers/projects/schedule_bulk_repository_shard_moves_worker.rb'
- 'app/workers/prometheus/create_default_alerts_worker.rb'
- 'app/workers/propagate_integration_group_worker.rb'
- 'app/workers/propagate_integration_inherit_descendant_worker.rb'
- 'app/workers/propagate_integration_inherit_worker.rb'
- 'app/workers/propagate_integration_project_worker.rb'
- 'app/workers/propagate_integration_worker.rb'
- 'app/workers/propagate_service_template_worker.rb'
- 'app/workers/prune_old_events_worker.rb'
- 'app/workers/purge_dependency_proxy_cache_worker.rb'
- 'app/workers/rebase_worker.rb'
- 'app/workers/releases/create_evidence_worker.rb'
- 'app/workers/releases/manage_evidence_worker.rb'
- 'app/workers/remote_mirror_notification_worker.rb'
- 'app/workers/remove_expired_group_links_worker.rb'
- 'app/workers/remove_expired_members_worker.rb'
- 'app/workers/remove_unaccepted_member_invites_worker.rb'
- 'app/workers/remove_unreferenced_lfs_objects_worker.rb'
- 'app/workers/repository_archive_cache_worker.rb'
- 'app/workers/repository_check/batch_worker.rb'
- 'app/workers/repository_check/clear_worker.rb'
- 'app/workers/repository_check/dispatch_worker.rb'
- 'app/workers/repository_check/single_repository_worker.rb'
- 'app/workers/repository_cleanup_worker.rb'
- 'app/workers/repository_fork_worker.rb'
- 'app/workers/repository_import_worker.rb'
- 'app/workers/repository_remove_remote_worker.rb'
- 'app/workers/repository_update_remote_mirror_worker.rb'
- 'app/workers/requests_profiles_worker.rb'
- 'app/workers/run_pipeline_schedule_worker.rb'
- 'app/workers/schedule_merge_request_cleanup_refs_worker.rb'
- 'app/workers/schedule_migrate_external_diffs_worker.rb'
- 'app/workers/self_monitoring_project_create_worker.rb'
- 'app/workers/self_monitoring_project_delete_worker.rb'
- 'app/workers/service_desk_email_receiver_worker.rb'
- 'app/workers/snippets/schedule_bulk_repository_shard_moves_worker.rb'
- 'app/workers/ssh_keys/expired_notification_worker.rb'
- 'app/workers/ssh_keys/expiring_soon_notification_worker.rb'
- 'app/workers/stage_update_worker.rb'
- 'app/workers/stuck_ci_jobs_worker.rb'
- 'app/workers/stuck_export_jobs_worker.rb'
- 'app/workers/stuck_merge_jobs_worker.rb'
- 'app/workers/system_hook_push_worker.rb'
- 'app/workers/todos_destroyer/confidential_issue_worker.rb'
- 'app/workers/todos_destroyer/destroyed_issuable_worker.rb'
- 'app/workers/todos_destroyer/entity_leave_worker.rb'
- 'app/workers/todos_destroyer/group_private_worker.rb'
- 'app/workers/todos_destroyer/private_features_worker.rb'
- 'app/workers/todos_destroyer/project_private_worker.rb'
- 'app/workers/trending_projects_worker.rb'
- 'app/workers/update_container_registry_info_worker.rb'
- 'app/workers/update_external_pull_requests_worker.rb'
- 'app/workers/update_head_pipeline_for_merge_request_worker.rb'
- 'app/workers/update_highest_role_worker.rb'
- 'app/workers/update_merge_requests_worker.rb'
- 'app/workers/update_project_statistics_worker.rb'
- 'app/workers/upload_checksum_worker.rb'
- 'app/workers/user_status_cleanup/batch_worker.rb'
- 'app/workers/users/create_statistics_worker.rb'
- 'app/workers/users/deactivate_dormant_users_worker.rb'
- 'app/workers/wait_for_cluster_creation_worker.rb'
- 'app/workers/web_hooks/destroy_worker.rb'
- 'app/workers/web_hooks/log_execution_worker.rb'
- 'app/workers/x509_certificate_revoke_worker.rb'
- 'app/workers/x509_issuer_crl_check_worker.rb'
- 'ee/app/workers/active_user_count_threshold_worker.rb'
- 'ee/app/workers/adjourned_group_deletion_worker.rb'
- 'ee/app/workers/adjourned_project_deletion_worker.rb'
- 'ee/app/workers/adjourned_projects_deletion_cron_worker.rb'
- 'ee/app/workers/admin_emails_worker.rb'
- 'ee/app/workers/analytics/code_review_metrics_worker.rb'
- 'ee/app/workers/analytics/devops_adoption/create_all_snapshots_worker.rb'
- 'ee/app/workers/analytics/devops_adoption/create_snapshot_worker.rb'
- 'ee/app/workers/approval_rules/external_approval_rule_payload_worker.rb'
- 'ee/app/workers/ci/batch_reset_minutes_worker.rb'
- 'ee/app/workers/ci/sync_reports_to_report_approval_rules_worker.rb'
- 'ee/app/workers/clear_shared_runners_minutes_worker.rb'
- 'ee/app/workers/create_github_webhook_worker.rb'
- 'ee/app/workers/dast_site_validation_worker.rb'
- 'ee/app/workers/deployments/auto_rollback_worker.rb'
- 'ee/app/workers/dora/daily_metrics/refresh_worker.rb'
- 'ee/app/workers/dora/daily_metrics/refresh_worker.rb'
- 'ee/app/workers/elastic/migration_worker.rb'
- 'ee/app/workers/elastic_association_indexer_worker.rb'
- 'ee/app/workers/elastic_cluster_reindexing_cron_worker.rb'
- 'ee/app/workers/elastic_commit_indexer_worker.rb'
- 'ee/app/workers/elastic_delete_project_worker.rb'
- 'ee/app/workers/elastic_full_index_worker.rb'
- 'ee/app/workers/elastic_indexing_control_worker.rb'
- 'ee/app/workers/elastic_namespace_indexer_worker.rb'
- 'ee/app/workers/elastic_namespace_rollout_worker.rb'
- 'ee/app/workers/elastic_remove_expired_namespace_subscriptions_from_index_cron_worker.rb'
- 'ee/app/workers/epics/new_epic_issue_worker.rb'
- 'ee/app/workers/epics/update_epics_dates_worker.rb'
- 'ee/app/workers/geo/batch/project_registry_scheduler_worker.rb'
- 'ee/app/workers/geo/batch/project_registry_worker.rb'
- 'ee/app/workers/geo/container_repository_sync_worker.rb'
- 'ee/app/workers/geo/design_repository_sync_worker.rb'
- 'ee/app/workers/geo/destroy_worker.rb'
- 'ee/app/workers/geo/event_worker.rb'
- 'ee/app/workers/geo/file_download_worker.rb'
- 'ee/app/workers/geo/file_registry_removal_worker.rb'
- 'ee/app/workers/geo/file_removal_worker.rb'
- 'ee/app/workers/geo/hashed_storage_attachments_migration_worker.rb'
- 'ee/app/workers/geo/hashed_storage_migration_worker.rb'
- 'ee/app/workers/geo/metrics_update_worker.rb'
- 'ee/app/workers/geo/project_sync_worker.rb'
- 'ee/app/workers/geo/prune_event_log_worker.rb'
- 'ee/app/workers/geo/rename_repository_worker.rb'
- 'ee/app/workers/geo/repositories_clean_up_worker.rb'
- 'ee/app/workers/geo/repository_cleanup_worker.rb'
- 'ee/app/workers/geo/repository_verification/primary/single_worker.rb'
- 'ee/app/workers/geo/repository_verification/secondary/single_worker.rb'
- 'ee/app/workers/geo/reverification_batch_worker.rb'
- 'ee/app/workers/geo/scheduler/per_shard_scheduler_worker.rb'
- 'ee/app/workers/geo/scheduler/scheduler_worker.rb'
- 'ee/app/workers/geo/secondary/registry_consistency_worker.rb'
- 'ee/app/workers/geo/secondary_usage_data_cron_worker.rb'
- 'ee/app/workers/geo/sidekiq_cron_config_worker.rb'
- 'ee/app/workers/geo/sync_timeout_cron_worker.rb'
- 'ee/app/workers/geo/verification_batch_worker.rb'
- 'ee/app/workers/geo/verification_cron_worker.rb'
- 'ee/app/workers/geo/verification_timeout_worker.rb'
- 'ee/app/workers/geo/verification_worker.rb'
- 'ee/app/workers/geo_repository_destroy_worker.rb'
- 'ee/app/workers/group_saml_group_sync_worker.rb'
- 'ee/app/workers/groups/schedule_bulk_repository_shard_moves_worker.rb'
- 'ee/app/workers/groups/update_statistics_worker.rb'
- 'ee/app/workers/historical_data_worker.rb'
- 'ee/app/workers/import_software_licenses_worker.rb'
- 'ee/app/workers/incident_management/apply_incident_sla_exceeded_label_worker.rb'
- 'ee/app/workers/incident_management/incident_sla_exceeded_check_worker.rb'
- 'ee/app/workers/incident_management/oncall_rotations/persist_all_rotations_shifts_job.rb'
- 'ee/app/workers/incident_management/oncall_rotations/persist_shifts_job.rb'
- 'ee/app/workers/incident_management/pending_escalations/alert_check_worker.rb'
- 'ee/app/workers/incident_management/pending_escalations/alert_create_worker.rb'
- 'ee/app/workers/incident_management/pending_escalations/schedule_check_cron_worker.rb'
- 'ee/app/workers/iterations/cadences/create_iterations_worker.rb'
- 'ee/app/workers/iterations/cadences/schedule_create_iterations_worker.rb'
- 'ee/app/workers/iterations/roll_over_issues_worker.rb'
- 'ee/app/workers/iterations_update_status_worker.rb'
- 'ee/app/workers/ldap_all_groups_sync_worker.rb'
- 'ee/app/workers/ldap_group_sync_worker.rb'
- 'ee/app/workers/ldap_sync_worker.rb'
- 'ee/app/workers/merge_request_reset_approvals_worker.rb'
- 'ee/app/workers/merge_requests/sync_code_owner_approval_rules_worker.rb'
- 'ee/app/workers/merge_trains/refresh_worker.rb'
- 'ee/app/workers/network_policy_metrics_worker.rb'
- 'ee/app/workers/new_epic_worker.rb'
- 'ee/app/workers/personal_access_tokens/groups/policy_worker.rb'
- 'ee/app/workers/personal_access_tokens/instance/policy_worker.rb'
- 'ee/app/workers/project_import_schedule_worker.rb'
- 'ee/app/workers/pseudonymizer_worker.rb'
- 'ee/app/workers/refresh_license_compliance_checks_worker.rb'
- 'ee/app/workers/repository_push_audit_event_worker.rb'
- 'ee/app/workers/repository_update_mirror_worker.rb'
- 'ee/app/workers/requirements_management/import_requirements_csv_worker.rb'
- 'ee/app/workers/requirements_management/process_requirements_reports_worker.rb'
- 'ee/app/workers/scan_security_report_secrets_worker.rb'
- 'ee/app/workers/security/auto_fix_worker.rb'
- 'ee/app/workers/security/create_orchestration_policy_worker.rb'
- 'ee/app/workers/security/orchestration_policy_rule_schedule_worker.rb'
- 'ee/app/workers/security/store_scans_worker.rb'
- 'ee/app/workers/security/track_secure_scans_worker.rb'
- 'ee/app/workers/set_user_status_based_on_user_cap_setting_worker.rb'
- 'ee/app/workers/status_page/publish_worker.rb'
- 'ee/app/workers/store_security_reports_worker.rb'
- 'ee/app/workers/store_security_scans_worker.rb'
- 'ee/app/workers/sync_seat_link_request_worker.rb'
- 'ee/app/workers/sync_seat_link_worker.rb'
- 'ee/app/workers/todos_destroyer/confidential_epic_worker.rb'
- 'ee/app/workers/update_all_mirrors_worker.rb'
- 'ee/app/workers/update_max_seats_used_for_gitlab_com_subscriptions_worker.rb'
- 'ee/app/workers/vulnerabilities/historical_statistics/deletion_worker.rb'
- 'ee/app/workers/vulnerabilities/statistics/adjustment_worker.rb'
- 'ee/app/workers/vulnerabilities/statistics/schedule_worker.rb'
- 'ee/app/workers/vulnerability_exports/export_deletion_worker.rb'
- 'ee/app/workers/vulnerability_exports/export_worker.rb'

View file

@ -2,63 +2,629 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 14.1.7 (2021-09-30)
## 14.2.5 (2021-09-30)
### Security (28 changes)
- [Require password param for 2FA changes](gitlab-org/security/gitlab@4e16401a77264ef3127f0bb314fa0abab11216c7) ([merge request](gitlab-org/security/gitlab!1816))
- [Fix permissions check on project members import](gitlab-org/security/gitlab@be54b3f4890fa89d58cb02be79c65025f606bd6c) ([merge request](gitlab-org/security/gitlab!1860))
- [Respect disabled import sources when initiating import via API](gitlab-org/security/gitlab@b76b6229c93447954efc5719e6dd61eb601afdc4) ([merge request](gitlab-org/security/gitlab!1848))
- [Return 404 if model id wasn't passed to UploadsController](gitlab-org/security/gitlab@8ab1cfaafba21a9e90ef41677993af2afdcd920a) ([merge request](gitlab-org/security/gitlab!1845))
- [Scrub artifacts signed URL in SendEntry logs](gitlab-org/security/gitlab@5bae93b2f085d5dac58e411bffb5ca518fe7df98) ([merge request](gitlab-org/security/gitlab!1842))
- [Prevent double-impersonation and impersonation breakout](gitlab-org/security/gitlab@7c82d0f2a1dbfb0a23d6a5cdaee448307ffc6972) ([merge request](gitlab-org/security/gitlab!1836))
- [Clear session access tokens when starting/stopping impersonation](gitlab-org/security/gitlab@a4d529eb7c8eeb3e9c42ae3d81514d79a905cdb7) ([merge request](gitlab-org/security/gitlab!1833))
- [Use validated URL when sending request to Gitea Importer](gitlab-org/security/gitlab@b30536e6c9aa969c76bcd167f00db5a0e07ace7a) ([merge request](gitlab-org/security/gitlab!1820))
- [Fix XSS in Jira link](gitlab-org/security/gitlab@9ace10c46744ee220c649d2da0eeb3e99216ee7d) ([merge request](gitlab-org/security/gitlab!1625)) **GitLab Enterprise Edition**
- [Fix fogbugz importer DNS Rebind SSRF](gitlab-org/security/gitlab@9d7107665d6ed931ef4b2feeb0287bc71b89232c) ([merge request](gitlab-org/security/gitlab!1682))
- [Remove related project access tokens when a project is deleted](gitlab-org/security/gitlab@b86096865949f07f6a2020603959117d9c84877b) ([merge request](gitlab-org/security/gitlab!1812))
- [Require group admin access to list pending invites](gitlab-org/security/gitlab@404b344edd61b2f13c3498cd545c2b40165ee536) ([merge request](gitlab-org/security/gitlab!1721))
- [Do not export and import repository_size_limit](gitlab-org/security/gitlab@56f563980f944f1a5e3935ad82070e6719cd5a0c) ([merge request](gitlab-org/security/gitlab!1768))
- [Escapes MR approval rule names correctly](gitlab-org/security/gitlab@ea64f981ce70a0e1e6ee58e64a6007e82f48e071) ([merge request](gitlab-org/security/gitlab!1809))
- [Filter shared groups autocomplete by permitted](gitlab-org/security/gitlab@59999ab27cba402589b27d204cf29678100e948b) ([merge request](gitlab-org/security/gitlab!1806)) **GitLab Enterprise Edition**
- [Require access token for git when 2fa is required](gitlab-org/security/gitlab@6a4a75efd7685a69ffa7cc4c027c7058013cca45) ([merge request](gitlab-org/security/gitlab!1796))
- [Disable exporting pipeline triggers on project export](gitlab-org/security/gitlab@8a8c78ed054def210013a849195939d7888fcf65) ([merge request](gitlab-org/security/gitlab!1790))
- [Add pagination to dependencies API](gitlab-org/security/gitlab@2a963ad670c60d1f3078fdf446ea755c5862fa26) ([merge request](gitlab-org/security/gitlab!1725)) **GitLab Enterprise Edition**
- [Permission check issuable template API data](gitlab-org/security/gitlab@9d95d13bc714e46b5e3697288c4b398cb5aee88b) ([merge request](gitlab-org/security/gitlab!1787)) **GitLab Enterprise Edition**
- [Apply account locking to password reset page](gitlab-org/security/gitlab@47ee79b1983de886f5ebe04b2975c2e37aa938ce) ([merge request](gitlab-org/security/gitlab!1784))
- [Enforce configured scopes for Oauth applications](gitlab-org/security/gitlab@acf2d894c91aa7fb72ea32b10e50e94441885399) ([merge request](gitlab-org/security/gitlab!1781))
- [Verify state before using errors from OAuth2 OmniAuth providers](gitlab-org/security/gitlab@20073576508aa239e52d8ff911c1dfd3df8af670) ([merge request](gitlab-org/security/gitlab!1778))
- [Prevent moving epic issues to different group hierarchy](gitlab-org/security/gitlab@93c6ec69b7bc6c9124a2a5350cebebb57f63a28f) ([merge request](gitlab-org/security/gitlab!1774)) **GitLab Enterprise Edition**
- [Prevent showing not allowed subgroup epics](gitlab-org/security/gitlab@72a11e72425a033f3464d6ff12b4d06e12ec9faf) ([merge request](gitlab-org/security/gitlab!1766)) **GitLab Enterprise Edition**
- [Do not allow status checks to exist with external protected branches](gitlab-org/security/gitlab@8f96c013ccbbe9c52b3f03fb0d247debb1b157a8) ([merge request](gitlab-org/security/gitlab!1763)) **GitLab Enterprise Edition**
- [Fix GFM autocomplete xss](gitlab-org/security/gitlab@fd92dabddff5ae5d67a98aef5d858438520a2f06) ([merge request](gitlab-org/security/gitlab!1748))
- [Prohibit anonymous access for specific user API endpoint](gitlab-org/security/gitlab@2e8a386430309a931dbbd47fba7540a53399ad64) ([merge request](gitlab-org/security/gitlab!1737))
- [Fix denial-of-service attack in Markdown parser](gitlab-org/security/gitlab@5b6ed5212f880e2397dbea9ffc74cf0a35bd4411) ([merge request](gitlab-org/security/gitlab!1728))
- [Require password param for 2FA changes](gitlab-org/security/gitlab@5693760a3edf82774a4e19b9bb561be87316be54) ([merge request](gitlab-org/security/gitlab!1815))
- [Fix permissions check on project members import](gitlab-org/security/gitlab@f9b4200427833e370638aa63851d6801a40c404c) ([merge request](gitlab-org/security/gitlab!1859))
- [Respect disabled import sources when initiating import via API](gitlab-org/security/gitlab@3c9af055ece281fcaab0b8dcc277e0ce9133ad31) ([merge request](gitlab-org/security/gitlab!1847))
- [Return 404 if model id wasn't passed to UploadsController](gitlab-org/security/gitlab@dd4616362040d2b812d69ff2ecf78e70ff4b9ae3) ([merge request](gitlab-org/security/gitlab!1844))
- [Scrub artifacts signed URL in SendEntry logs](gitlab-org/security/gitlab@41d275bb73943ba6f970d6678b49c9336194af35) ([merge request](gitlab-org/security/gitlab!1841))
- [Prevent double-impersonation and impersonation breakout](gitlab-org/security/gitlab@c0ab498adda057f4d87969d74c32a3ea95df297c) ([merge request](gitlab-org/security/gitlab!1835))
- [Clear session access tokens when starting/stopping impersonation](gitlab-org/security/gitlab@fd39d88b348d525818820d2496afe08612420023) ([merge request](gitlab-org/security/gitlab!1832))
- [Use validated URL when sending request to Gitea Importer](gitlab-org/security/gitlab@328e3c726c693b32666e0fb32eda0b7a6f22d8ad) ([merge request](gitlab-org/security/gitlab!1821))
- [Fix XSS in Jira link](gitlab-org/security/gitlab@868d8b9c4a1e9e9019a7ff51da11f75051e452c3) ([merge request](gitlab-org/security/gitlab!1817)) **GitLab Enterprise Edition**
- [Fix fogbugz importer DNS Rebind SSRF](gitlab-org/security/gitlab@4f4b5a15a3508084f921442b3a7f42ba0448f1bb) ([merge request](gitlab-org/security/gitlab!1681))
- [Remove related project access tokens when a project is deleted](gitlab-org/security/gitlab@282e81198f80f1fda912da5bc6f671d778b19ca9) ([merge request](gitlab-org/security/gitlab!1811))
- [Require group admin access to list pending invites](gitlab-org/security/gitlab@1ce85345787025222c915fe5fa314bad8994b6ba) ([merge request](gitlab-org/security/gitlab!1720))
- [Do not export and import repository_size_limit](gitlab-org/security/gitlab@359f14e41dfc355a13041cdf1dbcd082c254200c) ([merge request](gitlab-org/security/gitlab!1769))
- [Escapes MR approval rule names correctly](gitlab-org/security/gitlab@d84739982599197ff337d69d818634544270e142) ([merge request](gitlab-org/security/gitlab!1808))
- [Filter shared groups autocomplete by permitted](gitlab-org/security/gitlab@3a2b4c7ff1eb2ba3e84840ba2800c13d6491d726) ([merge request](gitlab-org/security/gitlab!1805)) **GitLab Enterprise Edition**
- [Require access token for git when 2fa is required](gitlab-org/security/gitlab@deb4e7e5f941c82450d382c1b85f6325e367394f) ([merge request](gitlab-org/security/gitlab!1795))
- [Disable exporting pipeline triggers on project export](gitlab-org/security/gitlab@417761bb2f67f03bfe803163bad97da7b9fa088b) ([merge request](gitlab-org/security/gitlab!1789))
- [Add pagination to dependencies API](gitlab-org/security/gitlab@2f84755ba54580df126054a561d8cc4731f936d3) ([merge request](gitlab-org/security/gitlab!1724)) **GitLab Enterprise Edition**
- [Permission check issuable template API data](gitlab-org/security/gitlab@a90614e2efc813ca5f13a9aa9b51f13f0e8934aa) ([merge request](gitlab-org/security/gitlab!1786)) **GitLab Enterprise Edition**
- [Apply account locking to password reset page](gitlab-org/security/gitlab@6bbd77c0748e59eacff51edb6264d6099ee14a38) ([merge request](gitlab-org/security/gitlab!1783))
- [Enforce configured scopes for Oauth applications](gitlab-org/security/gitlab@a9f44bb19cbfc460cd05627a80ef17c39cdde86b) ([merge request](gitlab-org/security/gitlab!1780))
- [Verify state before using errors from OAuth2 OmniAuth providers](gitlab-org/security/gitlab@6f70292d0fa3efbe99c44748a463df189830cc35) ([merge request](gitlab-org/security/gitlab!1777))
- [Prevent moving epic issues to different group hierarchy](gitlab-org/security/gitlab@979d40003794014d5930709a257e9a5c75df10e6) ([merge request](gitlab-org/security/gitlab!1773)) **GitLab Enterprise Edition**
- [Prevent showing not allowed subgroup epics](gitlab-org/security/gitlab@2f72e4062f6cd7256ffff31172b00c012a5910e1) ([merge request](gitlab-org/security/gitlab!1765)) **GitLab Enterprise Edition**
- [Do not allow status checks to exist with external protected branches](gitlab-org/security/gitlab@dd08837d054c574f94f80e806cc7b49de342cc57) ([merge request](gitlab-org/security/gitlab!1762)) **GitLab Enterprise Edition**
- [Fix GFM autocomplete xss](gitlab-org/security/gitlab@5afba618ef89fdce544f498a30e7366e3f6cb788) ([merge request](gitlab-org/security/gitlab!1747))
- [Prohibit anonymous access for specific user API endpoint](gitlab-org/security/gitlab@a813bd8a8f07ffa0477efd3a3936b436e5ec6b17) ([merge request](gitlab-org/security/gitlab!1736))
- [Fix denial-of-service attack in Markdown parser](gitlab-org/security/gitlab@f618ad9c104882ac5f707b162e8119805252019e) ([merge request](gitlab-org/security/gitlab!1729))
## 14.1.6 (2021-09-27)
## 14.2.4 (2021-09-17)
### Fixed (2 changes)
- [Fix Elastic::MigrationWorker current_migration (2nd attempt)](gitlab-org/gitlab@65bf8636d35edc6f580c7f09e1ffafc46ca5fbdb) ([merge request](gitlab-org/gitlab!70494)) **GitLab Enterprise Edition**
- [Removes cleanup job from Terraform.latest](gitlab-org/gitlab@6085d73d1a88aa98310f775fe2ff74584948e1a9) ([merge request](gitlab-org/gitlab!70494))
## 14.2.3 (2021-09-01)
### Fixed (4 changes)
- [Fix Live Markdown Preview in personal and subgroup projects](gitlab-org/gitlab@20553f93703c0bc076c8e1a4fbc4ce07e2e914b7) ([merge request](gitlab-org/gitlab!69316))
- [Fix OrphanedInviteTokensCleanup migration](gitlab-org/gitlab@9c59b2fbdfeb250de66a9d2b9424cde9680f86c3) ([merge request](gitlab-org/gitlab!69316))
- [Reset severity_levels default](gitlab-org/gitlab@34e65788679cfbdeec28357a01a8b303ba61418f) ([merge request](gitlab-org/gitlab!69316))
- [Geo: Replicate multi-arch containers](gitlab-org/gitlab@fdf88767320016a84c83e896b9f9b90291de89e0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67624)) **GitLab Enterprise Edition**
## 14.2.2 (2021-08-31)
### Security (9 changes)
- [Prevent non-admins from configuring Jira connect app](gitlab-org/security/gitlab@1bc56361c9daa90accea65836d5a424168a2c544) ([merge request](gitlab-org/security/gitlab!1697))
- [Only create jira connect NS subscriptions for admins](gitlab-org/security/gitlab@c160da2cb32a5774fef149155cfd397981bf9173) ([merge request](gitlab-org/security/gitlab!1698))
- [Update apollo_upload_server dependency](gitlab-org/security/gitlab@5ef659b8c9a5a7338830171c62943d3b8bb16410) ([merge request](gitlab-org/security/gitlab!1699))
- [Ensure shared group members lose project access after group deletion](gitlab-org/security/gitlab@c94e934234a90f82e7fe291ed0f1d6a763b9a977) ([merge request](gitlab-org/security/gitlab!1683))
- [Update Import/Export to use public email when mapping users](gitlab-org/security/gitlab@13fb902c55c2dfe7ec2bf35f58a9cb3d93905d9a) ([merge request](gitlab-org/security/gitlab!1669)) **GitLab Enterprise Edition**
- [Require sign in for .keys endpoint on non-public instances](gitlab-org/security/gitlab@0979dd458e8fa0d4f5e184ef0b9ea042d79f6c14) ([merge request](gitlab-org/security/gitlab!1676))
- [Inherit user external status while creating project bots](gitlab-org/security/gitlab@93062909ffc093cb8f718a3ea3f2976292a9b9af) ([merge request](gitlab-org/security/gitlab!1675))
- [Escape issue reference and title for Jira issues](gitlab-org/security/gitlab@d25ef8599ec03ee80ef1bff7067b2269836400cf) ([merge request](gitlab-org/security/gitlab!1673)) **GitLab Enterprise Edition**
- [Fix stored XSS vulnerability in Datadog settings form](gitlab-org/security/gitlab@23b98dac7864992898992a153950247ac6ccb933) ([merge request](gitlab-org/security/gitlab!1670))
## 14.2.1 (2021-08-23)
### Fixed (1 change)
- [Fix Elastic::MigrationWorker current_migration (2nd attempt)](gitlab-org/gitlab@f07c7a5f173a2fc053247664f21c03d29df543a4) ([merge request](gitlab-org/gitlab!71187)) **GitLab Enterprise Edition**
- [Drop un-used db/ci_migrate symlink](gitlab-org/gitlab@1154311625345e120407c0c397c7d4a27848a739) ([merge request](gitlab-org/gitlab!68723))
## 14.1.5 (2021-09-02)
### Changed (2 changes)
### Fixed (1 change)
- [Reorder vuln check criteria](gitlab-org/gitlab@9bbb20db46362a859632e7bb88deba985318ca2c) ([merge request](gitlab-org/gitlab!68723)) **GitLab Enterprise Edition**
- [Don't override vulnerability feedback UUID anymore](gitlab-org/gitlab@5f8372fb782c9416ae5ab582009a4399cb7d3750) ([merge request](gitlab-org/gitlab!68723)) **GitLab Enterprise Edition**
- [Geo: Replicate multi-arch containers](gitlab-org/gitlab@4f74fe9fb6f53cd877d8f793e2ef74c4177006d1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67624)) **GitLab Enterprise Edition**
## 14.2.0 (2021-08-20)
## 14.1.4 (2021-08-31)
### Added (128 changes)
### Security (8 changes)
- [Add missing Ci::Build graphql mutations](gitlab-org/gitlab@b0389d7d0da358b550392cf20178c2faea6dbd61) ([merge request](gitlab-org/gitlab!68399))
- [Introduce a table to store job trace metadata](gitlab-org/gitlab@66ac715bd050922f83e754f1f2b27c27848fa2b2) ([merge request](gitlab-org/gitlab!68171))
- [Promote the contact_sales_btn_in_app experiment to product feature](gitlab-org/gitlab@273a053eff53c29ce55f70358b2ebd593a64c7ff) ([merge request](gitlab-org/gitlab!65598))
- [Upgrade GitLab Pages to v1.42.0](gitlab-org/gitlab@5de522492fa0a3d013eef5d75103a93f350036c2) ([merge request](gitlab-org/gitlab!68341))
- [Enable the instance-level overrides feature](gitlab-org/gitlab@b8ab6f1e1c1120a8b53fa0864627bc7a5ff6603f) ([merge request](gitlab-org/gitlab!67927))
- [Add support for inline diff in content editor](gitlab-org/gitlab@c10baec8a0efb6c6a59909cd8c1772c9d7cab042) ([merge request](gitlab-org/gitlab!68231))
- [Update security policies pipeline processor to support secret detection](gitlab-org/gitlab@797d5d844d5533ea6561dc2e584d8b15b0c47b71) ([merge request](gitlab-org/gitlab!67223)) **GitLab Enterprise Edition**
- [Render references in content editor](gitlab-org/gitlab@efc45686c1d1804d8367a292fc63164aa1d7f6c2) ([merge request](gitlab-org/gitlab!68230))
- [Add copy feature to CI job page](gitlab-org/gitlab@5d72b702b7d78566110714a30d9742d32e8e32d0) ([merge request](gitlab-org/gitlab!68148))
- [Limit number of files per pages site](gitlab-org/gitlab@48df27a71ab7c3845172671b20e2cf2e3dcf6fe2) ([merge request](gitlab-org/gitlab!67761))
- [Added new user callout for the Terraform banner](gitlab-org/gitlab@c52952f613e4dfd1ab5cbde859b8f3d1a1ce51eb) ([merge request](gitlab-org/gitlab!68138))
- [Markdown Live preview for Source Editor](gitlab-org/gitlab@2fffee2645d5bb9a4b8b269c578ebca9f9f73fbf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68020))
- [Create table zentao_tracker_data](gitlab-org/gitlab@161e6d31110c591b041b76717a98024f5963a3f7) ([merge request](gitlab-org/gitlab!67938))
- [Start tracking project ci feature usages](gitlab-org/gitlab@ce79c6e6e88fc6e9fe2721ccaea801322bd83e13) ([merge request](gitlab-org/gitlab!68186))
- [Add support for task list in content editor](gitlab-org/gitlab@0f07bf94eeed25828118633cc80e9d6db06c682b) ([merge request](gitlab-org/gitlab!68121))
- [Add support for subscript/superscript](gitlab-org/gitlab@79c6a33fa8c64630d2c8318df2bc3a148571e80d) ([merge request](gitlab-org/gitlab!68106))
- [Enable agent registration UI](gitlab-org/gitlab@aae65bb2daddffb001062a08e563b733c709422a) ([merge request](gitlab-org/gitlab!63718)) **GitLab Enterprise Edition**
- [Add support for meta tag DAST site validation](gitlab-org/gitlab@446eb73c72154b0cc835f77681d174e452e8c186) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67553)) **GitLab Enterprise Edition**
- [Include reply in email egenrated notes](gitlab-org/gitlab@1b6793b1735e0bdb15ff8885afc3a4c44b58eec5) ([merge request](gitlab-org/gitlab!67615))
- [Allow sorting merge requests by latest closed at](gitlab-org/gitlab@e8eec2be09c22e9d34d4ae872ebaf9ada8d6e9e7) ([merge request](gitlab-org/gitlab!67041))
- [Enable seat usage export](gitlab-org/gitlab@96a57bd55a58a139a3b6a71dfa188754da98b5fb) ([merge request](gitlab-org/gitlab!67934)) **GitLab Enterprise Edition**
- [Show artifact downloads for security reports](gitlab-org/gitlab@66e2a2c14c1db3ef5e0bb5eafbe8450ab0ab9e1f) ([merge request](gitlab-org/gitlab!67701))
- [Expose integrated error tracking to services](gitlab-org/gitlab@08a65298328d1215a4c2abc09c1c5b1a7329c976) ([merge request](gitlab-org/gitlab!66847))
- [Render emojis in the Content Editor](gitlab-org/gitlab@27836b5914ab2e677a1bf83a75c7b0ae46c45646) ([merge request](gitlab-org/gitlab!67986))
- [Add dependency link to package type](gitlab-org/gitlab@6bb31a828706c216e68a6f775acb533732374623) ([merge request](gitlab-org/gitlab!67828))
- [Enabled diff virtual scrolling by default](gitlab-org/gitlab@2889ee338ef5fa9eb1e034cc9c29ba00b97709ee) ([merge request](gitlab-org/gitlab!67983))
- [Enables ci_same_stage_job_needs by default](gitlab-org/gitlab@8faa92bc2c5ee9aa0be2ebf6936f7e1cf74c5762) ([merge request](gitlab-org/gitlab!67851))
- [Remove agent_kubeconfig_ci_variable feature flag](gitlab-org/gitlab@57b3effb251f08cbdf2f394f27e293efbf7df872) ([merge request](gitlab-org/gitlab!67734))
- [Prune database partitions older than a retention period](gitlab-org/gitlab@c8b84ced3234b086cb4e6b99452bf8f3e7e49803) ([merge request](gitlab-org/gitlab!67056))
- [Add vulnerabilities_allowed into rules](gitlab-org/gitlab@0f90ed3eeee90352cea72c9aaf2b125d4ca667ab) ([merge request](gitlab-org/gitlab!66685)) **GitLab Enterprise Edition**
- [Add organizations table and model](gitlab-org/gitlab@6a69edffe8b16154cd584c4775c6806e26800b98) ([merge request](gitlab-org/gitlab!67551))
- [Support setting Rails asset host via gitlab.yml](gitlab-org/gitlab@d11ace2405a4af37e85b329ac00e1deec4ca3dca) ([merge request](gitlab-org/gitlab!67710))
- [Disable project/group sharing when User Cap set](gitlab-org/gitlab@108f4f0a04a02aa57ac032aa8518d753719b93c1) ([merge request](gitlab-org/gitlab!67229))
- [Expose timelogs in GraphQL query type](gitlab-org/gitlab@6b0f410efd348ae2a12ff3b6a9ca32c1420810c6) ([merge request](gitlab-org/gitlab!67185))
- [Enable ci_daily_limit_for_pipeline_schedules by default](gitlab-org/gitlab@c8058482a2a41d886bf816fc253305bb278e2dc1) ([merge request](gitlab-org/gitlab!67835))
- [Track changes in merge request approval settings in Audit Events](gitlab-org/gitlab@630bfeaeccf9641015353c300f02b4d225c6dbd5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66234)) **GitLab Enterprise Edition**
- [Store hashcode for VSA stage events](gitlab-org/gitlab@760ab23cfb152a0a3ae4a5df0414f18d0ff552f4) ([merge request](gitlab-org/gitlab!67259))
- [Remove ci_jobs_trace_size_limit feature flag](gitlab-org/gitlab@99468602a8450030a63c232d0cc4379e02ed7db6) ([merge request](gitlab-org/gitlab!67770))
- [Index issues on project_id, state_id, created, id](gitlab-org/gitlab@49aed743bdd9ff27451cd8a2c8368db137aae4f8) ([merge request](gitlab-org/gitlab!67304))
- [Feat: enable report abuse button for snippets](gitlab-org/gitlab@449a7e04dd5d65de656dc7e7f6b4867debd07b66) ([merge request](gitlab-org/gitlab!66913))
- [Add tooltip to No Target text in corpus management](gitlab-org/gitlab@736e7a6dfab827b861304fc7f6c893f9700ed480) ([merge request](gitlab-org/gitlab!67345))
- [Remove code quality usage feature flag](gitlab-org/gitlab@dc2466ef052f4749dbc706627fd1b47d8033ff0e) ([merge request](gitlab-org/gitlab!67792))
- [Add severity_levels validation and usage](gitlab-org/gitlab@33e1a9f9f06795f5b8b44c947851d0ccac1189b0) ([merge request](gitlab-org/gitlab!67064)) **GitLab Enterprise Edition**
- [Add support for adding attachments in Content Editor](gitlab-org/gitlab@86ee34786dca713d3dfca6ee64190099497925ac) ([merge request](gitlab-org/gitlab!67728))
- [Add expired tokens alert to personal access tokens profile page](gitlab-org/gitlab@ce93996be8b89115d3265d86ad2d6ee224e6d4f3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66915)) **GitLab Enterprise Edition**
- [Show topics in the project list](gitlab-org/gitlab@f9cb6e706c8104be6b96d44693416f79183b507c) ([merge request](gitlab-org/gitlab!65335))
- [Add pipeline iid dropdown](gitlab-org/gitlab@0052c811f0241b39870bf7d308539d7f340f1848) ([merge request](gitlab-org/gitlab!67625))
- [Mark completed jobs as successful](gitlab-org/gitlab@82a928011f15da3aa3aae94b5a758cf4541b3048) ([merge request](gitlab-org/gitlab!67687))
- [Add namespace field to User type in GraphQL](gitlab-org/gitlab@9169e2639da6d162e120c2dd66eda511b6194978) ([merge request](gitlab-org/gitlab!67641))
- [Add view pipeline button in pipeline editor](gitlab-org/gitlab@dd5e9f74604ea891412885b8c0a24547e2c8961f) ([merge request](gitlab-org/gitlab!67474))
- [Add a bubblemenu for text format to Content Editor](gitlab-org/gitlab@8a8a9842b54aa54d9cf197403c145fb7cd05533f) ([merge request](gitlab-org/gitlab!67363))
- [Adds APIs and their specs to projectionist example file](gitlab-org/gitlab@b7d12b6871066146492a7b7350c1bb17e2d181d1) ([merge request](gitlab-org/gitlab!67626))
- [Add rule_index to security_orchestration_policy_rule_schedules](gitlab-org/gitlab@01d1d4398f1c4e99a3f2146a8bdeac0ae5375261) ([merge request](gitlab-org/gitlab!67586))
- [Extend graphql repository with paginated tree field](gitlab-org/gitlab@c97bac9f191f785287324d684b75cfefb45fe325) ([merge request](gitlab-org/gitlab!66751))
- [Add support for security policy project for Projects::CreateService](gitlab-org/gitlab@75e3e09a6f30a26e64ac901b136bd524bccd6a20) ([merge request](gitlab-org/gitlab!66448)) **GitLab Enterprise Edition**
- [Expose vulnerabilities_allowed](gitlab-org/gitlab@d14b3c9ada83fa9047488f312b229f46b9941f4b) ([merge request](gitlab-org/gitlab!66680)) **GitLab Enterprise Edition**
- [Deploy token access for the Dependency Proxy](gitlab-org/gitlab@9a6cee64edba05d571f81fe071fda946969736d4) ([merge request](gitlab-org/gitlab!67552))
- [Remove compare_repo_dropdown feature flag](gitlab-org/gitlab@33c2a0f4a05e1d096c001c2f3c1dc7c683ac568e) ([merge request](gitlab-org/gitlab!67193))
- [Add mutation to change namespace shared runners setting](gitlab-org/gitlab@2bbc69a6d2b519534e4f534618a9683130161139) ([merge request](gitlab-org/gitlab!67256))
- [Add severity_levels into approval_project_rules](gitlab-org/gitlab@ae7afa58f4cfa91919c01fcacad24b142502fed6) ([merge request](gitlab-org/gitlab!67062))
- [Add admin_verify track to in-product marketing emails](gitlab-org/gitlab@67b920db2d46e83201023fdebbdc120dd99511ba) ([merge request](gitlab-org/gitlab!67147))
- [Add instance setting for delayed project deletion](gitlab-org/gitlab@d2c9d6267f2cb55bb0bcea383d2261c75d5536f7) ([merge request](gitlab-org/gitlab!67230)) **GitLab Enterprise Edition**
- [Add Snowplow Tracking to Environment Actions](gitlab-org/gitlab@2d5dc001670c1894bc7190377be8d8ee97d92752) ([merge request](gitlab-org/gitlab!66968))
- [Finalize converting geo_job_artifact_deleted_events](gitlab-org/gitlab@fafde4d21574912c0fbccf2bf7085d82418118c9) ([merge request](gitlab-org/gitlab!66763))
- [Remove feature flag search_sort_issues_by_popularity](gitlab-org/gitlab@4adb461f6a7c8ea2a102a774d0ea053b3a0428f4) ([merge request](gitlab-org/gitlab!67515))
- [Cancel pipelines before deleting](gitlab-org/gitlab@d738b59412b780eca267dee40fe1bd63e513e6bb) ([merge request](gitlab-org/gitlab!67063))
- [Add structured logging to MergeRequestMergeabilityCheckWorker](gitlab-org/gitlab@d971a728f534df518ab74117526d3099db62df0d) ([merge request](gitlab-org/gitlab!67440))
- [Allow immediate deletion of groups](gitlab-org/gitlab@80637ccb22b7e24209c1ef6f7a0832163b89756e) ([merge request](gitlab-org/gitlab!66951)) **GitLab Enterprise Edition**
- [Add application and DB layer validations for flag_type uniqueness](gitlab-org/gitlab@1eb5b25a7ff521a4cb55f872c561a21c4a33b04d) ([merge request](gitlab-org/gitlab!67300)) **GitLab Enterprise Edition**
- [Add pronunciation to GitLab profile page](gitlab-org/gitlab@5e6b224b48f58f7dda8920566ba5fc8c4309aed8) ([merge request](gitlab-org/gitlab!67111))
- [Add trial_short track to in-product marketing emails](gitlab-org/gitlab@f74e5e5369a9b5d307b86b24d1a9bb607eb089b8) ([merge request](gitlab-org/gitlab!66943))
- [Deploy token access for the dependency proxy](gitlab-org/gitlab@b723758c42028c10cba8bde2b6ee04f9bfe59f3d) ([merge request](gitlab-org/gitlab!64363))
- [Generate Debian component files for udeb and source files](gitlab-org/gitlab@4a55b9ff9616844b083db2f4d8e187d40138c43f) ([merge request](gitlab-org/gitlab!65188))
- [Log deprecations to dedicated log file](gitlab-org/gitlab@36be9eca6c23897be2b1f560dbc0e0f4ba25d21a) ([merge request](gitlab-org/gitlab!66815))
- [Add button for reactivating/extending trial](gitlab-org/gitlab@dfe79df4f34fe5c7b7beb91902e9715a10524c36) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66049)) **GitLab Enterprise Edition**
- [Add secret_detection to security_orchestration_policy JSON schema](gitlab-org/gitlab@a08527c5f4b2ab1501e6aefe5a8209d5bef6c2ea) ([merge request](gitlab-org/gitlab!67124)) **GitLab Enterprise Edition**
- [Add assigned issue and pending todo counts to /users_count API](gitlab-org/gitlab@eb340792858e66823d64857576eb47686c3f8e89) ([merge request](gitlab-org/gitlab!66909))
- [GraphQL: Add sharedRunnersSetting to Group/Namespace](gitlab-org/gitlab@835e72bdcf40ab6693637af3d05895eb4a885452) ([merge request](gitlab-org/gitlab!67022))
- [feat: Add environments survey alert](gitlab-org/gitlab@48f4a30dbd532413b87a7affe6490c17007d39b3) ([merge request](gitlab-org/gitlab!67243))
- [Allow Limitable to use override feature flag](gitlab-org/gitlab@d9d4ac4a194e3ffa0aa2a249b70d18c02105e311) ([merge request](gitlab-org/gitlab!67151))
- [Retain trigger time of alerts](gitlab-org/gitlab@93fe1effc69dadf139311352640e36ed2ce864f3) ([merge request](gitlab-org/gitlab!65635))
- [Add mutation to lock/unlock project paths](gitlab-org/gitlab@bdcf4a8172cfb68fde6e0343c7c367104b969237) ([merge request](gitlab-org/gitlab!66186)) **GitLab Enterprise Edition**
- [Use non-predefined variables inside CI include blocks](gitlab-org/gitlab@7de0bbfe90d802869b2ebf6dfe38302e80c9369e) ([merge request](gitlab-org/gitlab!66852))
- [Allow resetting issue labels](gitlab-org/gitlab@4ff90dab42d538e4723cacfb7541a0af2b1be574) ([merge request](gitlab-org/gitlab!66859))
- [Exposed created_at to billable members API](gitlab-org/gitlab@498e439d65cb8201ddb8d7d73bd55627a7b2f636) ([merge request](gitlab-org/gitlab!67127)) **GitLab Enterprise Edition**
- [Add pagination support for get_tree_entries RPC](gitlab-org/gitlab@d4bf66a7b9d4a9630d903a2bb20b74a7defc8816) ([merge request](gitlab-org/gitlab!66657))
- [Introduce AutoDeleteCronWorker for Environments](gitlab-org/gitlab@355df1117e587c062fabaf4318fa5d04fcc76b66) ([merge request](gitlab-org/gitlab!66732))
- [Enable DAST runner site validation by default](gitlab-org/gitlab@8cbd2c66c1b9905b495e215a5c4da09bd655504a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67096)) **GitLab Enterprise Edition**
- [Return signature in InRelease and Release.gpg endpoints](gitlab-org/gitlab@e1d915e397ad4b3eaf43880fe8cf0c012470a0a0) ([merge request](gitlab-org/gitlab!67061))
- [Add pages_file_entries to plan_limits](gitlab-org/gitlab@8924a81387d5fd7b2e2f85698ad721acf8f9911c) ([merge request](gitlab-org/gitlab!64925))
- [Add the compliance framework label to group projects listing](gitlab-org/gitlab@78c8851d4403f878076c698a6b6cc528db019ff3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66819)) **GitLab Enterprise Edition**
- [Adds ProjectSetComplianceFramework GraphQL Mutation](gitlab-org/gitlab@a55e3de11bcf1278b199208269d7127eeff4287d) ([merge request](gitlab-org/gitlab!66244)) **GitLab Enterprise Edition**
- [Add timelog summary to time tracking report](gitlab-org/gitlab@b8208723bb27d8f7e35537fb5bd186507fad272a) ([merge request](gitlab-org/gitlab!67006))
- [Plug Debian SignDistributionService in GenerateDistributionService](gitlab-org/gitlab@4457d342ad6acf9b7c12859a847d87184ed2e91e) ([merge request](gitlab-org/gitlab!66907))
- [Add team_short track to in-product marketing emails](gitlab-org/gitlab@6f38ab407df09680d638200843fbd273cc992f2e) ([merge request](gitlab-org/gitlab!66854))
- [Add Mailgun endpoint for receiving permanent failures](gitlab-org/gitlab@0f371ed75c04ffe81ccce6e11105581e3eaeed86) ([merge request](gitlab-org/gitlab!66397))
- [Render CSV parsing errors](gitlab-org/gitlab@91fd2b5d235e3ec1dbe23d23a8aa2e35d9a55d05) ([merge request](gitlab-org/gitlab!66683))
- [Added state column to members table](gitlab-org/gitlab@834bd3d6136b07a2416239582b587ae42bc516e6) ([merge request](gitlab-org/gitlab!66550))
- [Trial onboarding for trial registrations](gitlab-org/gitlab@39a90e95acad44c50f85c85158cb2a442b3d6ecd) ([merge request](gitlab-org/gitlab!66836)) **GitLab Enterprise Edition**
- [Display pending user count when modifying user cap](gitlab-org/gitlab@9ceeb7b5778037e8989962f270cd74541ce19732) ([merge request](gitlab-org/gitlab!66654)) **GitLab Enterprise Edition**
- [Search for epics by iid if search starts with &](gitlab-org/gitlab@5522a5ffb6a0522e11dd684cce5c5e99ae6c24ce) ([merge request](gitlab-org/gitlab!65249)) **GitLab Enterprise Edition**
- [Add PyPI package endpoints for project and group path (escaped)](gitlab-org/gitlab@c9f7a1785ebb5a902edf55e507218275c947266c) ([merge request](gitlab-org/gitlab!66087))
- [Add Debian API endpoint for deb, udeb, ... files](gitlab-org/gitlab@6a576a69c550da0fbb2b7af7a5d6487b4ba369ce) ([merge request](gitlab-org/gitlab!64923))
- [Support setting timelog summary via API](gitlab-org/gitlab@4cedb18ca1f036cc952cdaa680c9419cc8ee8306) ([merge request](gitlab-org/gitlab!66793))
- [Geo: Add verification of snippet repositories](gitlab-org/gitlab@e5d32d05684ec533e6701dd80b3a23d21304498a) ([merge request](gitlab-org/gitlab!66878)) **GitLab Enterprise Edition**
- [Add support for propagation correlation IDs from trusted CIDRs](gitlab-org/gitlab@5e865c2e680203509f2b170dd835d11c0677764e) ([merge request](gitlab-org/gitlab!66715))
- [Debian CRUD group distribution endpoints](gitlab-org/gitlab@c2c871e575763f1977b3429c48382f82792c192a) ([merge request](gitlab-org/gitlab!66188))
- [Added error classes for specific backup rake task](gitlab-org/gitlab@94ab3594ca1a331c9d488462298c10142a376eda) ([merge request](gitlab-org/gitlab!66260))
- [Automatically resync verification failures](gitlab-org/gitlab@c615061fe0dcf0dadb977c0df581b925d142c38d) ([merge request](gitlab-org/gitlab!66851)) **GitLab Enterprise Edition**
- [Add log count of active jobs](gitlab-org/gitlab@ed6b8745c0e816c5f459ef0bf70fe0766cadf4f0) ([merge request](gitlab-org/gitlab!64623))
- [Add saml_provider_id query param to Users API](gitlab-org/gitlab@0e78d90629614d1762079f4aea6b1cf42325064d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66167)) **GitLab Enterprise Edition**
- [Add vulnerability_amount column](gitlab-org/gitlab@7c391302180171dd9832842bda2e9b6ad9b3f96b) ([merge request](gitlab-org/gitlab!66673))
- [Add error tracking client key](gitlab-org/gitlab@4eaa6cc66db16684d3e2b58292e9bfccc6e56f09) ([merge request](gitlab-org/gitlab!66466))
- [Add a badge for project invite members](gitlab-org/gitlab@d993263a5fa90fb07092feddd2c6208788b6cfb2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66611)) **GitLab Enterprise Edition**
- [Expose security scanners in MR approval rules API](gitlab-org/gitlab@c324301e2144abef01423becbbfaa7afc649f95c) ([merge request](gitlab-org/gitlab!66116)) **GitLab Enterprise Edition**
- [Add overridden_uuid column to security_findings](gitlab-org/gitlab@ce5165d1db875b30cdd92a97e9aa607f14fc380c) ([merge request](gitlab-org/gitlab!66689))
- [Add Jira Connect branches controller](gitlab-org/gitlab@b102fd6743d758000a4b6e45c4dbdb2cfaff7e66) ([merge request](gitlab-org/gitlab!66032))
- [Add signed_file to Debian distributions](gitlab-org/gitlab@28c0435afcabf22019b7e475731fff12ac7c7227) ([merge request](gitlab-org/gitlab!66470))
- [Add new BulkImports endpoint to start new migration](gitlab-org/gitlab@0632ee50bb08dedd78704b46cc88d68a5a2ac64a) ([merge request](gitlab-org/gitlab!66353))
- [Add service to sign Debian distribution](gitlab-org/gitlab@95f1e8572a1d6835bde312518914c63e35788c3a) ([merge request](gitlab-org/gitlab!64926))
- [Implement Scheduling Logic for DAST On-demand Scheduler](gitlab-org/gitlab@ddd59ed419e30b2d849898522bb93880d4300410) ([merge request](gitlab-org/gitlab!65327))
- [Sync vulnerability rules](gitlab-org/gitlab@fbb848e45448bb68d61c2d2454b080fa1e1793fb) ([merge request](gitlab-org/gitlab!66115)) **GitLab Enterprise Edition**
- [Add Fuzz Testing to DevOps Adoption](gitlab-org/gitlab@6b26ed63b3fb2b5c5d23ea9489ee8e655363e026) ([merge request](gitlab-org/gitlab!66446)) **GitLab Enterprise Edition**
- [Removes `mr_collapsed_approval_rules` feature flag](gitlab-org/gitlab@21fb28f1fd1cd7dae9dd5336cab432785f998f49) ([merge request](gitlab-org/gitlab!66457))
- [Add descendantGroups field to Group type](gitlab-org/gitlab@9a5dd5ea4a97344892dfe290c806ea139a9f2d94) ([merge request](gitlab-org/gitlab!65255))
- [Added user_cap_reached? to Group](gitlab-org/gitlab@9e3ab675343a8a133d3db6b5379ba57fd7ba6e3b) ([merge request](gitlab-org/gitlab!66264)) **GitLab Enterprise Edition**
- [Add security scanners column into](gitlab-org/gitlab@ad8618b9d6684de286315aa06a0c0d38e06c5744) ([merge request](gitlab-org/gitlab!66114))
- [Save visited URL to recent searches and update weight token list](gitlab-org/gitlab@94b4363b06a8ec706467905e0e3d77692b8c952e) ([merge request](gitlab-org/gitlab!66361))
- [Update apollo_upload_server dependency](gitlab-org/security/gitlab@34e7e3b7590fd76d0f618091551651e8065edfd2) ([merge request](gitlab-org/security/gitlab!1700))
- [Ensure shared group members lose project access after group deletion](gitlab-org/security/gitlab@4a7b8203776b719c06186c1b189a8cf21572fcd4) ([merge request](gitlab-org/security/gitlab!1684))
- [Fix stored XSS vulnerability in Datadog settings form](gitlab-org/security/gitlab@0906814af604e7fcab54a96bccadcba11207387d) ([merge request](gitlab-org/security/gitlab!1671))
- [Inherit user external status while creating project bots](gitlab-org/security/gitlab@d5a26c4145d917b5b49e207e03669d2b7e4ee617) ([merge request](gitlab-org/security/gitlab!1665))
- [Escape issue reference and title for Jira issues](gitlab-org/security/gitlab@4153444b76421ddf3a7fd21f1fc0500700a4e263) ([merge request](gitlab-org/security/gitlab!1662)) **GitLab Enterprise Edition**
- [Require sign in for .keys endpoint on non-public instances](gitlab-org/security/gitlab@b090b3f6dee6d21d93595c5e46e6c5c7fc30f1fb) ([merge request](gitlab-org/security/gitlab!1658))
- [Only create jira connect NS subscriptions for admins](gitlab-org/security/gitlab@3f2040c0e2c90f3fcafdbf0f86bd2591bd458dff) ([merge request](gitlab-org/security/gitlab!1648))
- [Prevent non-admins from configuring Jira connect app](gitlab-org/security/gitlab@fa864c0a2eaf450033f4c594cea07d9f24144cd6) ([merge request](gitlab-org/security/gitlab!1644))
### Fixed (137 changes)
- [Resolve layout issues in notes form](gitlab-org/gitlab@d33a507320c68e2b0812c6a750a9651fc6218e91) ([merge request](gitlab-org/gitlab!68414))
- [Set db name when creating connection with new pool size](gitlab-org/gitlab@b15f7229312f5ef3be0e973c37dc6e85934b0ef9) ([merge request](gitlab-org/gitlab!68335))
- [Project reporters can drag cards in group board](gitlab-org/gitlab@3f6610dbfc7a6e0c87947d379bcd4e065d12f83b) ([merge request](gitlab-org/gitlab!68126))
- [Added ability to create assignee list of descendants](gitlab-org/gitlab@8aee0745d70bfbc18456ac14d1dc31524942b317) ([merge request](gitlab-org/gitlab!66016))
- [Merge branch 'dreedy-fix-application_experiment-publish_to_database' into 'master'](gitlab-org/gitlab@2784a285bf1a19e20673793a461d60c1e6b123cd) ([merge request](gitlab-org/gitlab!68389))
- [Run serivce discovery on load balancing configuration](gitlab-org/gitlab@788373a15d4bcc2fffd43e230f5227ad37a7d995) ([merge request](gitlab-org/gitlab!68378))
- [Fix intermittent 'branch not found' errors when pushing creates an MR](gitlab-org/gitlab@8ab5d0dbf082657889a62f4b6868dce87d9e27c7) ([merge request](gitlab-org/gitlab!68362))
- [Fix reference pattern for iterations](gitlab-org/gitlab@4176fa758b7ad7f97d9108cf6687cd92002b2d4a) ([merge request](gitlab-org/gitlab!68350)) **GitLab Enterprise Edition**
- [Include all available groups as import target](gitlab-org/gitlab@6530b9a6ac3a96d8493bf29cc2aa4f8f5146e576) ([merge request](gitlab-org/gitlab!68302))
- [Allow to apply issue inherited templates using URL](gitlab-org/gitlab@02f50c65b0514dce7282cdd49466d361c6f19b4f) ([merge request](gitlab-org/gitlab!67686)) **GitLab Enterprise Edition**
- [Increase spacing between buttons to 8px](gitlab-org/gitlab@0b060a7e62982f7486e77546ffc9a47073010c41) ([merge request](gitlab-org/gitlab!68179))
- [Noop migrations containing faulty SQL regex](gitlab-org/gitlab@4fe9fac7b32dc6c9210aa3f94aaf3385fe180494) ([merge request](gitlab-org/gitlab!68296))
- [Add migration to update ultimate trial plan limits](gitlab-org/gitlab@af185ed0d94666139a4ae523486d79d2d26e7f6b) ([merge request](gitlab-org/gitlab!67703))
- [Fix Security::FindingsFinder to return only the latest findings](gitlab-org/gitlab@38ab2ecef202027ccf6e82d6f854d347d4379b4d) ([merge request](gitlab-org/gitlab!68266)) **GitLab Enterprise Edition**
- [Reset oncall-schedule form on cancel or close](gitlab-org/gitlab@6a27ee3c3ba5916cad4025670eb54224ce9bbbf8) ([merge request](gitlab-org/gitlab!68076)) **GitLab Enterprise Edition**
- [Do not run refresh_member_authorized_projects callback when importing](gitlab-org/gitlab@d44fcf64e17cc996f2dc76cc1139013c984122de) ([merge request](gitlab-org/gitlab!67975))
- [Resolve todo when resolve button is clicked](gitlab-org/gitlab@aad1c72d16bf30668d4d6b4be2b4a4dcf01acafc) ([merge request](gitlab-org/gitlab!67026))
- [Hide notification warning for private comments](gitlab-org/gitlab@28d6e0b713a3f493ecfe7991c39a26bfc7779056) ([merge request](gitlab-org/gitlab!68252))
- [Remove broken "default" storage initialiser](gitlab-org/gitlab@56bea218e8fedada1754228ea343f8e52ec9419f) ([merge request](gitlab-org/gitlab!68096))
- [When ordering epics by title, do so case-insensitively](gitlab-org/gitlab@26c06b42142868e44e67203a682742ae2cc6df40) ([merge request](gitlab-org/gitlab!67125)) **GitLab Enterprise Edition**
- [Fix spacing between dropdowns in policy editor](gitlab-org/gitlab@e92004104642a1531abddb2070300b45b30b53d4) ([merge request](gitlab-org/gitlab!68205)) **GitLab Enterprise Edition**
- [Fix: Container repository geo syncs stuck in started state](gitlab-org/gitlab@9361b2bf5a2b20dfb9936c5bf409c6ad145c06fd) ([merge request](gitlab-org/gitlab!68080)) **GitLab Enterprise Edition**
- [Use sub-batches in BackfillIntegrationsTypeNew background migration](gitlab-org/gitlab@82c41eece6e385796720d6b655e0f2faac7c856c) ([merge request](gitlab-org/gitlab!67971))
- [Always use the newest commit in a branch for push events](gitlab-org/gitlab@694ca4e437c7b83eb6bd16d304342b882c716d1d) ([merge request](gitlab-org/gitlab!68168))
- [Fix mirror repo table buttons in _mirror_repos.html.haml](gitlab-org/gitlab@6a5afc3afb77d2466552ea51ef18ec144f1cb6ef) ([merge request](gitlab-org/gitlab!68179))
- [Optimize #latest_successful_for_refs method](gitlab-org/gitlab@44fe828ed82d49aa35651a8ff676188955ef7474) ([merge request](gitlab-org/gitlab!67315))
- [Github Importer: Ensure to fail and log imports on exceptions](gitlab-org/gitlab@752512e0ddd5b39bfd45d7788d0e8adbc36bf7c6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67454))
- [Delete backups/tmp after restore](gitlab-org/gitlab@70c0e8b5dae6d5bb46c1ca3d07a7b4b3b2abb7ec) ([merge request](gitlab-org/gitlab!67741))
- [Enable the feature flag by default](gitlab-org/gitlab@ce3fff9df470f14afd773fcee60c650fbac006d4) ([merge request](gitlab-org/gitlab!67972))
- [Fix due date tooltip on milestone in sidebar](gitlab-org/gitlab@59a6f8df8a69490c73303ebc51ec185ff7a5bf64) ([merge request](gitlab-org/gitlab!68130))
- [Add Conan to filters](gitlab-org/gitlab@09e1b50f3f72767d00d48a7ab36a5d5938c20edf) ([merge request](gitlab-org/gitlab!67884)) **GitLab Enterprise Edition**
- [Move audit events promo illustration and update text](gitlab-org/gitlab@8292187a159fb958d2299333f4ea9f67cabdfe50) ([merge request](gitlab-org/gitlab!67873)) **GitLab Enterprise Edition**
- [Delete private subgroups todos when removing member](gitlab-org/gitlab@f4602b494712e7599f626c8398fcbafd86d21722) ([merge request](gitlab-org/gitlab!68094)) **GitLab Enterprise Edition**
- [fix: Regenerate locale/gitlab.pot](gitlab-org/gitlab@a945b87c443c6ca8bca0087325ad69375b5006cb) ([merge request](gitlab-org/gitlab!67243))
- [Remove class to fix dark mode readability](gitlab-org/gitlab@d85dee9ff5da493fa08dcc1b9906169e7180ba08) ([merge request](gitlab-org/gitlab!68057))
- [Fix adding or updating vulnerability history comments](gitlab-org/gitlab@e0919ad30e9c3d05c07f6dc126a1446dd4bab9d7) ([merge request](gitlab-org/gitlab!68053))
- [checks: Fix combinatorial explosion in `#commits_for()`](gitlab-org/gitlab@755ed5e360a3e844e69f0ee408e6fcf5a992a6b2) ([merge request](gitlab-org/gitlab!67827))
- [Fix code block input rules](gitlab-org/gitlab@550f64c1c4e5db9da117e92e452f5a2b3e45350f) ([merge request](gitlab-org/gitlab!67980))
- [Fix N+1 database queries in pipeline databuilder](gitlab-org/gitlab@042dd0904c747c7b6e3d1b329fdc57f73fe59567) ([merge request](gitlab-org/gitlab!67238))
- [Ensure service discovery runs before results are used](gitlab-org/gitlab@7f407002f099361b71cfd847c29076bee387eba3) ([merge request](gitlab-org/gitlab!67899))
- [fix: Update locale/gitlab.pot](gitlab-org/gitlab@8d43b9a6ff30525379efc1fb6f71ac069e4010bf) ([merge request](gitlab-org/gitlab!67243))
- [Fix basic search full count load](gitlab-org/gitlab@a5b71685514df851fd4adfa3a5c30997edcd9675) ([merge request](gitlab-org/gitlab!67959))
- [Update Pikaday colors for dark mode](gitlab-org/gitlab@7303e099b0d55734c494d35520572925fb81a5a6) ([merge request](gitlab-org/gitlab!65247))
- [copy: Clarify gift card currency in copy](gitlab-org/gitlab@d3cac3cb6e9c63eeeaa5b5ec61ff2b6ef573df64) ([merge request](gitlab-org/gitlab!67243))
- [Fix connection search path being reset](gitlab-org/gitlab@2b4e0ec8318c1caf684307796fc1b40f4f127a29) ([merge request](gitlab-org/gitlab!67725))
- [Fix policy_editor environment picker](gitlab-org/gitlab@63f2617f946596832484ed429b22facab8e4d2ad) ([merge request](gitlab-org/gitlab!67888)) **GitLab Enterprise Edition**
- [Hide reference path on project board cards](gitlab-org/gitlab@745463582a2b65c3b528161c92fe814110f1ed85) ([merge request](gitlab-org/gitlab!67713))
- [Restrict Runner.locked to project runners](gitlab-org/gitlab@f13ac9372b8a652b4aa890b2eca60e5820c210ca) ([merge request](gitlab-org/gitlab!62105))
- [Refactor the nuget package updater service](gitlab-org/gitlab@1df93ae5b05ec5b65af0dc423908204f779257ae) ([merge request](gitlab-org/gitlab!66728))
- [Fix UI of project topics popover](gitlab-org/gitlab@a69856f69022fce287dde6eeb76f9ca9f2a838e2) ([merge request](gitlab-org/gitlab!67825))
- [Handle some WebHookService errors](gitlab-org/gitlab@8273de31461df70dc4de308b6d7e0db8f9ab3868) ([merge request](gitlab-org/gitlab!67555))
- [Fix group runner sort dropdown](gitlab-org/gitlab@6df5fb1067d64ea5236542213dde7d593477ad49) ([merge request](gitlab-org/gitlab!67681))
- [Get branches from rules using rule_index for security policy](gitlab-org/gitlab@f8ea455f77d73a40e91bc780f4380ce3a89983c5) ([merge request](gitlab-org/gitlab!67607)) **GitLab Enterprise Edition**
- [Fix environments regex for etag restful](gitlab-org/gitlab@b045ab5d101806fd85c4c7b7bd9961cbdf67aa57) ([merge request](gitlab-org/gitlab!67708))
- [Fix feature flag check for security policy project](gitlab-org/gitlab@4b5da3c24d790908091f6b6c22b1611adf97803c) ([merge request](gitlab-org/gitlab!67654)) **GitLab Enterprise Edition**
- [Fix punctuation on help line](gitlab-org/gitlab@2ab0ee394e66aadd8858ae06967c173f2901d4be) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67742)) **GitLab Enterprise Edition**
- [Fix pipeline status layout in pipeline editor](gitlab-org/gitlab@8b93d5e1795d44a97f4e3748e154cbb4e2db47a2) ([merge request](gitlab-org/gitlab!67709))
- [Fix the npm package already taken validator](gitlab-org/gitlab@d32556e93a4364301df11cf885c55cab9b23778f) ([merge request](gitlab-org/gitlab!67107))
- [Ensure SAML Group Sync runs anytime SAML Group Links exist](gitlab-org/gitlab@6da2725d6c512535da26e8dd3bf033aed41e86df) ([merge request](gitlab-org/gitlab!67633)) **GitLab Enterprise Edition**
- [Delete test cases when migrating project to a free group](gitlab-org/gitlab@9dd8f87aa8f8bc74d55ff3e67b5b4d0dcd3ae93a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67374)) **GitLab Enterprise Edition**
- [Conditionally render create project button](gitlab-org/gitlab@e2be8c827b71e6e88936810fa59d78563029d42a) ([merge request](gitlab-org/gitlab!64196))
- [checks: Fix mismatch in `#new_commits()` signature](gitlab-org/gitlab@3b934ec025da7c194d6c99d1d2499532a74ff52a) ([merge request](gitlab-org/gitlab!67581))
- [Use correct fingerprint values in recalculate finding UUIDs migration](gitlab-org/gitlab@84a66d666f3e87abff30752cef566a5837604b6e) ([merge request](gitlab-org/gitlab!67578)) **GitLab Enterprise Edition**
- [Fix displaying the actual plan name on the billings page](gitlab-org/gitlab@6acefc493abf85ecec6cca31e7d0fda6ede755c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67572)) **GitLab Enterprise Edition**
- [Refactor stop environments service](gitlab-org/gitlab@868d37615865f11771fd384c6c9d121af2fcb670) ([merge request](gitlab-org/gitlab!67485))
- [Fix `StoreReportService` by falling back to find by location approach](gitlab-org/gitlab@5274e118980235d36e323959267fa1f59d6f3c03) ([merge request](gitlab-org/gitlab!67568)) **GitLab Enterprise Edition**
- [Fix preloading unrelated associations for CommitStatus](gitlab-org/gitlab@1bcd7c0ea5c61fba8a7bae73f5834971c4207518) ([merge request](gitlab-org/gitlab!67439))
- [Accept all 2xx HTTP responses when testing the Datadog integration](gitlab-org/gitlab@6f113615d7db7b154237b6e3c7898d4243d867a2) ([merge request](gitlab-org/gitlab!67524))
- [Refactor init logic of merge request options on project settings page](gitlab-org/gitlab@5046693207e3d49052a0c49c7cd9b155aaba03aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67334))
- [Enable the FF ci_modified_paths_of_external_prs](gitlab-org/gitlab@bbe6048a6e28764fcb731f14a4731ae583fa12f3) ([merge request](gitlab-org/gitlab!67458))
- [Code-Quality.gitlab-ci.yml: automatically clean-up docker container](gitlab-org/gitlab@65fec3a4316d294fcfe9f0efd4d7faf81ea926ce) ([merge request](gitlab-org/gitlab!66910))
- [Update min selectable number for subscription buy process](gitlab-org/gitlab@ac7b25f3b4310945dd8ee72f8681a1a6b30070a2) ([merge request](gitlab-org/gitlab!67430)) **GitLab Enterprise Edition**
- [Make `DbCleaner` and `BeforeAllAdapter` to support many connections](gitlab-org/gitlab@2625e7a41ab0d22c3df2f9937cec13fc000737e0) ([merge request](gitlab-org/gitlab!67330))
- [feat: Add one more i18n translation string](gitlab-org/gitlab@58edbc171d217caeee917e3cee22ee6e8aa84abb) ([merge request](gitlab-org/gitlab!67243))
- [Fix double escaping when clicking WebIDE button](gitlab-org/gitlab@509e0a6251d745fcc63b8202e0eb5749fb1c5939) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67360))
- [Fix some button border colors in dark mode](gitlab-org/gitlab@72645ee3e3331be014b8c8ab7ad211b96e7851ee) ([merge request](gitlab-org/gitlab!67389))
- [Reschedule `latest_pipeline_id` population with all artifact types](gitlab-org/gitlab@f22009e14da925a1f031211c9529e8986e2200fb) ([merge request](gitlab-org/gitlab!67163))
- [feat: Fix environments survey i18n strings](gitlab-org/gitlab@31bbd796e1e617e1507295af7aa1fae9e4a82c5b) ([merge request](gitlab-org/gitlab!67243))
- [Set `latest_pipeline_id` and mark project as vulnerable first](gitlab-org/gitlab@99055f4f157e39f13c47d54cd52eedb23886b817) ([merge request](gitlab-org/gitlab!67165)) **GitLab Enterprise Edition**
- [Fix assignee avatar tooltip w special char names](gitlab-org/gitlab@b1118c62131ba162e9037608fe6332f80f86672e) ([merge request](gitlab-org/gitlab!67250))
- [Geo Node Form Regression - Realitive URLs broken](gitlab-org/gitlab@99a11efdf7cfc49fed7fddedfbcd835fc83d5d6b) ([merge request](gitlab-org/gitlab!67253)) **GitLab Enterprise Edition**
- [Fix Stickiness to Match Unleash API](gitlab-org/gitlab@228279665f2711fa819c56edcb1d805554ae7634) ([merge request](gitlab-org/gitlab!66676))
- [Use new and old paths instead of just the new path for diff batching](gitlab-org/gitlab@89a8c4f937cd74fe05c87072b74599a86541a11f) ([merge request](gitlab-org/gitlab!66873))
- [Continue code quality widget polling while parsing](gitlab-org/gitlab@0ba54b5fa0762755d7d5914e3b02fe5c0ea19ea2) ([merge request](gitlab-org/gitlab!67176))
- [Fix empty recursive query for base_and_ancestors](gitlab-org/gitlab@a65e45494b41dfbc0710c88a6dc7c8f83d7cc3de) ([merge request](gitlab-org/gitlab!67182))
- [fix: Atom feed for commit list should point to path](gitlab-org/gitlab@ef0a744cbd61e241d89b88fc2981f22da1d63362) ([merge request](gitlab-org/gitlab!65599))
- [Add missing `Delete user and contributions` action in admin user view](gitlab-org/gitlab@8cb36fada3407a9ed901b631a11ed7ec7cef1793) ([merge request](gitlab-org/gitlab!67161))
- [Replace the success btn with the confirm button](gitlab-org/gitlab@aa65e97fb8bdfad48fe93f7f4bd91f1fc140452d) ([merge request](gitlab-org/gitlab!67148))
- [Run sync BuildFinishedWorker operations always before](gitlab-org/gitlab@99a695e1cb25b2b77c54b267f98fcefdc213e831) ([merge request](gitlab-org/gitlab!67117)) **GitLab Enterprise Edition**
- [Prevent weightSum to be updated on child epic fetch](gitlab-org/gitlab@9b6b548be76840616604657f09804bce934aa978) ([merge request](gitlab-org/gitlab!67116)) **GitLab Enterprise Edition**
- [Fix Review App Multiple Deletion API payload](gitlab-org/gitlab@0bad1c716da56201307c6eacd5e142a09a6a99f0) ([merge request](gitlab-org/gitlab!67102))
- [Fix redirect loop when relative url root is blank](gitlab-org/gitlab@d586b5b796c5ce94c4db7e0a9d6991e4b3b008f7) ([merge request](gitlab-org/gitlab!67094))
- [Fix backup.rake from trying to tar non-existent directories](gitlab-org/gitlab@042a203f45ef9ac957bb4863223b88273f4314e0) ([merge request](gitlab-org/gitlab!67090))
- [Fix `Ci::Artifactable#selective_sync_scope` cross-join DBs](gitlab-org/gitlab@6ac86e5781a191bc97e2eb94bafd604d745318c6) ([merge request](gitlab-org/gitlab!66703)) **GitLab Enterprise Edition**
- [Use parent integration settings when reverting from custom settings](gitlab-org/gitlab@c61dd33e9e1d8c6dcbd7b252820c8e6feae414df) ([merge request](gitlab-org/gitlab!66663))
- [Adjust documentation paths](gitlab-org/gitlab@207328a036b6b3639edde60f1e423baafe607568) ([merge request](gitlab-org/gitlab!67037))
- [Rescue stuck resource groups](gitlab-org/gitlab@5468378c847f9f33baa7770ba2a45684fe745071) ([merge request](gitlab-org/gitlab!66729))
- [Decode square brackets with "queryToObject"](gitlab-org/gitlab@957390387d54eb7a8fc27825972949b919426d3f) ([merge request](gitlab-org/gitlab!66846))
- [Advanced Search should index trials regardless of seats](gitlab-org/gitlab@1983c5ffabf2ca9aaad8bd6828ddf218ae904ccb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66665)) **GitLab Enterprise Edition**
- [Validate timezone presence on schedule creation form](gitlab-org/gitlab@ae06e067657b6822185f3e525314d1e8f674d2eb) ([merge request](gitlab-org/gitlab!66946)) **GitLab Enterprise Edition**
- [Update timeout help page URLs in job sidebar](gitlab-org/gitlab@3fefa96f21f535f8beac9224da88baa232ab2716) ([merge request](gitlab-org/gitlab!63992))
- [Fix dates being incorrectly set on epic creation](gitlab-org/gitlab@d2f0b0a7ae36c62540ebf631d2bb2619bc7fcf2c) ([merge request](gitlab-org/gitlab!66809)) **GitLab Enterprise Edition**
- [Fix contribution analytics MR closed count param](gitlab-org/gitlab@b8c3613c46d707bdbf1437f9bf7060e8660e6edc) ([merge request](gitlab-org/gitlab!66805)) **GitLab Enterprise Edition**
- [Fix alert positioning and content for oncall schedules page](gitlab-org/gitlab@4b228dce42ca41b802aaef26fdc5f1a534da92cf) ([merge request](gitlab-org/gitlab!66858)) **GitLab Enterprise Edition**
- [Delete pipeline subscriptions when migrating project to a free group](gitlab-org/gitlab@67223c66bd62a70acfa62e09315e00ecbc78d8f5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66695)) **GitLab Enterprise Edition**
- [Remove trial suffix from plan titles that include it](gitlab-org/gitlab@739805449ba860e34b3129b5523bf08b14e1f969) ([merge request](gitlab-org/gitlab!66578)) **GitLab Enterprise Edition**
- [Fix "Remove" button in Slack app integration](gitlab-org/gitlab@23e700d56c86c08db55496a0c5de2915c16e213d) ([merge request](gitlab-org/gitlab!66506))
- [Fix :admin_compliance_framework to only be true if the user is an owner](gitlab-org/gitlab@bbcc3fccfdaec47c07214b2d258d3df169419a53) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66745)) **GitLab Enterprise Edition**
- [Fix SAML SSO login redirects not working](gitlab-org/gitlab@6e9734208d3a0c59ab38d1b8fee43031b8e8fa6e) ([merge request](gitlab-org/gitlab!66791)) **GitLab Enterprise Edition**
- [Fix Error 500 viewing pipelines with invalid UTF-8 data](gitlab-org/gitlab@e804c0090501fb4c92e067f16f962018efef1f26) ([merge request](gitlab-org/gitlab!66686))
- [Map jira users for server version by 'key' attribute](gitlab-org/gitlab@6f8b19797e3c566ebb2327c8c52fec0215edb689) ([merge request](gitlab-org/gitlab!66670))
- [Fix missing CSS variables in Darkmode](gitlab-org/gitlab@5609901ed087928ec7ea734472ace7a2ce3df074) ([merge request](gitlab-org/gitlab!66640))
- [Fix whats new top positioning with system-header and performance-bar](gitlab-org/gitlab@ad34170b6b0f805c011982b7771196ab0c104be4) ([merge request](gitlab-org/gitlab!66660))
- [GithubImporter: match user by external id only from github.com](gitlab-org/gitlab@26560527f3f0483c4c232fa7c27e66ee788c2340) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66387))
- [Hide edit severity btn for users without permissions](gitlab-org/gitlab@bc2a389988695fbf213d8288011e598458d4feb0) ([merge request](gitlab-org/gitlab!66642))
- [Fix group level vulnerability permissions](gitlab-org/gitlab@35634bd2d585c5dd1b6f702224679e595b9d059c) ([merge request](gitlab-org/gitlab!66312)) **GitLab Enterprise Edition**
- [Ignore searching in full path in GroupsFinder](gitlab-org/gitlab@308b908f087969127e63525bdfaf0fd73e79b3bc) ([merge request](gitlab-org/gitlab!66431))
- [Fix 400 errors not being logged in multipart middleware](gitlab-org/gitlab@25a7daed2336f0ce72601f7d58cc5876813fff46) ([merge request](gitlab-org/gitlab!66595))
- [Fix subgroup epic path on epic boards](gitlab-org/gitlab@882e5ff17d5b11314a9b7fc5eb7e359462370851) ([merge request](gitlab-org/gitlab!66587)) **GitLab Enterprise Edition**
- [Remove extra margin above issue navigation tabs](gitlab-org/gitlab@069959aca43ae654d4aa7c380e5dc0e23459d7e8) ([merge request](gitlab-org/gitlab!60824))
- [Activate correct nav item for Admin::LicensesController](gitlab-org/gitlab@8055de728315842c5bb5d79204e24a67f2e7ed12) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66051)) **GitLab Enterprise Edition**
- [Prevent terms from being created if blank](gitlab-org/gitlab@93a88ddb8aa26bd7aac9f8ee0fa56ac6ddcff768) ([merge request](gitlab-org/gitlab!66437))
- [Delete PATs when transfering project to a free group](gitlab-org/gitlab@6e311075dc7f222e1af24b7f689e7eae3f7c0fe2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65803)) **GitLab Enterprise Edition**
- [Fix epic tab dropdown menu overlay on mobile](gitlab-org/gitlab@3a442ae6b69e9b30ea7d26607ca7febf0832701b) ([merge request](gitlab-org/gitlab!66498)) **GitLab Enterprise Edition**
- [Use the correct text for tooltip](gitlab-org/gitlab@e770d5dcafa74bb6dbabad2dfc53922a7001afd5) ([merge request](gitlab-org/gitlab!66454))
- [Fix audit events empty space](gitlab-org/gitlab@27f000537f2a087441617cb2aac3d98649af6ce6) ([merge request](gitlab-org/gitlab!52590)) **GitLab Enterprise Edition**
- [Extend basic authentication detection for rate limiting](gitlab-org/gitlab@dcf8011ae3d29a6d10eb9169d0a79812e309604c) ([merge request](gitlab-org/gitlab!63287))
- [Fix labels dropdown causing form submission](gitlab-org/gitlab@cf104525ed49cb9bc4fa0e8a9dd810be7c669868) ([merge request](gitlab-org/gitlab!66435))
- [Fix: Sidekiq workers delete each other's metrics](gitlab-org/gitlab@52edbc6e312c826c5b47f5cf65d60adee770b031) ([merge request](gitlab-org/gitlab!66432))
- [Drop invalid UTF-8 when displaying in job logs](gitlab-org/gitlab@c481f5a64640cf2f08ca5315a6b9fae1f8736806) ([merge request](gitlab-org/gitlab!66423))
- [Fix spam checking to consider updater of issue instead of author](gitlab-org/gitlab@427224db3ee6c98267b39f4cf2ed49f2060d0e6e) ([merge request](gitlab-org/gitlab!66408))
- [Return error when moving issues between not authorized lists](gitlab-org/gitlab@f2aa6c9247c43c04fc4c994b58f82cfa083e9837) ([merge request](gitlab-org/gitlab!66101))
- [Look up SSH keys by SHA256 fingerprint, not MD5 fingerprint](gitlab-org/gitlab@1428e0e4e087b2e9b8a2250eca5d982d3b984e8e) ([merge request](gitlab-org/gitlab!66371))
- [Skip already downloaded LFS objects in mirror updates](gitlab-org/gitlab@36ad365c4779f9e7ceb24bd2a6b8adbef6bc393c) ([merge request](gitlab-org/gitlab!66340))
- [Bump gitlab-omniauth-openid-connect to v0.8.0](gitlab-org/gitlab@89a28e5b42c119cc1c929ec8aff0b0e4d51ae08c) ([merge request](gitlab-org/gitlab!65782))
- [Better links on the subscription details page](gitlab-org/gitlab@92328777180b62a546b06e921f8a5a3bcdf7025c) ([merge request](gitlab-org/gitlab!66319)) **GitLab Enterprise Edition**
- [Allow group bot to http authenticate](gitlab-org/gitlab@a33ec9fe408eae176eabdc571ccfb77ed608bdde) ([merge request](gitlab-org/gitlab!65788))
### Changed (117 changes)
- [Update create merge request button on last push event](gitlab-org/gitlab@72ad366f7e8e6c9af33df5a804f72727300505fb) ([merge request](gitlab-org/gitlab!63103))
- [Deprecate Secure user scan metrics](gitlab-org/gitlab@c4ae56bccaefc7bd43c38284df671be7268eb987) ([merge request](gitlab-org/gitlab!67738)) **GitLab Enterprise Edition**
- [Move sast latest template to stable](gitlab-org/gitlab@b0f2ee726da6fb3008829273ddc8cbe613220df3) ([merge request](gitlab-org/gitlab!68429))
- [Migrate epic sidebar todo button to widget](gitlab-org/gitlab@455b0ca188261b3b958aaaf0c5706aa35678b179) ([merge request](gitlab-org/gitlab!68325)) **GitLab Enterprise Edition**
- [Remove optional languge from Compliance framework label](gitlab-org/gitlab@0b309a01d512b9e8e80cfc6f80d09bf182d41ec1) ([merge request](gitlab-org/gitlab!68304))
- [Add empty artifacts message](gitlab-org/gitlab@dd81c5735070c4c62250bb8d7fcde8afdf6d045b) ([merge request](gitlab-org/gitlab!68166))
- [Flatten CI config rules](gitlab-org/gitlab@0b8c81b80ac547ef4e1eca25e101e5c23cc18322) ([merge request](gitlab-org/gitlab!67922))
- [Provide more information in design version selector](gitlab-org/gitlab@0328208f54812ca37ed9d1f6f922f1458aa435d0) ([merge request](gitlab-org/gitlab!67844))
- [Set immutable results to true](gitlab-org/gitlab@e1c1ff7531c0901243bb4a259e813b7bb8ab9d93) ([merge request](gitlab-org/gitlab!68265))
- [Renames the Base terraform template jobs for better scaling](gitlab-org/gitlab@133c2c15a860e78c07f482eb72576d8172ec3436) ([merge request](gitlab-org/gitlab!67719)) **GitLab Enterprise Edition**
- [Remove CI builds for test and staging stages in VSA](gitlab-org/gitlab@755fdd441370d8e18482f7b5dd6a23a6c8325ae4) ([merge request](gitlab-org/gitlab!68000))
- [Update Auto DevOps' auto-deploy-image to v2.12.0](gitlab-org/gitlab@c1a4dbaf97763326a2f65a0603316383ee25dda5) ([merge request](gitlab-org/gitlab!68103))
- [Remove protocol from Dependency Proxy UI](gitlab-org/gitlab@c4120fb1988fe7ae0576bc124f84eb774453864b) ([merge request](gitlab-org/gitlab!68099))
- [Replace plain text application secret with copy button](gitlab-org/gitlab@7953fb39fd0a356f5ca557695aa5a944d7bb4ee3) ([merge request](gitlab-org/gitlab!67453))
- [Improve button layout](gitlab-org/gitlab@249edf5117ee7b9807a0b39ca86f11359dfefaf7) ([merge request](gitlab-org/gitlab!68074))
- [Open addon purchase in the same window](gitlab-org/gitlab@facf1d48951a98b277d4ecc1ac1575485dd5e827) ([merge request](gitlab-org/gitlab!68009)) **GitLab Enterprise Edition**
- [Remove efficient_counter_attribute flag](gitlab-org/gitlab@9118e2bc181855accdede835fd7ee7de22a3679b) ([merge request](gitlab-org/gitlab!68056))
- [Updated message on DevOps Adoption Report](gitlab-org/gitlab@cf05575659cc1aa29048fa7dc2b25254340a1c27) ([merge request](gitlab-org/gitlab!68034)) **GitLab Enterprise Edition**
- [Move issue_type enum to WorkItem::Type base_type](gitlab-org/gitlab@cfd2c0d16cf82b1176aa29e712ae23b90f653652) ([merge request](gitlab-org/gitlab!67434))
- [Add group value stream metrics UI to project VSA](gitlab-org/gitlab@5a549aad8eecd25be2d7dff7d984e25af495c02c) ([merge request](gitlab-org/gitlab!66835))
- [Count epics against issue creation rate limit](gitlab-org/gitlab@2849252226dc08971915b10b87e7995509a55aa6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67179)) **GitLab Enterprise Edition**
- [Migrate Markdown Editor toolbar buttons to GlButton](gitlab-org/gitlab@4bf3cc6e0ab8ae26ab00f1d753d14b3625e7e200) ([merge request](gitlab-org/gitlab!67872))
- [Change date time formatting for corpus managment](gitlab-org/gitlab@8b897aca8323a4fdad053b0fcfa15cdb349f6d16) ([merge request](gitlab-org/gitlab!66947))
- [Global Search - Add spacing/border to code results](gitlab-org/gitlab@a9e194a03817ff25c19bb54ea85d3ad247a4443c) ([merge request](gitlab-org/gitlab!67548))
- [Standarize board column highlight style](gitlab-org/gitlab@fe023377603c70f45c44c2b8beeab2f9ef91c9fd) ([merge request](gitlab-org/gitlab!67817))
- [Added linked pipelines to commit](gitlab-org/gitlab@a116a7509ea394b47de27c92dbc6378e2613dd3b) ([merge request](gitlab-org/gitlab!66564)) **GitLab Enterprise Edition**
- [Update nothing-here-block to utilize Pajamas spacing scale](gitlab-org/gitlab@df607786c9c0870c5394171b7ca0efdd90f1791a) ([merge request](gitlab-org/gitlab!67893))
- [Show due date in gray when issue is closed in issues list](gitlab-org/gitlab@d4c66ab0d1f3bab72956dfdd117cb09b618e2e64) ([merge request](gitlab-org/gitlab!67874))
- [Refactor the Ci::Minutes::Additional pack service](gitlab-org/gitlab@3aa0402f9cd0d1cef845da6857b7583fe0d967d7) ([merge request](gitlab-org/gitlab!67513)) **GitLab Enterprise Edition**
- [Enable ci_skip_before_parsing_yaml by default](gitlab-org/gitlab@511f4c7133556548eb7efef185b626832a0244a4) ([merge request](gitlab-org/gitlab!67839))
- [Added cloneDeep to prevent mutating cache](gitlab-org/gitlab@0dfe7d745f1f6f64189217725cfaf25e38772085) ([merge request](gitlab-org/gitlab!67762))
- [Don't show due date in red on epic related issues if issue is closed](gitlab-org/gitlab@debe45db3fab5f04786f5e3f7ae42581ee32b006) ([merge request](gitlab-org/gitlab!67492))
- [Deprecate build trace sections tables by renaming](gitlab-org/gitlab@612ebc64a6ad2689226b75e80f405a81714015d2) ([merge request](gitlab-org/gitlab!67618))
- [Return API error when inviting restricted email](gitlab-org/gitlab@22d33f610962a60139ed4502ae4a10ffe2b9fe25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64807)) **GitLab Enterprise Edition**
- [Migrate md header buttons to gl-buttons](gitlab-org/gitlab@ea2677962494a278899b25c01992816c5e05db70) ([merge request](gitlab-org/gitlab!67058))
- [Removed dependency on $ from the highlighter](gitlab-org/gitlab@21e1291645007dd8f3cf2d7d683a786bafebee07) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67771))
- [Show tax line even when tax has zero amount](gitlab-org/gitlab@1fa181bdc0ebf9bc1ff549302e139a758df8061c) ([merge request](gitlab-org/gitlab!67479)) **GitLab Enterprise Edition**
- [Update design management wording in activity feed](gitlab-org/gitlab@b8e97f970b3fc7f4910a13d904298dd902bc4983) ([merge request](gitlab-org/gitlab!67599))
- [Revert Dependency Proxy permission](gitlab-org/gitlab@7dc1c46c26424c3f534f20a64b02a75bee5c82ea) ([merge request](gitlab-org/gitlab!67696))
- [Placeholder for "Number of employees" in trial](gitlab-org/gitlab@162a68a1edd0c31292bc8e854750760fab8aac85) ([merge request](gitlab-org/gitlab!67688)) **GitLab Enterprise Edition**
- [Allow 10% overage for true-ups when uploading a license](gitlab-org/gitlab@62d53a437d4caf5aba8862c482dfdb4c80eaaa25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67508)) **GitLab Enterprise Edition**
- [Prepare On-Demand DAST for CI sharding initiative](gitlab-org/gitlab@63777dad18a270b5816b6eb5ddd8a8d2d54635d2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66709))
- [Move DevOps Score callout to Vue](gitlab-org/gitlab@da1decdf345504589caa6b0495808aabd5bf5760) ([merge request](gitlab-org/gitlab!67482))
- [Change Evidence Supporting Messages to array](gitlab-org/gitlab@0a29032709474631ce6a95c3e09eb2f769df0ba5) ([merge request](gitlab-org/gitlab!67620)) **GitLab Enterprise Edition**
- [Remove feature flag](gitlab-org/gitlab@7b4d27b032a8d4b37634d4fd4f9b5a7613213a64) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65473))
- [Make `ci_structure.sql` to be equal](gitlab-org/gitlab@260c1406999c6494abe3f120f31817b5d4cb48c7) ([merge request](gitlab-org/gitlab!67433))
- [Add deployment_id to deployment payloads](gitlab-org/gitlab@def00feaeb7f84026c17f18ed6ddb63d4470cbbf) ([merge request](gitlab-org/gitlab!67577))
- [Allow downloading archives using PRIVATE-TOKEN](gitlab-org/gitlab@0ed8b60830ceea4c1bf61acabfb39882386c0926) ([merge request](gitlab-org/gitlab!67470))
- [Global Search - Track top nav searches](gitlab-org/gitlab@8795067b6f6445c34cc029301816f0ea40830a14) ([merge request](gitlab-org/gitlab!67187))
- [Allow licenses with a 10% overage of users for renewals](gitlab-org/gitlab@df904001810d236f3707dcb2008b57e634b23489) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67507)) **GitLab Enterprise Edition**
- [Render base path error based on report status](gitlab-org/gitlab@0c9b80900b15aff49b9d56859b49201d35135d86) ([merge request](gitlab-org/gitlab!67370))
- [Backfill `type_new` column on integrations](gitlab-org/gitlab@b03e5680586ab456e51cbadad85a2e9f65cffedc) ([merge request](gitlab-org/gitlab!66928))
- [Configure Elasticsearch Ruby client without retry by default](gitlab-org/gitlab@1b7c3ff7be6f5607a26d023f63cd51c7efa75e83) ([merge request](gitlab-org/gitlab!67273)) **GitLab Enterprise Edition**
- [Update copy in account recovery settings global alert](gitlab-org/gitlab@f30bd5cd42b8bb75698cb1679cc39114366df819) ([merge request](gitlab-org/gitlab!66693))
- [Allow setting of container registry visibility in project settings UI](gitlab-org/gitlab@b733c4c0f3b603a3fac1d166eb4e022b12cadc8f) ([merge request](gitlab-org/gitlab!55079))
- [Add Gitlab::GithubImport::Logger with default values](gitlab-org/gitlab@394d44a22c96f4443d1c8bd33255ba97d4d7e897) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65968))
- [Expose iid in the pipelines entity](gitlab-org/gitlab@6ec7689cee6ae2d0c58abba7eaf808dd1875e4e6) ([merge request](gitlab-org/gitlab!67365))
- [Added a hack to set labels](gitlab-org/gitlab@aa14b441f7b443e2389235e66ff2fd70b78e2aa6) ([merge request](gitlab-org/gitlab!67322))
- [Update terms of service docs and UI text](gitlab-org/gitlab@45d1020ef7bddd1bb268da83caaaff9848126023) ([merge request](gitlab-org/gitlab!67002))
- [Allow usage of severity quickaction on create](gitlab-org/gitlab@a503a45625d1f819ebd57be31e55093a2f901b40) ([merge request](gitlab-org/gitlab!67380))
- [Implement JWT for customers-dot proxy](gitlab-org/gitlab@68d9fb11446cbfe156a8ac437d99ea6ef9c2e510) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65204))
- [Use 'branch' icon instead of 'fork'](gitlab-org/gitlab@a19a6cb658c0a9938e09ef500834dd7f7657899d) ([merge request](gitlab-org/gitlab!67087))
- [Remove dataBackground property from chart](gitlab-org/gitlab@6b8084d3992ff9f6797250aa6f0325201aa9df7f) ([merge request](gitlab-org/gitlab!67323))
- [Update UI help links](gitlab-org/gitlab@72b04e98c294853144c4a74b92bfbb8433c94470) ([merge request](gitlab-org/gitlab!67164)) **GitLab Enterprise Edition**
- [Update runner description text](gitlab-org/gitlab@7644bdaab8eeee8727a449a9eaaec61e7c6f4e5f) ([merge request](gitlab-org/gitlab!67153))
- [Handle int and bigint namespaces.id column](gitlab-org/gitlab@1f78b6c6d27bef78180a99e434851a29972b3e62) ([merge request](gitlab-org/gitlab!67288))
- [copy: Update survey callout text](gitlab-org/gitlab@5c16aff831ea73b59ad8783cbef44acdd54723ee) ([merge request](gitlab-org/gitlab!67243))
- [Changed the column order in the jobs table](gitlab-org/gitlab@8ca06871584e69757bdf5d14134b234118f005df) ([merge request](gitlab-org/gitlab!67071))
- [Add field validations for Finding Evidence models](gitlab-org/gitlab@773d965be22c399b471aa10fa96fd39f749a5ec9) ([merge request](gitlab-org/gitlab!66394)) **GitLab Enterprise Edition**
- [Use gitaly-backup for repository backups by default](gitlab-org/gitlab@4a71440b65a007d3e8723cda7c1d82add279fa08) ([merge request](gitlab-org/gitlab!67082))
- [Enhance UX on Environment Form with Loading Icon](gitlab-org/gitlab@9b63a6789a4efa9059788e1d33f646ac7569790c) ([merge request](gitlab-org/gitlab!66750))
- [Include retried jobs in pipeline payloads for Datadog integration](gitlab-org/gitlab@a5327bf567c1c0d05319f4ecaf9eb54316e1eb39) ([merge request](gitlab-org/gitlab!67031))
- [Expose mergeRequestCounts for Issue GraphQL type](gitlab-org/gitlab@67ebd3eea7e70ae6229bbedc966ffe0e4da7a4da) ([merge request](gitlab-org/gitlab!65931))
- [Hide pull mirror update time from guest visitors](gitlab-org/gitlab@11c73b3a757f20903fb2ebf41b39e58a2576e199) ([merge request](gitlab-org/gitlab!67133))
- [Use feature flag for finding links](gitlab-org/gitlab@1083165950fb2f3171cc2ce63a588ca8cfe01b53) ([merge request](gitlab-org/gitlab!66868)) **GitLab Enterprise Edition**
- [Unified preloading stylesheets](gitlab-org/gitlab@a712e481804acd57d7dadca3c1c6cfba38438ec4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67045))
- [Promote source activity as the invite email body](gitlab-org/gitlab@08b9c03a0034471a43e0c100540e99a55b4add11) ([merge request](gitlab-org/gitlab!66560))
- [Include deployment_tier to pipeline environment hook attributes](gitlab-org/gitlab@925656b989c8095223389bd01a04ae248aa0c5ca) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66744))
- [Imrpove model validation when adding spent time](gitlab-org/gitlab@4d8f719c70fc5e297608d115936d2bd682837fee) ([merge request](gitlab-org/gitlab!66973))
- [Boards sidebar design tweaks](gitlab-org/gitlab@241af67cf80bdc6fe8bb0d2b5826fcc2f4eefb5a) ([merge request](gitlab-org/gitlab!65297))
- [Make experiments API a filter of features API](gitlab-org/gitlab@b7cfcaf8738ed7f808aa17a694576afafb1a8b7e) ([merge request](gitlab-org/gitlab!66488)) **GitLab Enterprise Edition**
- [Add filitering by issue type in issue boards](gitlab-org/gitlab@357de2d72600ce90b77954152deeee7c7f3113da) ([merge request](gitlab-org/gitlab!66871))
- [Fix alt tag on participant avatars](gitlab-org/gitlab@34cb32772a4290ca80504d7a5a4a37144a966cb6) ([merge request](gitlab-org/gitlab!66952))
- [Use popovers for inline code quality](gitlab-org/gitlab@6bbf1dcb5943f4d54ead7d7b6976765cfbe8fab8) ([merge request](gitlab-org/gitlab!64371)) **GitLab Enterprise Edition**
- [Update UI text for CI/CD settings](gitlab-org/gitlab@21d8a6422b7d537a57ea7b3fb720b8562f1b35d3) ([merge request](gitlab-org/gitlab!66902)) **GitLab Enterprise Edition**
- [Use gitaly-backup for repository backups by default](gitlab-org/gitlab@cb8a1c47a59df1b599cbb2e8338c4a45a5e7f19b) ([merge request](gitlab-org/gitlab!66019))
- [Add request and response to SupportingMessage](gitlab-org/gitlab@a446cd93ee9ac8fb188210727f7969f56640b937) ([merge request](gitlab-org/gitlab!66398))
- [Remove DOMPurify attribute sanitization](gitlab-org/gitlab@9dcf3f0b663ec9ed516d25e59ef5e946e1de09b1) ([merge request](gitlab-org/gitlab!66502))
- [Update documentation to use compliance report not compliance dashboard](gitlab-org/gitlab@5f486d1b8319e1a742b12999d25693dfde21acf4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66730)) **GitLab Enterprise Edition**
- [Make vulnerability-dismissal error more descriptive](gitlab-org/gitlab@11df1ff9b59a1b9188118ef1af67888492eda2c7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66722)) **GitLab Enterprise Edition**
- [Increase contrast for successful pipelines in charts](gitlab-org/gitlab@975b1a97af86fe912af138711d6831e26a05a911) ([merge request](gitlab-org/gitlab!66426))
- [Add labels as search token in Jira issues list](gitlab-org/gitlab@9c2bacff3dddea3d06a0cd3a84e15d5f3676b2c4) ([merge request](gitlab-org/gitlab!65817)) **GitLab Enterprise Edition**
- [Add linked pipelines to component](gitlab-org/gitlab@0e4ec627c373246ff9c347fa9054aca016787521) ([merge request](gitlab-org/gitlab!66748)) **GitLab Enterprise Edition**
- [ff: Remove `:list_commits` feature flag](gitlab-org/gitlab@e8a98485fe74bf18904865eb12a372cd4a13aa3a) ([merge request](gitlab-org/gitlab!66741))
- [flags: Drop `fetch_remote_params` feature flag](gitlab-org/gitlab@f1ef0bd00ce621880033a6420e4ae634037070bc) ([merge request](gitlab-org/gitlab!66513))
- [flags: Drop `update_remote_mirror_inmemory` feature flag](gitlab-org/gitlab@62586dbc942d7d9f242556d3a165044f853b8332) ([merge request](gitlab-org/gitlab!66513))
- [Migrate Edit Environments Form to Vue](gitlab-org/gitlab@961d0d8a6d612860834c27424ddeddab0975005f) ([merge request](gitlab-org/gitlab!66573))
- [Sort according to the field in Dependency List](gitlab-org/gitlab@52c76470c1c1258b53841d4598a4fe013f61c507) ([merge request](gitlab-org/gitlab!66672)) **GitLab Enterprise Edition**
- [Show minor ellipsis when loading large blobs](gitlab-org/gitlab@077bd312a56996a5e0f6cffa890ebda062474b8d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66652))
- [Polish tab count and create button in test cases](gitlab-org/gitlab@e02a2af69c347c9480091a44009a8f16af0ea027) ([merge request](gitlab-org/gitlab!66608)) **GitLab Enterprise Edition**
- [Edit Grafana UI text in admin area](gitlab-org/gitlab@697c2f4b4b9fb52d0f74cea66ce28be5baa3c99f) ([merge request](gitlab-org/gitlab!66405))
- [Add link to GitLab Changelog With Version Check](gitlab-org/gitlab@c70f0e828d8eca8a2e58182ff35e3c44c73e59cf) ([merge request](gitlab-org/gitlab!66486))
- [The readme checkbox for new projects is checked by default](gitlab-org/gitlab@d71342649242ea28c75f8cbce04c97ccd32cc72e) ([merge request](gitlab-org/gitlab!66558))
- [Add linked pipelines to component](gitlab-org/gitlab@d3cb02d059a61341b6aa88df6b6fb2828579c5c5) ([merge request](gitlab-org/gitlab!66274))
- [Move the compliance framework selector to a new expandable section](gitlab-org/gitlab@c6582d8ca858aa505b7d94984f10b21839cee593) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66429)) **GitLab Enterprise Edition**
- [Skip in-product marketing emails when on trial](gitlab-org/gitlab@e43b7f200dbbb2706d45faeda77285e9a074ab3e) ([merge request](gitlab-org/gitlab!66269)) **GitLab Enterprise Edition**
- [Force user to re-enter integration password](gitlab-org/gitlab@fc7722996d41d733d0143f0878b954b8dda2e079) ([merge request](gitlab-org/gitlab!65569)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@13ac932c97c399fe04698890b244a836e7bb8e9e) ([merge request](gitlab-org/gitlab!65499)) **GitLab Enterprise Edition**
- [Remove prevent_retry_of_retried_jobs feature flag](gitlab-org/gitlab@66360678bc17617a0dd0cd24d0a3601f97075a78) ([merge request](gitlab-org/gitlab!66407))
- [Add dast-runner-validation to Secure-Binaries YAML](gitlab-org/gitlab@0bd402ff0a0963145b16eba3479209589a19ba16) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66501)) **GitLab Enterprise Edition**
- [Fix missing amount in Contribution Analytics](gitlab-org/gitlab@a272c572f2ed01abb4e245ccb43cc35cf2e71173) ([merge request](gitlab-org/gitlab!66385)) **GitLab Enterprise Edition**
- [Migrate New Environments Form to Vue](gitlab-org/gitlab@c155d2b127f09fe8d5122d2b63a727587f6a5621) ([merge request](gitlab-org/gitlab!66192))
- [Allow updating merged results pipelines and merge trains via API](gitlab-org/gitlab@624d6690f4efb9d5fe6b86bcd7e5b3fa0bb4c74e) ([merge request](gitlab-org/gitlab!56237))
- [Handle team-managed (next-gen) Jira projects](gitlab-org/gitlab@c69f02df9508b15def55ab759bfdc88280d2464d) ([merge request](gitlab-org/gitlab!66250)) **GitLab Enterprise Edition**
- [Remove badge cache](gitlab-org/gitlab@19e12bea89de5b7041a199910a57c0f73f38c90b) ([merge request](gitlab-org/gitlab!65638))
- [Enable writes to CI builds metadata table by default](gitlab-org/gitlab@61293c6159c3816db5c8ad0273e2a292c73b3adc) ([merge request](gitlab-org/gitlab!66163))
- [Nginx: modernise TLS config](gitlab-org/gitlab@61df826cd3d557d6f6246713e21963ba92df1cca) ([merge request](gitlab-org/gitlab!65345))
### Deprecated (2 changes)
- [Deprecate sorting vulnerabilities by title in GraphQL API](gitlab-org/gitlab@bc8dc2b0f191e9d7b12352c145f97ae0d8d21440) ([merge request](gitlab-org/gitlab!66917)) **GitLab Enterprise Edition**
- [Deprecate container_registry_enabled in projects public API](gitlab-org/gitlab@123c561f2fc007709d041f35c73009090a9170ed) ([merge request](gitlab-org/gitlab!62662))
### Removed (11 changes)
- [Cleanup group empty state experiment](gitlab-org/gitlab@857d2eac9fd14d7699701c8f8d2d6e54051b9a3e) ([merge request](gitlab-org/gitlab!68370))
- [Remove devops_adoption_feature feature flag](gitlab-org/gitlab@e48a811c8e8c3ad2d1da81509f45b5bfe99b9f70) ([merge request](gitlab-org/gitlab!67861))
- [Remove sec_dependency_scanning_ui_enable Feature Flag](gitlab-org/gitlab@8b307a108cc9df4600b0ef12577e38fbe41decf6) ([merge request](gitlab-org/gitlab!67585))
- [Remove scan_execution_policy_ui feature flag](gitlab-org/gitlab@e456b564ada08ac9bc98ffcafeaef5fd7b070949) ([merge request](gitlab-org/gitlab!67642)) **GitLab Enterprise Edition**
- [Drop FF load_balancing_for_pipeline_notification_worker](gitlab-org/gitlab@e246cb2977dadb102d0f7d5c86a1e22745eada83) ([merge request](gitlab-org/gitlab!67456))
- [Remove the similarity_search feature flag](gitlab-org/gitlab@992270b9d247df8b73dc780eda4eae69676f100d) ([merge request](gitlab-org/gitlab!67310))
- [Remove unused `Gitlab::Database::MultiThreadedMigration`](gitlab-org/gitlab@d593fe3651ad9962f70ef71325fa940130b2553d) ([merge request](gitlab-org/gitlab!67333))
- [Remove 'one_megabyte_file_size_limit' feature flag](gitlab-org/gitlab@3bf77e477d8d46cfd66b196d01247f7712a7ae83) ([merge request](gitlab-org/gitlab!66850))
- [Remove group invites from new user registration](gitlab-org/gitlab@523559b918f3af2a5f7f26921532eae3f76ace94) ([merge request](gitlab-org/gitlab!66554)) **GitLab Enterprise Edition**
- [Remove not_null constraint on project_fingerprint](gitlab-org/gitlab@9515ded6205ae6af1b9a3231b80298029d9728af) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66194)) **GitLab Enterprise Edition**
- [Remove marketing email opt-in for self-managed](gitlab-org/gitlab@3e23d77a1af419b1774d2b767ea2f5a192f12fd5) ([merge request](gitlab-org/gitlab!66255))
### Security (19 changes)
- [Sanitize default branch name in repo settings](gitlab-org/gitlab@38401468bc6740589698d9bf0c6e1f24b99c0a8c) ([merge request](gitlab-org/gitlab!67567))
- [Add project member validation for domain limitation](gitlab-org/gitlab@7c920bbc9b0b11eeed2b4c675160f5cc5d95c69c)
- [Hide project-level CI/CD Analytics for Guests](gitlab-org/gitlab@7ac6a6218f2b9c9afbf8182b047b2cbd6a747ec0)
- [Only allow invite to be accepted by user with matching email](gitlab-org/gitlab@391bc665d7535f97c852b9d73f6a8fd098bcbfd8)
- [Add html escaping for default branch name](gitlab-org/gitlab@dbdc999e35be70fd7c21d881c925dfdae6526d83)
- [Filter todos whose target users no longer have access to](gitlab-org/gitlab@16516b2a3a12aee7950110c73cd48d0b8a4b5fcc)
- [Configure OmniAuth to use GitLab AppLogger](gitlab-org/gitlab@d13b0d392f25db2512fe40565bb068d8920dbc46)
- [Add permissions check to pipelines#show action](gitlab-org/gitlab@d2a4ccdcf6335131fe3a1055c0bdd92d6e746a4f)
- [Prevent impersonation in gitlab-shell SSH certs](gitlab-org/gitlab@748e6639b429f88cbcc3c1873bf3b10f34ad078b)
- [Do not show email address in error message](gitlab-org/gitlab@03497fbd357fa30ed2280ff2a1d4188c9c16df95) **GitLab Enterprise Edition**
- [Disallow non-members to set issue metadata on issue create](gitlab-org/gitlab@ec30a8d87167084cf033031b58531720bd1e3bc3)
- [Prevent guests from linking issues with errors](gitlab-org/gitlab@6c520f98137bee8d4dcdeb566cafb0cc174b8b98)
- [Block impersonation token use if it is not permitted](gitlab-org/gitlab@de812b202430fca3f271ae5c4e1b98e40abaac24)
- [Fix Protected Environment Accesses Cleanup](gitlab-org/gitlab@85e9ab0336ea92cb3941721fb7e6d8017eea3424) **GitLab Enterprise Edition**
- [Updates oauth to 0.5.6](gitlab-org/gitlab@1d4f7f01c624e69710a39beeed1e1a2b3286fd09)
- [Remove impersonation token from api response for non-admin user](gitlab-org/gitlab@ba04748936bba512f83a7d62aa395f9e0f02c79b)
- [Use oauth_app id instead of uid](gitlab-org/gitlab@d5b61695843c41a54e1f97ab7a44769de6bce142) **GitLab Enterprise Edition**
- [Restrict access to instance-level security features for reporters](gitlab-org/gitlab@5deba06177dad7fd09f7a1b264d4a6f0179cbba0) **GitLab Enterprise Edition**
- [Fix XSS in Mermaid Markdown rendering](gitlab-org/gitlab@7ba708f3b35278b06e912f9933618d0f34f0fbf5)
### Performance (23 changes)
- [Use common namespace ancestor queries](gitlab-org/gitlab@52e59891210e87316bf6db9df7270b3674b049e2) ([merge request](gitlab-org/gitlab!68072))
- [Do not use subtransactions when updating ci minutes usage](gitlab-org/gitlab@da13592ca045ae2c5a5987cda6459fed8dc37ebe) ([merge request](gitlab-org/gitlab!68471))
- [Avoid subtransaction in UserInteractedProject](gitlab-org/gitlab@048edfe05d0d3e58efb5d970768b7315f1ad1fbf) ([merge request](gitlab-org/gitlab!68448))
- [Reduce N+1 Gitaly queries when publishing multiple draft notes](gitlab-org/gitlab@b870a652789ec4cbd5f6f65c37ec012b11dcb2f5) ([merge request](gitlab-org/gitlab!68045))
- [Memoize namespace monthly usage to reduce SQL queries](gitlab-org/gitlab@f558ca40fea462f2ec493e158feda641b691c19f) ([merge request](gitlab-org/gitlab!68219))
- [Include database load balancing for Deployments HooksWorker](gitlab-org/gitlab@ab050d675d24416fc416f99260a0c9007dadd94d) ([merge request](gitlab-org/gitlab!67878))
- [Use default project filter for issue/merge request project searches](gitlab-org/gitlab@38f930b936a6e0129aaacaabbc5795bdb15a8f4c) ([merge request](gitlab-org/gitlab!67921))
- [Improve raw blobs downloading](gitlab-org/gitlab@91f0a0771e1562f87cb6b198c02818b0b0fb0f24) ([merge request](gitlab-org/gitlab!67155))
- [Use common namespace ancestor queries](gitlab-org/gitlab@c6652bdafce5c52710556ce75f94308be09cd41f) ([merge request](gitlab-org/gitlab!67565))
- [Query multiple group descendants at once](gitlab-org/gitlab@809a10e7955a4789d578e36ecb91a4e8a62b8fe1) ([merge request](gitlab-org/gitlab!67653))
- [Use new service to refresh authorizations of project members](gitlab-org/gitlab@d748c4747e8e2852e452ca3433d6cfa020b02ed4) ([merge request](gitlab-org/gitlab!67477))
- [Cache commit stats for a single commit](gitlab-org/gitlab@8aa2681f5d9bf4472094b9ea9f1e7b8836457875) ([merge request](gitlab-org/gitlab!67592))
- [Query ActiveRecord::Relation descendants](gitlab-org/gitlab@83e9f6e22a30abe7bcdb6d8d688fa16907b03976) ([merge request](gitlab-org/gitlab!67562))
- [checks: Speed up retrieving commits via quarantine directory](gitlab-org/gitlab@0a90028f1133ec9de7455afe738ab8d529cd3775) ([merge request](gitlab-org/gitlab!67210))
- [Reduce Markdown cache updates during deploy](gitlab-org/gitlab@463d7aeb40f538abb18334ef3cad0061135f0efd) ([merge request](gitlab-org/gitlab!67239))
- [Query ActiveRecord::Relation descendants](gitlab-org/gitlab@07a3097642be99165ee8f6e9b9dc5c74791b2c09) ([merge request](gitlab-org/gitlab!65891))
- [Reduce repaints on blame page](gitlab-org/gitlab@8a65b1e56d55bb11c1aa87bb863c0f98d4cace2f) ([merge request](gitlab-org/gitlab!67050))
- [geo: Pass authentication header via `#fetch_remote`](gitlab-org/gitlab@0c8a54398646fe1d64da5b2ed88934108b700b01) ([merge request](gitlab-org/gitlab!66822)) **GitLab Enterprise Edition**
- [Disable creating user mentions during import](gitlab-org/gitlab@d11191f125e6addcb40d2f56a566661899f5e2a8) ([merge request](gitlab-org/gitlab!66792))
- [Remove flag guarding batched computation of changes size](gitlab-org/gitlab@02755cd55cc005eb3ae3c60ba8f2b641c7b77f5c) ([merge request](gitlab-org/gitlab!66527))
- [Move merge-request merge_pipeline to cached_widget](gitlab-org/gitlab@6af0742133e849d5e0800ebef75c3356e565ccb2) ([merge request](gitlab-org/gitlab!59968))
- [Optimize scanning for references process](gitlab-org/gitlab@7b6fa26743edc24e65b7c5f9eaeae5fe0a4a7b0c) ([merge request](gitlab-org/gitlab!65847))
- [Move versions icon to CSS](gitlab-org/gitlab@90331b9428a9f101554a2fb5b3c68b11c5da7bf6) ([merge request](gitlab-org/gitlab!65843))
### Other (87 changes)
- [Make commit and design user mention indexes unique](gitlab-org/gitlab@221d5414dafcd99fa45ac0c35a413988459897d7) ([merge request](gitlab-org/gitlab!68433))
- [Add index on historical_data (recored_at) to improve queries](gitlab-org/gitlab@6f42db358a33433c612ab9fb04b0c3c9c585111c) ([merge request](gitlab-org/gitlab!68435))
- [Fix and reschedule background migration](gitlab-org/gitlab@0e243385923ae6a142b43fac9182398209876a83) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68305))
- [Finalize conversion of ci_stages.id to bigint](gitlab-org/gitlab@84247dd0f2d8ac70a24b281a4f6f464bfaf943f7) ([merge request](gitlab-org/gitlab!66088))
- [Reschedules migration for uuid recalculation](gitlab-org/gitlab@f54ca835ac888f3ad5fdb35216c88dd1d8d52202) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68200))
- [Remove pipelineGraphLayersView feature flag](gitlab-org/gitlab@582ecdb8b1b87cbd8acd59236ce21055fbe56d87) ([merge request](gitlab-org/gitlab!68040))
- [Pass **kwargs to the conn. for LB defined methods](gitlab-org/gitlab@db8faf0954071eceda603a870d9bde720283030d) ([merge request](gitlab-org/gitlab!68061))
- [Remove subscribable_subscription_banner flag](gitlab-org/gitlab@35f3121feb6aff6dd450693dfe7e30957ae84664) ([merge request](gitlab-org/gitlab!68257)) **GitLab Enterprise Edition**
- [Finalize conversion to bigint for ci_sources_pipelines](gitlab-org/gitlab@e5a025f516dbffa937dd849a97b65691e30d4369) ([merge request](gitlab-org/gitlab!66120))
- [Remove `ci_skip_before_parsing_yaml` FF](gitlab-org/gitlab@8d34ef0f8a9f8f7e7b54ce14b2c4ca683290d5e4) ([merge request](gitlab-org/gitlab!68287))
- [Cleanup invalid membership invites](gitlab-org/gitlab@29d3503946bf4b7287281f3fe7a1befa17779894) ([merge request](gitlab-org/gitlab!67760))
- [Rename GraphQL query resource from "instanceDashboard" to "instance"](gitlab-org/gitlab@2dd314939f57af599e9b23ace2290bed4adea792) ([merge request](gitlab-org/gitlab!67278)) **GitLab Enterprise Edition**
- [Disable updating the historical vulnerability statistics by default](gitlab-org/gitlab@60c931e6dbedeef3931eb8dc89bd4f5095f97f65) ([merge request](gitlab-org/gitlab!68189)) **GitLab Enterprise Edition**
- [Rename strip_attributes method](gitlab-org/gitlab@b4a754a976e3e49176fbfeef85db7191e40499a2) ([merge request](gitlab-org/gitlab!68193))
- [Updating the description for ecosystem metric](gitlab-org/gitlab@865ce2b2dcd2f320b0a34790175112a0a546b42c) ([merge request](gitlab-org/gitlab!68169))
- [Add ResetJobTokenScopeEnabledAgain migration](gitlab-org/gitlab@fb876346163d894138a363bc3e31031c27055bfb) ([merge request](gitlab-org/gitlab!68079))
- [Remove by default enabled feature flag](gitlab-org/gitlab@044d6166762622961bd03baf17619dc6e35bdff1) ([merge request](gitlab-org/gitlab!68165))
- [Remove docs redirects raketask](gitlab-org/gitlab@4c0835b38c05c3922ba4dcb35611024c2d51ec24) ([merge request](gitlab-org/gitlab!68149))
- [Remove pipelineGraphLayersView feature flag](gitlab-org/gitlab@d08880a41af0ab63a19f3ca0709541e16d8a5741) ([merge request](gitlab-org/gitlab!67969))
- [Remove jira_issue_association_on_merge_request feature flag](gitlab-org/gitlab@a43f09ec37e9933c9e513484cb70e81484830bec) ([merge request](gitlab-org/gitlab!68036)) **GitLab Enterprise Edition**
- [Finalize ci_job_artifacts conversion to bigint](gitlab-org/gitlab@3b9143606aadb3e733f1c602ba9cfd6fc3ad6c25) ([merge request](gitlab-org/gitlab!65601))
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@ceeb7dc048425cba841b14ac4a307680692a1267) ([merge request](gitlab-org/gitlab!65920)) **GitLab Enterprise Edition**
- [Include Puma worker PID in structured log](gitlab-org/gitlab@5df76410285bd2e9c695fc5b780a54ded1d08085) ([merge request](gitlab-org/gitlab!66694))
- [Denormalize ci_builds into security_scans](gitlab-org/gitlab@bf4f0409e90535d5cb6f0e55e2c39e2127a8ddc2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66963)) **GitLab Enterprise Edition**
- [Bump factory_bot_rails for Ruby3 support](gitlab-org/gitlab@06d14dfe8951b20b2f11fe1aeee9c08a9db6df8e) ([merge request](gitlab-org/gitlab!67866))
- [Additional namespace validation for AdditionalPack](gitlab-org/gitlab@6fdee1a78ffdd306c9b0ba26df9bcd70e82a3e51) ([merge request](gitlab-org/gitlab!67848)) **GitLab Enterprise Edition**
- [Finalize job_id conversion to bigint for ci_job_artifacts](gitlab-org/gitlab@794805ed543d53f1daf798db145057000d02415b) ([merge request](gitlab-org/gitlab!67774))
- [Use text links in MR approval settings section of UI](gitlab-org/gitlab@7ecc2da2fdb3dd798a48e6451fb67fc8b8a05517) ([merge request](gitlab-org/gitlab!67737)) **GitLab Enterprise Edition**
- [Remove jira_connect_create_branch feature flag](gitlab-org/gitlab@4c3c562c5d996ebf00ad2342aae8f87141b68073) ([merge request](gitlab-org/gitlab!67471))
- [Refactor documentation links for SP disabled](gitlab-org/gitlab@3f38ea4f6d4938d8aeae8f3dd5773f0e76db2830) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67384)) **GitLab Enterprise Edition**
- [Swap multiple_database_metrics FF for env var](gitlab-org/gitlab@ebbdd30dfb0d7d2f3c8fcc5daec41f3c5fed862e) ([merge request](gitlab-org/gitlab!66885))
- [Update limitations of members API docs](gitlab-org/gitlab@b1a540756c39b406611e459f20cbf89c407f0dee) ([merge request](gitlab-org/gitlab!67659))
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@146a4fae422271a0a2d0f395c5880ed36aff68fb) **GitLab Enterprise Edition**
- [Remove runner_list_view_vue_ui feature flag](gitlab-org/gitlab@1532ee45d4c31ccaf4331da33833996371e68708) ([merge request](gitlab-org/gitlab!67021))
- [Update internal API docs](gitlab-org/gitlab@282eaa342da16351fec71f89c3e9ff19461f72ac) ([merge request](gitlab-org/gitlab!67606))
- [Finalize conversion to bigint for ci_builds_runner_session](gitlab-org/gitlab@5d13cf3dd04af2f33daaac4b20052821d6bcb7d6) ([merge request](gitlab-org/gitlab!66433))
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@74e0ace7766e39955e70729ab4dd3ca66499d707) ([merge request](gitlab-org/gitlab!65912))
- [Finalize conversion to bigint for push_event_payloads](gitlab-org/gitlab@109700f62258b7591c4916495ca9d627ea51cae7) ([merge request](gitlab-org/gitlab!67299))
- [Finalize conversion to bigint for ci_build_needs](gitlab-org/gitlab@e8e551327a43aff88239d61d4491ef286f04c85f) ([merge request](gitlab-org/gitlab!65216))
- [Refine Documentation pages URL UI and documentation](gitlab-org/gitlab@8020c533eb7732d0cee32de033cf78c00afb6750) ([merge request](gitlab-org/gitlab!67293)) **GitLab Enterprise Edition**
- [Prepare indexes for bigint column conversions](gitlab-org/gitlab@e09fc6977889568a584d246f23e07d18c738342e) ([merge request](gitlab-org/gitlab!67532))
- [Revise UI text for PlantUML settings](gitlab-org/gitlab@d5178727ff065f829609834ca841814f1a174571) ([merge request](gitlab-org/gitlab!67497))
- [Follow-up pass for renaming Usage Ping/Data](gitlab-org/gitlab@26f3da5ad01697c1446a4d5e9430ec3202d4304b) ([merge request](gitlab-org/gitlab!66990))
- [Finalize converting deployments to bigint](gitlab-org/gitlab@e8d78b6fee41133a48c4e1a768705bae6ab2736f) ([merge request](gitlab-org/gitlab!67341))
- [Remove the FF ci_wildcard_file_paths](gitlab-org/gitlab@4cf9beb453de21c5955a1cec2474cc21f949f7a9) ([merge request](gitlab-org/gitlab!67441))
- [Revise admin area Pages settings UI](gitlab-org/gitlab@7c675c278ebee925def48f306c4853b3ebf31a25) ([merge request](gitlab-org/gitlab!66368))
- [Remove feature flag related to valid hosts list](gitlab-org/gitlab@1c2a29fe7dc98c6a88ea348cc788bbe29edc867a) ([merge request](gitlab-org/gitlab!65755))
- [Refactor timezone UI and documentation](gitlab-org/gitlab@b4fbf3532a1f2c773c2f662e7ca3fdc0f97a2583) ([merge request](gitlab-org/gitlab!67301))
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@5cf900baa1d938562c3a1e89f67df78a7a55a30b) ([merge request](gitlab-org/gitlab!65917)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@0a7ced21384192c3c8c8aa3b37fcd91c99faa023) ([merge request](gitlab-org/gitlab!65904)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@4b2236b92593baf24ecabab53f0fa101ea49dc0e) ([merge request](gitlab-org/gitlab!65903)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@b401f8e26d977feddc9c992281315028f5b998d9) ([merge request](gitlab-org/gitlab!65896))
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@1dea45c7c6d472cf985aad60e58b38567c59155e) ([merge request](gitlab-org/gitlab!65897)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@497ee293308fd85a725fee9480f4cd038005fd3f) ([merge request](gitlab-org/gitlab!65919)) **GitLab Enterprise Edition**
- [For consistency do not use CSS calc for simple calculation of margin-top](gitlab-org/gitlab@2cfdc8e2279772adb865dc202f624ed0f49de95a) ([merge request](gitlab-org/gitlab!67270))
- [Remove unused code](gitlab-org/gitlab@3c71929b1a3eb0d3089c2f9d4be5552c807aa2d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67162)) **GitLab Enterprise Edition**
- [Reschedule Delete Orphaned Deployments BG migration](gitlab-org/gitlab@e61df7c8566b8d02b5144ee448f08e3ec0138a23) ([merge request](gitlab-org/gitlab!66813))
- [Finalize conversion to bigint for push_event_payloads](gitlab-org/gitlab@2e0ca4e445707aced673035490a2307dccdea879) ([merge request](gitlab-org/gitlab!65795))
- [Finalize conversion to bigint for ci_build_trace_chunks](gitlab-org/gitlab@8228341c4300542d770e1648f31a43f39c4270f6) ([merge request](gitlab-org/gitlab!66123))
- [Remove `gitlab_subscription_future_renewal` feature flag](gitlab-org/gitlab@45da0404be71e6c8a3ba006e82c492e3e71670bc) ([merge request](gitlab-org/gitlab!66829)) **GitLab Enterprise Edition**
- [Remove dast_configuration_ui feature flag](gitlab-org/gitlab@31da8512f850a3ccf19736ea1b02f932252b1ae6) ([merge request](gitlab-org/gitlab!66817)) **GitLab Enterprise Edition**
- [Fix the offenses introduced by Style/RegexpLiteralMixedPreserve](gitlab-org/gitlab@c61e416600a96646c1bd5c8347c8da0c85510958) ([merge request](gitlab-org/gitlab!66753)) **GitLab Enterprise Edition**
- [Removes unused gitorious logos](gitlab-org/gitlab@437b63b84146c9034706c3204b4bb3ade5cffbec) ([merge request](gitlab-org/gitlab!66786))
- [Revised Package Registry settings text](gitlab-org/gitlab@381032baf203c738ecccc4f53f097afde0409977) ([merge request](gitlab-org/gitlab!66395))
- [Revert backfill on ci_build_trace_sections](gitlab-org/gitlab@27262d7b8d81b5b00b691d6365dbf3730108a4fb) ([merge request](gitlab-org/gitlab!66627))
- [Clean up evalute_protected_tag_for_release_permissions feature flag](gitlab-org/gitlab@dde58c83f7c41ca0234969e55c31e115c339f7ec) ([merge request](gitlab-org/gitlab!66713))
- [Update service ping metric implementation guidelines](gitlab-org/gitlab@09ef8592d13dc69a380266d21d4486211b3f2c48) ([merge request](gitlab-org/gitlab!66616))
- [Add tracking events for the dependency proxy](gitlab-org/gitlab@e2885e45de15a42610f50f8c10527c597ca05f33) ([merge request](gitlab-org/gitlab!65812))
- [Remove redundant indexes for devops adoption](gitlab-org/gitlab@7878b74a6b7337f52c151691a73f4f673ed51df2) ([merge request](gitlab-org/gitlab!66644))
- [Add area of focus to members](gitlab-org/gitlab@864c59d66dfc9eab9bd8f1079059e8dc556027ca) ([merge request](gitlab-org/gitlab!64956))
- [Fix up the docs warning detected by the vale latin term rule](gitlab-org/gitlab@e4dc09b314c8aab45f0f42472c98aa2e62d02774) ([merge request](gitlab-org/gitlab!66325))
- [Update help text in runner update form](gitlab-org/gitlab@ce01eb60183252708f0a7aa3d110fc06038b8bbf) ([merge request](gitlab-org/gitlab!66148))
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@c9c3690fdf399fd916fc95b39517b434dd3c68bf) ([merge request](gitlab-org/gitlab!65900)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@1d010a6f352fd7485a3e013ee93c0dbef4823904) ([merge request](gitlab-org/gitlab!65902)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@65aaf601b08def9f3f687bd505c7677d3d53cdd3) ([merge request](gitlab-org/gitlab!65914)) **GitLab Enterprise Edition**
- [Migrate the deprecated "urlParamsToObject" to "queryToObject"](gitlab-org/gitlab@90e8802292658cb4cee37b2729460274fbab548d) ([merge request](gitlab-org/gitlab!65916)) **GitLab Enterprise Edition**
- [Log when a container repository is selected](gitlab-org/gitlab@0ee8d9f9877db52ffc353e2cce46e0090763c0e4) ([merge request](gitlab-org/gitlab!66182))
- [Expose init aux viewer](gitlab-org/gitlab@625005ebec644c1708262b9b299b140b9fa25041) ([merge request](gitlab-org/gitlab!66528))
- [Remove service templates](gitlab-org/gitlab@359813b6c03f1063422f449b04a8a76b7c82de27) ([merge request](gitlab-org/gitlab!64975))
- [Remove merge_request_draft_filter feature flag](gitlab-org/gitlab@292afd630b937353844091f0b876c17c19fcf83f) ([merge request](gitlab-org/gitlab!66507))
- [Remove unused cluster application logos](gitlab-org/gitlab@d9297157da4eebb3d0cdfd5e8cf8bfbdcd9f8f50) ([merge request](gitlab-org/gitlab!66485))
- [Update GitLab Runner Helm Chart to 0.31.0](gitlab-org/gitlab@a27f4ca670d9bcf70fd694a3d9df79657a2ef451) ([merge request](gitlab-org/gitlab!66447))
- [Revise UI text for Kroki settings](gitlab-org/gitlab@3489047a1c2429cda2c1e2305424c4b4ba68bb08) ([merge request](gitlab-org/gitlab!66258))
- [Add Chrome to Jira connect working browsers](gitlab-org/gitlab@ff0c52d346f7c00b441070a159ba6173852a2536) ([merge request](gitlab-org/gitlab!66236))
- [Refactor polling interval multiplier configuration UI and docs](gitlab-org/gitlab@b8ef9101f45759b19d982f3f6ae74cf92e2a31d1) ([merge request](gitlab-org/gitlab!66342))
- [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))
## 14.1.3 (2021-08-17)
@ -678,6 +1244,38 @@ entry.
- [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))
## 14.0.7 (2021-08-03)
### Security (18 changes)
- [Add project member validation for domain limitation](gitlab-org/security/gitlab@f9a0e78111cbbfe93b6f8ca27bd9f064e146d005) ([merge request](gitlab-org/security/gitlab!1563))
- [Hide project-level CI/CD Analytics for Guests](gitlab-org/security/gitlab@56a17ae80c1f179bcdf939d6b8e71737f9501949) ([merge request](gitlab-org/security/gitlab!1574))
- [Only allow invite to be accepted by user with matching email](gitlab-org/security/gitlab@a79d0e6dbbc32247c10c4928a04f0149071eb5fe) ([merge request](gitlab-org/security/gitlab!1633))
- [Add html escaping for default branch name](gitlab-org/security/gitlab@d26f0c4d5ef386100d40e92f815b7e754fccacc3) ([merge request](gitlab-org/security/gitlab!1631))
- [Configure OmniAuth to use GitLab AppLogger](gitlab-org/security/gitlab@dfcff90cb86fac0dff05d8bd5f25f46da2cc8ce0) ([merge request](gitlab-org/security/gitlab!1616))
- [Add permissions check to pipelines#show action](gitlab-org/security/gitlab@c611a8154dc5776a0767b4153ff8963d46e7f39a) ([merge request](gitlab-org/security/gitlab!1613))
- [Prevent impersonation in gitlab-shell SSH certs](gitlab-org/security/gitlab@320457b16cbfd5dec4e05937c4d61b96aba4c290) ([merge request](gitlab-org/security/gitlab!1610))
- [Fix Protected Environment Accesses Cleanup](gitlab-org/security/gitlab@99846cdeda6acf6223fb0ee5364e375765d3cbb1) ([merge request](gitlab-org/security/gitlab!1607)) **GitLab Enterprise Edition**
- [Do not show email address in error message](gitlab-org/security/gitlab@5c4adf419e38f0fd9d540d2f7cd9d14888bc6b96) ([merge request](gitlab-org/security/gitlab!1597)) **GitLab Enterprise Edition**
- [Disallow non-members to set issue metadata on issue create](gitlab-org/security/gitlab@0bb4499e5f4514beb647d0e6ac3f9b15720c42ce) ([merge request](gitlab-org/security/gitlab!1581))
- [Prevent guests from linking issues with errors](gitlab-org/security/gitlab@94462a56e9490ddd85ec7d1d869b6fda2042fb99) ([merge request](gitlab-org/security/gitlab!1588))
- [Block impersonation token use if it is not permitted](gitlab-org/security/gitlab@31b8bc506dd89a576a2cda094c711c22be764398) ([merge request](gitlab-org/security/gitlab!1584))
- [Updates oauth to 0.5.6](gitlab-org/security/gitlab@c839b6107c41bcd02e048d0ae0499c140bfbec1c) ([merge request](gitlab-org/security/gitlab!1568))
- [Remove impersonation token from api response for non-admin user](gitlab-org/security/gitlab@845dc284cc8ee8736e4f65740d61ffeb197f7b7c) ([merge request](gitlab-org/security/gitlab!1566))
- [Filter todos whose target users no longer have access to](gitlab-org/security/gitlab@a6c81e5cadb277f80d1b9565700f8b1f201cfb05) ([merge request](gitlab-org/security/gitlab!1554))
- [Fix tag ref detection for pipelines](gitlab-org/security/gitlab@cd5f61dc50c44d69896b38f3bd44129a8f1f01d8) ([merge request](gitlab-org/security/gitlab!1548))
- [Restrict access to instance-level security features for reporters](gitlab-org/security/gitlab@c8a75e8032c68065524a85f7030960b614a915bd) ([merge request](gitlab-org/security/gitlab!1539)) **GitLab Enterprise Edition**
- [Fix XSS in Mermaid Markdown rendering](gitlab-org/security/gitlab@86139e79c13cf87183cdec9f84ec114cdfc6d215) ([merge request](gitlab-org/security/gitlab!1489))
## 14.0.6 (2021-07-20)
### Fixed (4 changes)
- [Fix validation method regarding MIME type keys](gitlab-org/gitlab@2cc6d89cc77368b9472c8ec22e97bb3481409fb3) ([merge request](gitlab-org/gitlab!66403))
- [Geo: Fix snippet verification by replicating the HEAD ref](gitlab-org/gitlab@4dbf36af8553775603c170784ad8bfcdc436a669) ([merge request](gitlab-org/gitlab!66403)) **GitLab Enterprise Edition**
- [Fix LFS objects not downloading with Bitbucket](gitlab-org/gitlab@161776f9a4975dfeb2760b06e83160def902c61f) ([merge request](gitlab-org/gitlab!66403))
- [Replace Excon with Faraday for requesting object storage](gitlab-org/gitlab@a223d526d5b97f248c8810ef0b968d2c3b0323e0) ([merge request](gitlab-org/gitlab!66403))
## 14.0.5 (2021-07-08)
### Fixed (4 changes)
@ -1379,6 +1977,37 @@ entry.
- [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))
## 13.12.10 (2021-08-10)
### Fixed (2 changes)
- [Fix validation method regarding MIME type keys](gitlab-org/gitlab@4782194408063f61da4e1e69d7d8813cfec84a78) ([merge request](gitlab-org/gitlab!67748))
- [Do not create audit event for failed logins on read-only DB](gitlab-org/gitlab@53237efd7b677ccaa7db05f51d5594f594db41ce) ([merge request](gitlab-org/gitlab!67748)) **GitLab Enterprise Edition**
### Changed (1 change)
- [Resolve "operator does not exist: integer[] || bigint in...](gitlab-org/gitlab@fcaf589950878529019d9d9d6b047b4802c9c374) ([merge request](gitlab-org/gitlab!67748))
## 13.12.9 (2021-08-03)
### Security (15 changes)
- [Add project member validation for domain limitation](gitlab-org/security/gitlab@8aff1815f897c2c454c87b1ccdd98c7a2c9eedb3) ([merge request](gitlab-org/security/gitlab!1562))
- [Block impersonation token use if it is not permitted](gitlab-org/security/gitlab@99ab170ae5a2d991600dec9e7dfd8b5ca502c437) ([merge request](gitlab-org/security/gitlab!1585))
- [Hide project-level CI/CD Analytics for Guests](gitlab-org/security/gitlab@740395d9663be41d52d831b8f90e271c08137220) ([merge request](gitlab-org/security/gitlab!1575))
- [Only allow invite to be accepted by user with matching email](gitlab-org/security/gitlab@ae7ade09920486f6124496d800bf5f63f5a909eb) ([merge request](gitlab-org/security/gitlab!1634))
- [Configure OmniAuth to use GitLab AppLogger](gitlab-org/security/gitlab@ed5e7742173878e59d760744e3f4f6686268584b) ([merge request](gitlab-org/security/gitlab!1617))
- [Fix Protected Environment Accesses Cleanup](gitlab-org/security/gitlab@79eb0cb13a35864267c30663fd6033e8c6224cac) ([merge request](gitlab-org/security/gitlab!1608)) **GitLab Enterprise Edition**
- [Add permissions check to pipelines#show action](gitlab-org/security/gitlab@1a293b409226ce743527f1ac5ac5d216998339e1) ([merge request](gitlab-org/security/gitlab!1618))
- [Prevent impersonation in gitlab-shell SSH certs](gitlab-org/security/gitlab@42521d9e7e72047bac09bd42779203ae6e508227) ([merge request](gitlab-org/security/gitlab!1611))
- [Prevent guests from linking issues with errors](gitlab-org/security/gitlab@da799b0c7bcade058d4b57e065b1a1bebf903fa3) ([merge request](gitlab-org/security/gitlab!1599))
- [Do not show email address in error message](gitlab-org/security/gitlab@2c3318edaa39ed0837b8fb30acae9f2cdc3d158f) ([merge request](gitlab-org/security/gitlab!1598)) **GitLab Enterprise Edition**
- [Updates oauth to 0.5.6](gitlab-org/security/gitlab@33df3791b646026016303a9d64661fbee7563630) ([merge request](gitlab-org/security/gitlab!1569))
- [Remove impersonation token from api response for non-admin user](gitlab-org/security/gitlab@b56ae1953b2cd6b9d12c584e0f2c298a931f6f08) ([merge request](gitlab-org/security/gitlab!1567))
- [Filter todos whose target users no longer have access to](gitlab-org/security/gitlab@ba613574b12e40fb61e5fbae8b1159f9ad037e84) ([merge request](gitlab-org/security/gitlab!1555))
- [Fix tag ref detection for pipelines](gitlab-org/security/gitlab@4c36e98bcecd6e42e23ec5e20443f41de7f5bf18) ([merge request](gitlab-org/security/gitlab!1549))
- [Fix XSS in Mermaid Markdown rendering](gitlab-org/security/gitlab@b27425816723b53db2f65b39f4702711b858cdfc) ([merge request](gitlab-org/security/gitlab!1487))
## 13.12.8 (2021-07-07)
### Security (1 change)

View file

@ -1 +1 @@
14.1.7
14.2.5

View file

@ -1 +1 @@
2.12.0
2.13.0

View file

@ -1 +1 @@
14.1.1
14.2.2

View file

@ -1 +1 @@
1.41.0
1.42.0

22
Gemfile
View file

@ -49,7 +49,7 @@ gem 'omniauth-shibboleth', '~> 1.3.0'
gem 'omniauth-twitter', '~> 1.4'
gem 'omniauth_crowd', '~> 2.4.0'
gem 'omniauth-authentiq', '~> 0.3.3'
gem 'gitlab-omniauth-openid-connect', '~> 0.4.0', require: 'omniauth_openid_connect'
gem 'gitlab-omniauth-openid-connect', '~> 0.8.0', require: 'omniauth_openid_connect'
gem 'omniauth-salesforce', '~> 1.0.5'
gem 'omniauth-atlassian-oauth2', '~> 0.2.0'
gem 'rack-oauth2', '~> 1.16.0'
@ -223,7 +223,7 @@ gem 're2', '~> 1.2.0'
gem 'version_sorter', '~> 2.2.4'
# Export Ruby Regex to Javascript
gem 'js_regex', '~> 3.4'
gem 'js_regex', '~> 3.7'
# User agent parsing
gem 'device_detector'
@ -310,7 +310,7 @@ gem 'pg_query', '~> 2.1'
gem 'premailer-rails', '~> 1.10.3'
# LabKit: Tracing and Correlation
gem 'gitlab-labkit', '~> 0.20.0'
gem 'gitlab-labkit', '~> 0.21.1'
# Thrift is a dependency of gitlab-labkit, we want a version higher than 0.14.0
# because of https://gitlab.com/gitlab-org/gitlab/-/issues/321900
gem 'thrift', '>= 0.14.0'
@ -335,9 +335,11 @@ gem 'method_source', '~> 1.0', require: false
gem 'webrick', '~> 1.6.1', require: false
gem 'prometheus-client-mmap', '~> 0.12.0', require: 'prometheus/client'
gem 'warning', '~> 1.2.0'
group :development do
gem 'lefthook', '~> 0.7.0', require: false
gem 'solargraph', '~> 0.42', require: false
gem 'solargraph', '~> 0.43', require: false
gem 'letter_opener_web', '~> 1.4.0'
@ -358,7 +360,7 @@ group :development, :test do
gem 'awesome_print', require: false
gem 'database_cleaner', '~> 1.7.0'
gem 'factory_bot_rails', '~> 6.1.0'
gem 'factory_bot_rails', '~> 6.2.0'
gem 'rspec-rails', '~> 5.0.1'
# Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)
@ -394,7 +396,7 @@ group :development, :test do
end
group :development, :test, :danger do
gem 'gitlab-dangerfiles', '~> 2.2.2', require: false
gem 'gitlab-dangerfiles', '~> 2.3.0', require: false
end
group :development, :test, :coverage do
@ -472,7 +474,7 @@ end
gem 'spamcheck', '~> 0.1.0'
# Gitaly GRPC protocol definitions
gem 'gitaly', '~> 14.1.0.pre.rc3'
gem 'gitaly', '~> 14.2.0.pre.rc2'
# KAS GRPC protocol definitions
gem 'kas-grpc', '~> 0.0.2'
@ -487,8 +489,8 @@ gem 'toml-rb', '~> 2.0'
gem 'flipper', '~> 0.21.0'
gem 'flipper-active_record', '~> 0.21.0'
gem 'flipper-active_support_cache_store', '~> 0.21.0'
gem 'unleash', '~> 0.1.5'
gem 'gitlab-experiment', '~> 0.6.1'
gem 'unleash', '~> 3.2.2'
gem 'gitlab-experiment', '~> 0.6.4'
# Structured logging
gem 'lograge', '~> 0.5'
@ -521,7 +523,7 @@ gem 'valid_email', '~> 0.1'
# JSON
gem 'json', '~> 2.3.0'
gem 'json_schemer', '~> 0.2.12'
gem 'json_schemer', '~> 0.2.18'
gem 'oj', '~> 3.10.6'
gem 'multi_json', '~> 1.14.1'
gem 'yajl-ruby', '~> 1.4.1', require: 'yajl'

View file

@ -9,7 +9,6 @@ GEM
remote: https://rubygems.org/
specs:
RedCloth (4.3.2)
abstract_type (0.0.7)
acme-client (2.0.6)
faraday (>= 0.17, < 2.0.0)
actioncable (6.1.3.2)
@ -76,9 +75,6 @@ GEM
zeitwerk (~> 2.3)
acts-as-taggable-on (7.0.0)
activerecord (>= 5.0, < 6.2)
adamantium (0.2.0)
ice_nine (~> 0.11.0)
memoizable (~> 0.4.0)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
aes_key_wrap (1.1.0)
@ -183,7 +179,8 @@ GEM
mime-types (>= 1.16)
ssrf_filter (~> 1.0)
cbor (0.5.9.6)
character_set (1.4.0)
character_set (1.4.1)
sorted_set (~> 1.0)
charlock_holmes (0.7.7)
chef-config (16.10.17)
addressable
@ -205,10 +202,7 @@ GEM
colored2 (3.1.2)
commonmarker (0.21.0)
ruby-enum (~> 0.5)
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
concurrent-ruby (1.1.8)
concurrent-ruby (1.1.9)
connection_pool (2.2.2)
contracts (0.11.0)
cork (0.3.0)
@ -314,8 +308,8 @@ GEM
dry-inflector (~> 0.1, >= 0.1.2)
dry-logic (~> 1.0, >= 1.0.2)
e2mmap (0.1.0)
ecma-re-validator (0.2.1)
regexp_parser (~> 1.2)
ecma-re-validator (0.3.0)
regexp_parser (~> 2.0)
ed25519 (1.2.4)
elasticsearch (6.8.2)
elasticsearch-api (= 6.8.2)
@ -336,7 +330,6 @@ GEM
launchy (~> 2.1)
mail (~> 2.7)
encryptor (3.0.0)
equalizer (0.0.11)
erubi (1.9.0)
escape_utils (1.2.1)
et-orbi (1.2.1)
@ -347,10 +340,10 @@ GEM
expression_parser (0.9.0)
extended-markdown-filter (0.6.0)
html-pipeline (~> 2.0)
factory_bot (6.1.0)
factory_bot (6.2.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.1.0)
factory_bot (~> 6.1.0)
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faraday (1.4.2)
faraday-em_http (~> 1.0)
@ -460,7 +453,7 @@ GEM
rails (>= 3.2.0)
git (1.7.0)
rchardet (~> 1.8)
gitaly (14.1.0.pre.rc3)
gitaly (14.2.0.pre.rc2)
grpc (~> 1.0)
github-markup (1.7.0)
gitlab (4.16.1)
@ -468,10 +461,10 @@ GEM
terminal-table (~> 1.5, >= 1.5.1)
gitlab-chronic (0.10.5)
numerizer (~> 0.2)
gitlab-dangerfiles (2.2.2)
gitlab-dangerfiles (2.3.0)
danger (>= 8.3.1)
danger-gitlab (>= 8.0.0)
gitlab-experiment (0.6.1)
gitlab-experiment (0.6.4)
activesupport (>= 3.0)
request_store (>= 1.0)
scientist (~> 1.6, >= 1.6.0)
@ -482,10 +475,10 @@ GEM
fog-json (~> 1.2.0)
mime-types
ms_rest_azure (~> 0.12.0)
gitlab-labkit (0.20.0)
gitlab-labkit (0.21.1)
actionpack (>= 5.0.0, < 7.0.0)
activesupport (>= 5.0.0, < 7.0.0)
grpc (~> 1.19)
grpc (~> 1.30.2)
jaeger-client (~> 1.1)
opentracing (~> 0.4)
pg_query (~> 2.1)
@ -494,7 +487,7 @@ GEM
gitlab-mail_room (0.0.9)
gitlab-markup (1.7.1)
gitlab-net-dns (0.9.1)
gitlab-omniauth-openid-connect (0.4.0)
gitlab-omniauth-openid-connect (0.8.0)
addressable (~> 2.7)
omniauth (~> 1.9)
openid_connect (~> 1.2)
@ -531,8 +524,8 @@ GEM
signet (~> 0.12)
google-cloud-env (1.5.0)
faraday (>= 0.17.3, < 2.0)
google-protobuf (3.17.1)
googleapis-common-protos-types (1.0.6)
google-protobuf (3.17.3)
googleapis-common-protos-types (1.1.0)
google-protobuf (~> 3.14)
googleauth (0.14.0)
faraday (>= 0.17.3, < 2.0)
@ -612,7 +605,7 @@ GEM
temple (>= 0.8.2)
thor
tilt
hana (1.3.6)
hana (1.3.7)
hangouts-chat (0.0.5)
hashdiff (1.0.1)
hashie (4.1.0)
@ -647,7 +640,6 @@ GEM
concurrent-ruby (~> 1.0)
i18n_data (0.8.0)
icalendar (2.4.1)
ice_nine (0.11.2)
invisible_captcha (1.1.0)
rails (>= 4.2)
ipaddress (0.8.3)
@ -661,19 +653,19 @@ GEM
multipart-post
oauth (~> 0.5, >= 0.5.0)
jmespath (1.4.0)
js_regex (3.4.0)
js_regex (3.7.0)
character_set (~> 1.4)
regexp_parser (~> 1.5)
regexp_property_values (~> 0.3)
regexp_parser (~> 2.1)
regexp_property_values (~> 1.0)
json (2.3.0)
json-jwt (1.13.0)
activesupport (>= 4.2)
aes_key_wrap
bindata
json_schemer (0.2.12)
ecma-re-validator (~> 0.2)
json_schemer (0.2.18)
ecma-re-validator (~> 0.3)
hana (~> 1.3)
regexp_parser (~> 1.5)
regexp_parser (~> 2.0)
uri_template (~> 0.7)
jsonpath (1.1.0)
multi_json
@ -726,7 +718,7 @@ GEM
reverse_markdown (~> 1.0)
rugged (>= 0.24, < 2.0)
thor (>= 0.19, < 2.0)
listen (3.2.1)
listen (3.6.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
locale (2.1.3)
@ -736,7 +728,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.9.1)
loofah (2.11.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lru_redux (1.1.0)
@ -748,8 +740,6 @@ GEM
actionpack (>= 2.3)
activerecord (>= 2.3)
memoist (0.16.2)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
memory_profiler (0.9.14)
method_source (1.0.0)
mime-types (3.3.1)
@ -758,7 +748,7 @@ GEM
mini_histogram (0.3.1)
mini_magick (4.10.1)
mini_mime (1.0.2)
mini_portile2 (2.5.1)
mini_portile2 (2.5.3)
minitest (5.11.3)
mixlib-cli (2.1.8)
mixlib-config (3.0.9)
@ -796,7 +786,7 @@ GEM
netrc (0.11.0)
nio4r (2.5.4)
no_proxy_fix (0.1.2)
nokogiri (1.11.5)
nokogiri (1.11.7)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
nokogumbo (2.0.2)
@ -935,7 +925,6 @@ GEM
coderay
parser
unparser
procto (0.0.3)
prometheus-client-mmap (0.12.0)
pry (0.13.1)
coderay (~> 1.1)
@ -1012,7 +1001,7 @@ GEM
rake (>= 0.8.7)
thor (~> 1.0)
rainbow (3.0.0)
rake (13.0.3)
rake (13.0.6)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
@ -1022,6 +1011,7 @@ GEM
ffi (>= 1.0.6)
msgpack (>= 0.4.3)
optimist (>= 3.0.0)
rbtree (0.4.4)
rchardet (1.8.0)
rdoc (6.3.2)
re2 (1.2.0)
@ -1047,8 +1037,8 @@ GEM
redis-store (>= 1.2, < 2)
redis-store (1.8.1)
redis (>= 4, < 5)
regexp_parser (1.8.2)
regexp_property_values (0.3.5)
regexp_parser (2.1.1)
regexp_property_values (1.0.0)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
@ -1086,7 +1076,7 @@ GEM
rspec-mocks (3.10.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-parameterized (0.4.2)
rspec-parameterized (0.5.0)
binding_ninja (>= 0.2.3)
parser
proc_to_ast
@ -1186,6 +1176,7 @@ GEM
rubyzip (>= 1.2.2)
sentry-raven (3.1.2)
faraday (>= 1.0)
set (1.0.1)
settingslogic (2.0.9)
sexp_processor (4.15.1)
shellany (0.0.1)
@ -1210,12 +1201,12 @@ GEM
simplecov-html (~> 0.11)
simplecov-cobertura (1.3.1)
simplecov (~> 0.8)
simplecov-html (0.12.2)
simplecov-html (0.12.3)
sixarm_ruby_unaccent (1.2.0)
slack-messenger (2.3.4)
snowplow-tracker (0.6.1)
contracts (~> 0.7, <= 0.11)
solargraph (0.42.3)
solargraph (0.43.0)
backport (~> 1.2)
benchmark
bundler (>= 1.17.2)
@ -1230,6 +1221,9 @@ GEM
thor (~> 1.0)
tilt (~> 2.0)
yard (~> 0.9, >= 0.9.24)
sorted_set (1.0.3)
rbtree
set (~> 1.0)
spamcheck (0.1.0)
grpc (~> 1.0)
spring (2.1.1)
@ -1279,7 +1273,6 @@ GEM
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (1.1.0)
thread_safe (0.3.6)
thrift (0.14.0)
tilt (2.0.10)
timecop (0.9.1)
@ -1330,16 +1323,11 @@ GEM
unicode-display_width (1.7.0)
unicode_utils (1.4.0)
uniform_notifier (1.13.0)
unleash (0.1.5)
unleash (3.2.2)
murmurhash3 (~> 0.1.6)
unparser (0.4.7)
abstract_type (~> 0.0.7)
adamantium (~> 0.2.0)
concord (~> 0.1.5)
unparser (0.6.0)
diff-lcs (~> 1.3)
equalizer (~> 0.0.9)
parser (>= 2.6.5)
procto (~> 0.0.2)
parser (>= 3.0.0)
uri_template (0.7.0)
valid_email (0.1.3)
activemodel
@ -1357,6 +1345,7 @@ GEM
vmstat (2.3.0)
warden (1.2.8)
rack (>= 2.0.6)
warning (1.2.0)
webauthn (2.3.0)
android_key_attestation (~> 0.3.0)
awrence (~> 1.1)
@ -1460,7 +1449,7 @@ DEPENDENCIES
email_spec (~> 2.2.0)
erubi (~> 1.9.0)
escape_utils (~> 1.1)
factory_bot_rails (~> 6.1.0)
factory_bot_rails (~> 6.2.0)
faraday (~> 1.0)
faraday_middleware-aws-sigv4 (~> 0.3.0)
fast_blank
@ -1482,18 +1471,18 @@ DEPENDENCIES
gettext (~> 3.3)
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3)
gitaly (~> 14.1.0.pre.rc3)
gitaly (~> 14.2.0.pre.rc2)
github-markup (~> 1.7.0)
gitlab-chronic (~> 0.10.5)
gitlab-dangerfiles (~> 2.2.2)
gitlab-experiment (~> 0.6.1)
gitlab-dangerfiles (~> 2.3.0)
gitlab-experiment (~> 0.6.4)
gitlab-fog-azure-rm (~> 1.1.1)
gitlab-labkit (~> 0.20.0)
gitlab-labkit (~> 0.21.1)
gitlab-license (~> 2.0)
gitlab-mail_room (~> 0.0.9)
gitlab-markup (~> 1.7.1)
gitlab-net-dns (~> 0.9.1)
gitlab-omniauth-openid-connect (~> 0.4.0)
gitlab-omniauth-openid-connect (~> 0.8.0)
gitlab-sidekiq-fetcher (= 0.5.6)
gitlab-styles (~> 6.2.0)
gitlab_chronic_duration (~> 0.10.6.2)
@ -1526,9 +1515,9 @@ DEPENDENCIES
invisible_captcha (~> 1.1.0)
ipaddress (~> 0.8.3)
jira-ruby (~> 2.1.4)
js_regex (~> 3.4)
js_regex (~> 3.7)
json (~> 2.3.0)
json_schemer (~> 0.2.12)
json_schemer (~> 0.2.18)
jwt (~> 2.1.0)
kaminari (~> 1.0)
kas-grpc (~> 0.0.2)
@ -1642,7 +1631,7 @@ DEPENDENCIES
simplecov-cobertura (~> 1.3.1)
slack-messenger (~> 2.3.4)
snowplow-tracker (~> 0.6.1)
solargraph (~> 0.42)
solargraph (~> 0.43)
spamcheck (~> 0.1.0)
spring (~> 2.1.0)
spring-commands-rspec (~> 1.0.4)
@ -1661,11 +1650,12 @@ DEPENDENCIES
truncato (~> 0.7.11)
u2f (~> 0.2.1)
unf (~> 0.1.4)
unleash (~> 0.1.5)
unleash (~> 3.2.2)
valid_email (~> 0.1)
validates_hostname (~> 1.0.11)
version_sorter (~> 2.2.4)
vmstat (~> 2.3.0)
warning (~> 1.2.0)
webauthn (~> 2.3)
webmock (~> 3.9.1)
webrick (~> 1.6.1)

View file

@ -1 +1 @@
14.1.7
14.2.5

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 923 B

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -6,10 +6,11 @@ import { I18N_USER_ACTIONS } from '../../constants';
// TODO: To be replaced with <template> content in https://gitlab.com/gitlab-org/gitlab/-/issues/320922
const messageHtml = `
<p>${s__('AdminUsers|When banned, users:')}</p>
<p>${s__('AdminUsers|When banned:')}</p>
<ul>
<li>${s__("AdminUsers|Can't log in.")}</li>
<li>${s__("AdminUsers|Can't access Git repositories.")}</li>
<li>${s__("AdminUsers|The user can't log in.")}</li>
<li>${s__("AdminUsers|The user can't access git repositories.")}</li>
<li>${s__('AdminUsers|Issues authored by this user are hidden from other users.')}</li>
</ul>
<p>${s__('AdminUsers|You can unban their account in the future. Their data remains intact.')}</p>
<p>${sprintf(

View file

@ -28,6 +28,7 @@ export default {
modal-type="delete"
:username="username"
:paths="paths"
:delete-path="paths.delete"
:oncall-schedules="oncallSchedules"
>
<slot></slot>

View file

@ -28,6 +28,7 @@ export default {
modal-type="delete-with-contributions"
:username="username"
:paths="paths"
:delete-path="paths.deleteWithContributions"
:oncall-schedules="oncallSchedules"
>
<slot></slot>

View file

@ -14,6 +14,10 @@ export default {
type: Object,
required: true,
},
deletePath: {
type: String,
required: true,
},
modalType: {
type: String,
required: true,
@ -27,7 +31,7 @@ export default {
modalAttributes() {
return {
'data-block-user-url': this.paths.block,
'data-delete-user-url': this.paths.delete,
'data-delete-user-url': this.deletePath,
'data-gl-modal-action': this.modalType,
'data-username': this.username,
'data-oncall-schedules': JSON.stringify(this.oncallSchedules),

View file

@ -1,7 +1,9 @@
<script>
import { GlBadge, GlTable, GlLink, GlEmptyState } from '@gitlab/ui';
import { GlSingleStat } from '@gitlab/ui/dist/charts';
import { helpPagePath } from '~/helpers/help_page_helper';
import { sprintf, s__ } from '~/locale';
import DevopsScoreCallout from './devops_score_callout.vue';
const defaultHeaderAttrs = {
thClass: 'gl-bg-white!',
@ -15,14 +17,12 @@ export default {
GlSingleStat,
GlLink,
GlEmptyState,
DevopsScoreCallout,
},
inject: {
devopsScoreMetrics: {
default: null,
},
devopsReportDocsPath: {
default: '',
},
noDataImagePath: {
default: '',
},
@ -40,6 +40,7 @@ export default {
return this.devopsScoreMetrics.averageScore === undefined;
},
},
devopsReportDocsPath: helpPagePath('user/admin_area/analytics/dev_ops_report'),
tableHeaderFields: [
{
key: 'title',
@ -65,46 +66,49 @@ export default {
};
</script>
<template>
<gl-empty-state
v-if="isEmpty"
:title="__('Data is still calculating...')"
:svg-path="noDataImagePath"
>
<template #description>
<p class="gl-mb-0">{{ __('It may be several days before you see feature usage data.') }}</p>
<gl-link :href="devopsReportDocsPath">{{
__('See example DevOps Score page in our documentation.')
}}</gl-link>
</template>
</gl-empty-state>
<div v-else data-testid="devops-score-app">
<div class="gl-text-gray-400 gl-my-4" data-testid="devops-score-note-text">
{{ titleHelperText }}
</div>
<gl-single-stat
unit="%"
size="sm"
:title="s__('DevopsReport|Your score')"
:should-animate="true"
:value="devopsScoreMetrics.averageScore.value"
:meta-icon="devopsScoreMetrics.averageScore.scoreLevel.icon"
:meta-text="devopsScoreMetrics.averageScore.scoreLevel.label"
:variant="devopsScoreMetrics.averageScore.scoreLevel.variant"
/>
<gl-table
:fields="$options.tableHeaderFields"
:items="devopsScoreMetrics.cards"
thead-class="gl-border-t-0 gl-border-b-solid gl-border-b-1 gl-border-b-gray-100"
stacked="sm"
<div data-testid="devops-score-container">
<devops-score-callout />
<gl-empty-state
v-if="isEmpty"
:title="__('Data is still calculating...')"
:svg-path="noDataImagePath"
>
<template #cell(usage)="{ item }">
<div data-testid="usageCol">
<span>{{ item.usage }}</span>
<gl-badge :variant="item.scoreLevel.variant" size="sm" class="gl-ml-1">{{
item.scoreLevel.label
}}</gl-badge>
</div>
<template #description>
<p class="gl-mb-0">{{ __('It may be several days before you see feature usage data.') }}</p>
<gl-link :href="$options.devopsReportDocsPath">{{
__('See example DevOps Score page in our documentation.')
}}</gl-link>
</template>
</gl-table>
</gl-empty-state>
<div v-else data-testid="devops-score-app">
<div class="gl-text-gray-400 gl-my-4" data-testid="devops-score-note-text">
{{ titleHelperText }}
</div>
<gl-single-stat
unit="%"
size="sm"
:title="s__('DevopsReport|Your score')"
:should-animate="true"
:value="devopsScoreMetrics.averageScore.value"
:meta-icon="devopsScoreMetrics.averageScore.scoreLevel.icon"
:meta-text="devopsScoreMetrics.averageScore.scoreLevel.label"
:variant="devopsScoreMetrics.averageScore.scoreLevel.variant"
/>
<gl-table
:fields="$options.tableHeaderFields"
:items="devopsScoreMetrics.cards"
thead-class="gl-border-t-0 gl-border-b-solid gl-border-b-1 gl-border-b-gray-100"
stacked="sm"
>
<template #cell(usage)="{ item }">
<div data-testid="usageCol">
<span>{{ item.usage }}</span>
<gl-badge :variant="item.scoreLevel.variant" size="sm" class="gl-ml-1">{{
item.scoreLevel.label
}}</gl-badge>
</div>
</template>
</gl-table>
</div>
</div>
</template>

View file

@ -0,0 +1,55 @@
<script>
import { GlBanner } from '@gitlab/ui';
import { parseBoolean, getCookie, setCookie } from '~/lib/utils/common_utils';
import {
INTRO_COOKIE_KEY,
INTRO_BANNER_TITLE,
INTRO_BANNER_BODY,
INTRO_BANNER_ACTION_TEXT,
} from '../constants';
export default {
name: 'DevopsScoreCallout',
components: {
GlBanner,
},
inject: {
devopsReportDocsPath: {
default: '',
},
devopsScoreIntroImagePath: {
default: '',
},
},
data() {
return {
bannerDismissed: parseBoolean(getCookie(INTRO_COOKIE_KEY)),
};
},
i18n: {
title: INTRO_BANNER_TITLE,
body: INTRO_BANNER_BODY,
action: INTRO_BANNER_ACTION_TEXT,
},
methods: {
dismissBanner() {
setCookie(INTRO_COOKIE_KEY, 'true');
this.bannerDismissed = true;
},
},
};
</script>
<template>
<gl-banner
v-if="!bannerDismissed"
class="gl-mt-3"
variant="introduction"
:title="$options.i18n.title"
:button-text="$options.i18n.action"
:button-link="devopsReportDocsPath"
:svg-path="devopsScoreIntroImagePath"
@close="dismissBanner"
>
<p>{{ $options.i18n.body }}</p>
</gl-banner>
</template>

View file

@ -1,5 +1,6 @@
<script>
import { GlEmptyState, GlSprintf, GlLink, GlButton } from '@gitlab/ui';
import { helpPagePath } from '~/helpers/help_page_helper';
export default {
components: {
@ -15,13 +16,11 @@ export default {
svgPath: {
default: '',
},
docsLink: {
default: '',
},
primaryButtonPath: {
default: '',
},
},
docsLink: helpPagePath('development/service_ping/index.md'),
};
</script>
<template>
@ -36,7 +35,7 @@ export default {
"
>
<template #docLink="{ content }">
<gl-link :href="docsLink" target="_blank" data-testid="docs-link">{{ content }}</gl-link>
<gl-link :href="$options.docsLink" target="_blank">{{ content }}</gl-link>
</template>
</gl-sprintf>
<template v-else>
@ -44,12 +43,7 @@ export default {
{{ s__('ServicePing|Turn on service ping to review instance-level analytics.') }}
</p>
<gl-button
category="primary"
variant="success"
:href="primaryButtonPath"
data-testid="power-on-button"
>
<gl-button category="primary" variant="success" :href="primaryButtonPath">
{{ s__('ServicePing|Turn on service ping') }}
</gl-button>
</template>

View file

@ -0,0 +1,11 @@
import { __ } from '~/locale';
export const INTRO_COOKIE_KEY = 'dev_ops_report_intro_callout_dismissed';
export const INTRO_BANNER_TITLE = __('Introducing Your DevOps Report');
export const INTRO_BANNER_BODY = __(
'Your DevOps Report gives an overview of how you are using GitLab from a feature perspective. Use it to view how you compare with other organizations.',
);
export const INTRO_BANNER_ACTION_TEXT = __('Read more');

View file

@ -6,14 +6,14 @@ export default () => {
if (!el) return false;
const { devopsScoreMetrics, devopsReportDocsPath, noDataImagePath } = el.dataset;
const { devopsScoreMetrics, noDataImagePath, devopsScoreIntroImagePath } = el.dataset;
return new Vue({
el,
provide: {
devopsScoreMetrics: JSON.parse(devopsScoreMetrics),
devopsReportDocsPath,
noDataImagePath,
devopsScoreIntroImagePath,
},
render(h) {
return h(DevopsScore);

View file

@ -11,12 +11,7 @@ export default () => {
if (!emptyStateContainer) return false;
const {
isAdmin,
emptyStateSvgPath,
enableServicePingPath,
docsLink,
} = emptyStateContainer.dataset;
const { isAdmin, emptyStateSvgPath, enableServicePingPath } = emptyStateContainer.dataset;
return new Vue({
el: emptyStateContainer,
@ -24,7 +19,6 @@ export default () => {
isAdmin: parseBoolean(isAdmin),
svgPath: emptyStateSvgPath,
primaryButtonPath: enableServicePingPath,
docsLink,
},
render(h) {
return h(ServicePingDisabled);

View file

@ -1,51 +1,83 @@
import axios from '~/lib/utils/axios_utils';
import { joinPaths } from '~/lib/utils/url_utility';
import { buildApiUrl } from './api_utils';
const GROUP_VSA_PATH_BASE =
'/groups/:id/-/analytics/value_stream_analytics/value_streams/:value_stream_id/stages/:stage_id';
const PROJECT_VSA_PATH_BASE = '/:project_path/-/analytics/value_stream_analytics/value_streams';
const PROJECT_VSA_METRICS_BASE = '/:request_path/-/analytics/value_stream_analytics';
const PROJECT_VSA_PATH_BASE = '/:request_path/-/analytics/value_stream_analytics/value_streams';
const PROJECT_VSA_STAGES_PATH = `${PROJECT_VSA_PATH_BASE}/:value_stream_id/stages`;
const PROJECT_VSA_STAGE_DATA_PATH = `${PROJECT_VSA_STAGES_PATH}/:stage_id`;
const buildProjectValueStreamPath = (projectPath, valueStreamId = null) => {
export const METRIC_TYPE_SUMMARY = 'summary';
export const METRIC_TYPE_TIME_SUMMARY = 'time_summary';
const buildProjectMetricsPath = (requestPath) =>
buildApiUrl(PROJECT_VSA_METRICS_BASE).replace(':request_path', requestPath);
const buildProjectValueStreamPath = (requestPath, valueStreamId = null) => {
if (valueStreamId) {
return buildApiUrl(PROJECT_VSA_STAGES_PATH)
.replace(':project_path', projectPath)
.replace(':request_path', requestPath)
.replace(':value_stream_id', valueStreamId);
}
return buildApiUrl(PROJECT_VSA_PATH_BASE).replace(':project_path', projectPath);
return buildApiUrl(PROJECT_VSA_PATH_BASE).replace(':request_path', requestPath);
};
const buildGroupValueStreamPath = ({ groupId, valueStreamId = null, stageId = null }) =>
buildApiUrl(GROUP_VSA_PATH_BASE)
.replace(':id', groupId)
const buildValueStreamStageDataPath = ({ requestPath, valueStreamId = null, stageId = null }) =>
buildApiUrl(PROJECT_VSA_STAGE_DATA_PATH)
.replace(':request_path', requestPath)
.replace(':value_stream_id', valueStreamId)
.replace(':stage_id', stageId);
export const getProjectValueStreams = (projectPath) => {
const url = buildProjectValueStreamPath(projectPath);
export const getProjectValueStreams = (requestPath) => {
const url = buildProjectValueStreamPath(requestPath);
return axios.get(url);
};
export const getProjectValueStreamStages = (projectPath, valueStreamId) => {
const url = buildProjectValueStreamPath(projectPath, valueStreamId);
export const getProjectValueStreamStages = (requestPath, valueStreamId) => {
const url = buildProjectValueStreamPath(requestPath, valueStreamId);
return axios.get(url);
};
// NOTE: legacy VSA request use a different path
// the `requestPath` provides a full url for the request
export const getProjectValueStreamStageData = ({ requestPath, stageId, params }) =>
axios.get(`${requestPath}/events/${stageId}`, { params });
axios.get(joinPaths(requestPath, 'events', stageId), { params });
export const getProjectValueStreamMetrics = (requestPath, params) =>
axios.get(requestPath, { params });
/**
* Shared group VSA paths
* We share some endpoints across and group and project level VSA
* When used for project level VSA, requests should include the `project_id` in the params object
* Dedicated project VSA paths
*/
export const getValueStreamStageMedian = ({ groupId, valueStreamId, stageId }, params = {}) => {
const stageBase = buildGroupValueStreamPath({ groupId, valueStreamId, stageId });
return axios.get(`${stageBase}/median`, { params });
export const getValueStreamStageMedian = ({ requestPath, valueStreamId, stageId }, params = {}) => {
const stageBase = buildValueStreamStageDataPath({ requestPath, valueStreamId, stageId });
return axios.get(joinPaths(stageBase, 'median'), { params });
};
export const getValueStreamStageRecords = (
{ requestPath, valueStreamId, stageId },
params = {},
) => {
const stageBase = buildValueStreamStageDataPath({ requestPath, valueStreamId, stageId });
return axios.get(joinPaths(stageBase, 'records'), { params });
};
export const getValueStreamStageCounts = ({ requestPath, valueStreamId, stageId }, params = {}) => {
const stageBase = buildValueStreamStageDataPath({ requestPath, valueStreamId, stageId });
return axios.get(joinPaths(stageBase, 'count'), { params });
};
export const getValueStreamMetrics = ({
endpoint = METRIC_TYPE_SUMMARY,
requestPath,
params = {},
}) => {
const metricBase = buildProjectMetricsPath(requestPath);
return axios.get(joinPaths(metricBase, endpoint), { params });
};
export const getValueStreamSummaryMetrics = (requestPath, params = {}) => {
const metricBase = buildProjectMetricsPath(requestPath);
return axios.get(joinPaths(metricBase, 'summary'), { params });
};

View file

@ -11,7 +11,7 @@ import renderMetrics from './render_metrics';
// Delegates to syntax highlight and render math & mermaid diagrams.
//
$.fn.renderGFM = function renderGFM() {
syntaxHighlight(this.find('.js-syntax-highlight'));
syntaxHighlight(this.find('.js-syntax-highlight').get());
renderMath(this.find('.js-render-math'));
renderMermaid(this.find('.js-render-mermaid'));
highlightCurrentUser(this.find('.gfm-project_member').get());

View file

@ -25,6 +25,11 @@ export default {
required: false,
default: false,
},
isBinary: {
type: Boolean,
required: false,
default: false,
},
activeViewerType: {
type: String,
required: false,
@ -81,6 +86,7 @@ export default {
:raw-path="blob.rawPath"
:active-viewer="viewer"
:has-render-error="hasRenderError"
:is-binary="isBinary"
@copy="proxyCopyRequest"
/>
</div>

View file

@ -32,6 +32,11 @@ export default {
required: false,
default: false,
},
isBinary: {
type: Boolean,
required: false,
default: false,
},
},
computed: {
downloadUrl() {
@ -43,6 +48,9 @@ export default {
getBlobHashTarget() {
return `[data-blob-hash="${this.blobHash}"]`;
},
showCopyButton() {
return !this.hasRenderError && !this.isBinary;
},
},
BTN_COPY_CONTENTS_TITLE,
BTN_DOWNLOAD_TITLE,
@ -52,7 +60,7 @@ export default {
<template>
<gl-button-group data-qa-selector="default_actions_container">
<gl-button
v-if="!hasRenderError"
v-if="showCopyButton"
v-gl-tooltip.hover
:aria-label="$options.BTN_COPY_CONTENTS_TITLE"
:title="$options.BTN_COPY_CONTENTS_TITLE"
@ -65,6 +73,7 @@ export default {
variant="default"
/>
<gl-button
v-if="!isBinary"
v-gl-tooltip.hover
:aria-label="$options.BTN_RAW_TITLE"
:title="$options.BTN_RAW_TITLE"

View file

@ -1,11 +1,12 @@
<script>
import { GlAlert, GlLoadingIcon, GlTable } from '@gitlab/ui';
import { GlLoadingIcon, GlTable } from '@gitlab/ui';
import Papa from 'papaparse';
import PapaParseAlert from '~/vue_shared/components/papa_parse_alert.vue';
export default {
components: {
PapaParseAlert,
GlTable,
GlAlert,
GlLoadingIcon,
},
props: {
@ -17,7 +18,7 @@ export default {
data() {
return {
items: [],
errorMessage: null,
papaParseErrors: [],
loading: true,
};
},
@ -26,7 +27,7 @@ export default {
this.items = parsed.data;
if (parsed.errors.length) {
this.errorMessage = parsed.errors.map((e) => e.message).join('. ');
this.papaParseErrors = parsed.errors;
}
this.loading = false;
@ -40,9 +41,7 @@ export default {
<gl-loading-icon class="gl-mt-5" size="lg" />
</div>
<div v-else>
<gl-alert v-if="errorMessage" variant="danger" :dismissible="false">
{{ errorMessage }}
</gl-alert>
<papa-parse-alert v-if="papaParseErrors.length" :papa-parse-errors="papaParseErrors" />
<gl-table
:empty-text="__('No CSV data to display.')"
:items="items"

View file

@ -36,6 +36,34 @@ const loadRichBlobViewer = (type) => {
}
};
const loadViewer = (viewerParam) => {
const viewer = viewerParam;
const url = viewer.getAttribute('data-url');
if (!url || viewer.getAttribute('data-loaded') || viewer.getAttribute('data-loading')) {
return Promise.resolve(viewer);
}
viewer.setAttribute('data-loading', 'true');
return axios.get(url).then(({ data }) => {
viewer.innerHTML = data.html;
window.requestIdleCallback(() => {
viewer.removeAttribute('data-loading');
});
return viewer;
});
};
export const initAuxiliaryViewer = () => {
const auxiliaryViewer = document.querySelector('.blob-viewer[data-type="auxiliary"]');
if (!auxiliaryViewer) return;
loadViewer(auxiliaryViewer);
};
export const handleBlobRichViewer = (viewer, type) => {
if (!viewer || !type) return;
@ -49,27 +77,20 @@ export const handleBlobRichViewer = (viewer, type) => {
});
};
export default class BlobViewer {
export class BlobViewer {
constructor() {
performanceMarkAndMeasure({
mark: REPO_BLOB_LOAD_VIEWER_START,
});
const viewer = document.querySelector('.blob-viewer[data-type="rich"]');
const type = viewer?.dataset?.richType;
BlobViewer.initAuxiliaryViewer();
initAuxiliaryViewer();
handleBlobRichViewer(viewer, type);
this.initMainViewers();
}
static initAuxiliaryViewer() {
const auxiliaryViewer = document.querySelector('.blob-viewer[data-type="auxiliary"]');
if (!auxiliaryViewer) return;
BlobViewer.loadViewer(auxiliaryViewer);
}
initMainViewers() {
this.$fileHolder = $('.file-holder');
if (!this.$fileHolder.length) return;
@ -173,7 +194,7 @@ export default class BlobViewer {
this.activeViewer = newViewer;
this.toggleCopyButtonState();
BlobViewer.loadViewer(newViewer)
loadViewer(newViewer)
.then((viewer) => {
$(viewer).renderGFM();
window.requestIdleCallback(() => {
@ -205,25 +226,4 @@ export default class BlobViewer {
}),
);
}
static loadViewer(viewerParam) {
const viewer = viewerParam;
const url = viewer.getAttribute('data-url');
if (!url || viewer.getAttribute('data-loaded') || viewer.getAttribute('data-loading')) {
return Promise.resolve(viewer);
}
viewer.setAttribute('data-loading', 'true');
return axios.get(url).then(({ data }) => {
viewer.innerHTML = data.html;
window.requestIdleCallback(() => {
viewer.removeAttribute('data-loading');
});
return viewer;
});
}
}

View file

@ -69,6 +69,7 @@ export default () => {
const currentAction = $('.js-file-title').data('currentAction');
const projectId = editBlobForm.data('project-id');
const isMarkdown = editBlobForm.data('is-markdown');
const previewMarkdownPath = editBlobForm.data('previewMarkdownPath');
const commitButton = $('.js-commit-button');
const cancelLink = $('.btn.btn-cancel');
@ -80,6 +81,7 @@ export default () => {
currentAction,
projectId,
isMarkdown,
previewMarkdownPath,
});
initPopovers();
initCodeQualityWalkthroughStep();

View file

@ -1,6 +1,7 @@
import $ from 'jquery';
import { FileTemplateExtension } from '~/editor/extensions/source_editor_file_template_ext';
import SourceEditor from '~/editor/source_editor';
import { getBlobLanguage } from '~/editor/utils';
import createFlash from '~/flash';
import axios from '~/lib/utils/axios_utils';
import { addEditorMarkdownListeners } from '~/lib/utils/text_markdown';
@ -10,22 +11,13 @@ import { BLOB_EDITOR_ERROR, BLOB_PREVIEW_ERROR } from './constants';
export default class EditBlob {
// The options object has:
// assetsPath, filePath, currentAction, projectId, isMarkdown
// assetsPath, filePath, currentAction, projectId, isMarkdown, previewMarkdownPath
constructor(options) {
this.options = options;
this.configureMonacoEditor();
if (this.options.isMarkdown) {
import('~/editor/extensions/source_editor_markdown_ext')
.then(({ EditorMarkdownExtension: MarkdownExtension } = {}) => {
this.editor.use(new MarkdownExtension());
addEditorMarkdownListeners(this.editor);
})
.catch((e) =>
createFlash({
message: `${BLOB_EDITOR_ERROR}: ${e}`,
}),
);
this.fetchMarkdownExtension();
}
this.initModePanesAndLinks();
@ -34,12 +26,33 @@ export default class EditBlob {
this.editor.focus();
}
fetchMarkdownExtension() {
import('~/editor/extensions/source_editor_markdown_ext')
.then(({ EditorMarkdownExtension: MarkdownExtension } = {}) => {
this.editor.use(
new MarkdownExtension({
instance: this.editor,
previewMarkdownPath: this.options.previewMarkdownPath,
}),
);
this.hasMarkdownExtension = true;
addEditorMarkdownListeners(this.editor);
})
.catch((e) =>
createFlash({
message: `${BLOB_EDITOR_ERROR}: ${e}`,
}),
);
}
configureMonacoEditor() {
const editorEl = document.getElementById('editor');
const fileNameEl = document.getElementById('file_path') || document.getElementById('file_name');
const fileContentEl = document.getElementById('file-content');
const form = document.querySelector('.js-edit-blob-form');
this.hasMarkdownExtension = false;
const rootEditor = new SourceEditor();
this.editor = rootEditor.createInstance({
@ -51,6 +64,12 @@ export default class EditBlob {
fileNameEl.addEventListener('change', () => {
this.editor.updateModelLanguage(fileNameEl.value);
const newLang = getBlobLanguage(fileNameEl.value);
if (newLang === 'markdown') {
if (!this.hasMarkdownExtension) {
this.fetchMarkdownExtension();
}
}
});
form.addEventListener('submit', () => {

View file

@ -204,6 +204,9 @@ export const FiltersInfo = {
releaseTag: {
negatedSupport: true,
},
types: {
negatedSupport: true,
},
search: {
negatedSupport: false,
},

View file

@ -65,7 +65,7 @@ export default {
},
computed: {
...mapState(['isShowingLabels', 'issuableType', 'allowSubEpics']),
...mapGetters(['isEpicBoard']),
...mapGetters(['isEpicBoard', 'isProjectBoard']),
cappedAssignees() {
// e.g. maxRender is 4,
// Render up to all 4 assignees if there are only 4 assigness
@ -144,6 +144,9 @@ export default {
totalProgress() {
return Math.round((this.item.descendantWeightSum.closedIssues / this.totalWeight) * 100);
},
showReferencePath() {
return !this.isProjectBoard && this.itemReferencePath;
},
},
methods: {
...mapActions(['performSearch', 'setError']),
@ -247,7 +250,7 @@ export default {
:class="{ 'gl-font-base': isEpicBoard }"
>
<tooltip-on-truncate
v-if="itemReferencePath"
v-if="showReferencePath"
:title="itemReferencePath"
placement="bottom"
class="board-item-path gl-text-truncate gl-font-weight-bold"

View file

@ -79,7 +79,7 @@ export default {
'is-collapsed': list.collapsed,
'board-type-assignee': list.listType === 'assignee',
}"
:data-id="list.id"
:data-list-id="list.id"
class="board gl-display-inline-block gl-h-full gl-px-3 gl-vertical-align-top gl-white-space-normal is-expandable"
data-qa-selector="board_list"
>

View file

@ -6,10 +6,12 @@ import { mapState, mapGetters, mapActions } from 'vuex';
import BoardAddNewColumn from 'ee_else_ce/boards/components/board_add_new_column.vue';
import defaultSortableConfig from '~/sortable/sortable_config';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { DraggableItemTypes } from '../constants';
import BoardColumn from './board_column.vue';
import BoardColumnDeprecated from './board_column_deprecated.vue';
export default {
draggableItemTypes: DraggableItemTypes,
components: {
BoardAddNewColumn,
BoardColumn,
@ -76,19 +78,6 @@ export default {
const el = this.canDragColumns ? this.$refs.list.$el : this.$refs.list;
el.scrollTo({ left: el.scrollWidth, behavior: 'smooth' });
},
handleDragOnEnd(params) {
const { item, newIndex, oldIndex, to } = params;
const listId = item.dataset.id;
const replacedListId = to.children[newIndex].dataset.id;
this.moveList({
listId,
replacedListId,
newIndex,
adjustmentValue: newIndex < oldIndex ? 1 : -1,
});
},
},
};
</script>
@ -104,7 +93,7 @@ export default {
ref="list"
v-bind="draggableOptions"
class="boards-list gl-w-full gl-py-5 gl-px-3 gl-white-space-nowrap"
@end="handleDragOnEnd"
@end="moveList"
>
<component
:is="boardColumnComponent"
@ -112,6 +101,7 @@ export default {
:key="index"
ref="board"
:list="list"
:data-draggable-item-type="$options.draggableItemTypes.list"
:disabled="disabled"
/>

View file

@ -87,6 +87,7 @@ export default {
v-bind="$attrs"
:open="isSidebarOpen"
class="boards-sidebar gl-absolute"
variant="sidebar"
@close="handleClose"
>
<template #title>
@ -159,7 +160,7 @@ export default {
:issuable-type="issuableType"
data-testid="sidebar-due-date"
/>
<board-sidebar-labels-select class="labels" />
<board-sidebar-labels-select class="block labels" />
<sidebar-weight-widget
v-if="weightFeatureAvailable"
:iid="activeBoardItem.iid"

View file

@ -27,7 +27,15 @@ export default {
},
computed: {
urlParams() {
const { authorUsername, labelName, assigneeUsername, search } = this.filterParams;
const {
authorUsername,
labelName,
assigneeUsername,
search,
milestoneTitle,
types,
weight,
} = this.filterParams;
let notParams = {};
if (Object.prototype.hasOwnProperty.call(this.filterParams, 'not')) {
@ -36,6 +44,9 @@ export default {
'not[label_name][]': this.filterParams.not.labelName,
'not[author_username]': this.filterParams.not.authorUsername,
'not[assignee_username]': this.filterParams.not.assigneeUsername,
'not[types]': this.filterParams.not.types,
'not[milestone_title]': this.filterParams.not.milestoneTitle,
'not[weight]': this.filterParams.not.weight,
},
undefined,
);
@ -46,7 +57,10 @@ export default {
author_username: authorUsername,
'label_name[]': labelName,
assignee_username: assigneeUsername,
milestone_title: milestoneTitle,
search,
types,
weight,
};
},
},
@ -64,7 +78,15 @@ export default {
this.performSearch();
},
getFilteredSearchValue() {
const { authorUsername, labelName, assigneeUsername, search } = this.filterParams;
const {
authorUsername,
labelName,
assigneeUsername,
search,
milestoneTitle,
types,
weight,
} = this.filterParams;
const filteredSearchValue = [];
if (authorUsername) {
@ -81,6 +103,13 @@ export default {
});
}
if (types) {
filteredSearchValue.push({
type: 'types',
value: { data: types, operator: '=' },
});
}
if (labelName?.length) {
filteredSearchValue.push(
...labelName.map((label) => ({
@ -90,6 +119,20 @@ export default {
);
}
if (milestoneTitle) {
filteredSearchValue.push({
type: 'milestone_title',
value: { data: milestoneTitle, operator: '=' },
});
}
if (weight) {
filteredSearchValue.push({
type: 'weight',
value: { data: weight, operator: '=' },
});
}
if (this.filterParams['not[authorUsername]']) {
filteredSearchValue.push({
type: 'author_username',
@ -97,6 +140,20 @@ export default {
});
}
if (this.filterParams['not[milestoneTitle]']) {
filteredSearchValue.push({
type: 'milestone_title',
value: { data: this.filterParams['not[milestoneTitle]'], operator: '!=' },
});
}
if (this.filterParams['not[weight]']) {
filteredSearchValue.push({
type: 'weight',
value: { data: this.filterParams['not[weight]'], operator: '!=' },
});
}
if (this.filterParams['not[assigneeUsername]']) {
filteredSearchValue.push({
type: 'assignee_username',
@ -113,6 +170,13 @@ export default {
);
}
if (this.filterParams['not[types]']) {
filteredSearchValue.push({
type: 'types',
value: { data: this.filterParams['not[types]'], operator: '!=' },
});
}
if (search) {
filteredSearchValue.push(search);
}
@ -140,9 +204,18 @@ export default {
case 'assignee_username':
filterParams.assigneeUsername = filter.value.data;
break;
case 'types':
filterParams.types = filter.value.data;
break;
case 'label_name':
labels.push(filter.value.data);
break;
case 'milestone_title':
filterParams.milestoneTitle = filter.value.data;
break;
case 'weight':
filterParams.weight = filter.value.data;
break;
case 'filtered-search-term':
if (filter.value.data) plainText.push(filter.value.data);
break;

View file

@ -2,7 +2,7 @@
import { GlModal, GlAlert } from '@gitlab/ui';
import { mapGetters, mapActions, mapState } from 'vuex';
import ListLabel from '~/boards/models/label';
import { TYPE_ITERATION, TYPE_MILESTONE, TYPE_USER } from '~/graphql_shared/constants';
import { TYPE_ITERATION, TYPE_MILESTONE } from '~/graphql_shared/constants';
import { convertToGraphQLId } from '~/graphql_shared/utils';
import { getParameterByName, visitUrl } from '~/lib/utils/url_utility';
import { __, s__ } from '~/locale';
@ -18,10 +18,9 @@ const boardDefaults = {
id: false,
name: '',
labels: [],
milestone_id: undefined,
milestone: {},
iteration_id: undefined,
assignee: {},
assignee_id: undefined,
weight: null,
hide_backlog_list: false,
hide_closed_list: false,
@ -190,13 +189,10 @@ export default {
issueBoardScopeMutationVariables() {
return {
weight: this.board.weight,
assigneeId: this.board.assignee?.id
? convertToGraphQLId(TYPE_USER, this.board.assignee.id)
assigneeId: this.board.assignee?.id || null,
milestoneId: this.board.milestone?.id
? convertToGraphQLId(TYPE_MILESTONE, this.board.milestone.id)
: null,
milestoneId:
this.board.milestone?.id || this.board.milestone?.id === 0
? convertToGraphQLId(TYPE_MILESTONE, this.board.milestone.id)
: null,
iterationId: this.board.iteration_id
? convertToGraphQLId(TYPE_ITERATION, this.board.iteration_id)
: null,
@ -306,6 +302,19 @@ export default {
}
});
},
setAssignee(assigneeId) {
this.$set(this.board, 'assignee', {
id: assigneeId,
});
},
setMilestone(milestoneId) {
this.$set(this.board, 'milestone', {
id: milestoneId,
});
},
setWeight(weight) {
this.$set(this.board, 'weight', weight);
},
},
};
</script>
@ -373,6 +382,9 @@ export default {
:weights="weights"
@set-iteration="setIteration"
@set-board-labels="setBoardLabels"
@set-assignee="setAssignee"
@set-milestone="setMilestone"
@set-weight="setWeight"
/>
</form>
</gl-modal>

View file

@ -6,12 +6,13 @@ import { sortableStart, sortableEnd } from '~/boards/mixins/sortable_default_opt
import { sprintf, __ } from '~/locale';
import defaultSortableConfig from '~/sortable/sortable_config';
import Tracking from '~/tracking';
import { toggleFormEventPrefix } from '../constants';
import { toggleFormEventPrefix, DraggableItemTypes } from '../constants';
import eventHub from '../eventhub';
import BoardCard from './board_card.vue';
import BoardNewIssue from './board_new_issue.vue';
export default {
draggableItemTypes: DraggableItemTypes,
name: 'BoardList',
i18n: {
loading: __('Loading'),
@ -27,11 +28,6 @@ export default {
GlIntersectionObserver,
},
mixins: [Tracking.mixin()],
inject: {
canAdminList: {
default: false,
},
},
props: {
disabled: {
type: Boolean,
@ -89,8 +85,8 @@ export default {
return !this.isEpicBoard && this.list.listType !== 'closed' && this.showIssueForm;
},
listRef() {
// When list is draggable, the reference to the list needs to be accessed differently
return this.canAdminList ? this.$refs.list.$el : this.$refs.list;
// When list is draggable, the reference to the list needs to be accessed differently
return this.canMoveIssue ? this.$refs.list.$el : this.$refs.list;
},
showingAllItems() {
return this.boardItems.length === this.listItemsCount;
@ -100,8 +96,11 @@ export default {
? this.$options.i18n.showingAllEpics
: this.$options.i18n.showingAllIssues;
},
canMoveIssue() {
return !this.disabled;
},
treeRootWrapper() {
return this.canAdminList && !this.listsFlags[this.list.id]?.addItemToListInProgress
return this.canMoveIssue && !this.listsFlags[this.list.id]?.addItemToListInProgress
? Draggable
: 'ul';
},
@ -116,7 +115,7 @@ export default {
value: this.boardItems,
};
return this.canAdminList ? options : {};
return this.canMoveIssue ? options : {};
},
},
watch: {
@ -172,15 +171,33 @@ export default {
this.loadNextPage();
}
},
handleDragOnStart() {
handleDragOnStart({
item: {
dataset: { draggableItemType },
},
}) {
if (draggableItemType !== DraggableItemTypes.card) {
return;
}
sortableStart();
this.track('drag_card', { label: 'board' });
},
handleDragOnEnd(params) {
handleDragOnEnd({
newIndex: originalNewIndex,
oldIndex,
from,
to,
item: {
dataset: { draggableItemType, itemId, itemIid, itemPath },
},
}) {
if (draggableItemType !== DraggableItemTypes.card) {
return;
}
sortableEnd();
const { oldIndex, from, to, item } = params;
let { newIndex } = params;
const { itemId, itemIid, itemPath } = item.dataset;
let newIndex = originalNewIndex;
let { children } = to;
let moveBeforeId;
let moveAfterId;
@ -267,6 +284,7 @@ export default {
:index="index"
:list="list"
:item="item"
:data-draggable-item-type="$options.draggableItemTypes.card"
:disabled="disabled"
/>
<gl-intersection-observer @appear="onReachingListBottom">

View file

@ -1,21 +1,19 @@
<script>
import { GlButton } from '@gitlab/ui';
import { mapActions, mapGetters, mapState } from 'vuex';
import { getMilestone } from 'ee_else_ce/boards/boards_util';
import BoardNewIssueMixin from 'ee_else_ce/boards/mixins/board_new_issue';
import { __ } from '~/locale';
import { toggleFormEventPrefix } from '../constants';
import eventHub from '../eventhub';
import BoardNewItem from './board_new_item.vue';
import ProjectSelect from './project_select.vue';
export default {
name: 'BoardNewIssue',
i18n: {
cancel: __('Cancel'),
},
components: {
BoardNewItem,
ProjectSelect,
GlButton,
},
mixins: [BoardNewIssueMixin],
inject: ['groupId'],
@ -25,106 +23,55 @@ export default {
required: true,
},
},
data() {
return {
title: '',
};
},
computed: {
...mapState(['selectedProject']),
...mapGetters(['isGroupBoard', 'isEpicBoard']),
/**
* We've extended this component in EE where
* submitButtonTitle returns a different string
* hence this is kept as a computed prop.
*/
submitButtonTitle() {
return __('Create issue');
...mapState(['selectedProject', 'fullPath']),
...mapGetters(['isGroupBoard']),
formEventPrefix() {
return toggleFormEventPrefix.issue;
},
disabled() {
if (this.isGroupBoard) {
return this.title === '' || !this.selectedProject.name;
}
return this.title === '';
disableSubmit() {
return this.isGroupBoard ? !this.selectedProject.name : false;
},
inputFieldId() {
// eslint-disable-next-line @gitlab/require-i18n-strings
return `${this.list.id}-title`;
projectPath() {
return this.isGroupBoard ? this.selectedProject.fullPath : this.fullPath;
},
},
mounted() {
this.$refs.input.focus();
eventHub.$on('setSelectedProject', this.setSelectedProject);
},
methods: {
...mapActions(['addListNewIssue']),
submit() {
const { title } = this;
submit({ title }) {
const labels = this.list.label ? [this.list.label] : [];
const assignees = this.list.assignee ? [this.list.assignee] : [];
const milestone = getMilestone(this.list);
eventHub.$emit(`scroll-board-list-${this.list.id}`);
return this.addListNewIssue({
list: this.list,
issueInput: {
title,
labelIds: labels?.map((l) => l.id),
assigneeIds: assignees?.map((a) => a?.id),
milestoneId: milestone?.id,
projectPath: this.selectedProject.fullPath,
...this.extraIssueInput(),
projectPath: this.projectPath,
},
list: this.list,
}).then(() => {
this.reset();
this.cancel();
});
},
reset() {
this.title = '';
eventHub.$emit(`${toggleFormEventPrefix.issue}${this.list.id}`);
cancel() {
eventHub.$emit(`${this.formEventPrefix}${this.list.id}`);
},
},
};
</script>
<template>
<div class="board-new-issue-form">
<div class="board-card position-relative p-3 rounded">
<form ref="submitForm" @submit.prevent="submit">
<label :for="inputFieldId" class="label-bold">{{ __('Title') }}</label>
<input
:id="inputFieldId"
ref="input"
v-model="title"
class="form-control"
type="text"
name="issue_title"
autocomplete="off"
/>
<project-select v-if="isGroupBoard && !isEpicBoard" :group-id="groupId" :list="list" />
<div class="clearfix gl-mt-3">
<gl-button
ref="submitButton"
:disabled="disabled"
class="float-left js-no-auto-disable"
variant="confirm"
category="primary"
type="submit"
>
{{ submitButtonTitle }}
</gl-button>
<gl-button
ref="cancelButton"
class="float-right"
type="button"
variant="default"
@click="reset"
>
{{ $options.i18n.cancel }}
</gl-button>
</div>
</form>
</div>
</div>
<board-new-item
:list="list"
:form-event-prefix="formEventPrefix"
:submit-button-title="__('Create issue')"
:disable-submit="disableSubmit"
@form-submit="submit"
@form-cancel="cancel"
>
<project-select v-if="isGroupBoard" :group-id="groupId" :list="list" />
</board-new-item>
</template>

View file

@ -11,7 +11,7 @@ import ProjectSelect from './project_select_deprecated.vue';
// This component is being replaced in favor of './board_new_issue.vue' for GraphQL boards
export default {
name: 'BoardNewIssue',
name: 'BoardNewIssueDeprecated',
components: {
ProjectSelect,
GlButton,

View file

@ -0,0 +1,95 @@
<script>
import { GlForm, GlFormInput, GlButton } from '@gitlab/ui';
import { __ } from '~/locale';
import eventHub from '../eventhub';
export default {
i18n: {
cancel: __('Cancel'),
},
components: {
GlForm,
GlFormInput,
GlButton,
},
props: {
list: {
type: Object,
required: true,
},
formEventPrefix: {
type: String,
required: true,
},
disableSubmit: {
type: Boolean,
required: false,
default: false,
},
submitButtonTitle: {
type: String,
required: false,
default: __('Create issue'),
},
},
data() {
return {
title: '',
};
},
computed: {
inputFieldId() {
// eslint-disable-next-line @gitlab/require-i18n-strings
return `${this.list.id}-title`;
},
},
methods: {
handleFormCancel() {
this.title = '';
this.$emit('form-cancel');
},
handleFormSubmit() {
const { title, list } = this;
eventHub.$emit(`scroll-board-list-${this.list.id}`);
this.$emit('form-submit', {
title,
list,
});
},
},
};
</script>
<template>
<div class="board-new-issue-form">
<div class="board-card position-relative gl-p-5 rounded">
<gl-form @submit.prevent="handleFormSubmit" @reset="handleFormCancel">
<label :for="inputFieldId" class="gl-font-weight-bold">{{ __('Title') }}</label>
<gl-form-input
:id="inputFieldId"
v-model.trim="title"
:autofocus="true"
autocomplete="off"
type="text"
name="issue_title"
/>
<slot></slot>
<div class="gl-clearfix gl-mt-4">
<gl-button
:disabled="!title || disableSubmit"
class="gl-float-left js-no-auto-disable"
variant="confirm"
type="submit"
>
{{ submitButtonTitle }}
</gl-button>
<gl-button class="gl-float-right js-no-auto-disable" type="reset">
{{ $options.i18n.cancel }}
</gl-button>
</div>
</gl-form>
</div>
</div>
</template>

View file

@ -1,4 +1,6 @@
<script>
import { GlFilteredSearchToken } from '@gitlab/ui';
import { mapActions } from 'vuex';
import BoardFilteredSearch from '~/boards/components/board_filtered_search.vue';
import issueBoardFilters from '~/boards/issue_board_filters';
import { TYPE_USER } from '~/graphql_shared/constants';
@ -6,13 +8,24 @@ import { convertToGraphQLId } from '~/graphql_shared/utils';
import { __ } from '~/locale';
import AuthorToken from '~/vue_shared/components/filtered_search_bar/tokens/author_token.vue';
import LabelToken from '~/vue_shared/components/filtered_search_bar/tokens/label_token.vue';
import MilestoneToken from '~/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue';
import WeightToken from '~/vue_shared/components/filtered_search_bar/tokens/weight_token.vue';
export default {
types: {
ISSUE: 'ISSUE',
INCIDENT: 'INCIDENT',
},
i18n: {
search: __('Search'),
label: __('Label'),
author: __('Author'),
assignee: __('Assignee'),
type: __('Type'),
incident: __('Incident'),
issue: __('Issue'),
milestone: __('Milestone'),
weight: __('Weight'),
is: __('is'),
isNot: __('is not'),
},
@ -29,7 +42,19 @@ export default {
},
computed: {
tokens() {
const { label, is, isNot, author, assignee } = this.$options.i18n;
const {
label,
is,
isNot,
author,
assignee,
issue,
incident,
type,
milestone,
weight,
} = this.$options.i18n;
const { types } = this.$options;
const { fetchAuthors, fetchLabels } = issueBoardFilters(
this.$apollo,
this.fullPath,
@ -77,10 +102,40 @@ export default {
fetchAuthors,
preloadedAuthors: this.preloadedAuthors(),
},
{
icon: 'issues',
title: type,
type: 'types',
operators: [{ value: '=', description: is }],
token: GlFilteredSearchToken,
unique: true,
options: [
{ icon: 'issue-type-issue', value: types.ISSUE, title: issue },
{ icon: 'issue-type-incident', value: types.INCIDENT, title: incident },
],
},
{
type: 'milestone_title',
title: milestone,
icon: 'clock',
symbol: '%',
token: MilestoneToken,
unique: true,
defaultMilestones: [], // todo: https://gitlab.com/gitlab-org/gitlab/-/issues/337044#note_640010094
fetchMilestones: this.fetchMilestones,
},
{
type: 'weight',
title: weight,
icon: 'weight',
token: WeightToken,
unique: true,
},
];
},
},
methods: {
...mapActions(['fetchMilestones']),
preloadedAuthors() {
return gon?.current_user_id
? [

View file

@ -87,7 +87,7 @@ export default {
<div>
<header
v-show="showHeader"
class="gl-display-flex gl-justify-content-space-between gl-align-items-flex-start gl-mb-3"
class="gl-display-flex gl-justify-content-space-between gl-align-items-center gl-mb-2"
>
<span class="gl-vertical-align-middle">
<slot name="title">
@ -97,7 +97,8 @@ export default {
</span>
<gl-button
v-if="canUpdate"
variant="link"
category="tertiary"
size="small"
class="gl-text-gray-900! gl-ml-5 js-sidebar-dropdown-toggle edit-link"
data-testid="edit-button"
@click="toggle"

View file

@ -25,6 +25,8 @@ export default {
data() {
return {
loading: false,
oldIid: null,
isEditing: false,
};
},
computed: {
@ -72,6 +74,15 @@ export default {
return this.labelsFetchPath || projectLabelsFetchPath;
},
},
watch: {
activeBoardItem(_, oldVal) {
if (this.isEditing) {
this.oldIid = oldVal.iid;
} else {
this.oldIid = null;
}
},
},
methods: {
...mapActions(['setActiveBoardItemLabels', 'setError']),
async setLabels(payload) {
@ -84,8 +95,14 @@ export default {
.filter((label) => !payload.find((selected) => selected.id === label.id))
.map((label) => label.id);
const input = { addLabelIds, removeLabelIds, projectPath: this.projectPathForActiveIssue };
const input = {
addLabelIds,
removeLabelIds,
projectPath: this.projectPathForActiveIssue,
iid: this.oldIid,
};
await this.setActiveBoardItemLabels(input);
this.oldIid = null;
} catch (e) {
this.setError({ error: e, message: __('An error occurred while updating labels.') });
} finally {
@ -115,6 +132,8 @@ export default {
:title="__('Labels')"
:loading="loading"
data-testid="sidebar-labels"
@open="isEditing = true"
@close="isEditing = false"
>
<template #collapsed>
<gl-label

View file

@ -109,9 +109,16 @@ export const FilterFields = {
'myReactionEmoji',
'releaseTag',
'search',
'types',
'weight',
],
};
export const DraggableItemTypes = {
card: 'card',
list: 'list',
};
export default {
BoardType,
ListType,

View file

@ -9,6 +9,7 @@ query ListIssues(
) {
group(fullPath: $fullPath) @include(if: $isGroup) {
board(id: $boardId) {
hideBacklogList
lists(issueFilters: $filters) {
nodes {
...BoardListFragment
@ -18,6 +19,7 @@ query ListIssues(
}
project(fullPath: $fullPath) @include(if: $isProject) {
board(id: $boardId) {
hideBacklogList
lists(issueFilters: $filters) {
nodes {
...BoardListFragment

View file

@ -3,7 +3,7 @@
query GroupBoardMembers($fullPath: ID!, $search: String) {
workspace: group(fullPath: $fullPath) {
__typename
assignees: groupMembers(search: $search) {
assignees: groupMembers(search: $search, relations: [DIRECT, DESCENDANTS, INHERITED]) {
__typename
nodes {
id

View file

@ -0,0 +1,10 @@
query GroupBoardMilestones($fullPath: ID!, $searchTerm: String) {
group(fullPath: $fullPath) {
milestones(includeAncestors: true, searchTitle: $searchTerm) {
nodes {
id
title
}
}
}
}

View file

@ -0,0 +1,10 @@
query ProjectBoardMilestones($fullPath: ID!, $searchTerm: String) {
project(fullPath: $fullPath) {
milestones(searchTitle: $searchTerm, includeAncestors: true) {
nodes {
id
title
}
}
}
}

View file

@ -11,7 +11,12 @@ import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
Vue.use(VueApollo);
const apolloProvider = new VueApollo({
defaultClient: createDefaultClient(),
defaultClient: createDefaultClient(
{},
{
assumeImmutableResults: true,
},
),
});
export default (params = {}) => {

View file

@ -1,4 +1,5 @@
import * as Sentry from '@sentry/browser';
import { sortBy } from 'lodash';
import {
BoardType,
ListType,
@ -13,14 +14,14 @@ import {
issuableTypes,
FilterFields,
ListTypeTitles,
DraggableItemTypes,
} from 'ee_else_ce/boards/constants';
import createBoardListMutation from 'ee_else_ce/boards/graphql/board_list_create.mutation.graphql';
import issueMoveListMutation from 'ee_else_ce/boards/graphql/issue_move_list.mutation.graphql';
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import createGqClient, { fetchPolicies } from '~/lib/graphql';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
// eslint-disable-next-line import/no-deprecated
import { urlParamsToObject } from '~/lib/utils/url_utility';
import { queryToObject } from '~/lib/utils/url_utility';
import { s__ } from '~/locale';
import {
formatBoardLists,
@ -35,10 +36,13 @@ import {
filterVariables,
} from '../boards_util';
import boardLabelsQuery from '../graphql/board_labels.query.graphql';
import groupBoardMilestonesQuery from '../graphql/group_board_milestones.query.graphql';
import groupProjectsQuery from '../graphql/group_projects.query.graphql';
import issueCreateMutation from '../graphql/issue_create.mutation.graphql';
import issueSetLabelsMutation from '../graphql/issue_set_labels.mutation.graphql';
import listsIssuesQuery from '../graphql/lists_issues.query.graphql';
import projectBoardMilestonesQuery from '../graphql/project_board_milestones.query.graphql';
import * as types from './mutation_types';
export const gqlClient = createGqClient(
@ -76,8 +80,7 @@ export default {
performSearch({ dispatch }) {
dispatch(
'setFilters',
// eslint-disable-next-line import/no-deprecated
convertObjectPropsToCamelCase(urlParamsToObject(window.location.search)),
convertObjectPropsToCamelCase(queryToObject(window.location.search, { gatherArrays: true })),
);
if (gon.features.graphqlBoardLists) {
@ -215,34 +218,99 @@ export default {
});
},
fetchMilestones({ state, commit }, searchTerm) {
commit(types.RECEIVE_MILESTONES_REQUEST);
const { fullPath, boardType } = state;
const variables = {
fullPath,
searchTerm,
};
let query;
if (boardType === BoardType.project) {
query = projectBoardMilestonesQuery;
}
if (boardType === BoardType.group) {
query = groupBoardMilestonesQuery;
}
if (!query) {
// eslint-disable-next-line @gitlab/require-i18n-strings
throw new Error('Unknown board type');
}
return gqlClient
.query({
query,
variables,
})
.then(({ data }) => {
const errors = data[boardType]?.errors;
const milestones = data[boardType]?.milestones.nodes;
if (errors?.[0]) {
throw new Error(errors[0]);
}
commit(types.RECEIVE_MILESTONES_SUCCESS, milestones);
return milestones;
})
.catch((e) => {
commit(types.RECEIVE_MILESTONES_FAILURE);
throw e;
});
},
moveList: (
{ state, commit, dispatch },
{ listId, replacedListId, newIndex, adjustmentValue },
{ state: { boardLists }, commit, dispatch },
{
item: {
dataset: { listId: movedListId, draggableItemType },
},
newIndex,
to: { children },
},
) => {
if (listId === replacedListId) {
if (draggableItemType !== DraggableItemTypes.list) {
return;
}
const { boardLists } = state;
const backupList = { ...boardLists };
const movedList = boardLists[listId];
const displacedListId = children[newIndex].dataset.listId;
if (movedListId === displacedListId) {
return;
}
const newPosition = newIndex - 1;
const listAtNewIndex = boardLists[replacedListId];
const listIds = sortBy(
Object.keys(boardLists).filter(
(listId) =>
listId !== movedListId &&
boardLists[listId].listType !== ListType.backlog &&
boardLists[listId].listType !== ListType.closed,
),
(i) => boardLists[i].position,
);
movedList.position = newPosition;
listAtNewIndex.position += adjustmentValue;
commit(types.MOVE_LIST, {
movedList,
listAtNewIndex,
});
const targetPosition = boardLists[displacedListId].position;
// When the dragged list moves left, displaced list should shift right.
const shiftOffset = Number(boardLists[movedListId].position < targetPosition);
const displacedListIndex = listIds.findIndex((listId) => listId === displacedListId);
dispatch('updateList', { listId, position: newPosition, backupList });
commit(
types.MOVE_LISTS,
listIds
.slice(0, displacedListIndex + shiftOffset)
.concat([movedListId], listIds.slice(displacedListIndex + shiftOffset))
.map((listId, index) => ({ listId, position: index })),
);
dispatch('updateList', { listId: movedListId, position: targetPosition });
},
updateList: (
{ commit, state: { issuableType, boardItemsByListId = {} }, dispatch },
{ listId, position, collapsed, backupList },
{ state: { issuableType, boardItemsByListId = {} }, dispatch },
{ listId, position, collapsed },
) => {
gqlClient
.mutate({
@ -255,8 +323,7 @@ export default {
})
.then(({ data }) => {
if (data?.updateBoardList?.errors.length) {
commit(types.UPDATE_LIST_FAILURE, backupList);
return;
throw new Error();
}
// Only fetch when board items havent been fetched on a collapsed list
@ -265,10 +332,19 @@ export default {
}
})
.catch(() => {
commit(types.UPDATE_LIST_FAILURE, backupList);
dispatch('handleUpdateListFailure');
});
},
handleUpdateListFailure: ({ dispatch, commit }) => {
dispatch('fetchLists');
commit(
types.SET_ERROR,
s__('Boards|An error occurred while updating the board list. Please try again.'),
);
},
toggleListCollapsed: ({ commit }, { listId, collapsed }) => {
commit(types.TOGGLE_LIST_COLLAPSED, { listId, collapsed });
},
@ -551,7 +627,7 @@ export default {
mutation: issueSetLabelsMutation,
variables: {
input: {
iid: String(activeBoardItem.iid),
iid: input.iid || String(activeBoardItem.iid),
addLabelIds: input.addLabelIds ?? [],
removeLabelIds: input.removeLabelIds ?? [],
projectPath: input.projectPath,
@ -564,7 +640,7 @@ export default {
}
commit(types.UPDATE_BOARD_ITEM_BY_ID, {
itemId: activeBoardItem.id,
itemId: getIdFromGraphQLId(data.updateIssue?.issue?.id) || activeBoardItem.id,
prop: 'labels',
value: data.updateIssue.issue.labels.nodes,
});

View file

@ -8,8 +8,7 @@ import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import createDefaultClient from '~/lib/graphql';
import axios from '~/lib/utils/axios_utils';
import { parseBoolean, convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
// eslint-disable-next-line import/no-deprecated
import { mergeUrlParams, urlParamsToObject, getUrlParamsArray } from '~/lib/utils/url_utility';
import { mergeUrlParams, queryToObject, getUrlParamsArray } from '~/lib/utils/url_utility';
import { ListType, flashAnimationDuration } from '../constants';
import eventHub from '../eventhub';
import ListAssignee from '../models/assignee';
@ -597,8 +596,7 @@ const boardsStore = {
getListIssues(list, emptyIssues = true) {
const data = {
// eslint-disable-next-line import/no-deprecated
...urlParamsToObject(this.filter.path),
...queryToObject(this.filter.path, { gatherArrays: true }),
page: list.page,
};

View file

@ -10,8 +10,7 @@ export const RECEIVE_BOARD_LISTS_SUCCESS = 'RECEIVE_BOARD_LISTS_SUCCESS';
export const RECEIVE_BOARD_LISTS_FAILURE = 'RECEIVE_BOARD_LISTS_FAILURE';
export const SHOW_PROMOTION_LIST = 'SHOW_PROMOTION_LIST';
export const RECEIVE_ADD_LIST_SUCCESS = 'RECEIVE_ADD_LIST_SUCCESS';
export const MOVE_LIST = 'MOVE_LIST';
export const UPDATE_LIST_FAILURE = 'UPDATE_LIST_FAILURE';
export const MOVE_LISTS = 'MOVE_LISTS';
export const TOGGLE_LIST_COLLAPSED = 'TOGGLE_LIST_COLLAPSED';
export const REMOVE_LIST = 'REMOVE_LIST';
export const REMOVE_LIST_FAILURE = 'REMOVE_LIST_FAILURE';
@ -19,6 +18,9 @@ export const RESET_ITEMS_FOR_LIST = 'RESET_ITEMS_FOR_LIST';
export const REQUEST_ITEMS_FOR_LIST = 'REQUEST_ITEMS_FOR_LIST';
export const RECEIVE_ITEMS_FOR_LIST_FAILURE = 'RECEIVE_ITEMS_FOR_LIST_FAILURE';
export const RECEIVE_ITEMS_FOR_LIST_SUCCESS = 'RECEIVE_ITEMS_FOR_LIST_SUCCESS';
export const RECEIVE_MILESTONES_REQUEST = 'RECEIVE_MILESTONES_REQUEST';
export const RECEIVE_MILESTONES_SUCCESS = 'RECEIVE_MILESTONES_SUCCESS';
export const RECEIVE_MILESTONES_FAILURE = 'RECEIVE_MILESTONES_FAILURE';
export const UPDATE_BOARD_ITEM = 'UPDATE_BOARD_ITEM';
export const REMOVE_BOARD_ITEM = 'REMOVE_BOARD_ITEM';
export const MUTATE_ISSUE_SUCCESS = 'MUTATE_ISSUE_SUCCESS';

View file

@ -1,7 +1,7 @@
import { pull, union } from 'lodash';
import { cloneDeep, pull, union } from 'lodash';
import Vue from 'vue';
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import { s__ } from '~/locale';
import { s__, __ } from '~/locale';
import { formatIssue } from '../boards_util';
import { issuableTypes } from '../constants';
import * as mutationTypes from './mutation_types';
@ -103,15 +103,12 @@ export default {
Vue.set(state.boardLists, list.id, list);
},
[mutationTypes.MOVE_LIST]: (state, { movedList, listAtNewIndex }) => {
const { boardLists } = state;
Vue.set(boardLists, movedList.id, movedList);
Vue.set(boardLists, listAtNewIndex.id, listAtNewIndex);
},
[mutationTypes.UPDATE_LIST_FAILURE]: (state, backupList) => {
state.error = s__('Boards|An error occurred while updating the list. Please try again.');
Vue.set(state, 'boardLists', backupList);
[mutationTypes.MOVE_LISTS]: (state, movedLists) => {
const updatedBoardList = movedLists.reduce((acc, { listId, position }) => {
acc[listId].position = position;
return acc;
}, cloneDeep(state.boardLists));
Vue.set(state, 'boardLists', updatedBoardList);
},
[mutationTypes.TOGGLE_LIST_COLLAPSED]: (state, { listId, collapsed }) => {
@ -136,6 +133,20 @@ export default {
Vue.set(state.listsFlags, listId, { [fetchNext ? 'isLoadingMore' : 'isLoading']: true });
},
[mutationTypes.RECEIVE_MILESTONES_SUCCESS](state, milestones) {
state.milestones = milestones;
state.milestonesLoading = false;
},
[mutationTypes.RECEIVE_MILESTONES_REQUEST](state) {
state.milestonesLoading = true;
},
[mutationTypes.RECEIVE_MILESTONES_FAILURE](state) {
state.milestonesLoading = false;
state.error = __('Failed to load milestones.');
},
[mutationTypes.RECEIVE_ITEMS_FOR_LIST_SUCCESS]: (state, { listItems, listPageInfo, listId }) => {
const { listData, boardItems } = listItems;
Vue.set(state, 'boardItems', { ...state.boardItems, ...boardItems });

View file

@ -19,6 +19,8 @@ export default () => ({
boardConfig: {},
labelsLoading: false,
labels: [],
milestones: [],
milestonesLoading: false,
highlightedLists: [],
selectedBoardItems: [],
groupProjects: [],

View file

@ -24,6 +24,7 @@ import {
ADD_CI_VARIABLE_MODAL_ID,
AWS_TIP_DISMISSED_COOKIE_NAME,
AWS_TIP_MESSAGE,
CONTAINS_VARIABLE_REFERENCE_MESSAGE,
} from '../constants';
import CiEnvironmentsDropdown from './ci_environments_dropdown.vue';
import { awsTokens, awsTokenList } from './ci_variable_autocomplete_tokens';
@ -33,6 +34,7 @@ export default {
tokens: awsTokens,
tokenList: awsTokenList,
awsTipMessage: AWS_TIP_MESSAGE,
containsVariableReferenceMessage: CONTAINS_VARIABLE_REFERENCE_MESSAGE,
components: {
CiEnvironmentsDropdown,
GlAlert,
@ -70,6 +72,7 @@ export default {
'awsTipDeployLink',
'awsTipCommandsLink',
'awsTipLearnLink',
'containsVariableReferenceLink',
'protectedEnvironmentVariablesLink',
'maskedEnvironmentVariablesLink',
]),
@ -99,6 +102,10 @@ export default {
const regex = RegExp(this.maskableRegex);
return regex.test(this.variable.secret_value);
},
containsVariableReference() {
const regex = RegExp(/\$/);
return regex.test(this.variable.secret_value);
},
displayMaskedError() {
return !this.canMask && this.variable.masked;
},
@ -328,6 +335,22 @@ export default {
</div>
</gl-alert>
</gl-collapse>
<gl-alert
v-if="containsVariableReference"
:title="__('Value may contain a variable reference')"
:dismissible="false"
variant="warning"
data-testid="contains-variable-reference"
>
<gl-sprintf :message="$options.containsVariableReferenceMessage">
<template #code="{ content }">
<code>{{ content }}</code>
</template>
<template #docsLink="{ content }">
<gl-link :href="containsVariableReferenceLink" target="_blank">{{ content }}</gl-link>
</template>
</gl-sprintf>
</gl-alert>
<template #modal-footer>
<gl-button @click="hideModal">{{ __('Cancel') }}</gl-button>
<gl-button

View file

@ -24,3 +24,7 @@ export const AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID';
export const AWS_DEFAULT_REGION = 'AWS_DEFAULT_REGION';
export const AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY';
export const AWS_TOKEN_CONSTANTS = [AWS_ACCESS_KEY_ID, AWS_DEFAULT_REGION, AWS_SECRET_ACCESS_KEY];
export const CONTAINS_VARIABLE_REFERENCE_MESSAGE = __(
'Variable references indicated by %{codeStart}$%{codeEnd} may be expanded. If this is not what you want, consider %{docsLinkStart}using a workaround to prevent expansion%{docsLinkEnd}.',
);

View file

@ -14,6 +14,7 @@ const mountCiVariableListApp = (containerEl) => {
awsTipDeployLink,
awsTipCommandsLink,
awsTipLearnLink,
containsVariableReferenceLink,
protectedEnvironmentVariablesLink,
maskedEnvironmentVariablesLink,
} = containerEl.dataset;
@ -30,6 +31,7 @@ const mountCiVariableListApp = (containerEl) => {
awsTipDeployLink,
awsTipCommandsLink,
awsTipLearnLink,
containsVariableReferenceLink,
protectedEnvironmentVariablesLink,
maskedEnvironmentVariablesLink,
});

View file

@ -2,6 +2,7 @@
import { GlButton, GlEmptyState, GlLoadingIcon, GlModal, GlLink } from '@gitlab/ui';
import { getParameterByName } from '~/lib/utils/url_utility';
import PipelinesTableComponent from '~/pipelines/components/pipelines_list/pipelines_table.vue';
import { PipelineKeyOptions } from '~/pipelines/constants';
import eventHub from '~/pipelines/event_hub';
import PipelinesMixin from '~/pipelines/mixins/pipelines_mixin';
import PipelinesService from '~/pipelines/services/pipelines_service';
@ -10,6 +11,7 @@ import TablePagination from '~/vue_shared/components/pagination/table_pagination
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
export default {
PipelineKeyOptions,
components: {
GlButton,
GlEmptyState,
@ -205,6 +207,7 @@ export default {
:pipelines="state.pipelines"
:update-graph-dropdown="updateGraphDropdown"
:view-type="viewType"
:pipeline-key-option="$options.PipelineKeyOptions[0]"
>
<template #table-header-actions>
<div v-if="canRenderPipelineButton" class="gl-text-right">

View file

@ -1,10 +1,12 @@
import Vue from 'vue';
import GlFeatureFlagsPlugin from '~/vue_shared/gl_feature_flags_plugin';
import Translate from '~/vue_shared/translate';
if (process.env.NODE_ENV !== 'production') {
Vue.config.productionTip = false;
}
Vue.use(GlFeatureFlagsPlugin);
Vue.use(Translate);
Vue.config.ignoredElements = ['gl-emoji'];

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