New upstream version 15.4.2+ds1

This commit is contained in:
Pirate Praveen 2022-10-11 01:57:18 +05:30
parent a37d4bddc0
commit 095190ed6e
6229 changed files with 211464 additions and 82597 deletions

View file

@ -3,6 +3,7 @@ extends:
- plugin:@gitlab/i18n
- plugin:no-jquery/slim
- plugin:no-jquery/deprecated-3.4
- plugin:no-unsanitized/DOM
- ./tooling/eslint-config/conditionally_ignore.js
globals:
__webpack_public_path__: true
@ -116,6 +117,14 @@ rules:
vue/multi-word-component-names: off
unicorn/prefer-dom-node-dataset:
- error
no-unsanitized/method:
- error
- escape:
methods: 'sanitize'
no-unsanitized/property:
- error
- escape:
methods: 'sanitize'
overrides:
- files:
- '{,ee/,jh/}spec/frontend*/**/*'
@ -134,6 +143,8 @@ overrides:
message: 'Prefer explicit waitForPromises (or equivalent), or jest.runAllTimers (or equivalent) to vague setImmediate calls.'
- selector: ImportSpecifier[imported.name='GlSkeletonLoading']
message: 'Migrate to GlSkeletonLoader, or import GlDeprecatedSkeletonLoading.'
no-unsanitized/method: off
no-unsanitized/property: off
- files:
- 'config/**/*'
- 'scripts/**/*'

2
.gitignore vendored
View file

@ -95,8 +95,6 @@ jsdoc/
webpack-dev-server.json
/.nvimrc
.solargraph.yml
/tmp/matching_foss_tests.txt
/tmp/matching_tests.txt
ee/changelogs/unreleased-ee
/sitespeed-result
tags.lock

View file

@ -35,17 +35,10 @@ 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 merged result pipelines, set $QA_IMAGE, since $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is only available for merged result pipelines.
# AND
# For merge requests running exclusively in Ruby 3.0
- if: '($CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train") && $CI_MERGE_REQUEST_LABELS =~ /pipeline:run-in-ruby3/'
variables:
QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}"
RUBY_VERSION: "3.0"
# 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}"
# For merge requests running exclusively in Ruby 3.0
- if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-in-ruby3/'
variables:
@ -74,7 +67,7 @@ variables:
RAILS_ENV: "test"
NODE_ENV: "test"
BUNDLE_WITHOUT: "production:development"
BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"
BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3"
BUNDLE_FROZEN: "true"
# we override the max_old_space_size to prevent OOM errors
NODE_OPTIONS: --max_old_space_size=3584
@ -97,6 +90,8 @@ variables:
RSPEC_PACKED_TESTS_MAPPING_PATH: crystalball/packed-mapping.json
RSPEC_PROFILING_FOLDER_PATH: rspec/profiling
FRONTEND_FIXTURES_MAPPING_PATH: crystalball/frontend_fixtures_mapping.json
RSPEC_CHANGED_FILES_PATH: rspec/changed_files.txt
RSPEC_MATCHING_TESTS_PATH: rspec/matching_tests.txt
RSPEC_LAST_RUN_RESULTS_FILE: rspec/rspec_last_run_results.txt
JUNIT_RESULT_FILE: rspec/junit_rspec.xml
JUNIT_RETRY_FILE: rspec/junit_rspec-retry.xml
@ -122,11 +117,6 @@ variables:
BUILD_ASSETS_IMAGE: "true" # Set it to "false" to disable assets image building, used in `build-assets-image`
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}"
# Default latest tag for particular branch
QA_IMAGE_BRANCH: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}"
REGISTRY_HOST: "registry.gitlab.com"
REGISTRY_GROUP: "gitlab-org"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
# This empty file is used for agent-based integration with Kubernetes

11
.gitlab/ci/_skip.yml Normal file
View file

@ -0,0 +1,11 @@
# no-op pipeline template for skipping whole child pipeline execution
no-op:
image: ${GITLAB_DEPENDENCY_PROXY}alpine:latest
stage: test
variables:
GIT_STRATEGY: none
script:
- echo "${SKIP_MESSAGE:-no-op run, nothing will be executed!}"
rules:
- when: always

View file

@ -2,15 +2,11 @@
extends: .use-kaniko
variables:
GIT_LFS_SKIP_SMUDGE: 1
script:
- scripts/checkout-mr-source-sha
retry: 2
# This image is used by:
# - The `review-qa-*` jobs
# - The downstream `omnibus-gitlab-mirror` pipeline triggered by `package-and-qa` so that it doesn't have to rebuild it again.
# The downstream `omnibus-gitlab-mirror` pipeline itself passes the image name to the `gitlab-qa-mirror` pipeline so that
# it can use it instead of inferring an end-to-end imag from the GitLab image built by the downstream `omnibus-gitlab-mirror` pipeline.
# - The `e2e:package-and-test` child pipeline test stage jobs
# See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#testing-code-in-merge-requests for more details.
build-qa-image:
extends:
@ -19,15 +15,23 @@ build-qa-image:
stage: build-images
needs: []
script:
- !reference [.base-image-build, script]
# Tag with commit SHA by default
- export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_SHA}"
# For branches, tag with slugified branch name. For tags, use the tag directly
- export QA_IMAGE_BRANCH="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_TAG:-$CI_COMMIT_REF_SLUG}"
# Auto-deploy tag format uses first 12 letters of commit SHA. Tag with that
# reference also
- export QA_IMAGE_FOR_AUTO_DEPLOY="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_SHA:0:11}"
- echo $QA_IMAGE
- echo $QA_IMAGE_BRANCH
- echo $QA_IMAGE_FOR_AUTO_DEPLOY
- |
/kaniko/executor \
--context=${CI_PROJECT_DIR} \
--dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile \
--destination=${QA_IMAGE} \
--destination=${QA_IMAGE_BRANCH} \
--destination=${QA_IMAGE_FOR_AUTO_DEPLOY} \
--build-arg=CHROME_VERSION=${CHROME_VERSION} \
--build-arg=DOCKER_VERSION=${DOCKER_VERSION} \
--build-arg=QA_BUILD_TARGET=${QA_BUILD_TARGET:-qa} \
@ -35,7 +39,7 @@ build-qa-image:
# This image is used by:
# - The `CNG` pipelines (via the `review-build-cng` job): https://gitlab.com/gitlab-org/build/CNG/-/blob/cfc67136d711e1c8c409bf8e57427a644393da2f/.gitlab-ci.yml#L335
# - The `omnibus-gitlab` pipelines (via the `package-and-qa` job): https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/dfd1ad475868fc84e91ab7b5706aa03e46dc3a86/.gitlab-ci.yml#L130
# - The `omnibus-gitlab` pipelines (via the `e2e:package-and-test` job): https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/dfd1ad475868fc84e91ab7b5706aa03e46dc3a86/.gitlab-ci.yml#L130
build-assets-image:
extends:
- .base-image-build
@ -43,7 +47,6 @@ build-assets-image:
stage: build-images
needs: ["compile-production-assets"]
script:
- !reference [.base-image-build, script]
# TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists
# We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines
# https://gitlab.com/gitlab-org/gitlab/issues/208389

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_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.16-vale-2.17.0-markdownlint-0.31.1
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.16-vale-2.20.1-markdownlint-0.32.2
stage: lint
needs: []
script:

View file

@ -18,6 +18,7 @@
# Disable warnings in browserslist which can break on backports
# https://github.com/browserslist/browserslist/blob/a287ec6/node.js#L367-L384
BROWSERSLIST_IGNORE_OLD_DATA: "true"
WEBPACK_COMPILE_LOG_PATH: "tmp/webpack-output.log"
stage: prepare
script:
- *yarn-install
@ -31,7 +32,6 @@ compile-production-assets:
variables:
NODE_ENV: "production"
RAILS_ENV: "production"
WEBPACK_REPORT: "true"
artifacts:
name: webpack-report
expire_in: 31d
@ -40,10 +40,9 @@ compile-production-assets:
# - in `build-assets-image` job to create assets image for packaging systems
# - GitLab UI for integration tests: https://gitlab.com/gitlab-org/gitlab-ui/-/blob/e88493b3c855aea30bf60baee692a64606b0eb1e/.storybook/preview-head.pug#L1
- public/assets/
- webpack-report/
- "${WEBPACK_COMPILE_LOG_PATH}"
when: always
before_script:
- scripts/checkout-mr-source-sha
- !reference [.default-before_script, before_script]
after_script:
- rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here
@ -57,6 +56,7 @@ compile-test-assets:
paths:
- public/assets/
- node_modules/@gitlab/svgs/dist/icons.json # app/helpers/icons_helper.rb uses this file
- "${WEBPACK_COMPILE_LOG_PATH}"
when: always
compile-test-assets as-if-foss:
@ -213,7 +213,15 @@ jest minimal:
- !reference [jest, needs]
- "detect-tests"
script:
- run_timed_command "yarn jest:ci:minimal"
- if [[ -s "$RSPEC_CHANGED_FILES_PATH" ]]; then run_timed_command "yarn jest:ci:minimal"; fi
jest as-if-foss:
extends:
- .jest-base
- .frontend:rules:jest:as-if-foss
- .as-if-foss
needs: ["rspec-all frontend_fixture as-if-foss"]
parallel: 2
jest minimal as-if-foss:
extends:
@ -224,7 +232,7 @@ jest minimal as-if-foss:
- "rspec-all frontend_fixture as-if-foss"
- "detect-tests"
script:
- run_timed_command "yarn jest:ci:minimal"
- if [[ -s "$RSPEC_CHANGED_FILES_PATH" ]]; then run_timed_command "yarn jest:ci:minimal"; fi
jest-integration:
extends:
@ -236,19 +244,11 @@ jest-integration:
- job: "rspec-all frontend_fixture"
- job: "graphql-schema-dump"
jest-as-if-foss:
extends:
- .jest-base
- .frontend:rules:default-frontend-jobs-as-if-foss
- .as-if-foss
needs: ["rspec-all frontend_fixture as-if-foss"]
parallel: 2
coverage-frontend:
extends:
- .default-retry
- .yarn-cache
- .frontend:rules:ee-mr-and-default-branch-only
- .frontend:rules:coverage-frontend
needs:
- job: "jest"
optional: true
@ -260,7 +260,9 @@ coverage-frontend:
script:
- run_timed_command "yarn node scripts/frontend/merge_coverage_frontend.js"
# Removing the individual coverage results, as we just merged them.
- rm -r coverage-frontend/jest-*
- if ls coverage-frontend/jest-* > /dev/null 2>&1; then
rm -r coverage-frontend/jest-*;
fi
coverage: '/^Statements\s*:\s*?(\d+(?:\.\d+)?)%/'
artifacts:
name: coverage-frontend
@ -320,24 +322,20 @@ webpack-dev-server:
bundle-size-review:
extends:
- .default-retry
- .assets-compile-cache
- .frontend:rules:bundle-size-review
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:danger
stage: test
needs: ["compile-production-assets"]
needs: []
script:
- source scripts/utils.sh
- mkdir -p bundle-size-review
- cp webpack-report/index.html bundle-size-review/bundle-report.html
- yarn global add https://gitlab.com/gitlab-org/frontend/playground/webpack-memory-metrics.git
- |
danger_id=$(echo -n ${DANGER_GITLAB_API_TOKEN} | md5sum | awk '{print $1}' | cut -c5-10)
run_timed_command "danger --dangerfile=danger/Dangerfile-bundle_size --fail-on-errors=true --verbose --danger_id=bundle-size-review-${danger_id}"
- *yarn-install
- scripts/bundle_size_review
artifacts:
when: always
name: bundle-size-review
expire_in: 31d
paths:
- bundle-size-review
- bundle-size-review/
.startup-css-check-base:
extends:

View file

@ -290,7 +290,7 @@
- name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:6.0-alpine
- name: elasticsearch:8.2.0
- name: elasticsearch:8.3.3
variables:
POSTGRES_HOST_AUTH_METHOD: trust
PG_VERSION: "12"

View file

@ -7,6 +7,8 @@
MERGE_REQUEST_URL: ${CI_MERGE_REQUEST_PROJECT_URL}/-/merge_requests/${CI_MERGE_REQUEST_IID}
before_script:
- apk update && apk add git curl bash
- echo "NOTIFY_CHANNEL is ${NOTIFY_CHANNEL}"
- echo "CI_PIPELINE_URL is ${CI_PIPELINE_URL}"
notify-update-gitaly:
extends:
@ -16,11 +18,9 @@ notify-update-gitaly:
when: on_failure
allow_failure: true
variables:
NOTIFY_CHANNEL: g_create_gitaly
NOTIFY_CHANNEL: g_gitaly
GITALY_UPDATE_BRANCH: release-tools/update-gitaly
script:
- echo "NOTIFY_CHANNEL is ${NOTIFY_CHANNEL}"
- echo "CI_PIPELINE_URL is ${CI_PIPELINE_URL}"
- scripts/slack ${NOTIFY_CHANNEL} "☠️ \`${GITALY_UPDATE_BRANCH}\` failed! ☠️ See ${CI_PIPELINE_URL} (triggered from ${MERGE_REQUEST_URL})" ci_failing "GitLab QA Bot"
notify-security-pipeline:
@ -30,7 +30,17 @@ notify-security-pipeline:
variables:
NOTIFY_CHANNEL: f_upcoming_release
script:
- echo "NOTIFY_CHANNEL is ${NOTIFY_CHANNEL}"
- echo "CI_PIPELINE_URL is ${CI_PIPELINE_URL}"
# <!subteam^S0127FU8PDE> mentions the `@release-managers` group
- scripts/slack ${NOTIFY_CHANNEL} "<!subteam^S0127FU8PDE> ☠️ Pipeline for merged result failed! ☠️ See ${CI_PIPELINE_URL} (triggered from ${MERGE_REQUEST_URL})" ci_failing "GitLab Release Tools Bot"
notify-pipeline-failure:
extends:
- .notify-slack
rules:
- if: '$NOTIFY_PIPELINE_FAILURE_CHANNEL'
when: on_failure
allow_failure: true
variables:
NOTIFY_CHANNEL: "${NOTIFY_PIPELINE_FAILURE_CHANNEL}"
script:
- scripts/slack ${NOTIFY_CHANNEL} "❌ \`${CI_COMMIT_REF_NAME}\` pipeline failed! See ${CI_PIPELINE_URL}" ci_failing "notify-pipeline-failure"

View file

@ -0,0 +1,600 @@
# E2E tests pipeline loaded dynamically by script: scripts/generate-e2e-pipeline
include:
- local: .gitlab/ci/global.gitlab-ci.yml
- local: .gitlab/ci/package-and-test/rules.gitlab-ci.yml
- local: .gitlab/ci/package-and-test/variables.gitlab-ci.yml
- project: gitlab-org/quality/pipeline-common
ref: 1.2.1
file:
- /ci/base.gitlab-ci.yml
- /ci/allure-report.yml
- /ci/knapsack-report.yml
stages:
- test
- report
- notify
# ==========================================
# Templates
# ==========================================
.parallel:
parallel: 5
variables:
QA_KNAPSACK_REPORT_PATH: $CI_PROJECT_DIR/qa/knapsack
.ruby-image:
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3
.bundle-install:
extends:
- .gitlab-qa-install
- .qa-cache
variables:
RUN_WITH_BUNDLE: "true" # installs and runs gitlab-qa via bundler
QA_PATH: qa
.omnibus-env:
variables:
BUILD_ENV: build.env
script:
- |
SECURITY_SOURCES=$([[ ! "$CI_PROJECT_NAMESPACE" =~ ^gitlab-org\/security ]] || echo "true")
echo "SECURITY_SOURCES=${SECURITY_SOURCES:-false}" > $BUILD_ENV
echo "OMNIBUS_GITLAB_CACHE_UPDATE=${OMNIBUS_GITLAB_CACHE_UPDATE:-false}" >> $BUILD_ENV
for version_file in *_VERSION; do echo "$version_file=$(cat $version_file)" >> $BUILD_ENV; done
echo "Built environment file for omnibus build:"
cat $BUILD_ENV
artifacts:
reports:
dotenv: $BUILD_ENV
.update-script:
script:
- export QA_COMMAND="bundle exec gitlab-qa Test::Omnibus::UpdateFromPrevious $RELEASE $GITLAB_VERSION $UPDATE_TYPE -- $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"
- echo "Running - '$QA_COMMAND'"
- eval "$QA_COMMAND"
.qa:
extends:
- .qa-base
- .bundle-install
- .gitlab-qa-report
stage: test
tags:
- e2e
needs:
- trigger-omnibus
- download-knapsack-report
variables:
QA_GENERATE_ALLURE_REPORT: "true"
QA_CAN_TEST_PRAEFECT: "false"
QA_INTERCEPT_REQUESTS: "true"
QA_RUN_TYPE: e2e-package-and-test
TEST_LICENSE_MODE: $QA_TEST_LICENSE_MODE
EE_LICENSE: $QA_EE_LICENSE
GITHUB_ACCESS_TOKEN: $QA_GITHUB_ACCESS_TOKEN
GITLAB_QA_ADMIN_ACCESS_TOKEN: $QA_ADMIN_ACCESS_TOKEN
# ==========================================
# Prepare stage
# ==========================================
trigger-omnibus-env:
extends:
- .omnibus-env
- .rules:prepare
stage: .pre
trigger-omnibus:
extends: .rules:prepare
stage: .pre
needs:
- trigger-omnibus-env
inherit:
variables: false
variables:
GITALY_SERVER_VERSION: $GITALY_SERVER_VERSION
GITLAB_ELASTICSEARCH_INDEXER_VERSION: $GITLAB_ELASTICSEARCH_INDEXER_VERSION
GITLAB_KAS_VERSION: $GITLAB_KAS_VERSION
GITLAB_METRICS_EXPORTER_VERSION: $GITLAB_METRICS_EXPORTER_VERSION
GITLAB_PAGES_VERSION: $GITLAB_PAGES_VERSION
GITLAB_SHELL_VERSION: $GITLAB_SHELL_VERSION
GITLAB_WORKHORSE_VERSION: $GITLAB_WORKHORSE_VERSION
GITLAB_VERSION: $CI_COMMIT_SHA
IMAGE_TAG: $CI_COMMIT_SHA
TOP_UPSTREAM_SOURCE_PROJECT: $CI_PROJECT_PATH
SECURITY_SOURCES: $SECURITY_SOURCES
CACHE_UPDATE: $OMNIBUS_GITLAB_CACHE_UPDATE
SKIP_QA_DOCKER: "true"
SKIP_QA_TEST: "true"
ee: "true"
trigger:
project: gitlab-org/build/omnibus-gitlab-mirror
strategy: depend
download-knapsack-report:
extends:
- .bundle-install
- .ruby-image
- .rules:prepare
stage: .pre
script:
- bundle exec rake "knapsack:download[test]"
allow_failure: true
artifacts:
paths:
- qa/knapsack/ee-*.json
expire_in: 1 day
# e2e test jobs run on separate runner which has separate cache setup
cache-gems:
extends:
- .bundle-install
- .ruby-image
- .qa-cache-push
- .rules:prepare
stage: .pre
tags:
- e2e
script:
- echo "Populated qa cache"
# ==========================================
# Test stage
# ==========================================
# ------------------------------------------
# Manual jobs
# ------------------------------------------
# Run manual quarantine job
# this job requires passing QA_SCENARIO variable
# and optionally QA_TESTS to run specific quarantined tests
_ee:quarantine:
extends:
- .qa
- .rules:test:quarantine
needs:
- trigger-omnibus
stage: test
allow_failure: true
variables:
QA_RSPEC_TAGS: --tag quarantine
# ------------------------------------------
# FF changes
# ------------------------------------------
# Run specs with feature flags set to the opposite of the default state
ee:instance-parallel-ff-inverse:
extends:
- .qa
- .parallel
variables:
QA_SCENARIO: Test::Instance::Image
QA_KNAPSACK_REPORT_NAME: ee-instance-parallel
GITLAB_QA_OPTS: --set-feature-flags $QA_FEATURE_FLAGS
rules:
- !reference [.rules:test:feature-flags-deleted, rules] # skip job when only change is ff deletion
- !reference [.rules:test:feature-flags-set, rules]
# ------------------------------------------
# Jobs with parallel variant
# ------------------------------------------
ee:instance:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:instance-parallel:
extends:
- .parallel
- ee:instance
rules:
- !reference [.rules:test:feature-flags-set, rules] # always run instance-parallel to validate ff change
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:praefect:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::Praefect
QA_CAN_TEST_PRAEFECT: "true"
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:praefect-parallel:
extends:
- .parallel
- ee:praefect
rules:
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:relative-url:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::RelativeUrl
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:relative-url-parallel:
extends:
- .parallel
- ee:relative-url
rules:
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:decomposition-single-db:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
GITLAB_QA_OPTS: --omnibus-config decomposition_single_db
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:decomposition-single-db-parallel:
extends:
- .parallel
- ee:decomposition-single-db
rules:
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:decomposition-multiple-db:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
GITLAB_QA_OPTS: --omnibus-config decomposition_multiple_db
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:decomposition-multiple-db-parallel:
extends:
- .parallel
- ee:decomposition-multiple-db
rules:
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::All/
ee:object-storage:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
QA_RSPEC_TAGS: --tag object_storage
GITLAB_QA_OPTS: --omnibus-config object_storage
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::ObjectStorage/
ee:object-storage-parallel:
extends: ee:object-storage
parallel: 2
rules:
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::ObjectStorage/
ee:object-storage-aws:
extends: ee:object-storage
variables:
AWS_S3_ACCESS_KEY: $QA_AWS_S3_ACCESS_KEY
AWS_S3_BUCKET_NAME: $QA_AWS_S3_BUCKET_NAME
AWS_S3_KEY_ID: $QA_AWS_S3_KEY_ID
AWS_S3_REGION: $QA_AWS_S3_REGION
GITLAB_QA_OPTS: --omnibus-config object_storage_aws
ee:object-storage-aws-parallel:
extends: ee:object-storage-aws
parallel: 2
rules:
- !reference [ee:object-storage-parallel, rules]
ee:object-storage-gcs:
extends: ee:object-storage
variables:
GCS_BUCKET_NAME: $QA_GCS_BUCKET_NAME
GOOGLE_PROJECT: $QA_GOOGLE_PROJECT
GOOGLE_JSON_KEY: $QA_GOOGLE_JSON_KEY
GOOGLE_CLIENT_EMAIL: $QA_GOOGLE_CLIENT_EMAIL
GITLAB_QA_OPTS: --omnibus-config object_storage_gcs
ee:object-storage-gcs-parallel:
extends: ee:object-storage-gcs
parallel: 2
rules:
- !reference [ee:object-storage-parallel, rules]
ee:packages:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
QA_RSPEC_TAGS: --tag packages
GITLAB_QA_OPTS: --omnibus-config packages
rules:
- !reference [.rules:test:qa-non-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::Packages/
ee:packages-parallel:
extends: ee:packages
parallel: 2
rules:
- !reference [.rules:test:qa-parallel, rules]
- if: $QA_SUITES =~ /Test::Instance::Packages/
# ------------------------------------------
# Non parallel jobs
# ------------------------------------------
ee:update-minor:
extends:
- .qa
- .update-script
variables:
UPDATE_TYPE: minor
QA_RSPEC_TAGS: --tag smoke
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Instance::Smoke/
ee:update-major:
extends:
- .qa
- .update-script
variables:
UPDATE_TYPE: major
QA_RSPEC_TAGS: --tag smoke
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Instance::Smoke/
ee:gitaly-cluster:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::GitalyCluster
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::GitalyCluster/
ee:group-saml:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::GroupSAML
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::GroupSAML/
ee:instance-saml:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::InstanceSAML
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::InstanceSAML/
ee:jira:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::Jira
JIRA_ADMIN_USERNAME: $QA_JIRA_ADMIN_USERNAME
JIRA_ADMIN_PASSWORD: $QA_JIRA_ADMIN_PASSWORD
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::Jira/
ee:ldap-no-server:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::LDAPNoServer
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::LDAPNoServer/
ee:ldap-tls:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::LDAPTLS
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::LDAPTLS/
ee:ldap-no-tls:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::LDAPNoTLS
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::LDAPNoTLS/
ee:mtls:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::MTLS
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::MTLS/
ee:mattermost:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::Mattermost
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::Mattermost/
ee:registry:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::Registry
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::Registry/
ee:registry-with-cdn:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::RegistryWithCDN
GCS_CDN_BUCKET_NAME: $QA_GCS_CDN_BUCKET_NAME
GOOGLE_CDN_LB: $QA_GOOGLE_CDN_LB
GOOGLE_CDN_JSON_KEY: $QA_GOOGLE_CDN_JSON_KEY
GOOGLE_CDN_SIGNURL_KEY: $QA_GOOGLE_CDN_SIGNURL_KEY
GOOGLE_CDN_SIGNURL_KEY_NAME: $QA_GOOGLE_CDN_SIGNURL_KEY_NAME
before_script:
- unset GITLAB_QA_ADMIN_ACCESS_TOKEN
- !reference [.qa, before_script]
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::RegistryWithCDN/
ee:repository-storage:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::RepositoryStorage
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Instance::RepositoryStorage/
ee:service-ping-disabled:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::ServicePingDisabled
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::ServicePingDisabled/
ee:smtp:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::SMTP
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::SMTP/
ee:cloud-activation:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
QA_RSPEC_TAGS: --tag cloud_activation
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::CloudActivation/
ee:large-setup:
extends: .qa
variables:
QA_SCENARIO: Test::Instance::Image
QA_RSPEC_TAGS: --tag can_use_large_setup
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Instance::LargeSetup/
ee:metrics:
extends: .qa
variables:
QA_SCENARIO: Test::Integration::Metrics
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Instance::Metrics/
ee:elasticsearch:
extends: .qa
variables:
QA_SCENARIO: "Test::Integration::Elasticsearch"
before_script:
- unset ELASTIC_URL # unset url which is globally defined in .gitlab-ci.yml
- !reference [.qa, before_script]
rules:
- !reference [.rules:test:qa, rules]
- if: $QA_SUITES =~ /Test::Integration::Elasticsearch/
ee:registry-object-storage-tls:
extends: ee:object-storage-aws
variables:
QA_SCENARIO: Test::Integration::RegistryTLS
QA_RSPEC_TAGS: ""
GITLAB_TLS_CERTIFICATE: $QA_GITLAB_TLS_CERTIFICATE
GITLAB_QA_OPTS: --omnibus-config registry_object_storage
# ==========================================
# Post test stage
# ==========================================
e2e-test-report:
extends:
- .generate-allure-report-base
- .rules:report:allure-report
stage: report
variables:
GITLAB_AUTH_TOKEN: $GITLAB_QA_MR_ALLURE_REPORT_TOKEN
ALLURE_PROJECT_PATH: $CI_PROJECT_PATH
ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID
ALLURE_JOB_NAME: e2e-package-and-test
GIT_STRATEGY: none
artifacts: # save rspec results for displaying in parent pipeline
expire_in: 1 day
when: always
paths:
- gitlab-qa-run-*/**/rspec-*.xml
upload-knapsack-report:
extends:
- .generate-knapsack-report-base
- .bundle-install
- .ruby-image
- .rules:report:process-results
stage: report
when: always
relate-test-failures:
extends:
- .bundle-install
- .ruby-image
- .rules:report:process-results
stage: report
variables:
QA_FAILURES_REPORTING_PROJECT: gitlab-org/gitlab
QA_FAILURES_MAX_DIFF_RATIO: "0.15"
GITLAB_QA_ACCESS_TOKEN: $GITLAB_QA_PRODUCTION_ACCESS_TOKEN
when: on_failure
script:
- |
bundle exec gitlab-qa-report \
--relate-failure-issue "$CI_PROJECT_DIR/gitlab-qa-run-*/**/rspec-*.json" \
--project "$QA_FAILURES_REPORTING_PROJECT" \
--max-diff-ratio "$QA_FAILURES_MAX_DIFF_RATIO"
generate-test-session:
extends:
- .bundle-install
- .ruby-image
- .rules:report:process-results
stage: report
variables:
QA_TESTCASE_SESSIONS_PROJECT: gitlab-org/quality/testcase-sessions
GITLAB_QA_ACCESS_TOKEN: $QA_TEST_SESSION_TOKEN
GITLAB_CI_API_TOKEN: $QA_GITLAB_CI_TOKEN
when: always
script:
- |
bundle exec gitlab-qa-report \
--generate-test-session "$CI_PROJECT_DIR/gitlab-qa-run-*/**/rspec-*.json" \
--project "$QA_TESTCASE_SESSIONS_PROJECT"
artifacts:
when: always
expire_in: 1d
paths:
- qa/REPORT_ISSUE_URL
notify-slack:
extends:
- .notify-slack-qa
- .bundle-install
- .ruby-image
- .rules:report:process-results
stage: notify
variables:
ALLURE_JOB_NAME: e2e-package-and-test
SLACK_ICON_EMOJI: ci_failing
STATUS_SYM: ☠️
STATUS: failed
when: on_failure
script:
- bundle exec gitlab-qa-report --prepare-stage-reports "$CI_PROJECT_DIR/gitlab-qa-run-*/**/rspec-*.xml" # generate summary
- !reference [.notify-slack-qa, script]

View file

@ -0,0 +1,99 @@
# Specific specs passed
.specific-specs: &specific-specs
if: $QA_TESTS != ""
# No specific specs passed
.all-specs: &all-specs
if: $QA_TESTS == ""
# FF changes
.feature-flags-set: &feature-flags-set
if: $QA_FEATURE_FLAGS != ""
# Only deleted feature flags
.feature-flags-deleted: &feature-flags-deleted
if: $QA_FEATURE_FLAGS != "" && $QA_FEATURE_FLAGS !~ /enabled|disabled/
# Manually trigger job on ff changes but with default ff state instead of inverted
.feature-flags-set-manual: &feature-flags-set-manual
<<: *feature-flags-set
when: manual
allow_failure: true
# QA framework changes present
.qa-framework-changes: &qa-framework-changes
if: $QA_FRAMEWORK_CHANGES == "true"
# Process test results (notify failure to slack, create test session report, relate test failures)
.process-test-results: &process-test-results
if: $PROCESS_TEST_RESULTS == "true"
# Selective test execution against omnibus instance have following execution scenarios:
# * only e2e spec files changed - runs only changed specs
# * qa framework changes - runs full test suite
# * feature flag changed - runs full test suite with base gitlab instance configuration with both ff states
# * quarantined e2e spec - skips execution of e2e tests by creating a no-op pipeline
# ------------------------------------------
# Prepare
# ------------------------------------------
.rules:prepare:
rules:
- when: always
# ------------------------------------------
# Test
# ------------------------------------------
.rules:test:quarantine:
rules:
- when: manual
variables:
QA_TESTS: ""
.rules:test:feature-flags-set:
rules:
# unset specific specs if pipeline has feature flag changes and run full suite
- <<: *feature-flags-set
variables:
QA_TESTS: ""
.rules:test:feature-flags-deleted:
rules:
- <<: *feature-flags-deleted
when: never
# parallel and non parallel rules are used for jobs that require parallel execution and thus need to switch
# between parallel and non parallel when only certain specs are executed
.rules:test:qa-non-parallel:
rules:
# always run parallel with full suite when framework changes present or ff state changed
- <<: *qa-framework-changes
when: never
- <<: *all-specs
when: never
- <<: *feature-flags-set
when: never
.rules:test:qa-parallel:
rules:
- *qa-framework-changes
- <<: *specific-specs
when: never
- *feature-flags-set-manual
# general qa job rule for jobs without the need to run in parallel
.rules:test:qa:
rules:
- *qa-framework-changes
- *feature-flags-set-manual
# ------------------------------------------
# Report
# ------------------------------------------
.rules:report:allure-report:
rules:
- when: always
.rules:report:process-results:
rules:
- *process-test-results

View file

@ -0,0 +1,9 @@
# Default variables for package-and-test
variables:
RELEASE: "${REGISTRY_HOST}/${REGISTRY_GROUP}/build/omnibus-gitlab-mirror/gitlab-ee:${CI_COMMIT_SHA}"
SKIP_REPORT_IN_ISSUES: "true"
OMNIBUS_GITLAB_CACHE_UPDATE: "false"
QA_LOG_LEVEL: "info"
QA_TESTS: ""
QA_FEATURE_FLAGS: ""

View file

@ -1,5 +1,5 @@
.qa-job-base:
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-2.7:bundler-2.3-chrome-103-docker-20.10.14
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}
extends:
- .default-retry
- .qa-cache
@ -57,7 +57,7 @@ qa:selectors-as-if-foss:
- .qa:rules:as-if-foss
- .as-if-foss
update-qa-cache:
qa:update-qa-cache:
extends:
- .qa-job-base
- .qa-cache-push
@ -66,103 +66,40 @@ update-qa-cache:
script:
- echo "Cache has been updated and ready to be uploaded."
populate-qa-tests-var:
e2e:package-and-test:
extends:
- .qa:rules:determine-qa-tests
image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine
stage: prepare
script:
- export QA_TESTS=$(scripts/determine-qa-tests --files $CHANGES_FILE --labels "$CI_MERGE_REQUEST_LABELS")
- 'echo "QA_TESTS=$QA_TESTS" >> qa_tests_var.env'
- 'echo "QA_TESTS: $QA_TESTS"'
artifacts:
expire_in: 2d
reports:
dotenv: qa_tests_var.env
paths:
- ${CHANGES_FILE}
- qa_tests_var.env
variables:
CHANGES_FILE: tmp/changed_files.txt
needs:
- detect-tests
.package-and-qa-base:
image: ${GITLAB_DEPENDENCY_PROXY}ruby:${RUBY_VERSION}-alpine
- .qa:rules:package-and-test
stage: qa
retry: 0
before_script:
- source scripts/utils.sh
- install_gitlab_gem
- tooling/bin/find_change_diffs ${CHANGES_DIFFS_DIR}
script:
- 'echo "QA_TESTS: $QA_TESTS"'
- exit_code=0 && tooling/bin/qa/run_qa_check ${CHANGES_DIFFS_DIR} || exit_code=$?
- echo $exit_code
- |
if [ $exit_code -eq 0 ]; then
./scripts/trigger-build.rb omnibus
elif [ $exit_code -eq 1 ]; then
exit 1
else
echo "Downstream jobs will not be triggered because run_qa_check exited with code: $exit_code"
fi
# These jobs often time out, so temporarily use private runners and a long timeout: https://gitlab.com/gitlab-org/gitlab/-/issues/238563
tags:
- prm
timeout: 4h
needs:
- job: build-qa-image
artifacts: false
- job: build-assets-image
artifacts: false
- job: populate-qa-tests-var
- detect-tests
artifacts:
expire_in: 7d
paths:
- ${CHANGES_DIFFS_DIR}/*
- build-assets-image
- build-qa-image
- e2e-test-pipeline-generate
variables:
CHANGES_DIFFS_DIR: tmp/diffs
ALLURE_JOB_NAME: $CI_JOB_NAME
SKIP_MESSAGE: Skipping package-and-test due to mr containing only quarantine changes!
trigger:
strategy: depend
include:
- artifact: package-and-test-pipeline.yml
job: e2e-test-pipeline-generate
.package-and-qa-ff-base:
# Fetch child pipeline test results and store in parent pipeline
# workaround until natively implemented: https://gitlab.com/groups/gitlab-org/-/epics/8205
e2e:package-and-test-results:
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3
extends:
- .qa-job-base
- .qa:rules:package-and-test
stage: qa
needs:
- e2e:package-and-test
variables:
COLORIZED_LOGS: "true"
QA_LOG_LEVEL: "debug"
when: always
allow_failure: true
script:
- |
feature_flags=$(scripts/changed-feature-flags --files $CHANGES_DIFFS_DIR --state $QA_FF_STATE)
if [[ $feature_flags ]]; then
export GITLAB_QA_OPTIONS="--set-feature-flags $feature_flags"
echo $GITLAB_QA_OPTIONS
./scripts/trigger-build.rb omnibus
else
echo "No changed feature flag found to test as $QA_FF_STATE."
fi
package-and-qa:
extends:
- .package-and-qa-base
- .qa:rules:package-and-qa
package-and-qa-ff-enabled:
extends:
- .package-and-qa-base
- .package-and-qa-ff-base
- .qa:rules:package-and-qa:feature-flags
variables:
QA_FF_STATE: "enabled"
package-and-qa-ff-disabled:
extends:
- .package-and-qa-base
- .package-and-qa-ff-base
- .qa:rules:package-and-qa:feature-flags
variables:
QA_FF_STATE: "disabled"
package-and-qa-ff-deleted:
extends:
- .package-and-qa-base
- .package-and-qa-ff-base
- .qa:rules:package-and-qa:feature-flags
variables:
QA_FF_STATE: "deleted"
- bundle exec rake "ci:download_test_results[e2e:package-and-test,e2e-test-report,${CI_PROJECT_DIR}]"
artifacts:
when: always
reports:
junit: gitlab-qa-run-*/**/rspec-*.xml

View file

@ -8,11 +8,13 @@
.base-script:
script:
- source ./scripts/rspec_helpers.sh
# Only install knapsack after bundle install! Otherwise oddly some native
# gems could not be found under some circumstance. No idea why, hours wasted.
- run_timed_command "gem install knapsack --no-document"
- run_timed_command "scripts/gitaly-test-spawn"
- source ./scripts/rspec_helpers.sh
- echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"
- run_timed_command "scripts/gitaly-test-spawn" # Do not use 'bundle exec' here
- echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"
.minimal-rspec-tests:
variables:
@ -129,28 +131,28 @@
############################
# rspec job parallel configs
.rspec-migration-parallel:
parallel: 9
parallel: 12
.rspec-ee-migration-parallel:
parallel: 3
.rspec-unit-parallel:
parallel: 22
.rspec-ee-unit-parallel:
parallel: 16
.rspec-integration-parallel:
parallel: 10
.rspec-ee-integration-parallel:
parallel: 4
.rspec-unit-parallel:
parallel: 28
.rspec-ee-unit-parallel:
parallel: 18
.rspec-integration-parallel:
parallel: 12
.rspec-ee-integration-parallel:
parallel: 6
.rspec-system-parallel:
parallel: 24
parallel: 28
.rspec-ee-system-parallel:
parallel: 6
parallel: 10
# rspec job parallel configs
############################
@ -165,6 +167,7 @@ setup-test-env:
variables:
SETUP_DB: "false"
script:
- echo $CI_MERGE_REQUEST_APPROVED
- source scripts/gitlab_workhorse_component_helpers.sh
- run_timed_command "download_and_extract_gitlab_workhorse_package" || true
- run_timed_command "scripts/setup-test-env"
@ -175,14 +178,10 @@ setup-test-env:
artifacts:
expire_in: 7d
paths:
- config/secrets.yml
- ${TMP_TEST_FOLDER}/gitaly/_build/bin/
- ${TMP_TEST_FOLDER}/gitaly/_build/deps/git/install
- ${TMP_TEST_FOLDER}/gitaly/config.toml
- ${TMP_TEST_FOLDER}/gitaly/gitaly2.config.toml
- ${TMP_TEST_FOLDER}/gitaly/internal/
- ${TMP_TEST_FOLDER}/gitaly/run/
- ${TMP_TEST_FOLDER}/gitaly/run2/
- ${TMP_TEST_FOLDER}/gitaly/Makefile
- ${TMP_TEST_FOLDER}/gitaly/praefect.config.toml
- ${TMP_TEST_FOLDER}/gitaly/praefect-db.config.toml
@ -379,51 +378,19 @@ db:migrate:reset single-db:
- .single-db
- .rails:rules:single-db
db:migrate-from-previous-major-version:
extends: .db-job-base
variables:
USE_BUNDLE_INSTALL: "false"
SETUP_DB: "false"
PROJECT_TO_CHECKOUT: "gitlab-foss"
TAG_TO_CHECKOUT: "v14.10.2"
before_script:
- !reference [.default-before_script, before_script]
- '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"'
- '[[ -d "ee/" ]] || export TAG_TO_CHECKOUT="${TAG_TO_CHECKOUT}-ee"'
- retry 'git fetch https://gitlab.com/gitlab-org/$PROJECT_TO_CHECKOUT.git $TAG_TO_CHECKOUT'
- git checkout -f FETCH_HEAD
- SETUP_DB=false USE_BUNDLE_INSTALL=true ENABLE_BOOTSNAP=false bash scripts/prepare_build.sh
- run_timed_command "ENABLE_BOOTSNAP=false bundle exec rake db:drop db:create db:structure:load db:migrate db:seed_fu"
- git checkout -f $CI_COMMIT_SHA
- SETUP_DB=false USE_BUNDLE_INSTALL=true bash scripts/prepare_build.sh
script:
- run_timed_command "scripts/db_tasks db:migrate"
db:migrate-from-previous-major-version-single-db:
extends:
- db:migrate-from-previous-major-version
- .single-db
- .rails:rules:single-db
.db:check-schema-base:
extends:
- .rails:rules:ee-mr-and-default-branch-only
variables:
TAG_TO_CHECKOUT: "v14.7.0" # this version updated grpc to 1.42.0, which supports Ruby 2 & 3
script:
- run_timed_command "scripts/db_tasks db:migrate"
- scripts/schema_changed.sh
- scripts/validate_migration_timestamps
db:check-schema:
extends:
- db:migrate-from-previous-major-version
- .db:check-schema-base
- .db-job-base
- .rails:rules:ee-mr-and-default-branch-only
script:
- run_timed_command "bundle exec rake db:drop db:create"
- run_timed_command "scripts/db_tasks db:migrate"
db:check-schema-single-db:
extends:
- db:migrate-from-previous-major-version-single-db
- .db:check-schema-base
- db:check-schema
- .single-db
- .rails:rules:single-db
db:check-migrations:
extends:
@ -624,7 +591,7 @@ rspec:feature-flags:
stage: post-test
needs:
- job: "feature-flags-usage"
- job: "haml-lint foss"
- job: "haml-lint"
- job: "haml-lint ee"
optional: true
script:
@ -970,7 +937,7 @@ rspec fail-fast:
needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets", "detect-tests"]
script:
- !reference [.base-script, script]
- rspec_fail_fast tmp/matching_tests.txt "--tag ~quarantine"
- rspec_fail_fast "${RSPEC_MATCHING_TESTS_PATH}" "--tag ~quarantine"
artifacts:
expire_in: 7d
paths:
@ -980,10 +947,10 @@ rspec foss-impact:
extends:
- .rspec-base-pg12-as-if-foss
- .rails:rules:rspec-foss-impact
needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests as-if-foss"]
needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests"]
script:
- !reference [.base-script, script]
- rspec_matched_foss_tests tmp/matching_foss_tests.txt "--tag ~quarantine"
- rspec_matched_foss_tests "${RSPEC_MATCHING_TESTS_PATH}" "--tag ~quarantine"
artifacts:
expire_in: 7d
paths:

View file

@ -8,6 +8,7 @@ stages:
include:
- local: .gitlab/ci/global.gitlab-ci.yml
- local: .gitlab/ci/rules.gitlab-ci.yml
- local: .gitlab/ci/review-apps/rules.gitlab-ci.yml
- local: .gitlab/ci/review-apps/qa.gitlab-ci.yml
- local: .gitlab/ci/review-apps/dast.gitlab-ci.yml
@ -94,6 +95,7 @@ review-deploy:
- export GITALY_VERSION=$(<GITALY_SERVER_VERSION)
- export GITLAB_WORKHORSE_VERSION=$(<GITLAB_WORKHORSE_VERSION)
- echo "${CI_ENVIRONMENT_URL}" > environment_url.txt
- echo "QA_GITLAB_URL=${CI_ENVIRONMENT_URL}" > environment.env
- *base-before_script
script:
- check_kube_domain
@ -102,7 +104,6 @@ review-deploy:
- deploy || (display_deployment_debug && exit 1)
- verify_deploy || exit 1
- disable_sign_ups || (delete_release && exit 1)
- create_sample_projects
after_script:
# Run seed-dast-test-data.sh only when DAST_RUN is set to true. This is to pupulate review app with data for DAST scan.
# Set DAST_RUN to true when jobs are manually scheduled.
@ -110,9 +111,27 @@ review-deploy:
artifacts:
paths:
- environment_url.txt
reports:
dotenv: environment.env
expire_in: 7 days
when: always
review-deploy-sample-projects:
extends:
- .review-workflow-base
- .review:rules:review-deploy
stage: deploy
needs: ["review-deploy"]
before_script:
- export GITLAB_SHELL_VERSION=$(<GITLAB_SHELL_VERSION)
- export GITALY_VERSION=$(<GITALY_SERVER_VERSION)
- export GITLAB_WORKHORSE_VERSION=$(<GITLAB_WORKHORSE_VERSION)
- echo "${CI_ENVIRONMENT_URL}" > environment_url.txt
- *base-before_script
script:
- date
- create_sample_projects
.review-stop-base:
extends: .review-workflow-base
environment:

View file

@ -1,6 +1,6 @@
include:
- project: gitlab-org/quality/pipeline-common
ref: 0.13.0
ref: 1.2.2
file:
- /ci/allure-report.yml
- /ci/knapsack-report.yml
@ -8,85 +8,57 @@ include:
.test-variables:
variables:
QA_GENERATE_ALLURE_REPORT: "true"
COLORIZED_LOGS: "true"
QA_CAN_TEST_PRAEFECT: "false"
GITLAB_USERNAME: "root"
GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}"
GITLAB_ADMIN_USERNAME: "root"
GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}"
GITLAB_QA_ADMIN_ACCESS_TOKEN: "${REVIEW_APPS_ROOT_TOKEN}"
GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}"
GITHUB_ACCESS_TOKEN: "${QA_GITHUB_ACCESS_TOKEN}"
.bundle-base:
extends:
- .qa-cache
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3
before_script:
- export QA_GITLAB_URL="$(cat environment_url.txt)"
- cd qa && bundle install
.review-qa-base:
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.33-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23
extends:
- .use-docker-in-docker
- .bundle-base
- .test-variables
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.33-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23
stage: qa
needs:
- review-deploy
- download-knapsack-report
variables:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: /certs
DOCKER_CERT_PATH: /certs/client
DOCKER_TLS_VERIFY: 1
GIT_LFS_SKIP_SMUDGE: 1
WD_INSTALL_DIR: /usr/local/bin
before_script:
- scripts/checkout-mr-source-sha
- !reference [.bundle-base, before_script]
RSPEC_REPORT_OPTS: --force-color --order random --format documentation --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml
script:
- export EE_LICENSE="$(cat $REVIEW_APPS_EE_LICENSE_FILE)"
- qa_run_status=0
- QA_COMMAND="bundle exec bin/qa ${QA_SCENARIO} ${QA_GITLAB_URL} -- ${QA_TESTS} ${RSPEC_REPORT_OPTS}"
- echo "Running - '${QA_COMMAND}'"
- eval "$QA_COMMAND"
after_script:
- |
bundle exec rake "knapsack:rspec[\
${RSPEC_TAGS} \
--tag ~orchestrated \
--tag ~transient \
--tag ~skip_signup_disabled \
--tag ~requires_git_protocol_v2 \
--tag ~requires_praefect \
--force-color \
--order random \
--format documentation \
--format RspecJunitFormatter --out tmp/rspec.xml \
]" || qa_run_status=$?
- if [ ${qa_run_status} -ne 0 ]; then
release_sha=$(echo "${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-${CI_COMMIT_SHA}}" | cut -c1-11);
echo "Errors can be found at https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/${release_sha}/all-events/.";
fi
- exit ${qa_run_status}
echo "Sentry errors for the current review-app test run can be found via following url:"
echo "https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/$(echo "${CI_COMMIT_SHA}" | cut -c1-11)/all-events/."
artifacts:
paths:
- qa/tmp
reports:
junit: qa/tmp/rspec.xml
junit: qa/tmp/rspec-*.xml
expire_in: 7 days
when: always
.allure-report-base:
extends: .generate-allure-report-base
stage: post-qa
variables:
GITLAB_AUTH_TOKEN: $GITLAB_QA_MR_ALLURE_REPORT_TOKEN
ALLURE_PROJECT_PATH: $CI_PROJECT_PATH
ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID
ALLURE_RESULTS_GLOB: qa/tmp/allure-results/*
# Store knapsack report as artifact so the same report is reused across all jobs
download-knapsack-report:
extends:
- .bundle-base
- .review:rules:review-qa-reliable
- .rules:app-or-qa-framework-changes-or-review-scenarios
stage: prepare
script:
- bundle exec rake "knapsack:download[qa]"
@ -99,30 +71,39 @@ download-knapsack-report:
review-qa-smoke:
extends:
- .review-qa-base
- .review:rules:review-qa-smoke
retry: 1
- .rules:qa-smoke
variables:
QA_SCENARIO: Test::Instance::Smoke
QA_RUN_TYPE: review-qa-smoke
RSPEC_TAGS: --tag smoke
review-qa-reliable:
extends:
- .review-qa-base
- .review:rules:review-qa-reliable
retry: 1
parallel: 10
variables:
QA_RUN_TYPE: review-qa-reliable
RSPEC_TAGS: --tag reliable --tag sanity_feature_flags
review-qa-all:
review-qa-blocking:
extends:
- .review-qa-base
- .review:rules:review-qa-all
parallel: 5
- .rules:qa-blocking
variables:
QA_RUN_TYPE: review-qa-all
RSPEC_TAGS: --tag ~reliable --tag ~smoke --tag ~sanity_feature_flags
QA_SCENARIO: Test::Instance::ReviewBlocking
QA_RUN_TYPE: review-qa-blocking
retry: 1
review-qa-blocking-parallel:
extends:
- review-qa-blocking
- .rules:qa-blocking-parallel
parallel: 10
review-qa-non-blocking:
extends:
- .review-qa-base
- .rules:qa-non-blocking
variables:
QA_SCENARIO: Test::Instance::ReviewNonBlocking
QA_RUN_TYPE: review-qa-non-blocking
allow_failure: true
review-qa-non-blocking-parallel:
extends:
- review-qa-non-blocking
- .rules:qa-non-blocking-parallel
parallel: 5
review-performance:
extends:
@ -150,27 +131,25 @@ review-performance:
performance: performance.json
expire_in: 31d
# Generate single report for both smoke and reliable test jobs
# Both job types are essentially the same:
# * always executed
# * always blocking
allure-report-qa-blocking:
e2e-test-report:
extends:
- .allure-report-base
- .review:rules:review-qa-blocking-report
needs:
- review-qa-smoke
- review-qa-reliable
- .generate-allure-report-base
- .rules:app-or-qa-framework-changes-or-review-scenarios
stage: post-qa
variables:
ALLURE_JOB_NAME: review-qa-blocking
allure-report-qa-all:
extends:
- .allure-report-base
- .review:rules:review-qa-all-report
needs: ["review-qa-all"]
variables:
ALLURE_JOB_NAME: review-qa-all
ALLURE_JOB_NAME: e2e-review-qa
ALLURE_PROJECT_PATH: $CI_PROJECT_PATH
ALLURE_RESULTS_GLOB: qa/tmp/allure-results/*
ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID
GITLAB_AUTH_TOKEN: $GITLAB_QA_MR_ALLURE_REPORT_TOKEN
GIT_STRATEGY: none
allow_failure: true
when: always
artifacts: # re-save rspec results for displaying in parent pipeline
expire_in: 1 day
when: always
paths:
- qa/tmp/rspec-*.xml
upload-knapsack-report:
extends:
@ -183,13 +162,13 @@ upload-knapsack-report:
delete-test-resources:
extends:
- .bundle-base
- .review:rules:review-qa-cleanup
- .rules:app-or-qa-framework-changes-or-review-scenarios
stage: post-qa
variables:
QA_TEST_RESOURCES_FILE_PATTERN: $CI_PROJECT_DIR/qa/tmp/test-resources-*.json
GITLAB_QA_ACCESS_TOKEN: $REVIEW_APPS_ROOT_TOKEN
COLORIZED_LOGS: "true"
script:
- export GITLAB_ADDRESS="$QA_GITLAB_URL"
- bundle exec rake "test_resources:delete[$QA_TEST_RESOURCES_FILE_PATTERN]"
allow_failure: true
when: always

View file

@ -0,0 +1,81 @@
# Specific specs passed
.specific-specs: &specific-specs
if: $QA_TESTS != ""
# No specific specs passed
.all-specs: &all-specs
if: $QA_TESTS == ""
# No specific specs in mr pipeline
.all-specs-mr: &all-specs-mr
if: $CI_MERGE_REQUEST_IID && $QA_TESTS == ""
when: manual
# Triggered by change pattern
.app-changes: &app-changes
if: $APP_CHANGE_TRIGGER == "true"
# QA framework changes present
.qa-framework-changes: &qa-framework-changes
if: $QA_FRAMEWORK_CHANGES == "true"
.never-when-qa-framework-changes-or-no-specific-specs:
- <<: *qa-framework-changes
when: never
- <<: *all-specs
when: never
.never-when-specific-specs-always-when-qa-framework-changes:
- <<: *specific-specs
when: never
- *qa-framework-changes
# ------------------------------------------
# Test
# ------------------------------------------
.rules:qa-smoke:
rules:
# always trigger smoke suite if review pipeline got triggered by specific changes in application code
- <<: *app-changes
variables:
QA_TESTS: "" # unset QA_TESTS even if specific tests were inferred from stage label
- *qa-framework-changes
- if: $QA_SUITES =~ /Test::Instance::Smoke/
.rules:qa-blocking:
rules:
- <<: *app-changes
when: never
- !reference [.never-when-qa-framework-changes-or-no-specific-specs]
- if: $QA_SUITES =~ /Test::Instance::ReviewBlocking/
.rules:qa-blocking-parallel:
rules:
# always trigger blocking suite if review pipeline got triggered by specific changes in application code
- <<: *app-changes
variables:
QA_TESTS: "" # unset QA_TESTS even if specific tests were inferred from stage label
- !reference [.never-when-specific-specs-always-when-qa-framework-changes]
- if: $QA_SUITES =~ /Test::Instance::ReviewBlocking/
.rules:qa-non-blocking:
rules:
- !reference [.never-when-qa-framework-changes-or-no-specific-specs]
- if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/
.rules:qa-non-blocking-parallel:
rules:
- !reference [.never-when-specific-specs-always-when-qa-framework-changes]
- *all-specs-mr # set full suite to manual when no specific specs passed in mr
- if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/
# ------------------------------------------
# Prepare/Report
# ------------------------------------------
# if no rules for test execution are matched, pipeline will not have e2e test jobs
# so we need to skip knapsack, allure and test resource deletion jobs as well
.rules:app-or-qa-framework-changes-or-review-scenarios:
rules:
- *app-changes
- *qa-framework-changes
- if: $QA_SUITES =~ /Test::Instance::Smoke/
- if: $QA_SUITES =~ /Test::Instance::ReviewBlocking/
- if: $QA_SUITES =~ /Test::Instance::ReviewNonBlocking/

View file

@ -1,13 +0,0 @@
stages:
- review
include:
- local: .gitlab/ci/global.gitlab-ci.yml
- local: .gitlab/ci/rules.gitlab-ci.yml
no-op:
extends:
- .review:rules:start-review-app-pipeline
stage: review
script:
- echo "Skip Review App because the MR includes only quarantine changes"

View file

@ -23,42 +23,13 @@ review-cleanup:
- ruby -rrubygems scripts/review_apps/automated_cleanup.rb
- gcp_cleanup
review-app-pipeline-generate:
image: ${GITLAB_DEPENDENCY_PROXY}ruby:${RUBY_VERSION}
stage: prepare
extends:
- .review:rules:start-review-app-pipeline
artifacts:
expire_in: 7d
paths:
- ${CHANGES_DIFFS_DIR}/*
- review-app-pipeline.yml
variables:
CHANGES_DIFFS_DIR: tmp/diffs
before_script:
- source scripts/utils.sh
- install_gitlab_gem
- tooling/bin/find_change_diffs ${CHANGES_DIFFS_DIR}
script:
- exit_code=0 && tooling/bin/qa/run_qa_check ${CHANGES_DIFFS_DIR} || exit_code=$?
- |
if [ $exit_code -eq 0 ]; then
echo "Review App will use the full pipeline"
cp .gitlab/ci/review-apps/main.gitlab-ci.yml review-app-pipeline.yml
elif [ $exit_code -eq 2 ]; then
echo "Skip Review App because the MR includes only quarantine changes"
cp .gitlab/ci/review-apps/skip-qa.gitlab-ci.yml review-app-pipeline.yml
else
exit $exit_code
fi
start-review-app-pipeline:
extends:
- .review:rules:start-review-app-pipeline
resource_group: review/${CI_COMMIT_REF_SLUG}${SCHEDULE_TYPE} # CI_ENVIRONMENT_SLUG is not available here and we want this to be the same as the environment
stage: review
needs:
- review-app-pipeline-generate
- job: e2e-test-pipeline-generate
- job: build-assets-image
artifacts: false
# These variables are set in the pipeline schedules.
@ -67,11 +38,36 @@ start-review-app-pipeline:
variables:
SCHEDULE_TYPE: $SCHEDULE_TYPE
DAST_RUN: $DAST_RUN
SKIP_MESSAGE: Skipping review-app due to mr containing only quarantine changes!
trigger:
strategy: depend
include:
- artifact: review-app-pipeline.yml
job: review-app-pipeline-generate
strategy: depend
job: e2e-test-pipeline-generate
# Fetch child pipeline test results and store in parent pipeline
# workaround until natively implemented: https://gitlab.com/groups/gitlab-org/-/epics/8205
review-app-test-results:
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3
stage: review
extends:
- .qa-cache
- .review:rules:start-review-app-pipeline
needs:
- start-review-app-pipeline
variables:
COLORIZED_LOGS: "true"
QA_LOG_LEVEL: "debug"
before_script:
- cd qa && bundle install
script:
- bundle exec rake "ci:download_test_results[start-review-app-pipeline,e2e-test-report,${CI_PROJECT_DIR}]"
when: always
allow_failure: true
artifacts:
when: always
reports:
junit: qa/tmp/rspec-*.xml
danger-review:
extends:

View file

@ -20,13 +20,7 @@
if: '$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG || $FORCE_GITLAB_CI'
.if-default-branch-refs: &if-default-branch-refs
if: '$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH'
.if-stable-branch-refs: &if-stable-branch-refs
if: '$CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/'
.if-default-branch-push: &if-default-branch-push
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
if: '$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_IID == null'
.if-auto-deploy-branches: &if-auto-deploy-branches
if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/'
@ -130,7 +124,7 @@
.if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified: &if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_MERGE_REQUEST_IID && $QA_TESTS'
.if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-qa: &if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-qa
.if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e: &if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_MERGE_REQUEST_IID && $QA_MANUAL_FF_PACKAGE_AND_QA'
.if-dot-com-gitlab-org-and-security-tag: &if-dot-com-gitlab-org-and-security-tag
@ -173,6 +167,9 @@
- ".gitlab/ci/frontend.gitlab-ci.yml"
- ".gitlab/ci/build-images.gitlab-ci.yml"
- ".gitlab/ci/qa.gitlab-ci.yml"
- ".gitlab/ci/package-and-test/*.yml"
- ".gitlab/ci/review-apps/qa.gitlab-ci.yml"
- ".gitlab/ci/review-apps/rules.gitlab-ci.yml"
.gitaly-patterns: &gitaly-patterns
- "GITALY_SERVER_VERSION"
@ -261,7 +258,7 @@
- "Dockerfile.assets"
- "config/**/*.js"
- "vendor/assets/**/*"
- "{app/assets,app/helpers,app/presenters,app/views,locale,public,spec/frontend,symbol}/**/*"
- "{app/assets,app/components,app/helpers,app/presenters,app/views,locale,public,spec/frontend,symbol}/**/*"
.controllers-patterns: &controllers-patterns
- "{,ee/,jh/}{app/controllers}/**/*"
@ -281,7 +278,7 @@
- "Rakefile"
- "config.ru"
# List explicitly all the app/ dirs that are backend (i.e. all except app/assets).
- "{,ee/,jh/}{app/channels,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*"
- "{,ee/,jh/}{app/channels,app/components,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*"
- "{,ee/,jh/}{bin,config,db,generator_templates,lib}/**/*"
- "{,ee/,jh/}spec/**/*"
# CI changes
@ -296,7 +293,7 @@
- "{,jh/}Gemfile.lock"
- "GITLAB_ELASTICSEARCH_INDEXER_VERSION"
# List explicitly all the app/ dirs that are backend (i.e. all except app/assets).
- "{,ee/,jh/}{app/channels,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*"
- "{,ee/,jh/}{app/channels,app/components,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*"
- "{,ee/,jh/}{bin,config,db,generator_templates,lib}/**/*"
- "{,ee/,jh/}spec/**/*"
@ -309,6 +306,8 @@
- "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/background_migration{,_spec}.rb"
- "{,ee/,jh/}spec/support/helpers/database/**/*"
- "lib/gitlab/markdown_cache/active_record/**/*"
- "lib/api/admin/batched_background_migrations.rb"
- "spec/requests/api/admin/batched_background_migrations_spec.rb"
- "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 has interactions with background migrations: https://gitlab.com/gitlab-org/gitlab/-/issues/336538
@ -333,7 +332,7 @@
.qa-patterns: &qa-patterns
- ".dockerignore"
- "qa/**/*"
- "{,jh/}qa/**/*"
# Code patterns + .ci-patterns
.code-patterns: &code-patterns
@ -411,7 +410,7 @@
- ".gitlab/ci/**/*"
# QA changes
- ".dockerignore"
- "qa/**/*"
- "{,jh/}qa/**/*"
# Mapped patterns (see tests.yml)
- "data/whats_new/*.yml"
@ -445,7 +444,7 @@
- "{,spec/}tooling/**/*"
# QA changes
- ".dockerignore"
- "qa/**/*"
- "{,jh/}qa/**/*"
# Mapped patterns (see tests.yml)
- "data/whats_new/*.yml"
@ -480,7 +479,7 @@
- "{,spec/}tooling/**/*"
# QA changes
- ".dockerignore"
- "qa/**/*"
- "{,jh/}qa/**/*"
# Workhorse changes
- "GITLAB_WORKHORSE_VERSION"
- "workhorse/**/*"
@ -491,9 +490,14 @@
.static-analysis-patterns: &static-analysis-patterns
- ".{codeclimate,eslintrc,haml-lint,haml-lint_todo}.yml"
- ".rubocop.yml"
- ".rubocop_todo.yml"
.rubocop-patterns: &rubocop-patterns
- ".{rubocop,rubocop_todo}.yml"
- ".rubocop_todo/**/*.yml"
- "{,ee/,jh/}rubocop/**/*" # We might be changing custom cops
- "{,ee/,jh/}Gemfile.lock" # This should include gitlab-styles, rubocop itself, and any plugins we might be using
- "lib/gitlab_edition.rb" # This is required in RuboCop::CodeReuseHelpers
- ".gitlab/ci/static-analysis.gitlab-ci.yml"
.danger-patterns: &danger-patterns
- "Dangerfile"
@ -528,6 +532,9 @@
rules:
- <<: *if-merge-request-approved
when: never
# Temporarily disabled minimal rspec jobs before and after approval because of https://gitlab.com/gitlab-org/gitlab/-/issues/373064.
- <<: *if-merge-request-not-approved
when: never
- <<: *if-automated-merge-request
when: never
- <<: *if-security-merge-request
@ -549,8 +556,6 @@
changes: *backend-patterns
- <<: *if-security-merge-request
changes: *backend-patterns
- <<: *if-merge-request-not-approved
when: never
.rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules:
rules:
@ -580,8 +585,6 @@
changes: *code-backstage-patterns
- <<: *if-security-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-not-approved
when: never
.rails:rules:system:minimal-default-rules:
rules:
@ -628,14 +631,16 @@
rules:
- <<: *if-not-ee
when: never
- <<: *if-not-canonical-namespace
when: never
- <<: *if-merge-request-targeting-stable-branch
- <<: *if-merge-request-labels-run-review-app
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *ci-build-images-patterns
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *code-qa-patterns
- <<: *if-dot-com-gitlab-org-default-branch
changes: *code-qa-patterns
- <<: *if-auto-deploy-branches
- <<: *if-default-branch-or-tag
- <<: *if-dot-com-gitlab-org-schedule
- <<: *if-force-ci
@ -714,6 +719,14 @@
##################
# Frontend rules #
##################
.frontend:rules:minimal-default-rules:
rules:
- <<: *if-automated-merge-request
when: never
- <<: *if-security-merge-request
when: never
.frontend:rules:compile-production-assets:
rules:
- <<: *if-not-canonical-namespace
@ -762,31 +775,28 @@
rules:
- !reference [".strict-ee-only-rules", rules]
- !reference [".frontend:rules:default-frontend-jobs-as-if-foss", rules]
- !reference [".frontend:rules:jest:minimal:as-if-foss", rules]
- <<: *if-merge-request
changes: *frontend-patterns-for-as-if-foss
.frontend:rules:jest:
rules:
- <<: *if-fork-merge-request
when: never
- <<: *if-merge-request-labels-run-all-jest
- <<: *if-default-refs
changes: *core-frontend-patterns
- <<: *if-merge-request
changes: *ci-patterns
changes: [".gitlab/ci/rules.gitlab-ci.yml", ".gitlab/ci/frontend.gitlab-ci.yml"]
- <<: *if-automated-merge-request
changes: *code-backstage-patterns
- <<: *if-security-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-not-approved
when: never
- <<: *if-default-refs
- <<: *if-default-branch-refs
changes: *code-backstage-patterns
.frontend:rules:jest:minimal:
rules:
- <<: *if-fork-merge-request
changes: *code-backstage-patterns
- !reference [".rails:rules:minimal-default-rules", rules]
- !reference [".frontend:rules:minimal-default-rules", rules]
- <<: *if-merge-request-labels-run-all-jest
when: never
- changes: *core-frontend-patterns
@ -797,30 +807,24 @@
- <<: *if-merge-request
changes: *code-backstage-patterns
.frontend:rules:jest:as-if-foss:
rules:
- !reference [".strict-ee-only-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
- <<: *if-merge-request-labels-run-all-jest
- <<: *if-security-merge-request
changes: *code-backstage-patterns
.frontend:rules:jest:minimal:as-if-foss:
rules:
- !reference [".strict-ee-only-rules", rules]
- <<: *if-security-merge-request
changes: *code-backstage-patterns
when: never
- <<: *if-merge-request-labels-as-if-foss
when: never
- !reference [".frontend:rules:minimal-default-rules", rules]
- <<: *if-merge-request-labels-run-all-jest
when: never
- <<: *if-merge-request-labels-run-all-rspec
when: never
- <<: *if-merge-request
changes: *startup-css-patterns
when: never
- <<: *if-merge-request
changes: *ci-patterns
when: never
- <<: *if-fork-merge-request
when: never
- <<: *if-merge-request
changes: *core-frontend-patterns
- <<: *if-merge-request
changes: *code-backstage-patterns
changes: *frontend-patterns-for-as-if-foss
.frontend:rules:eslint-as-if-foss:
rules:
@ -829,13 +833,14 @@
- <<: *if-merge-request
changes: *frontend-patterns-for-as-if-foss
.frontend:rules:ee-mr-and-default-branch-only:
.frontend:rules:coverage-frontend:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-labels-pipeline-revert
when: never
- <<: *if-merge-request
changes: *code-backstage-patterns
when: always
- <<: *if-default-branch-refs
changes: *code-backstage-patterns
@ -859,6 +864,9 @@
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-default-branch-refs
changes: *frontend-build-patterns
allow_failure: true
- if: '$DANGER_GITLAB_API_TOKEN && $CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
changes: *frontend-build-patterns
allow_failure: true
@ -907,7 +915,7 @@
- <<: *if-default-refs
changes: *qa-patterns
.qa:rules:determine-qa-tests:
.qa:rules:determine-e2e-tests:
rules:
- <<: *if-not-ee
when: never
@ -921,14 +929,23 @@
- <<: *if-force-ci
allow_failure: true
.qa:rules:package-and-qa:
.qa:rules:package-and-test:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-not-ee
when: never
- <<: *if-merge-request-labels-pipeline-revert
when: never
- <<: *if-merge-request-targeting-stable-branch
allow_failure: true
- <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
changes: *feature-flag-development-config-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *feature-flag-development-config-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *nodejs-patterns
allow_failure: true
@ -947,24 +964,14 @@
allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule
allow_failure: true
variables:
SKIP_REPORT_IN_ISSUES: "false"
PROCESS_TEST_RESULTS: "true"
KNAPSACK_GENERATE_REPORT: "true"
- <<: *if-force-ci
when: manual
allow_failure: true
.qa:rules:package-and-qa:feature-flags:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-labels-pipeline-revert
when: never
- <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-qa
changes: *feature-flag-development-config-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-and-security-merge-request
changes: *feature-flag-development-config-patterns
allow_failure: true
###############
# Rails rules #
###############
@ -1012,8 +1019,6 @@
changes: *db-patterns
- <<: *if-security-merge-request
changes: *db-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *db-patterns
.rails:rules:ee-and-foss-migration:minimal:
@ -1117,8 +1122,6 @@
changes: *db-patterns
- <<: *if-security-merge-request
changes: *db-patterns
- <<: *if-merge-request-not-approved
when: never
- changes: *db-patterns
.rails:rules:ee-only-migration:minimal:
@ -1208,8 +1211,6 @@
changes: *db-patterns
- <<: *if-security-merge-request
changes: *db-patterns
- <<: *if-merge-request-not-approved
when: never
.rails:rules:as-if-foss-migration:minimal:
rules:
@ -1365,12 +1366,12 @@
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-labels-pipeline-revert
when: never
- <<: *if-merge-request
changes: *code-backstage-patterns
when: always
- <<: *if-default-branch-schedule-maintenance
- <<: *if-merge-request-labels-run-all-rspec
when: always
.rails:rules:rspec-undercoverage:
rules:
@ -1410,6 +1411,8 @@
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-labels-pipeline-revert
when: never
- if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true" || $RETRY_FAILED_TESTS_IN_NEW_PROCESS == "true"'
changes: *code-backstage-patterns
when: always
@ -1421,24 +1424,42 @@
# Static analysis rules #
#########################
.static-analysis:rules:ee-and-foss:
.static-analysis:rules:static-analysis:
rules:
- changes: *code-backstage-qa-patterns
- changes: *static-analysis-patterns
.static-analysis:rules:ee-and-foss-qa:
.static-analysis:rules:static-verification-with-database:
rules:
- changes: *code-backstage-qa-patterns
.static-analysis:rules:rubocop:
rules:
- changes: *rubocop-patterns
variables:
RUN_ALL_RUBOCOP: "true"
- changes: *code-backstage-qa-patterns
.static-analysis:rules:qa:metadata-lint:
rules:
- changes: *qa-patterns
- changes: *static-analysis-patterns
- changes: [".gitlab/ci/static-analysis.gitlab-ci.yml"]
.static-analysis:rules:ee:
.static-analysis:rules:haml-lint:
rules:
- changes: *rubocop-patterns
- changes: *static-analysis-patterns
- changes: *code-backstage-qa-patterns
.static-analysis:rules:haml-lint-ee:
rules:
- <<: *if-not-ee
when: never
- changes: *code-backstage-qa-patterns
- changes: *rubocop-patterns
- changes: *static-analysis-patterns
- changes: *code-backstage-qa-patterns
.static-analysis:rules:as-if-foss:
.static-analysis:rules:static-analysis-as-if-foss:
rules:
- <<: *if-not-ee
when: never
@ -1447,7 +1468,7 @@
- <<: *if-security-merge-request
changes: *code-backstage-qa-patterns
- <<: *if-merge-request
changes: *ci-patterns
changes: [".gitlab/ci/static-analysis.gitlab-ci.yml"]
- <<: *if-merge-request
changes: *static-analysis-patterns
@ -1461,6 +1482,12 @@
changes: ["vendor/gems/mail-smtp_pool/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
.vendor:rules:microsoft_graph_mailer:
rules:
- <<: *if-merge-request
changes: ["vendor/gems/microsoft_graph_mailer/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
.vendor:rules:ipynbdiff:
rules:
- <<: *if-merge-request
@ -1491,12 +1518,30 @@
changes: ["vendor/gems/omniauth-gitlab/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
.vendor:rules:omniauth-google-oauth2:
rules:
- <<: *if-merge-request
changes: ["vendor/gems/omniauth-google-oauth2/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
.vendor:rules:omniauth-salesforce:
rules:
- <<: *if-merge-request
changes: ["vendor/gems/omniauth-salesforce/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
.vendor:rules:devise-pbkdf2-encryptable:
rules:
- <<: *if-merge-request
changes: ["vendor/gems/devise-pbkdf2-encryptable/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
.vendor:rules:bundler-checksum:
rules:
- <<: *if-merge-request
changes: ["vendor/gems/bundler-checksum/**/*"]
- <<: *if-merge-request-labels-run-all-rspec
##################
# Releases rules #
##################
@ -1620,6 +1665,13 @@
################
# Review rules #
################
.review-change-pattern: &review-change-pattern
APP_CHANGE_TRIGGER: "true"
# The following rules needs to be the same as the one for .review:rules:review-cleanup
# except that:
# - most rules re automatic here (i.e. no `when: manual`) and not allowed to fail (i.e. no `allow_failure: true`) here
# - several rules have `variables: *review-change-pattern` here
.review:rules:start-review-app-pipeline:
rules:
- <<: *if-not-ee
@ -1631,12 +1683,16 @@
changes: *ci-review-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-build-patterns
variables: *review-change-pattern
- <<: *if-dot-com-gitlab-org-merge-request
changes: *controllers-patterns
variables: *review-change-pattern
- <<: *if-dot-com-gitlab-org-merge-request
changes: *models-patterns
variables: *review-change-pattern
- <<: *if-dot-com-gitlab-org-merge-request
changes: *lib-gitlab-patterns
variables: *review-change-pattern
- <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
- <<: *if-dot-com-gitlab-org-merge-request
@ -1670,54 +1726,44 @@
rules:
- when: on_success
.review:rules:review-qa-smoke:
rules:
- when: on_success
# If the needed job isn't allowed to fail, we need to use `when: always` in
# order to keep the job always running after it.
#
# If the needed job is allowed to fail, we need to use both
# `when: on_success` and `when: on_failure` in order to keep
# the job always running after it.
# Not that if the needed job has `when: on_success` we can use `when: always`
# for the depending job.
#
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/76756
.review:rules:review-qa-reliable:
rules:
- when: on_success
# Since `review-qa-reliable` isn't allowed to fail, we need to use `when: always`for `review-qa-reliable-report`.
.review:rules:review-qa-blocking-report:
rules:
- when: always
.review:rules:review-qa-all:
rules:
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns
when: manual
allow_failure: true # manual jobs needs to be allowed to fail, otherwise they block the pipeline
- when: on_success
allow_failure: true
# Since `review-qa-all` is allowed to fail (and potentially manual), we need to use `when: on_success` and `when: on_failure` for `review-qa-all-report`.
.review:rules:review-qa-all-report:
rules:
- when: on_success
- when: on_failure
.review:rules:review-qa-cleanup:
rules:
- when: always
# The following rules needs to be the same as the one for .review:rules:start-review-app-pipeline
# except that:
# - all rules have `when: manual` and `allow_failure: true` here
.review:rules:review-cleanup:
rules:
- <<: *if-not-ee
when: never
- <<: *if-merge-request-labels-pipeline-revert
when: never
- <<: *if-merge-request-labels-run-review-app
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *ci-review-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *frontend-build-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *controllers-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *models-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *lib-gitlab-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns
when: manual
allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule
@ -1754,6 +1800,10 @@
when: never
- <<: *if-default-branch-or-tag
changes: *code-backstage-qa-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: [".gitlab/ci/setup.gitlab-ci.yml"]
when: manual
allow_failure: true
.setup:rules:dont-interrupt-me:
rules:

View file

@ -3,16 +3,20 @@
cache gems:
extends:
- .default-retry
- .rails-cache
- .ruby-cache
- .default-before_script
- .setup:rules:cache-gems
stage: test
needs: ["setup-test-env"]
stage: prepare
needs: []
variables:
BUNDLE_INSTALL_FLAGS: --with=production --with=development --with=test --jobs=2 --path=vendor --retry=3 --quiet
BUNDLE_WITHOUT: ""
BUNDLE_WITH: "production:development:test"
SETUP_DB: "false"
script:
- bundle package --all --all-platforms
- echo -e "\e[0Ksection_start:`date +%s`:bundle-package[collapsed=true]\r\e[0KPackaging gems"
- bundle config set cache_all true
- run_timed_command "bundle package --all-platforms"
- echo -e "\e[0Ksection_end:`date +%s`:bundle-package\r\e[0K"
artifacts:
paths:
- vendor/cache
@ -110,10 +114,13 @@ generate-frontend-fixtures-mapping:
paths:
- ${FRONTEND_FIXTURES_MAPPING_PATH}
.detect-test-base:
detect-tests:
extends: .rails:rules:detect-tests
image: ${GITLAB_DEPENDENCY_PROXY}ruby:${RUBY_VERSION}
needs: []
stage: prepare
variables:
RSPEC_TESTS_MAPPING_ENABLED: "true"
script:
- source ./scripts/utils.sh
- source ./scripts/rspec_helpers.sh
@ -123,42 +130,23 @@ generate-frontend-fixtures-mapping:
- retrieve_frontend_fixtures_mapping
- |
if [ -n "$CI_MERGE_REQUEST_IID" ]; then
tooling/bin/find_changes ${CHANGES_FILE};
tooling/bin/find_tests ${CHANGES_FILE} ${MATCHED_TESTS_FILE};
tooling/bin/find_changes ${CHANGES_FILE} ${MATCHED_TESTS_FILE} ${FRONTEND_FIXTURES_MAPPING_PATH};
echo "Changed files: $(cat $CHANGES_FILE)";
echo "Related rspec tests: $(cat $MATCHED_TESTS_FILE)";
mkdir -p $(dirname "$RSPEC_CHANGED_FILES_PATH")
tooling/bin/find_changes ${RSPEC_CHANGED_FILES_PATH};
tooling/bin/find_tests ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH};
tooling/bin/find_changes ${RSPEC_CHANGED_FILES_PATH} ${RSPEC_MATCHING_TESTS_PATH} ${FRONTEND_FIXTURES_MAPPING_PATH};
echo "Changed files: $(cat $RSPEC_CHANGED_FILES_PATH)";
echo "Related rspec tests: $(cat $RSPEC_MATCHING_TESTS_PATH)";
fi
artifacts:
expire_in: 7d
paths:
- ${CHANGES_FILE}
- ${MATCHED_TESTS_FILE}
- ${RSPEC_CHANGED_FILES_PATH}
- ${RSPEC_MATCHING_TESTS_PATH}
- ${FRONTEND_FIXTURES_MAPPING_PATH}
detect-tests:
extends:
- .detect-test-base
- .rails:rules:detect-tests
variables:
RSPEC_TESTS_MAPPING_ENABLED: "true"
CHANGES_FILE: tmp/changed_files.txt
MATCHED_TESTS_FILE: tmp/matching_tests.txt
detect-tests as-if-foss:
extends:
- .detect-test-base
- .rails:rules:detect-tests
- .as-if-foss
variables:
CHANGES_FILE: tmp/changed_foss_files.txt
MATCHED_TESTS_FILE: tmp/matching_foss_tests.txt
before_script:
- '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb'
detect-previous-failed-tests:
extends:
- .detect-test-base
- detect-tests
- .rails:rules:detect-previous-failed-tests
variables:
PREVIOUS_FAILED_TESTS_DIR: tmp/previous_failed_tests/
@ -172,3 +160,23 @@ detect-previous-failed-tests:
expire_in: 7d
paths:
- ${PREVIOUS_FAILED_TESTS_DIR}
e2e-test-pipeline-generate:
extends:
- .qa-job-base
- .minimal-job
- .qa:rules:determine-e2e-tests
stage: prepare
variables:
ENV_FILE: $CI_PROJECT_DIR/qa_tests_vars.env
OMNIBUS_PIPELINE_YML: package-and-test-pipeline.yml
REVIEW_PIPELINE_YML: review-app-pipeline.yml
COLORIZED_LOGS: "true"
script:
- bundle exec rake "ci:detect_changes[$ENV_FILE]"
- cd $CI_PROJECT_DIR && scripts/generate-e2e-pipeline
artifacts:
expire_in: 1 day
paths:
- $OMNIBUS_PIPELINE_YML
- $REVIEW_PIPELINE_YML

View file

@ -19,13 +19,16 @@ update-static-analysis-cache:
- .shared:rules:update-cache
stage: prepare
script:
- run_timed_command "bundle exec rubocop --parallel" # For the moment we only cache `tmp/rubocop_cache` so we don't need to run all the tasks.
# Silence cop offenses for rules with "grace period".
# This will notify Slack if offenses were silenced.
# For the moment we only cache `tmp/rubocop_cache` so we don't need to run all the tasks.
- run_timed_command "bundle exec rake rubocop:check:graceful"
static-analysis:
extends:
- .static-analysis-base
- .static-analysis-cache
- .static-analysis:rules:ee-and-foss
- .static-analysis:rules:static-analysis
parallel: 2
script:
- run_timed_command "retry yarn install --frozen-lockfile"
@ -34,14 +37,14 @@ static-analysis:
static-analysis as-if-foss:
extends:
- static-analysis
- .static-analysis:rules:as-if-foss
- .static-analysis:rules:static-analysis-as-if-foss
- .as-if-foss
static-verification-with-database:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
- .static-analysis:rules:static-verification-with-database
- .use-pg12
script:
- bundle exec rake lint:static_verification_with_database
@ -91,13 +94,13 @@ eslint as-if-foss:
- .as-if-foss
needs: ['generate-apollo-graphql-schema as-if-foss']
haml-lint foss:
haml-lint:
extends:
- .static-analysis-base
- .ruby-cache
- .static-analysis:rules:ee-and-foss
- .static-analysis:rules:haml-lint
script:
- run_timed_command "bin/rake 'haml_lint[app/views]'"
- run_timed_command "bundle exec haml-lint --parallel app/views"
artifacts:
expire_in: 31d
when: always
@ -106,23 +109,37 @@ haml-lint foss:
haml-lint ee:
extends:
- "haml-lint foss"
- .static-analysis:rules:ee
- "haml-lint"
- .static-analysis:rules:haml-lint-ee
script:
- run_timed_command "bin/rake 'haml_lint[ee/app/views]'"
- run_timed_command "bundle exec haml-lint --parallel ee/app/views"
rubocop:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
- .static-analysis:rules:rubocop
needs:
- job: detect-tests
optional: true
script:
- run_timed_command "bundle exec rubocop --parallel"
- |
# For non-merge request, or when RUN_ALL_RUBOCOP is 'true', run all RuboCop rules
if [ -z "${CI_MERGE_REQUEST_IID}" ] || [ "${RUN_ALL_RUBOCOP}" == "true" ]; then
# Silence cop offenses for rules with "grace period".
# We won't notify Slack if offenses were silenced to avoid frequent messages.
# Job `update-static-analysis-cache` takes care of Slack notifications every 2 hours.
unset CI_SLACK_WEBHOOK_URL
run_timed_command "bundle exec rake rubocop:check:graceful"
else
cat ${RSPEC_CHANGED_FILES_PATH} | ruby -e 'puts $stdin.read.split(" ").select { |f| File.exist?(f) }.join(" ")' > tmp/rubocop_target_files.txt
run_timed_command "bundle exec rubocop --parallel --force-exclusion $(cat tmp/rubocop_target_files.txt)"
fi
qa:metadata-lint:
extends:
- .static-analysis-base
- .static-analysis:rules:ee-and-foss-qa
- .static-analysis:rules:qa:metadata-lint
before_script:
- !reference [.default-before_script, before_script]
- cd qa/
@ -149,7 +166,7 @@ feature-flags-usage:
extends:
- .static-analysis-base
- .rubocop-job-cache
- .static-analysis:rules:ee-and-foss
- .static-analysis:rules:rubocop
script:
# We need to disable the cache for this cop since it creates files under tmp/feature_flags/*.used,
# the cache would prevent these files from being created.

View file

@ -6,6 +6,14 @@ vendor mail-smtp_pool:
include: vendor/gems/mail-smtp_pool/.gitlab-ci.yml
strategy: depend
vendor microsoft_graph_mailer:
extends:
- .vendor:rules:microsoft_graph_mailer
needs: []
trigger:
include: vendor/gems/microsoft_graph_mailer/.gitlab-ci.yml
strategy: depend
vendor ipynbdiff:
extends:
- .vendor:rules:ipynbdiff
@ -46,6 +54,22 @@ vendor omniauth-gitlab:
include: vendor/gems/omniauth-gitlab/.gitlab-ci.yml
strategy: depend
vendor omniauth-google-oauth2:
extends:
- .vendor:rules:omniauth-google-oauth2
needs: []
trigger:
include: vendor/gems/omniauth-google-oauth2/.gitlab-ci.yml
strategy: depend
vendor omniauth-salesforce:
extends:
- .vendor:rules:omniauth-salesforce
needs: []
trigger:
include: vendor/gems/omniauth-salesforce/.gitlab-ci.yml
strategy: depend
vendor devise-pbkdf2-encryptable:
extends:
- .vendor:rules:devise-pbkdf2-encryptable
@ -53,3 +77,11 @@ vendor devise-pbkdf2-encryptable:
trigger:
include: vendor/gems/devise-pbkdf2-encryptable/.gitlab-ci.yml
strategy: depend
vendor bundler-checksum:
extends:
- .vendor:rules:bundler-checksum
needs: []
trigger:
include: vendor/gems/bundler-checksum/.gitlab-ci.yml
strategy: depend

View file

@ -9,23 +9,38 @@ workhorse:verify:
.workhorse:test:
extends: .workhorse:rules:workhorse
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-golang-${GO_VERSION}:git-2.36
variables:
GITALY_ADDRESS: "tcp://127.0.0.1:8075"
GO_VERSION: "1.17"
stage: test
needs:
- setup-test-env
script:
before_script:
- go version
- apt-get update && apt-get -y install libimage-exiftool-perl
- scripts/gitaly-test-build
script:
- make -C workhorse test
workhorse:test using go 1.17:
workhorse:test go:
extends: .workhorse:test
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-golang-1.17-git-2.31
parallel:
matrix:
- GO_VERSION: ["1.17", "1.18"]
script:
- make -C workhorse test-coverage
coverage: '/\d+.\d+%/'
artifacts:
paths:
- workhorse/coverage.html
workhorse:test using go 1.17 with FIPS:
workhorse:test fips:
extends: .workhorse:test
variables:
WORKHORSE_TEST_FIPS_ENABLED: 1
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-golang-1.17-git-2.31
workhorse:test race:
extends: .workhorse:test
script:
- make -C workhorse test-race

View file

@ -1,4 +1,5 @@
<!-- Audit Event documentation: See https://docs.gitlab.com/ee/administration/audit_events.html -->
<!-- Streaming Audit Event documentation: See https://docs.gitlab.com/ee/administration/audit_event_streaming.html -->
## Audit need
@ -8,6 +9,11 @@
<!-- Describe the audit event you are proposing should be added, including any details of what should be captured, how, and why. -->
### Streaming-only event or normal event?
<!-- Should this event be a streaming-only audit event or also logged to GitLab's database? Consider the
volume of data that will be generated by the event when answering this. -->
/label ~"Category:Audit Events"
/label ~"type::feature"
/label ~"group::compliance"

View file

@ -46,7 +46,7 @@ Which tier is this feature available in?
Please add links to the relevant merge requests.
- As soon as possible, but no later than the third milestone preceding the major release (for example, given the following release schedule: `14.8, 14.9, 14.10, 15.0` `14.8` is the third milestone preceding the major release):
- [ ] A [deprecation entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry) has been created so the deprecation will appear in release posts and on the [general deprecation page](https://docs.gitlab.com/ee/update/deprecations).
- [ ] A [deprecation announcement entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-announcement) has been created so the deprecation will appear in release posts and on the [general deprecation page](https://docs.gitlab.com/ee/update/deprecations).
- [ ] Documentation has been updated to mark the feature as [deprecated](https://docs.gitlab.com/ee/development/documentation/versions.html#deprecations-and-removals).
- [ ] On or before the major milestone: A [removal entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#removals) has been created so the removal will appear on the [removals by milestones](https://docs.gitlab.com/ee/update/removals) page and be announced in the release post.
- On the major milestone:

View file

@ -7,18 +7,27 @@
* feature development should use the Feature Request template.
-->
If you are a community contributor:
If you are a community contributor, **do not work on the issue if it is not assigned to you yet**.
1. To work on an issue, type `@gl-docsteam I would like to work on this issue.`
in a comment. A technical writer
will assign the issue to you. Do not work on the issue before it is assigned to you.
If someone has already chosen the issue, pick another or view docs [in the docs directory](https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc)
Additionally, please review these points before working on this issue:
1. If you would like to work on the issue, type `@gl-docsteam I would like to work on this issue.`
in a comment. A technical writer will assign the issue to you. If someone has already chosen this issue,
pick another issue, or view docs [in the docs directory](https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc)
and open a merge request for any page you feel can be improved.
1. Create a merge request for the issue. If this is for a Hackathon, do not create the merge request
before the Hackathon has started or it will not be counted towards the Hackathon. If you were not
assigned the issue, do not create a merge request. It will not be accepted.
1. Copy the link to this issue and add it to the merge request's description, which will link
the merge request and the issue together.
1. Carefully review the [merge request guidelines for contributors](https://docs.gitlab.com/ee/development/contributing/merge_request_workflow.html#merge-request-guidelines-for-contributors).
1. Carefully review the [commit message guidelines](https://docs.gitlab.com/ee/development/contributing/merge_request_workflow.html#commit-messages-guidelines).
1. Create a merge request for the issue:
- If you were not assigned the issue, do not create a merge request. It will not be accepted.
- If this is for a Hackathon, do not create the merge request before the Hackathon has started
or it will not be counted towards the Hackathon.
- Unless otherwise stated below, we expect one merge request per issue, so combine
all changes together. If there is too much work for you to handle in one merge request,
you can create more, but try to keep the number of merge requests as small as possible.
- Select the **Documentation** merge request description template, and fill it out
with the details of your work.
- Copy the link to this issue and add it to the merge request's description,
which links the merge request and the issue together.
1. After your merge request is accepted and merged, close this issue.
If you notice things you'd like to fix that are not part of the issue, open separate merge requests for those issues.
@ -37,6 +46,9 @@ Thank you again for contributing to the GitLab documentation!
* several moderate changes on one page, a few intermediate changes across five pages, or several very small
* changes for up to 10 pages. Larger items should be broken out into other issues to better distribute
* the opportunities for contributors.
*
* If you expect the work to take more than one MR to resolve, explain approximately
* how many MRs you expect to receive for the issue.
-->
## Additional information

View file

@ -27,7 +27,7 @@ Broken metrics issues are marked with the ~"broken metric" label.
1. Note which bastion host machine was assigned. For example: `<username>@bastion-01-inf-gprd.c.gitlab-production.internal:~$` shows that you are connected to `bastion-01-inf-gprd.c.gitlab-production.internal`.
1. Create a named screen: `screen -S $USER-service-ping-$(date +%F)`.
1. Connect to the console host: `ssh $USER-rails@console-01-sv-gprd.c.gitlab-production.internal`.
1. Run: `ServicePing::SubmitService.new.execute`.
1. Run: `GitlabServicePingWorker.new.perform('triggered_from_cron' => false)`.
1. Press <kbd>Control</kbd>+<kbd>a</kbd> followed by <kbd>Control</kbd>+<kbd>d</kbd> to detach from the screen session.
1. Exit from the bastion: `exit`.
@ -58,12 +58,12 @@ OR
## Service Ping process triggering (through a long-running SSH session)
1. Connect to the `gprd` Rails console.
1. Run `SubmitUsagePingService.new.execute`. This process requires more than 30 hours to complete.
1. Run `GitlabServicePingWorker.new.perform('triggered_from_cron' => false)`. This process requires more than 30 hours to complete.
1. Find the last payload in the `raw_usage_data` table: `RawUsageData.last.payload`.
1. Check the when the payload was sent: `RawUsageData.last.sent_at`.
```plaintext
ServicePing::SubmitService.new.execute
GitlabServicePingWorker.new.perform('triggered_from_cron' => false)
# Get the payload
RawUsageData.last.payload

View file

@ -30,8 +30,12 @@ Deprecation announcements can and should be created and merged into Docs at any
---
Please review the [guidelines for deprecations](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations),
as well as the process for [creating a deprecation entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry).
Please review:
- The definitions of ["Deprecation", "End of Support", and "Removal"](https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology).
- The [guidelines for deprecations](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations).
- The process for [creating a deprecation entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry).
They are frequently updated, and everyone should make sure they are aware of the current standards (PM, PMM, EM, and TW).
## EM/PM release post item checklist

View file

@ -26,7 +26,6 @@ the noise (due to constantly failing tests, flaky tests, and so on) so that new
- [ ] Dequarantine test check-list
- [ ] Follow the [Dequarantining Tests guide](https://about.gitlab.com/handbook/engineering/quality/quality-engineering/debugging-qa-test-failures/#dequarantining-tests).
- [ ] Confirm the test consistently passes on the target GitLab environment(s).
- [ ] (Optionally) [Trigger a manual GitLab-QA pipeline](https://about.gitlab.com/handbook/engineering/quality/quality-engineering/tips-and-tricks/#running-gitlab-qa-pipeline-against-a-specific-gitlab-release) against a specific GitLab environment using the `RELEASE` variable from the `package-and-qa` job of the current merge request.
- [ ] To ensure a faster turnaround, ask in the `#quality` Slack channel for someone to review and merge the merge request, rather than assigning it directly.
<!-- Base labels. -->

View file

@ -36,7 +36,10 @@ If the removal creates a [breaking change](https://about.gitlab.com/handbook/pro
---
Please review the [guidelines for removals](https://about.gitlab.com/handbook/marketing/blog/release-posts/#removals).
Please review:
- The definitions of ["Deprecation", "End of Support", and "Removal"](https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology).
- The [guidelines for removals](https://about.gitlab.com/handbook/marketing/blog/release-posts/#removals).
## EM/PM release post item checklist

View file

@ -21,7 +21,7 @@ See [the general developer security release guidelines](https://gitlab.com/gitla
- [ ] Ensure it's approved according to our [Approval Guidelines].
- [ ] Ensure it's approved by an AppSec engineer.
- Please see the security release [Code reviews and Approvals] documentation for details on which AppSec team member to ping for approval.
- Trigger the [`package-and-qa` build]. The docker image generated will be used by the AppSec engineer to validate the security vulnerability has been remediated.
- Trigger the [`e2e:package-and-test` job]. The docker image generated will be used by the AppSec engineer to validate the security vulnerability has been remediated.
- [ ] For a backport MR targeting a versioned stable branch (`X-Y-stable-ee`).
- [ ] Milestone is set to the version this backport applies to. A closed milestone can be assigned via [quick actions].
- [ ] Ensure it's approved by a maintainer.
@ -42,4 +42,4 @@ See [the general developer security release guidelines](https://gitlab.com/gitla
[Code reviews and Approvals]: (https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#code-reviews-and-approvals)
[Approval Guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines
[Canonical repository]: https://gitlab.com/gitlab-org/gitlab
[`package-and-qa` build]: https://docs.gitlab.com/ee/development/testing_guide/end_to_end/#using-the-package-and-qa-job
[`e2e:package-and-test` job]: https://docs.gitlab.com/ee/development/testing_guide/end_to_end/#using-the-package-and-test-job

View file

@ -0,0 +1,6 @@
[secrets]
[[secrets.ruleset]]
disable = true
[secrets.ruleset.identifier]
type = "gitleaks_rule_id"
value = "Password in URL"

View file

@ -23,7 +23,8 @@ first-line-h1: false
code-block-style:
style: "fenced"
emphasis-style: false
strong-style: false
link-fragments: false
reference-links-images: false
proper-names:
names: [
"Akismet",

View file

@ -44,7 +44,7 @@ AllCops:
- 'db/ci_migrate/*.rb' # since the `db/ci_migrate` is a symlinked to `db/migrate`
# Use absolute path to avoid orphan directories with changed workspace root.
CacheRootDirectory: <%= Dir.getwd %>/tmp
MaxFilesInCache: 30000
MaxFilesInCache: 35000
Metrics/ParameterLists:
Exclude:
@ -566,21 +566,8 @@ Graphql/Descriptions:
RSpec/ImplicitSubject:
Enabled: false
RSpec/DescribedClass:
Enabled: false
RSpec/SharedExamples:
Enabled: false
RSpec/EmptyLineAfterExampleGroup:
Enabled: false
RSpec/ReceiveNever:
Enabled: false
RSpec/MissingExampleGroupArgument:
Enabled: false
# Already covered by `RSpec::Configuration#on_potential_false_positives = :raise`.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86429
RSpec/UnspecifiedException:
Enabled: false
@ -612,9 +599,6 @@ Style/MultilineWhenThen:
Style/NumericPredicate:
EnforcedStyle: comparison
Style/FloatDivision:
Enabled: false
Cop/BanCatchThrow:
Enabled: true

View file

@ -52,7 +52,6 @@ Cop/UserAdmin:
- lib/api/entities/ci/runner_details.rb
- lib/api/groups.rb
- lib/api/helpers.rb
- lib/api/personal_access_tokens.rb
- lib/api/users.rb
- lib/api/v3/github.rb
- lib/constraints/admin_constrainer.rb

View file

@ -7,7 +7,6 @@ Database/MultipleDatabases:
- 'db/post_migrate/20210812013042_remove_duplicate_project_authorizations.rb'
- 'ee/spec/services/ee/merge_requests/update_service_spec.rb'
- 'lib/gitlab/background_migration/backfill_projects_with_coverage.rb'
- 'lib/gitlab/background_migration/copy_ci_builds_columns_to_security_scans.rb'
- 'spec/db/schema_spec.rb'
- 'spec/initializers/database_config_spec.rb'
- 'spec/lib/gitlab/database_spec.rb'

View file

@ -41,7 +41,7 @@ Gitlab/FeatureAvailableUsage:
- ee/app/helpers/ee/search_helper.rb
- ee/app/helpers/ee/tree_helper.rb
- ee/app/models/approval_state.rb
- ee/app/models/concerns/approvable.rb
- ee/app/models/concerns/ee/approvable.rb
- ee/app/models/concerns/ee/project_security_scanners_information.rb
- ee/app/models/concerns/ee/protected_ref_access.rb
- ee/app/models/concerns/insights_feature.rb
@ -140,6 +140,7 @@ Gitlab/FeatureAvailableUsage:
- ee/lib/ee/gitlab/tree_summary.rb
- ee/lib/gitlab/alert_management.rb
- ee/lib/gitlab/ci/pipeline/chain/config/content/compliance.rb
- ee/lib/gitlab/ci/project_config/compliance.rb
- ee/lib/gitlab/code_owners.rb
- ee/lib/gitlab/incident_management.rb
- ee/lib/gitlab/path_locks_finder.rb

View file

@ -252,7 +252,6 @@ Gitlab/NamespacedClass:
- 'app/models/notification_setting.rb'
- 'app/models/oauth_access_grant.rb'
- 'app/models/oauth_access_token.rb'
- 'app/models/onboarding_progress.rb'
- 'app/models/out_of_context_discussion.rb'
- 'app/models/pages_deployment.rb'
- 'app/models/pages_domain.rb'
@ -405,6 +404,7 @@ Gitlab/NamespacedClass:
- 'app/policies/project_hook_policy.rb'
- 'app/policies/prometheus_alert_policy.rb'
- 'app/policies/protected_branch_policy.rb'
- 'app/policies/protected_branch_access_policy.rb'
- 'app/policies/release_policy.rb'
- 'app/policies/repository_policy.rb'
- 'app/policies/resource_label_event_policy.rb'
@ -656,7 +656,6 @@ Gitlab/NamespacedClass:
- 'app/services/metrics_service.rb'
- 'app/services/note_summary.rb'
- 'app/services/notification_service.rb'
- 'app/services/onboarding_progress_service.rb'
- 'app/services/post_receive_service.rb'
- 'app/services/preview_markdown_service.rb'
- 'app/services/push_event_payload_service.rb'
@ -852,7 +851,7 @@ Gitlab/NamespacedClass:
- 'app/workers/x509_issuer_crl_check_worker.rb'
- 'ee/app/controllers/countries_controller.rb'
- 'ee/app/controllers/country_states_controller.rb'
- 'ee/app/controllers/omniauth_kerberos_spnego_controller.rb'
- 'ee/app/controllers/omniauth_kerberos_controller.rb'
- 'ee/app/controllers/operations_controller.rb'
- 'ee/app/controllers/sitemap_controller.rb'
- 'ee/app/controllers/smartcard_controller.rb'

View file

@ -391,7 +391,6 @@ Layout/ArgumentAlignment:
- 'ee/spec/features/projects/environments/environments_spec.rb'
- 'ee/spec/features/projects/merge_requests/user_edits_merge_request_spec.rb'
- 'ee/spec/features/projects/pipelines/pipeline_spec.rb'
- 'ee/spec/features/uncompleted_learn_gitlab_link_spec.rb'
- 'ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb'
- 'ee/spec/frontend/fixtures/search.rb'
- 'ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb'

View file

@ -2,157 +2,6 @@
# Cop supports --auto-correct.
Layout/FirstArrayElementIndentation:
Exclude:
- 'app/controllers/abuse_reports_controller.rb'
- 'app/controllers/admin/application_settings_controller.rb'
- 'app/controllers/admin/broadcast_messages_controller.rb'
- 'app/controllers/admin/plan_limits_controller.rb'
- 'app/controllers/boards/issues_controller.rb'
- 'app/controllers/groups_controller.rb'
- 'app/controllers/projects/issues_controller.rb'
- 'app/controllers/projects/merge_requests_controller.rb'
- 'app/controllers/projects/pipelines_controller.rb'
- 'app/controllers/projects_controller.rb'
- 'app/finders/issuable_finder.rb'
- 'app/finders/merge_requests/by_approvals_finder.rb'
- 'app/finders/user_groups_counter.rb'
- 'app/helpers/diff_helper.rb'
- 'app/helpers/search_helper.rb'
- 'app/models/ci/job_token/scope.rb'
- 'app/models/container_repository.rb'
- 'app/models/customer_relations/contact.rb'
- 'app/models/customer_relations/organization.rb'
- 'app/models/group.rb'
- 'app/models/integration.rb'
- 'app/models/internal_id.rb'
- 'app/models/issue.rb'
- 'app/models/member.rb'
- 'app/models/merge_request.rb'
- 'app/models/namespace.rb'
- 'app/models/packages/package.rb'
- 'app/models/project.rb'
- 'app/models/projects/topic.rb'
- 'app/models/todo.rb'
- 'app/models/user.rb'
- 'app/services/ci/delete_objects_service.rb'
- 'app/services/labels/transfer_service.rb'
- 'app/services/milestones/transfer_service.rb'
- 'app/workers/ssh_keys/expired_notification_worker.rb'
- 'config/initializers/postgres_partitioning.rb'
- 'db/post_migrate/20210812013042_remove_duplicate_project_authorizations.rb'
- 'ee/app/controllers/groups/settings/reporting_controller.rb'
- 'ee/app/controllers/projects/vulnerability_feedback_controller.rb'
- 'ee/app/finders/autocomplete/project_invited_groups_finder.rb'
- 'ee/app/finders/geo/project_registry_finder.rb'
- 'ee/app/finders/merge_requests/by_approvers_finder.rb'
- 'ee/app/graphql/mutations/vulnerabilities/create.rb'
- 'ee/app/helpers/ee/application_settings_helper.rb'
- 'ee/app/helpers/ee/trial_helper.rb'
- 'ee/app/models/analytics/devops_adoption/enabled_namespace.rb'
- 'ee/app/models/ee/epic.rb'
- 'ee/app/models/ee/project.rb'
- 'ee/app/models/ee/user.rb'
- 'ee/app/models/ee/vulnerability.rb'
- 'ee/app/models/protected_environment.rb'
- 'ee/app/models/vulnerabilities/read.rb'
- 'ee/app/serializers/dashboard_environments_serializer.rb'
- 'ee/app/services/app_sec/dast/profiles/update_service.rb'
- 'ee/app/services/vulnerabilities/create_service_base.rb'
- 'ee/lib/ee/api/helpers/award_emoji.rb'
- 'ee/lib/ee/gitlab/geo_git_access.rb'
- 'ee/lib/gitlab/contribution_analytics/data_collector.rb'
- 'ee/lib/gitlab/elastic/helper.rb'
- 'ee/lib/gitlab/sitemaps/url_extractor.rb'
- 'ee/lib/tasks/gitlab/seed/metrics.rake'
- 'ee/spec/controllers/admin/audit_log_reports_controller_spec.rb'
- 'ee/spec/controllers/admin/licenses/usage_exports_controller_spec.rb'
- 'ee/spec/controllers/groups/analytics/coverage_reports_controller_spec.rb'
- 'ee/spec/controllers/groups/security/merge_commit_reports_controller_spec.rb'
- 'ee/spec/controllers/projects/merge_requests_controller_spec.rb'
- 'ee/spec/features/admin/admin_dev_ops_reports_spec.rb'
- 'ee/spec/features/boards/boards_licensed_features_spec.rb'
- 'ee/spec/features/groups/analytics/cycle_analytics/charts_spec.rb'
- 'ee/spec/features/groups/group_roadmap_spec.rb'
- 'ee/spec/finders/billed_users_finder_spec.rb'
- 'ee/spec/finders/merge_requests/by_approvers_finder_spec.rb'
- 'ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb'
- 'ee/spec/finders/security/scan_execution_policies_finder_spec.rb'
- 'ee/spec/frontend/fixtures/dast_profiles.rb'
- 'ee/spec/frontend/fixtures/search.rb'
- 'ee/spec/graphql/mutations/incident_management/escalation_policy/create_spec.rb'
- 'ee/spec/graphql/resolvers/dora_metrics_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/security_orchestration/scan_execution_policy_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/timebox_report_resolver_spec.rb'
- 'ee/spec/graphql/types/ci/pipeline_type_spec.rb'
- 'ee/spec/graphql/types/dast_scanner_profile_type_spec.rb'
- 'ee/spec/graphql/types/dast_site_profile_type_spec.rb'
- 'ee/spec/helpers/paid_feature_callout_helper_spec.rb'
- 'ee/spec/helpers/trial_status_widget_helper_spec.rb'
- 'ee/spec/lib/ee/gitlab/auth/ldap/access_levels_spec.rb'
- 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
- 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
- 'ee/spec/lib/gitlab/checks/diff_check_spec.rb'
- 'ee/spec/lib/gitlab/ci/config/security_orchestration_policies/processor_spec.rb'
- 'ee/spec/lib/gitlab/ci/templates/Jobs/browser_performance_testing_gitlab_ci_yaml_spec.rb'
- 'ee/spec/lib/gitlab/ci/templates/Jobs/dast_default_branch_gitlab_ci_yaml_spec.rb'
- 'ee/spec/lib/gitlab/ci/templates/Jobs/load_performance_testing_gitlab_ci_yaml_spec.rb'
- 'ee/spec/lib/gitlab/ci/yaml_processor_spec.rb'
- 'ee/spec/lib/gitlab/graphql/aggregations/epics/epic_node_spec.rb'
- 'ee/spec/lib/gitlab/graphql/aggregations/epics/lazy_links_aggregate_spec.rb'
- 'ee/spec/lib/gitlab/graphql/aggregations/issues/lazy_links_aggregate_spec.rb'
- 'ee/spec/lib/gitlab/graphql/loaders/bulk_epic_aggregate_loader_spec.rb'
- 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_builds_metric_spec.rb'
- 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_ci_builds_metric_spec.rb'
- 'ee/spec/lib/gitlab/vulnerabilities/parser_spec.rb'
- 'ee/spec/models/analytics/cycle_analytics/group_value_stream_spec.rb'
- 'ee/spec/models/application_setting_spec.rb'
- 'ee/spec/models/approval_state_spec.rb'
- 'ee/spec/models/burndown_spec.rb'
- 'ee/spec/models/concerns/ee/noteable_spec.rb'
- 'ee/spec/models/concerns/geo/verification_state_spec.rb'
- 'ee/spec/models/ee/iterations/cadence_spec.rb'
- 'ee/spec/models/ee/namespace_spec.rb'
- 'ee/spec/models/ee/release_spec.rb'
- 'ee/spec/models/group_wiki_repository_spec.rb'
- 'ee/spec/models/namespace_setting_spec.rb'
- 'ee/spec/models/project_spec.rb'
- 'ee/spec/models/requirements_management/test_report_spec.rb'
- 'ee/spec/models/security/orchestration_policy_configuration_spec.rb'
- 'ee/spec/models/security/orchestration_policy_rule_schedule_spec.rb'
- 'ee/spec/models/security/scan_spec.rb'
- 'ee/spec/models/security/training_provider_spec.rb'
- 'ee/spec/models/snippet_repository_spec.rb'
- 'ee/spec/policies/project_policy_spec.rb'
- 'ee/spec/requests/admin/user_permission_exports_controller_spec.rb'
- 'ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb'
- 'ee/spec/requests/api/experiments_spec.rb'
- 'ee/spec/requests/api/graphql/analytics/devops_adoption/enabled_namespaces_spec.rb'
- 'ee/spec/requests/api/graphql/group/epics_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/quality_management/test_cases/create_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/releases/create_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/releases/update_spec.rb'
- 'ee/spec/requests/api/graphql/project/alert_management/payload_fields_spec.rb'
- 'ee/spec/requests/api/graphql/project/incident_management/escalation_policy/rules_spec.rb'
- 'ee/spec/requests/api/graphql/project/merge_requests_spec.rb'
- 'ee/spec/requests/api/internal/kubernetes_spec.rb'
- 'ee/spec/requests/api/ldap_group_links_spec.rb'
- 'ee/spec/requests/api/members_spec.rb'
- 'ee/spec/services/analytics/cycle_analytics/value_streams/update_service_spec.rb'
- 'ee/spec/services/audit_events/export_csv_service_spec.rb'
- 'ee/spec/services/gitlab_subscriptions/fetch_purchase_eligible_namespaces_service_spec.rb'
- 'ee/spec/services/groups/seat_usage_export_service_spec.rb'
- 'ee/spec/services/iterations/cadences/create_iterations_in_advance_service_spec.rb'
- 'ee/spec/services/protected_environments/base_service_spec.rb'
- 'ee/spec/services/search_service_spec.rb'
- 'ee/spec/services/security/ingestion/tasks/hooks_execution_spec.rb'
- 'ee/spec/services/security/security_orchestration_policies/process_scan_result_policy_service_spec.rb'
- 'ee/spec/services/security/store_findings_metadata_service_spec.rb'
- 'ee/spec/services/timebox_report_service_spec.rb'
- 'ee/spec/services/user_permissions/export_service_spec.rb'
- 'ee/spec/support/shared_examples/services/search_notes_shared_examples.rb'
- 'ee/spec/workers/geo/scheduler/scheduler_worker_spec.rb'
- 'lib/event_filter.rb'
- 'lib/gitlab/database/migration_helpers.rb'
- 'lib/gitlab/email/message/in_product_marketing/team.rb'
- 'lib/gitlab/email/message/in_product_marketing/trial.rb'
- 'lib/gitlab/email/message/in_product_marketing/verify.rb'
- 'lib/gitlab/import_export/base/relation_factory.rb'
@ -195,26 +44,6 @@ Layout/FirstArrayElementIndentation:
- 'qa/qa/specs/features/ee/browser_ui/3_create/repository/code_owners_with_protected_branch_and_squashed_commits_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/4_verify/new_discussion_not_dropping_merge_trains_mr_spec.rb'
- 'spec/controllers/concerns/send_file_upload_spec.rb'
- 'spec/controllers/graphql_controller_spec.rb'
- 'spec/controllers/projects/ci/daily_build_group_report_results_controller_spec.rb'
- 'spec/controllers/projects/ci/lints_controller_spec.rb'
- 'spec/controllers/projects/pipelines/tests_controller_spec.rb'
- 'spec/controllers/projects/pipelines_controller_spec.rb'
- 'spec/deprecation_toolkit_env.rb'
- 'spec/features/clusters/create_agent_spec.rb'
- 'spec/finders/bulk_imports/entities_finder_spec.rb'
- 'spec/finders/ci/daily_build_group_report_results_finder_spec.rb'
- 'spec/finders/deploy_tokens/tokens_finder_spec.rb'
- 'spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb'
- 'spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb'
- 'spec/frontend/fixtures/search.rb'
- 'spec/graphql/mutations/commits/create_spec.rb'
- 'spec/graphql/mutations/environments/canary_ingress/update_spec.rb'
- 'spec/graphql/resolvers/ci/test_suite_resolver_spec.rb'
- 'spec/graphql/types/ci/runner_architecture_type_spec.rb'
- 'spec/graphql/types/ci/runner_platform_type_spec.rb'
- 'spec/graphql/types/metrics/dashboard_type_spec.rb'
- 'spec/graphql/types/packages/composer/metadatum_type_spec.rb'
- 'spec/graphql/types/packages/tag_type_spec.rb'
- 'spec/helpers/application_settings_helper_spec.rb'
- 'spec/helpers/commits_helper_spec.rb'

View file

@ -2,388 +2,5 @@
# Cop supports --auto-correct.
Layout/HashAlignment:
Exclude:
- 'ee/lib/api/iterations.rb'
- 'ee/lib/api/merge_trains.rb'
- 'ee/lib/api/related_epic_links.rb'
- 'ee/lib/api/vulnerability_exports.rb'
- 'ee/lib/api/vulnerability_findings.rb'
- 'ee/lib/ee/api/helpers/groups_helpers.rb'
- 'ee/lib/ee/api/helpers/issues_helpers.rb'
- 'ee/lib/ee/api/helpers/protected_branches_helpers.rb'
- 'ee/lib/ee/api/merge_requests.rb'
- 'ee/lib/ee/audit/project_setting_changes_auditor.rb'
- 'ee/lib/ee/audit/protected_branches_changes_auditor.rb'
- 'ee/lib/ee/banzai/filter/references/epic_reference_filter.rb'
- 'ee/lib/ee/banzai/filter/references/vulnerability_reference_filter.rb'
- 'ee/lib/ee/gitlab/application_rate_limiter.rb'
- 'ee/lib/ee/gitlab/ci/pipeline/chain/validate/after_config.rb'
- 'ee/lib/ee/gitlab/quick_actions/issue_actions.rb'
- 'ee/lib/ee/gitlab/tracking.rb'
- 'ee/lib/ee/gitlab/usage_data.rb'
- 'ee/lib/elastic/latest/commit_config.rb'
- 'ee/lib/elastic/latest/config.rb'
- 'ee/lib/elastic/latest/merge_request_config.rb'
- 'ee/lib/gem_extensions/elasticsearch/model/indexing/instance_methods.rb'
- 'ee/lib/gitlab/auth/smartcard/certificate.rb'
- 'ee/lib/gitlab/auth/smartcard/ldap_certificate.rb'
- 'ee/lib/gitlab/ci/parsers/security/formatters/dependency_list.rb'
- 'ee/lib/gitlab/elastic/helper.rb'
- 'ee/lib/gitlab/elastic/indexer.rb'
- 'ee/spec/controllers/ee/projects/variables_controller_spec.rb'
- 'ee/spec/controllers/groups/epic_boards_controller_spec.rb'
- 'ee/spec/controllers/groups/issues_controller_spec.rb'
- 'ee/spec/controllers/projects/settings/operations_controller_spec.rb'
- 'ee/spec/controllers/trials_controller_spec.rb'
- 'ee/spec/factories/dependencies.rb'
- 'ee/spec/factories/projects.rb'
- 'ee/spec/features/billings/billing_plans_spec.rb'
- 'ee/spec/features/groups/settings/protected_environments_spec.rb'
- 'ee/spec/features/projects/environments/environments_spec.rb'
- 'ee/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb'
- 'ee/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb'
- 'ee/spec/finders/epics_finder_spec.rb'
- 'ee/spec/finders/merge_requests_finder_spec.rb'
- 'ee/spec/frontend/fixtures/dast_profiles.rb'
- 'ee/spec/graphql/ee/mutations/ci/runner/update_spec.rb'
- 'ee/spec/graphql/ee/resolvers/namespace_projects_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/path_locks_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/security_orchestration/scan_execution_policy_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/security_report_summary_resolver_spec.rb'
- 'ee/spec/graphql/resolvers/vulnerabilities/issue_links_resolver_spec.rb'
- 'ee/spec/helpers/billing_plans_helper_spec.rb'
- 'ee/spec/helpers/routing/pseudonymization_helper_spec.rb'
- 'ee/spec/lib/ee/gitlab/auth/ldap/access_levels_spec.rb'
- 'ee/spec/lib/ee/gitlab/auth/ldap/config_spec.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/backfill_project_statistics_container_repository_size_spec.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/delete_invalid_epic_issues_spec.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/fix_incorrect_max_seats_used_spec.rb'
- 'ee/spec/lib/ee/gitlab/ci/config/entry/need_spec.rb'
- 'ee/spec/lib/ee/gitlab/ci/matching/runner_matcher_spec.rb'
- 'ee/spec/lib/ee/gitlab/elastic/helper_spec.rb'
- 'ee/spec/lib/ee/gitlab/import_export/group/legacy_tree_saver_spec.rb'
- 'ee/spec/lib/ee/gitlab/import_export/group/tree_saver_spec.rb'
- 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
- 'ee/spec/lib/gitlab/auth/ldap/person_spec.rb'
- 'ee/spec/lib/gitlab/auth/smartcard/certificate_spec.rb'
- 'ee/spec/lib/gitlab/custom_file_templates_spec.rb'
- 'ee/spec/lib/gitlab/elastic/client_spec.rb'
- 'ee/spec/lib/gitlab/elastic/indexer_spec.rb'
- 'ee/spec/lib/gitlab/insights/loader_spec.rb'
- 'ee/spec/lib/gitlab/template/custom_templates_spec.rb'
- 'ee/spec/models/application_setting_spec.rb'
- 'ee/spec/models/approval_merge_request_rule_spec.rb'
- 'ee/spec/models/member_spec.rb'
- 'ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb'
- 'ee/spec/models/protected_environments/approval_summary_spec.rb'
- 'ee/spec/models/vulnerabilities/statistic_spec.rb'
- 'ee/spec/requests/api/deployments_spec.rb'
- 'ee/spec/requests/api/graphql/app_sec/fuzzing/coverage/corpus_type_spec.rb'
- 'ee/spec/requests/api/graphql/group/epics_spec.rb'
- 'ee/spec/requests/api/internal/base_spec.rb'
- 'ee/spec/requests/api/issues_spec.rb'
- 'ee/spec/requests/api/protected_environments_spec.rb'
- 'ee/spec/requests/api/templates_spec.rb'
- 'ee/spec/requests/ee/projects/environments_controller_spec.rb'
- 'ee/spec/requests/ee/projects/service_desk_controller_spec.rb'
- 'ee/spec/requests/projects/security/dast_site_profiles_controller_spec.rb'
- 'ee/spec/requests/rack_attack_global_spec.rb'
- 'ee/spec/serializers/integrations/zentao_serializers/issue_entity_spec.rb'
- 'ee/spec/services/app_sec/dast/profiles/create_associations_service_spec.rb'
- 'ee/spec/services/app_sec/dast/scan_configs/fetch_service_spec.rb'
- 'ee/spec/services/arkose/blocked_users_report_service_spec.rb'
- 'ee/spec/services/audit_events/protected_branch_audit_event_service_spec.rb'
- 'ee/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb'
- 'ee/spec/services/ci/create_pipeline_service/cross_needs_artifacts_spec.rb'
- 'ee/spec/services/ci/process_pipeline_service_spec.rb'
- 'ee/spec/services/ci/retry_pipeline_service_spec.rb'
- 'ee/spec/services/ci/subscribe_bridge_service_spec.rb'
- 'ee/spec/services/ee/merge_requests/create_pipeline_service_spec.rb'
- 'ee/spec/services/merge_trains/check_status_service_spec.rb'
- 'ee/spec/services/merge_trains/create_pipeline_service_spec.rb'
- 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb'
- 'ee/spec/services/merge_trains/refresh_service_spec.rb'
- 'ee/spec/services/status_page/trigger_publish_service_spec.rb'
- 'ee/spec/services/status_page/unpublish_details_service_spec.rb'
- 'ee/spec/services/vulnerabilities/create_from_security_finding_service_spec.rb'
- 'ee/spec/services/vulnerabilities/findings/create_from_security_finding_service_spec.rb'
- 'ee/spec/support/shared_examples/services/audit_event_logging_shared_examples.rb'
- 'ee/spec/support/shared_examples/status_page/publish_shared_examples.rb'
- 'ee/spec/support/shared_examples/status_page/reference_links_examples.rb'
- 'ee/spec/workers/scan_security_report_secrets_worker_spec.rb'
- 'lib/gitlab/abuse.rb'
- 'lib/gitlab/access.rb'
- 'lib/gitlab/application_rate_limiter.rb'
- 'lib/gitlab/auth/ldap/config.rb'
- 'lib/gitlab/auth/o_auth/auth_hash.rb'
- 'lib/gitlab/auth/o_auth/provider.rb'
- 'lib/gitlab/auth/o_auth/user.rb'
- 'lib/gitlab/auth/otp/strategies/forti_authenticator/manual_otp.rb'
- 'lib/gitlab/background_migration/backfill_project_repositories.rb'
- 'lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid.rb'
- 'lib/gitlab/ci/ansi2html.rb'
- 'lib/gitlab/ci/ansi2json/parser.rb'
- 'lib/gitlab/ci/config/entry/processable.rb'
- 'lib/gitlab/ci/jwt_v2.rb'
- 'lib/gitlab/ci/pipeline/chain/validate/external.rb'
- 'lib/gitlab/ci/reports/security/scanner.rb'
- 'lib/gitlab/database/background_migration/health_status.rb'
- 'lib/gitlab/database/reflection.rb'
- 'lib/gitlab/diff/file_collection/compare.rb'
- 'lib/gitlab/email/attachment_uploader.rb'
- 'lib/gitlab/emoji.rb'
- 'lib/gitlab/etag_caching/middleware.rb'
- 'lib/gitlab/experimentation.rb'
- 'lib/gitlab/fogbugz_import/importer.rb'
- 'lib/gitlab/git/repository.rb'
- 'lib/gitlab/gitaly_client/commit_service.rb'
- 'lib/gitlab/gitaly_client/operation_service.rb'
- 'lib/gitlab/hook_data/project_member_builder.rb'
- 'lib/gitlab/import_export/group/legacy_tree_restorer.rb'
- 'lib/gitlab/import_export/group/relation_factory.rb'
- 'lib/gitlab/import_export/group/relation_tree_restorer.rb'
- 'lib/gitlab/import_export/members_mapper.rb'
- 'lib/gitlab/import_export/project/import_task.rb'
- 'lib/gitlab/import_export/shared.rb'
- 'lib/gitlab/issuable/clone/copy_resource_events_service.rb'
- 'lib/gitlab/kubernetes.rb'
- 'lib/gitlab/marginalia/comment.rb'
- 'lib/gitlab/metrics/dashboard/stages/grafana_formatter.rb'
- 'lib/gitlab/metrics/dashboard/transformers/yml/v1/prometheus_metrics.rb'
- 'lib/gitlab/metrics/dashboard/validator/client.rb'
- 'lib/gitlab/metrics/exporter/metrics_middleware.rb'
- 'lib/gitlab/metrics/samplers/puma_sampler.rb'
- 'lib/gitlab/metrics/samplers/ruby_sampler.rb'
- 'lib/gitlab/no_cache_headers.rb'
- 'lib/gitlab/sidekiq_daemon/memory_killer.rb'
- 'lib/gitlab/sidekiq_middleware/server_metrics.rb'
- 'lib/gitlab/slash_commands/presenters/base.rb'
- 'lib/gitlab/template/gitignore_template.rb'
- 'lib/gitlab/visibility_level.rb'
- 'lib/product_analytics/event_params.rb'
- 'lib/sidebars/projects/menus/infrastructure_menu.rb'
- 'lib/tasks/gitlab/import_export/export.rake'
- 'lib/tasks/gitlab/import_export/import.rake'
- 'lib/tasks/tanuki_emoji.rake'
- 'spec/controllers/concerns/product_analytics_tracking_spec.rb'
- 'spec/controllers/concerns/redis_tracking_spec.rb'
- 'spec/controllers/import/bitbucket_controller_spec.rb'
- 'spec/controllers/oauth/token_info_controller_spec.rb'
- 'spec/controllers/omniauth_callbacks_controller_spec.rb'
- 'spec/controllers/projects/artifacts_controller_spec.rb'
- 'spec/controllers/projects/feature_flags_controller_spec.rb'
- 'spec/controllers/projects/grafana_api_controller_spec.rb'
- 'spec/controllers/projects/merge_requests_controller_spec.rb'
- 'spec/controllers/projects/pipeline_schedules_controller_spec.rb'
- 'spec/controllers/projects/registry/tags_controller_spec.rb'
- 'spec/controllers/projects/service_desk_controller_spec.rb'
- 'spec/db/migration_spec.rb'
- 'spec/factories/ci/builds.rb'
- 'spec/factories/environments.rb'
- 'spec/factories/groups.rb'
- 'spec/features/dashboard/datetime_on_tooltips_spec.rb'
- 'spec/features/dashboard/todos/todos_sorting_spec.rb'
- 'spec/features/jira_oauth_provider_authorize_spec.rb'
- 'spec/features/merge_request/user_sees_deployment_widget_spec.rb'
- 'spec/features/profiles/active_sessions_spec.rb'
- 'spec/features/projects/badges/coverage_spec.rb'
- 'spec/features/projects/environments/environment_spec.rb'
- 'spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb'
- 'spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb'
- 'spec/features/projects/jobs/user_browses_jobs_spec.rb'
- 'spec/features/projects/milestones/milestones_sorting_spec.rb'
- 'spec/features/projects/new_project_spec.rb'
- 'spec/features/projects/pipelines/legacy_pipeline_spec.rb'
- 'spec/features/projects/pipelines/legacy_pipelines_spec.rb'
- 'spec/features/projects/pipelines/pipeline_spec.rb'
- 'spec/features/projects/pipelines/pipelines_spec.rb'
- 'spec/features/snippets/user_creates_snippet_spec.rb'
- 'spec/features/users/email_verification_on_login_spec.rb'
- 'spec/features/users/login_spec.rb'
- 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb'
- 'spec/finders/group_descendants_finder_spec.rb'
- 'spec/finders/group_members_finder_spec.rb'
- 'spec/finders/template_finder_spec.rb'
- 'spec/graphql/mutations/releases/update_spec.rb'
- 'spec/graphql/resolvers/board_lists_resolver_spec.rb'
- 'spec/graphql/resolvers/ci/config_resolver_spec.rb'
- 'spec/graphql/resolvers/ci/group_runners_resolver_spec.rb'
- 'spec/graphql/resolvers/ci/jobs_resolver_spec.rb'
- 'spec/graphql/resolvers/ci/runners_resolver_spec.rb'
- 'spec/graphql/resolvers/container_repositories_resolver_spec.rb'
- 'spec/graphql/resolvers/container_repository_tags_resolver_spec.rb'
- 'spec/graphql/resolvers/design_management/versions_resolver_spec.rb'
- 'spec/graphql/resolvers/work_items_resolver_spec.rb'
- 'spec/helpers/ci/builds_helper_spec.rb'
- 'spec/helpers/sorting_helper_spec.rb'
- 'spec/helpers/storage_helper_spec.rb'
- 'spec/helpers/wiki_helper_spec.rb'
- 'spec/initializers/00_rails_disable_joins_spec.rb'
- 'spec/lib/backup/gitaly_backup_spec.rb'
- 'spec/lib/banzai/filter/repository_link_filter_spec.rb'
- 'spec/lib/gitlab/asciidoc_spec.rb'
- 'spec/lib/gitlab/auth/ldap/auth_hash_spec.rb'
- 'spec/lib/gitlab/auth/ldap/config_spec.rb'
- 'spec/lib/gitlab/auth/ldap/person_spec.rb'
- 'spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb'
- 'spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb'
- 'spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb'
- 'spec/lib/gitlab/background_migration/backfill_integrations_enable_ssl_verification_spec.rb'
- 'spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb'
- 'spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb'
- 'spec/lib/gitlab/ci/config/entry/port_spec.rb'
- 'spec/lib/gitlab/ci/config/entry/root_spec.rb'
- 'spec/lib/gitlab/ci/config/external/mapper_spec.rb'
- 'spec/lib/gitlab/ci/lint_spec.rb'
- 'spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb'
- 'spec/lib/gitlab/ci/variables/builder_spec.rb'
- 'spec/lib/gitlab/ci/yaml_processor_spec.rb'
- 'spec/lib/gitlab/data_builder/issuable_spec.rb'
- 'spec/lib/gitlab/data_builder/note_spec.rb'
- 'spec/lib/gitlab/database/migration_helpers_spec.rb'
- 'spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb'
- 'spec/lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table_spec.rb'
- 'spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb'
- 'spec/lib/gitlab/diff/highlight_cache_spec.rb'
- 'spec/lib/gitlab/diff/lines_unfolder_spec.rb'
- 'spec/lib/gitlab/diff/position_spec.rb'
- 'spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb'
- 'spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb'
- 'spec/lib/gitlab/etag_caching/middleware_spec.rb'
- 'spec/lib/gitlab/etag_caching/router/graphql_spec.rb'
- 'spec/lib/gitlab/git/repository_spec.rb'
- 'spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb'
- 'spec/lib/gitlab/import_export/attributes_finder_spec.rb'
- 'spec/lib/gitlab/import_export/group/object_builder_spec.rb'
- 'spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb'
- 'spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb'
- 'spec/lib/gitlab/import_export/project/sample/relation_tree_restorer_spec.rb'
- 'spec/lib/gitlab/import_sources_spec.rb'
- 'spec/lib/gitlab/instrumentation_helper_spec.rb'
- 'spec/lib/gitlab/jira/middleware_spec.rb'
- 'spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb'
- 'spec/lib/gitlab/metrics/dashboard/importers/prometheus_metrics_spec.rb'
- 'spec/lib/gitlab/metrics/dashboard/validator/errors_spec.rb'
- 'spec/lib/gitlab/metrics/dashboard/validator_spec.rb'
- 'spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb'
- 'spec/lib/gitlab/metrics/subscribers/action_view_spec.rb'
- 'spec/lib/gitlab/metrics/subscribers/active_record_spec.rb'
- 'spec/lib/gitlab/metrics/subscribers/load_balancing_spec.rb'
- 'spec/lib/gitlab/metrics/web_transaction_spec.rb'
- 'spec/lib/gitlab/omniauth_initializer_spec.rb'
- 'spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb'
- 'spec/lib/gitlab/sidekiq_death_handler_spec.rb'
- 'spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb'
- 'spec/lib/gitlab/slug/environment_spec.rb'
- 'spec/lib/gitlab/tracking_spec.rb'
- 'spec/lib/gitlab/usage_data/topology_spec.rb'
- 'spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb'
- 'spec/lib/gitlab/usage_data_counters/note_counter_spec.rb'
- 'spec/lib/gitlab/usage_data_spec.rb'
- 'spec/lib/gitlab/utils_spec.rb'
- 'spec/lib/gitlab/word_diff/parser_spec.rb'
- 'spec/lib/marginalia_spec.rb'
- 'spec/lib/security/ci_configuration/sast_build_action_spec.rb'
- 'spec/mailers/emails/pipelines_spec.rb'
- 'spec/migrations/20210804150320_create_base_work_item_types_spec.rb'
- 'spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb'
- 'spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb'
- 'spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb'
- 'spec/models/ci/build_spec.rb'
- 'spec/models/ci/pipeline_spec.rb'
- 'spec/models/ci/processable_spec.rb'
- 'spec/models/clusters/platforms/kubernetes_spec.rb'
- 'spec/models/commit_status_spec.rb'
- 'spec/models/container_registry/event_spec.rb'
- 'spec/models/deployment_spec.rb'
- 'spec/models/design_management/version_spec.rb'
- 'spec/models/group_spec.rb'
- 'spec/models/integrations/chat_message/pipeline_message_spec.rb'
- 'spec/models/integrations/drone_ci_spec.rb'
- 'spec/models/merge_request_spec.rb'
- 'spec/models/namespace_spec.rb'
- 'spec/models/operations/feature_flag_spec.rb'
- 'spec/models/pages_domain_spec.rb'
- 'spec/models/remote_mirror_spec.rb'
- 'spec/models/repository_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/presenters/clusters/cluster_presenter_spec.rb'
- 'spec/presenters/project_presenter_spec.rb'
- 'spec/requests/api/ci/job_artifacts_spec.rb'
- 'spec/requests/api/ci/jobs_spec.rb'
- 'spec/requests/api/ci/runner/jobs_request_post_spec.rb'
- 'spec/requests/api/feature_flags_spec.rb'
- 'spec/requests/api/graphql/ci/config_spec.rb'
- 'spec/requests/api/graphql/ci/group_variables_spec.rb'
- 'spec/requests/api/graphql/ci/instance_variables_spec.rb'
- 'spec/requests/api/graphql/ci/project_variables_spec.rb'
- 'spec/requests/api/graphql/ci/runner_spec.rb'
- 'spec/requests/api/graphql/ci/runners_spec.rb'
- 'spec/requests/api/graphql/mutations/releases/update_spec.rb'
- 'spec/requests/api/graphql/project/issue/design_collection/version_spec.rb'
- 'spec/requests/api/graphql/project/terraform/state_spec.rb'
- 'spec/requests/api/graphql/project/terraform/states_spec.rb'
- 'spec/requests/api/graphql/query_spec.rb'
- 'spec/requests/api/groups_spec.rb'
- 'spec/requests/api/internal/base_spec.rb'
- 'spec/requests/api/issues/get_group_issues_spec.rb'
- 'spec/requests/api/projects_spec.rb'
- 'spec/requests/api/suggestions_spec.rb'
- 'spec/requests/api/unleash_spec.rb'
- 'spec/requests/git_http_spec.rb'
- 'spec/requests/oauth_tokens_spec.rb'
- 'spec/requests/openid_connect_spec.rb'
- 'spec/requests/projects/environments_controller_spec.rb'
- 'spec/requests/projects/merge_requests_discussions_spec.rb'
- 'spec/routing/project_routing_spec.rb'
- 'spec/serializers/ci/lint/job_entity_spec.rb'
- 'spec/serializers/container_repository_entity_spec.rb'
- 'spec/serializers/deployment_entity_spec.rb'
- 'spec/serializers/environment_serializer_spec.rb'
- 'spec/serializers/merge_request_metrics_helper_spec.rb'
- 'spec/services/ci/create_downstream_pipeline_service_spec.rb'
- 'spec/services/ci/create_pipeline_service/logger_spec.rb'
- 'spec/services/ci/create_pipeline_service/tags_spec.rb'
- 'spec/services/ci/job_artifacts/create_service_spec.rb'
- 'spec/services/ci/retry_job_service_spec.rb'
- 'spec/services/deployments/link_merge_requests_service_spec.rb'
- 'spec/services/discussions/capture_diff_note_positions_service_spec.rb'
- 'spec/services/environments/stop_service_spec.rb'
- 'spec/services/event_create_service_spec.rb'
- 'spec/services/groups/import_export/import_service_spec.rb'
- 'spec/services/issuable/bulk_update_service_spec.rb'
- 'spec/services/issues/create_service_spec.rb'
- 'spec/services/merge_requests/build_service_spec.rb'
- 'spec/services/merge_requests/create_service_spec.rb'
- 'spec/services/merge_requests/update_service_spec.rb'
- 'spec/services/metrics/dashboard/clone_dashboard_service_spec.rb'
- 'spec/services/notes/create_service_spec.rb'
- 'spec/services/notes/destroy_service_spec.rb'
- 'spec/services/packages/debian/parse_debian822_service_spec.rb'
- 'spec/services/projects/destroy_service_spec.rb'
- 'spec/services/service_ping/submit_service_ping_service_spec.rb'
- 'spec/services/suggestions/apply_service_spec.rb'
- 'spec/services/work_items/widgets/description_service/update_service_spec.rb'
- 'spec/support/helpers/create_environments_helpers.rb'
- 'spec/support/helpers/kubernetes_helpers.rb'
- 'spec/support/helpers/migrations_helpers/work_item_types_helper.rb'
- 'spec/support/helpers/seed_helper.rb'
- 'spec/support/helpers/stub_object_storage.rb'
- 'spec/support/helpers/test_env.rb'
- 'spec/support/helpers/usage_data_helpers.rb'
- 'spec/support/migrations_helpers/vulnerabilities_findings_helper.rb'
- 'spec/support/shared_contexts/bulk_imports_requests_shared_context.rb'
- 'spec/support/shared_contexts/design_management_shared_contexts.rb'
- 'spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb'
- 'spec/support/shared_examples/finders/issues_finder_shared_examples.rb'
- 'spec/support/shared_examples/graphql/members_shared_examples.rb'
- 'spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb'
- 'spec/support/shared_examples/lib/gitlab/database/background_migration_job_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/conan_packages_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb'
- 'spec/support/shared_examples/routing/resource_routing_shared_examples.rb'
- 'spec/support/shared_examples/routing/wiki_routing_shared_examples.rb'
- 'spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb'
- 'spec/tooling/danger/datateam_spec.rb'
- 'spec/views/projects/tags/index.html.haml_spec.rb'
- 'spec/workers/emails_on_push_worker_spec.rb'
- 'spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb'

View file

@ -1123,7 +1123,6 @@ Layout/LineLength:
- 'ee/app/controllers/concerns/ee/issuable_collections.rb'
- 'ee/app/controllers/concerns/group_invite_members.rb'
- 'ee/app/controllers/concerns/insights_actions.rb'
- 'ee/app/controllers/concerns/registrations/create_project.rb'
- 'ee/app/controllers/ee/admin/dev_ops_report_controller.rb'
- 'ee/app/controllers/ee/admin/users_controller.rb'
- 'ee/app/controllers/ee/application_controller.rb'
@ -1160,8 +1159,6 @@ Layout/LineLength:
- 'ee/app/controllers/projects/requirements_management/requirements_controller.rb'
- 'ee/app/controllers/projects/security/policies_controller.rb'
- 'ee/app/controllers/projects/security/vulnerabilities/notes_controller.rb'
- 'ee/app/controllers/registrations/groups_controller.rb'
- 'ee/app/controllers/registrations/groups_projects_controller.rb'
- 'ee/app/controllers/subscriptions_controller.rb'
- 'ee/app/controllers/trial_registrations_controller.rb'
- 'ee/app/controllers/trials_controller.rb'
@ -1862,8 +1859,6 @@ Layout/LineLength:
- 'ee/spec/controllers/projects/subscriptions_controller_spec.rb'
- 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb'
- 'ee/spec/controllers/projects_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_projects_controller_spec.rb'
- 'ee/spec/controllers/registrations/welcome_controller_spec.rb'
- 'ee/spec/controllers/subscriptions/groups_controller_spec.rb'
- 'ee/spec/controllers/subscriptions_controller_spec.rb'
@ -1979,13 +1974,11 @@ Layout/LineLength:
- 'ee/spec/features/projects_spec.rb'
- 'ee/spec/features/promotion_spec.rb'
- 'ee/spec/features/read_only_spec.rb'
- 'ee/spec/features/registrations/combined_registration_spec.rb'
- 'ee/spec/features/search/elastic/global_search_spec.rb'
- 'ee/spec/features/search/elastic/project_search_spec.rb'
- 'ee/spec/features/search/elastic/snippet_search_spec.rb'
- 'ee/spec/features/subscriptions_spec.rb'
- 'ee/spec/features/trial_registrations/company_information_spec.rb'
- 'ee/spec/features/uncompleted_learn_gitlab_link_spec.rb'
- 'ee/spec/features/users/login_spec.rb'
- 'ee/spec/finders/analytics/devops_adoption/enabled_namespaces_finder_spec.rb'
- 'ee/spec/finders/analytics/devops_adoption/snapshots_finder_spec.rb'
@ -2960,8 +2953,6 @@ Layout/LineLength:
- 'ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/shared_stage_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/concerns/description_diff_actions_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/projects/license_scanning_report_comparison_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/registrations/groups_controller_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/registrations/projects_controller_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/epics_filtered_search_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/over_free_user_limit_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb'
@ -3017,7 +3008,6 @@ Layout/LineLength:
- 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'ee/spec/views/operations/environments.html.haml_spec.rb'
- 'ee/spec/views/projects/security/discover/show.html.haml_spec.rb'
- 'ee/spec/views/registrations/groups_projects/new.html.haml_spec.rb'
- 'ee/spec/views/registrations/welcome/show.html.haml_spec.rb'
- 'ee/spec/views/shared/_mirror_status.html.haml_spec.rb'
- 'ee/spec/views/shared/_namespace_user_cap_reached_alert.html.haml_spec.rb'
@ -3675,7 +3665,6 @@ Layout/LineLength:
- 'qa/qa/ee/page/project/secure/security_dashboard.rb'
- 'qa/qa/ee/page/project/secure/show.rb'
- 'qa/qa/ee/resource/license.rb'
- 'qa/qa/fixtures/auto_devops_rack/config.ru'
- 'qa/qa/flow/sign_up.rb'
- 'qa/qa/git/repository.rb'
- 'qa/qa/page/base.rb'
@ -5169,7 +5158,6 @@ Layout/LineLength:
- 'spec/lib/grafana/validator_spec.rb'
- 'spec/lib/kramdown/kramdown_spec.rb'
- 'spec/lib/kramdown/parser/atlassian_document_format_spec.rb'
- 'spec/lib/learn_gitlab/project_spec.rb'
- 'spec/lib/mattermost/command_spec.rb'
- 'spec/lib/microsoft_teams/notifier_spec.rb'
- 'spec/lib/object_storage/config_spec.rb'
@ -5292,7 +5280,6 @@ Layout/LineLength:
- 'spec/models/ci/instance_variable_spec.rb'
- 'spec/models/ci/job_artifact_spec.rb'
- 'spec/models/ci/job_token/scope_spec.rb'
- 'spec/models/ci/namespace_mirror_spec.rb'
- 'spec/models/ci/pipeline_schedule_spec.rb'
- 'spec/models/ci/pipeline_spec.rb'
- 'spec/models/ci/processable_spec.rb'
@ -5404,7 +5391,6 @@ Layout/LineLength:
- 'spec/models/namespace_statistics_spec.rb'
- 'spec/models/note_spec.rb'
- 'spec/models/notification_setting_spec.rb'
- 'spec/models/onboarding_progress_spec.rb'
- 'spec/models/packages/composer/cache_file_spec.rb'
- 'spec/models/packages/composer/metadatum_spec.rb'
- 'spec/models/packages/conan/metadatum_spec.rb'

View file

@ -96,7 +96,6 @@ Layout/SpaceInLambdaLiteral:
- 'app/models/namespace_statistics.rb'
- 'app/models/note.rb'
- 'app/models/note_diff_file.rb'
- 'app/models/onboarding_progress.rb'
- 'app/models/operations/feature_flags/user_list.rb'
- 'app/models/packages/build_info.rb'
- 'app/models/packages/maven/metadatum.rb'

View file

@ -1,134 +0,0 @@
---
# Cop supports --auto-correct.
Layout/SpaceInsideBlockBraces:
Exclude:
- 'spec/config/settings_spec.rb'
- 'spec/controllers/admin/application_settings_controller_spec.rb'
- 'spec/controllers/application_controller_spec.rb'
- 'spec/controllers/groups/labels_controller_spec.rb'
- 'spec/controllers/groups/releases_controller_spec.rb'
- 'spec/controllers/import/manifest_controller_spec.rb'
- 'spec/controllers/projects/blame_controller_spec.rb'
- 'spec/controllers/projects/deploy_keys_controller_spec.rb'
- 'spec/controllers/projects/feature_flags_controller_spec.rb'
- 'spec/controllers/projects/jobs_controller_spec.rb'
- 'spec/controllers/projects/labels_controller_spec.rb'
- 'spec/controllers/projects/notes_controller_spec.rb'
- 'spec/controllers/projects/releases_controller_spec.rb'
- 'spec/controllers/projects/tree_controller_spec.rb'
- 'spec/controllers/registrations/welcome_controller_spec.rb'
- 'spec/controllers/snippets/notes_controller_spec.rb'
- 'spec/dependencies/omniauth_saml_spec.rb'
- 'spec/experiments/application_experiment_spec.rb'
- 'spec/factories/ci/build_trace_chunks.rb'
- 'spec/factories/ci/job_artifacts.rb'
- 'spec/factories/ci/pipeline_artifacts.rb'
- 'spec/factories/commit_statuses.rb'
- 'spec/factories/emails.rb'
- 'spec/factories/external_pull_requests.rb'
- 'spec/factories/gitlab/database/postgres_index.rb'
- 'spec/factories/packages/dependencies.rb'
- 'spec/factories/packages/package_tags.rb'
- 'spec/factories/packages/packages.rb'
- 'spec/factories/prometheus_alert.rb'
- 'spec/factories/prometheus_metrics.rb'
- 'spec/finders/ci/jobs_finder_spec.rb'
- 'spec/finders/ci/runners_finder_spec.rb'
- 'spec/finders/concerns/packages/finder_helper_spec.rb'
- 'spec/finders/container_repositories_finder_spec.rb'
- 'spec/finders/design_management/versions_finder_spec.rb'
- 'spec/finders/milestones_finder_spec.rb'
- 'spec/finders/packages/group_packages_finder_spec.rb'
- 'spec/finders/packages/npm/package_finder_spec.rb'
- 'spec/finders/projects_finder_spec.rb'
- 'spec/frontend/fixtures/api_merge_requests.rb'
- 'spec/frontend/fixtures/api_projects.rb'
- 'spec/frontend/fixtures/application_settings.rb'
- 'spec/frontend/fixtures/blob.rb'
- 'spec/frontend/fixtures/branches.rb'
- 'spec/frontend/fixtures/clusters.rb'
- 'spec/frontend/fixtures/deploy_keys.rb'
- 'spec/frontend/fixtures/groups.rb'
- 'spec/frontend/fixtures/issues.rb'
- 'spec/frontend/fixtures/jobs.rb'
- 'spec/frontend/fixtures/labels.rb'
- 'spec/frontend/fixtures/merge_requests.rb'
- 'spec/frontend/fixtures/merge_requests_diffs.rb'
- 'spec/frontend/fixtures/metrics_dashboard.rb'
- 'spec/frontend/fixtures/pipeline_schedules.rb'
- 'spec/frontend/fixtures/pipelines.rb'
- 'spec/frontend/fixtures/projects.rb'
- 'spec/frontend/fixtures/raw.rb'
- 'spec/frontend/fixtures/snippet.rb'
- 'spec/frontend/fixtures/todos.rb'
- 'spec/helpers/application_settings_helper_spec.rb'
- 'spec/helpers/blob_helper_spec.rb'
- 'spec/helpers/gitlab_script_tag_helper_spec.rb'
- 'spec/helpers/issuables_helper_spec.rb'
- 'spec/helpers/projects/pipeline_helper_spec.rb'
- 'spec/helpers/routing/pseudonymization_helper_spec.rb'
- 'spec/helpers/search_helper_spec.rb'
- 'spec/helpers/wiki_page_version_helper_spec.rb'
- 'spec/initializers/carrierwave_patch_spec.rb'
- 'spec/initializers/trusted_proxies_spec.rb'
- 'spec/mailers/emails/service_desk_spec.rb'
- 'spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb'
- 'spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb'
- 'spec/migrations/confirm_support_bot_user_spec.rb'
- 'spec/migrations/reset_job_token_scope_enabled_again_spec.rb'
- 'spec/migrations/reset_job_token_scope_enabled_spec.rb'
- 'spec/migrations/reset_severity_levels_to_new_default_spec.rb'
- 'spec/policies/clusters/agent_policy_spec.rb'
- 'spec/policies/group_member_policy_spec.rb'
- 'spec/policies/issue_policy_spec.rb'
- 'spec/policies/project_policy_spec.rb'
- 'spec/policies/terraform/state_policy_spec.rb'
- 'spec/policies/terraform/state_version_policy_spec.rb'
- 'spec/presenters/packages/composer/packages_presenter_spec.rb'
- 'spec/presenters/packages/conan/package_presenter_spec.rb'
- 'spec/presenters/packages/nuget/packages_metadata_presenter_spec.rb'
- 'spec/presenters/project_presenter_spec.rb'
- 'spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb'
- 'spec/serializers/cluster_entity_spec.rb'
- 'spec/serializers/import/provider_repo_serializer_spec.rb'
- 'spec/support/helpers/cycle_analytics_helpers.rb'
- 'spec/support/redis/redis_shared_examples.rb'
- 'spec/support/shared_contexts/graphql/requests/packages_shared_context.rb'
- 'spec/support/shared_contexts/markdown_golden_master_shared_examples.rb'
- 'spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb'
- 'spec/support/shared_examples/controllers/error_tracking_shared_examples.rb'
- 'spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb'
- 'spec/support/shared_examples/features/board_sidebar_labels_examples.rb'
- 'spec/support/shared_examples/features/snippets_shared_examples.rb'
- 'spec/support/shared_examples/features/wiki/user_views_asciidoc_page_with_includes_shared_examples.rb'
- 'spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb'
- 'spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb'
- 'spec/support/shared_examples/models/cluster_application_core_shared_examples.rb'
- 'spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb'
- 'spec/support/shared_examples/models/concerns/has_repository_shared_examples.rb'
- 'spec/support/shared_examples/models/concerns/incident_management/escalatable_shared_examples.rb'
- 'spec/support/shared_examples/models/label_note_shared_examples.rb'
- 'spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb'
- 'spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/labels_api_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/repository_storage_moves_shared_examples.rb'
- 'spec/support/shared_examples/requests/lfs_http_shared_examples.rb'
- 'spec/support/shared_examples/services/alert_management/alert_processing/alert_firing_shared_examples.rb'
- 'spec/support/shared_examples/services/boards/issues_move_service_shared_examples.rb'
- 'spec/support/shared_examples/services/gitlab_projects_import_service_shared_examples.rb'
- 'spec/support/shared_examples/services/merge_request_shared_examples.rb'
- 'spec/support/shared_examples/uploaders/object_storage_shared_examples.rb'
- 'spec/tasks/gitlab/snippets_rake_spec.rb'
- 'spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb'
- 'spec/validators/addressable_url_validator_spec.rb'
- 'spec/views/help/instance_configuration.html.haml_spec.rb'
- 'spec/views/layouts/_header_search.html.haml_spec.rb'
- 'spec/views/layouts/_published_experiments.html.haml_spec.rb'
- 'spec/views/shared/runners/_runner_details.html.haml_spec.rb'
- 'spec/workers/bulk_imports/export_request_worker_spec.rb'
- 'spec/workers/clusters/cleanup/project_namespace_worker_spec.rb'
- 'spec/workers/packages/helm/extraction_worker_spec.rb'
- 'spec/workers/pages_worker_spec.rb'
- 'spec/workers/purge_dependency_proxy_cache_worker_spec.rb'
- 'spec/workers/releases/manage_evidence_worker_spec.rb'

View file

@ -26,7 +26,6 @@ Migration/BackgroundMigrationBaseClass:
- 'lib/gitlab/background_migration/backfill_work_item_type_id_for_issues.rb'
- 'lib/gitlab/background_migration/cleanup_draft_data_from_faulty_regex.rb'
- 'lib/gitlab/background_migration/cleanup_orphaned_lfs_objects_projects.rb'
- 'lib/gitlab/background_migration/copy_ci_builds_columns_to_security_scans.rb'
- 'lib/gitlab/background_migration/create_security_setting.rb'
- 'lib/gitlab/background_migration/delete_orphaned_deployments.rb'
- 'lib/gitlab/background_migration/disable_expiration_policies_linked_to_no_container_images.rb'

View file

@ -1,13 +0,0 @@
---
# Cop supports --auto-correct.
Rails/ApplicationController:
Exclude:
- 'app/controllers/acme_challenges_controller.rb'
- 'app/controllers/chaos_controller.rb'
- 'app/controllers/health_controller.rb'
- 'app/controllers/metrics_controller.rb'
- 'ee/app/controllers/oauth/geo_auth_controller.rb'
- 'ee/spec/helpers/ee/integrations_helper_spec.rb'
- 'lib/gitlab/base_doorkeeper_controller.rb'
- 'lib/gitlab/request_forgery_protection.rb'
- 'spec/controllers/concerns/continue_params_spec.rb'

View file

@ -66,7 +66,7 @@ Rails/HelperInstanceVariable:
- 'ee/app/helpers/ee/groups/group_members_helper.rb'
- 'ee/app/helpers/ee/groups_helper.rb'
- 'ee/app/helpers/ee/integrations_helper.rb'
- 'ee/app/helpers/ee/kerberos_spnego_helper.rb'
- 'ee/app/helpers/ee/kerberos_helper.rb'
- 'ee/app/helpers/ee/labels_helper.rb'
- 'ee/app/helpers/ee/lock_helper.rb'
- 'ee/app/helpers/ee/merge_requests_helper.rb'

View file

@ -43,7 +43,6 @@ Rails/IndexWith:
- 'spec/lib/gitlab/import_export/model_configuration_spec.rb'
- 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
- 'spec/lib/google_api/cloud_platform/client_spec.rb'
- 'spec/lib/learn_gitlab/onboarding_spec.rb'
- 'spec/models/event_spec.rb'
- 'spec/presenters/projects/security/configuration_presenter_spec.rb'
- 'spec/support/database/multiple_databases.rb'

View file

@ -136,7 +136,6 @@ Rails/SquishedSQLHeredocs:
- 'lib/gitlab/background_migration/backfill_project_settings.rb'
- 'lib/gitlab/background_migration/backfill_projects_with_coverage.rb'
- 'lib/gitlab/background_migration/backfill_upvotes_count_on_issues.rb'
- 'lib/gitlab/background_migration/copy_ci_builds_columns_to_security_scans.rb'
- 'lib/gitlab/background_migration/disable_expiration_policies_linked_to_no_container_images.rb'
- 'lib/gitlab/background_migration/encrypt_static_object_token.rb'
- 'lib/gitlab/background_migration/fix_duplicate_project_name_and_path.rb'

View file

@ -19,7 +19,6 @@ Rails/WhereExists:
- 'app/models/lfs_object.rb'
- 'app/models/merge_request_diff.rb'
- 'app/models/namespace.rb'
- 'app/models/onboarding_progress.rb'
- 'app/models/project.rb'
- 'app/models/protected_branch/push_access_level.rb'
- 'app/services/projects/transfer_service.rb'

View file

@ -73,7 +73,7 @@ RSpec/AnyInstanceOf:
- ee/spec/requests/api/projects_spec.rb
- ee/spec/requests/git_http_spec.rb
- ee/spec/requests/groups_controller_spec.rb
- ee/spec/requests/omniauth_kerberos_spnego_spec.rb
- ee/spec/requests/omniauth_kerberos_spec.rb
- ee/spec/requests/repositories/git_http_controller_spec.rb
- ee/spec/services/ee/git/branch_push_service_spec.rb
- ee/spec/services/ee/merge_requests/create_from_vulnerability_data_service_spec.rb

View file

@ -64,7 +64,6 @@ RSpec/ContextWording:
- 'ee/spec/controllers/projects/settings/repository_controller_spec.rb'
- 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb'
- 'ee/spec/controllers/projects_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_projects_controller_spec.rb'
- 'ee/spec/controllers/registrations/welcome_controller_spec.rb'
- 'ee/spec/controllers/repositories/git_http_controller_spec.rb'
- 'ee/spec/controllers/security/dashboard_controller_spec.rb'
@ -921,8 +920,6 @@ RSpec/ContextWording:
- 'ee/spec/support/shared_examples/controllers/boards_actions_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/cluster_metrics_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/concerns/description_diff_actions_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/registrations/groups_controller_shared_examples.rb'
- 'ee/spec/support/shared_examples/controllers/registrations/projects_controller_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/insights_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/password_complexity_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb'
@ -968,7 +965,6 @@ RSpec/ContextWording:
- 'ee/spec/views/profiles/preferences/show.html.haml_spec.rb'
- 'ee/spec/views/projects/edit.html.haml_spec.rb'
- 'ee/spec/views/projects/security/discover/show.html.haml_spec.rb'
- 'ee/spec/views/registrations/groups/new.html.haml_spec.rb'
- 'ee/spec/views/registrations/welcome/show.html.haml_spec.rb'
- 'ee/spec/views/search/_category.html.haml_spec.rb'
- 'ee/spec/views/shared/_clone_panel.html.haml_spec.rb'
@ -2470,7 +2466,6 @@ RSpec/ContextWording:
- 'spec/models/note_spec.rb'
- 'spec/models/notification_recipient_spec.rb'
- 'spec/models/notification_setting_spec.rb'
- 'spec/models/onboarding_progress_spec.rb'
- 'spec/models/operations/feature_flag_spec.rb'
- 'spec/models/packages/conan/file_metadatum_spec.rb'
- 'spec/models/packages/debian/file_metadatum_spec.rb'

View file

@ -0,0 +1,282 @@
---
# Cop supports --auto-correct.
RSpec/DescribedClass:
Exclude:
- 'ee/spec/controllers/concerns/gitlab_subscriptions/seat_count_alert_spec.rb'
- 'ee/spec/controllers/concerns/registrations/verification_spec.rb'
- 'ee/spec/controllers/concerns/routable_actions_spec.rb'
- 'ee/spec/controllers/repositories/git_http_controller_spec.rb'
- 'ee/spec/frontend/fixtures/epic.rb'
- 'ee/spec/graphql/ee/types/todoable_interface_spec.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/migrate_shared_vulnerability_scanners_spec.rb'
- 'ee/spec/lib/ee/gitlab/elastic/helper_spec.rb'
- 'ee/spec/lib/ee/gitlab/git_access_snippet_spec.rb'
- 'ee/spec/lib/gitlab/auth/saml/config_spec.rb'
- 'ee/spec/lib/gitlab/checks/changes_access_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_helpers_spec.rb'
- 'ee/spec/lib/gitlab/geo/replicator_spec.rb'
- 'ee/spec/lib/gitlab/geo_spec.rb'
- 'ee/spec/lib/gitlab/gl_repository/repo_type_spec.rb'
- 'ee/spec/lib/gitlab/instrumentation/elasticsearch_transport_spec.rb'
- 'ee/spec/lib/gitlab/vulnerabilities/findings_preloader_spec.rb'
- 'ee/spec/lib/omni_auth/strategies/group_saml_spec.rb'
- 'ee/spec/models/ci/minutes/namespace_monthly_usage_spec.rb'
- 'ee/spec/models/ci/processable_spec.rb'
- 'ee/spec/models/concerns/elastic/issue_spec.rb'
- 'ee/spec/models/concerns/elastic/merge_request_spec.rb'
- 'ee/spec/models/concerns/elastic/note_spec.rb'
- 'ee/spec/models/concerns/elastic/project_spec.rb'
- 'ee/spec/models/concerns/elastic/repository_spec.rb'
- 'ee/spec/models/concerns/elastic/snippet_spec.rb'
- 'ee/spec/models/dast_scanner_profile_spec.rb'
- 'ee/spec/models/dast_site_profile_spec.rb'
- 'ee/spec/models/ee/ci/job_artifact_spec.rb'
- 'ee/spec/models/ee/ci/pending_build_spec.rb'
- 'ee/spec/models/ee/ci/runner_spec.rb'
- 'ee/spec/models/ee/gpg_key_spec.rb'
- 'ee/spec/models/ee/group_spec.rb'
- 'ee/spec/models/ee/iteration_spec.rb'
- 'ee/spec/models/ee/merge_request_diff_spec.rb'
- 'ee/spec/models/ee/namespace/storage/notification_spec.rb'
- 'ee/spec/models/ee/vulnerability_spec.rb'
- 'ee/spec/models/epic_issue_spec.rb'
- 'ee/spec/models/epic_spec.rb'
- 'ee/spec/models/geo/container_repository_registry_spec.rb'
- 'ee/spec/models/geo/design_registry_spec.rb'
- 'ee/spec/models/geo/package_file_registry_spec.rb'
- 'ee/spec/models/geo/project_registry_spec.rb'
- 'ee/spec/models/geo/secondary_usage_data_spec.rb'
- 'ee/spec/models/incident_management/escalation_policy_spec.rb'
- 'ee/spec/models/issuable_metric_image_spec.rb'
- 'ee/spec/models/issue_spec.rb'
- 'ee/spec/models/license_spec.rb'
- 'ee/spec/models/merge_train_spec.rb'
- 'ee/spec/models/plan_spec.rb'
- 'ee/spec/models/project_import_state_spec.rb'
- 'ee/spec/models/project_spec.rb'
- 'ee/spec/models/release_highlight_spec.rb'
- 'ee/spec/models/requirements_management/requirement_spec.rb'
- 'ee/spec/models/requirements_management/test_report_spec.rb'
- 'ee/spec/models/resource_weight_event_spec.rb'
- 'ee/spec/models/uploads/local_spec.rb'
- 'ee/spec/models/vulnerabilities/finding_spec.rb'
- 'ee/spec/models/vulnerabilities/flag_spec.rb'
- 'ee/spec/models/vulnerabilities/read_spec.rb'
- 'ee/spec/services/arkose/blocked_users_report_service_spec.rb'
- 'ee/spec/services/arkose/user_verification_service_spec.rb'
- 'ee/spec/services/ee/resource_events/synthetic_weight_notes_builder_service_spec.rb'
- 'ee/spec/services/ee/users/reject_service_spec.rb'
- 'ee/spec/services/resource_access_tokens/create_service_spec.rb'
- 'ee/spec/services/security/ingestion/tasks/update_vulnerability_uuids_spec.rb'
- 'ee/spec/services/users/captcha_challenge_service_spec.rb'
- 'ee/spec/services/vulnerabilities/create_from_security_finding_service_spec.rb'
- 'ee/spec/workers/concerns/elastic/indexing_control_spec.rb'
- 'ee/spec/workers/elastic/migration_worker_spec.rb'
- 'ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb'
- 'ee/spec/workers/geo/verification_state_backfill_worker_spec.rb'
- 'qa/spec/service/docker_run/base_spec.rb'
- 'qa/spec/support/formatters/test_stats_formatter_spec.rb'
- 'qa/spec/support/loglinking_spec.rb'
- 'qa/spec/support/page_error_checker_spec.rb'
- 'spec/config/settings_spec.rb'
- 'spec/controllers/concerns/confirm_email_warning_spec.rb'
- 'spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb'
- 'spec/controllers/concerns/enforces_admin_authentication_spec.rb'
- 'spec/controllers/concerns/graceful_timeout_handling_spec.rb'
- 'spec/controllers/concerns/group_tree_spec.rb'
- 'spec/controllers/concerns/metrics_dashboard_spec.rb'
- 'spec/controllers/concerns/product_analytics_tracking_spec.rb'
- 'spec/controllers/concerns/redirects_for_missing_path_on_tree_spec.rb'
- 'spec/controllers/concerns/redis_tracking_spec.rb'
- 'spec/controllers/concerns/renders_commits_spec.rb'
- 'spec/controllers/concerns/routable_actions_spec.rb'
- 'spec/controllers/concerns/sourcegraph_decorator_spec.rb'
- 'spec/controllers/concerns/spammable_actions/akismet_mark_as_spam_action_spec.rb'
- 'spec/controllers/concerns/spammable_actions/captcha_check/html_format_actions_support_spec.rb'
- 'spec/controllers/concerns/spammable_actions/captcha_check/json_format_actions_support_spec.rb'
- 'spec/controllers/concerns/static_object_external_storage_spec.rb'
- 'spec/controllers/repositories/git_http_controller_spec.rb'
- 'spec/experiments/application_experiment_spec.rb'
- 'spec/experiments/concerns/project_commit_count_spec.rb'
- 'spec/frontend/fixtures/metrics_dashboard.rb'
- 'spec/frontend/fixtures/timezones.rb'
- 'spec/frontend/fixtures/u2f.rb'
- 'spec/frontend/fixtures/webauthn.rb'
- 'spec/graphql/gitlab_schema_spec.rb'
- 'spec/graphql/graphql_triggers_spec.rb'
- 'spec/graphql/types/global_id_type_spec.rb'
- 'spec/initializers/google_api_client_spec.rb'
- 'spec/lib/api/entities/project_spec.rb'
- 'spec/lib/api/helpers_spec.rb'
- 'spec/lib/bulk_imports/groups/stage_spec.rb'
- 'spec/lib/bulk_imports/projects/stage_spec.rb'
- 'spec/lib/expand_variables_spec.rb'
- 'spec/lib/feature_spec.rb'
- 'spec/lib/gitlab/application_context_spec.rb'
- 'spec/lib/gitlab/asciidoc/html5_converter_spec.rb'
- 'spec/lib/gitlab/buffered_io_spec.rb'
- 'spec/lib/gitlab/checks/snippet_check_spec.rb'
- 'spec/lib/gitlab/ci/tags/bulk_insert_spec.rb'
- 'spec/lib/gitlab/ci/trace/chunked_io_spec.rb'
- 'spec/lib/gitlab/ci/variables/collection/item_spec.rb'
- 'spec/lib/gitlab/ci/variables/collection/sort_spec.rb'
- 'spec/lib/gitlab/ci/variables/collection_spec.rb'
- 'spec/lib/gitlab/ci/yaml_processor_spec.rb'
- 'spec/lib/gitlab/config/entry/composable_array_spec.rb'
- 'spec/lib/gitlab/config/entry/composable_hash_spec.rb'
- 'spec/lib/gitlab/current_settings_spec.rb'
- 'spec/lib/gitlab/database/background_migration/health_status_spec.rb'
- 'spec/lib/gitlab/database/load_balancing/host_spec.rb'
- 'spec/lib/gitlab/database/load_balancing/primary_host_spec.rb'
- 'spec/lib/gitlab/database/migrations/lock_retry_mixin_spec.rb'
- 'spec/lib/gitlab/database/query_analyzers/gitlab_schemas_validate_connection_spec.rb'
- 'spec/lib/gitlab/database/reindexing_spec.rb'
- 'spec/lib/gitlab/database/similarity_score_spec.rb'
- 'spec/lib/gitlab/database_spec.rb'
- 'spec/lib/gitlab/email/handler_spec.rb'
- 'spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb'
- 'spec/lib/gitlab/encrypted_configuration_spec.rb'
- 'spec/lib/gitlab/error_tracking/logger_spec.rb'
- 'spec/lib/gitlab/experimentation/controller_concern_spec.rb'
- 'spec/lib/gitlab/git/blame_spec.rb'
- 'spec/lib/gitlab/git/blob_spec.rb'
- 'spec/lib/gitlab/git/commit_spec.rb'
- 'spec/lib/gitlab/git/compare_spec.rb'
- 'spec/lib/gitlab/git/diff_collection_spec.rb'
- 'spec/lib/gitlab/git/repository_spec.rb'
- 'spec/lib/gitlab/git/tree_spec.rb'
- 'spec/lib/gitlab/git_access_snippet_spec.rb'
- 'spec/lib/gitlab/gl_repository/repo_type_spec.rb'
- 'spec/lib/gitlab/import_formatter_spec.rb'
- 'spec/lib/gitlab/inactive_projects_deletion_warning_tracker_spec.rb'
- 'spec/lib/gitlab/kubernetes/kube_client_spec.rb'
- 'spec/lib/gitlab/no_cache_headers_spec.rb'
- 'spec/lib/gitlab/pagination/keyset/order_spec.rb'
- 'spec/lib/gitlab/relative_positioning/range_spec.rb'
- 'spec/lib/gitlab/runtime_spec.rb'
- 'spec/lib/gitlab/search_context/controller_concern_spec.rb'
- 'spec/lib/gitlab/seeder_spec.rb'
- 'spec/lib/gitlab/serverless/service_spec.rb'
- 'spec/lib/gitlab/sidekiq_middleware/size_limiter/client_spec.rb'
- 'spec/lib/gitlab/suggestions/commit_message_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb'
- 'spec/lib/gitlab/utils/measuring_spec.rb'
- 'spec/lib/gitlab/webpack/file_loader_spec.rb'
- 'spec/lib/gitlab/webpack/manifest_spec.rb'
- 'spec/lib/gitlab/x509/commit_spec.rb'
- 'spec/lib/gitlab/x509/signature_spec.rb'
- 'spec/lib/peek/views/active_record_spec.rb'
- 'spec/lib/service_ping/devops_report_spec.rb'
- 'spec/lib/sidebars/panel_spec.rb'
- 'spec/mailers/emails/service_desk_spec.rb'
- 'spec/metrics_server/metrics_server_spec.rb'
- 'spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb'
- 'spec/models/active_session_spec.rb'
- 'spec/models/alert_management/alert_spec.rb'
- 'spec/models/application_record_spec.rb'
- 'spec/models/application_setting_spec.rb'
- 'spec/models/awareness_session_spec.rb'
- 'spec/models/broadcast_message_spec.rb'
- 'spec/models/chat_name_spec.rb'
- 'spec/models/ci/build_runner_session_spec.rb'
- 'spec/models/ci/build_spec.rb'
- 'spec/models/ci/group_variable_spec.rb'
- 'spec/models/ci/job_artifact_spec.rb'
- 'spec/models/ci/namespace_mirror_spec.rb'
- 'spec/models/ci/pipeline_artifact_spec.rb'
- 'spec/models/ci/pipeline_spec.rb'
- 'spec/models/ci/processable_spec.rb'
- 'spec/models/ci/ref_spec.rb'
- 'spec/models/ci/variable_spec.rb'
- 'spec/models/ci_platform_metric_spec.rb'
- 'spec/models/clusters/cluster_spec.rb'
- 'spec/models/commit_spec.rb'
- 'spec/models/commit_status_spec.rb'
- 'spec/models/concerns/blocks_unsafe_serialization_spec.rb'
- 'spec/models/concerns/bulk_insertable_associations_spec.rb'
- 'spec/models/concerns/counter_attribute_spec.rb'
- 'spec/models/concerns/has_user_type_spec.rb'
- 'spec/models/concerns/integrations/enable_ssl_verification_spec.rb'
- 'spec/models/concerns/integrations/reset_secret_fields_spec.rb'
- 'spec/models/concerns/issuable_spec.rb'
- 'spec/models/concerns/mentionable_spec.rb'
- 'spec/models/concerns/resolvable_note_spec.rb'
- 'spec/models/concerns/token_authenticatable_spec.rb'
- 'spec/models/customer_relations/contact_spec.rb'
- 'spec/models/customer_relations/organization_spec.rb'
- 'spec/models/dependency_proxy/manifest_spec.rb'
- 'spec/models/deployment_spec.rb'
- 'spec/models/experiment_spec.rb'
- 'spec/models/group_spec.rb'
- 'spec/models/import_failure_spec.rb'
- 'spec/models/integration_spec.rb'
- 'spec/models/internal_id_spec.rb'
- 'spec/models/issue_assignee_spec.rb'
- 'spec/models/issue_spec.rb'
- 'spec/models/jira_import_state_spec.rb'
- 'spec/models/label_link_spec.rb'
- 'spec/models/lfs_objects_project_spec.rb'
- 'spec/models/loose_foreign_keys/deleted_record_spec.rb'
- 'spec/models/member_spec.rb'
- 'spec/models/merge_request_assignee_spec.rb'
- 'spec/models/merge_request_diff_commit_spec.rb'
- 'spec/models/merge_request_diff_file_spec.rb'
- 'spec/models/merge_request_spec.rb'
- 'spec/models/milestone_spec.rb'
- 'spec/models/namespace_spec.rb'
- 'spec/models/namespace_statistics_spec.rb'
- 'spec/models/oauth_access_token_spec.rb'
- 'spec/models/packages/dependency_spec.rb'
- 'spec/models/packages/maven/metadatum_spec.rb'
- 'spec/models/packages/package_spec.rb'
- 'spec/models/pages_deployment_spec.rb'
- 'spec/models/pages_domain_spec.rb'
- 'spec/models/performance_monitoring/prometheus_dashboard_spec.rb'
- 'spec/models/performance_monitoring/prometheus_metric_spec.rb'
- 'spec/models/performance_monitoring/prometheus_panel_group_spec.rb'
- 'spec/models/performance_monitoring/prometheus_panel_spec.rb'
- 'spec/models/plan_spec.rb'
- 'spec/models/postgresql/detached_partition_spec.rb'
- 'spec/models/preloaders/user_max_access_level_in_projects_preloader_spec.rb'
- 'spec/models/preloaders/users_max_access_level_in_projects_preloader_spec.rb'
- 'spec/models/project_feature_usage_spec.rb'
- 'spec/models/project_setting_spec.rb'
- 'spec/models/project_spec.rb'
- 'spec/models/projects/topic_spec.rb'
- 'spec/models/release_highlight_spec.rb'
- 'spec/models/release_spec.rb'
- 'spec/models/route_spec.rb'
- 'spec/models/todo_spec.rb'
- 'spec/models/u2f_registration_spec.rb'
- 'spec/models/user_custom_attribute_spec.rb'
- 'spec/models/user_preference_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/models/users/merge_request_interaction_spec.rb'
- 'spec/models/users_statistics_spec.rb'
- 'spec/models/wiki_directory_spec.rb'
- 'spec/models/work_items/type_spec.rb'
- 'spec/serializers/context_commits_diff_entity_spec.rb'
- 'spec/services/alert_management/alerts/todo/create_service_spec.rb'
- 'spec/services/auth/dependency_proxy_authentication_service_spec.rb'
- 'spec/services/ci/register_job_service_spec.rb'
- 'spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb'
- 'spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb'
- 'spec/services/issuable/process_assignees_spec.rb'
- 'spec/services/loose_foreign_keys/cleaner_service_spec.rb'
- 'spec/services/merge_requests/update_service_spec.rb'
- 'spec/services/notification_service_spec.rb'
- 'spec/services/projects/create_service_spec.rb'
- 'spec/services/resource_access_tokens/create_service_spec.rb'
- 'spec/services/resource_events/synthetic_label_notes_builder_service_spec.rb'
- 'spec/services/service_ping/submit_service_ping_service_spec.rb'
- 'spec/services/snippets/update_service_spec.rb'
- 'spec/services/system_hooks_service_spec.rb'
- 'spec/services/user_project_access_changed_service_spec.rb'
- 'spec/services/webauthn/authenticate_service_spec.rb'
- 'spec/services/webauthn/register_service_spec.rb'
- 'spec/support_specs/helpers/active_record/query_recorder_spec.rb'
- 'spec/support_specs/helpers/graphql_helpers_spec.rb'
- 'spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb'
- 'spec/validators/html_safety_validator_spec.rb'
- 'spec/workers/bulk_imports/entity_worker_spec.rb'
- 'spec/workers/jira_connect/retry_request_worker_spec.rb'

View file

@ -0,0 +1,39 @@
---
# Cop supports --auto-correct.
RSpec/EmptyLineAfterExampleGroup:
Exclude:
- 'ee/spec/controllers/groups/clusters_controller_spec.rb'
- 'ee/spec/controllers/groups/groups_controller_spec.rb'
- 'ee/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb'
- 'ee/spec/features/security/group/private_access_spec.rb'
- 'ee/spec/lib/gitlab/vulnerabilities/container_scanning_vulnerability_spec.rb'
- 'ee/spec/services/ee/gpg_keys/create_service_spec.rb'
- 'ee/spec/services/ee/issues/create_from_vulnerability_data_service_spec.rb'
- 'ee/spec/services/vulnerabilities/confirm_service_spec.rb'
- 'ee/spec/services/vulnerabilities/dismiss_service_spec.rb'
- 'ee/spec/services/vulnerabilities/resolve_service_spec.rb'
- 'ee/spec/services/vulnerabilities/revert_to_detected_service_spec.rb'
- 'ee/spec/services/vulnerability_issue_links/create_service_spec.rb'
- 'ee/spec/services/vulnerability_issue_links/delete_service_spec.rb'
- 'qa/spec/support/loglinking_spec.rb'
- 'spec/controllers/explore/projects_controller_spec.rb'
- 'spec/controllers/projects/notes_controller_spec.rb'
- 'spec/factories/projects/ci_feature_usages.rb'
- 'spec/features/security/group/internal_access_spec.rb'
- 'spec/features/security/group/private_access_spec.rb'
- 'spec/features/security/group/public_access_spec.rb'
- 'spec/helpers/blob_helper_spec.rb'
- 'spec/helpers/git_helper_spec.rb'
- 'spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb'
- 'spec/lib/gitlab/blob_helper_spec.rb'
- 'spec/lib/gitlab/file_type_detection_spec.rb'
- 'spec/lib/gitlab/git/repository_spec.rb'
- 'spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb'
- 'spec/models/concerns/token_authenticatable_strategies/encrypted_spec.rb'
- 'spec/models/note_spec.rb'
- 'spec/models/project_feature_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/models/zoom_meeting_spec.rb'
- 'spec/requests/api/graphql/project/issues_spec.rb'
- 'spec/requests/api/projects_spec.rb'
- 'spec/routing/project_routing_spec.rb'

View file

@ -22,8 +22,6 @@ RSpec/ExpectChange:
- 'ee/spec/controllers/projects/repositories_controller_spec.rb'
- 'ee/spec/controllers/projects/security/vulnerabilities/notes_controller_spec.rb'
- 'ee/spec/controllers/projects_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_projects_controller_spec.rb'
- 'ee/spec/controllers/trials_controller_spec.rb'
- 'ee/spec/elastic/migrate/20220119120500_populate_commit_permissions_in_main_index_spec.rb'
- 'ee/spec/features/groups/group_settings_spec.rb'
@ -245,7 +243,6 @@ RSpec/ExpectChange:
- 'ee/spec/services/vulnerability_feedback/create_service_spec.rb'
- 'ee/spec/services/vulnerability_feedback/destroy_service_spec.rb'
- 'ee/spec/support/shared_contexts/audit_event_not_licensed_shared_context.rb'
- 'ee/spec/support/shared_examples/controllers/registrations/projects_controller_shared_examples.rb'
- 'ee/spec/support/shared_examples/graphql/mutations/update_health_status_shared_examples.rb'
- 'ee/spec/support/shared_examples/models/concerns/replicable_model_with_separate_table_shared_examples.rb'
- 'ee/spec/support/shared_examples/models/geo_verifiable_registry_shared_examples.rb'
@ -431,6 +428,7 @@ RSpec/ExpectChange:
- 'spec/models/project_auto_devops_spec.rb'
- 'spec/models/project_import_state_spec.rb'
- 'spec/models/project_spec.rb'
- 'spec/models/project_statistics_spec.rb'
- 'spec/models/projects/build_artifacts_size_refresh_spec.rb'
- 'spec/models/projects/ci_feature_usage_spec.rb'
- 'spec/models/release_spec.rb'
@ -491,6 +489,7 @@ RSpec/ExpectChange:
- 'spec/services/ci/create_downstream_pipeline_service_spec.rb'
- 'spec/services/ci/create_pipeline_service_spec.rb'
- 'spec/services/ci/destroy_pipeline_service_spec.rb'
- 'spec/services/ci/job_artifacts/delete_service_spec.rb'
- 'spec/services/ci/job_artifacts/update_unknown_locked_status_service_spec.rb'
- 'spec/services/ci/play_build_service_spec.rb'
- 'spec/services/ci/process_build_service_spec.rb'

View file

@ -6,8 +6,6 @@ RSpec/ExpectInHook:
- 'ee/spec/controllers/groups/seat_usage_controller_spec.rb'
- 'ee/spec/controllers/projects/boards_controller_spec.rb'
- 'ee/spec/controllers/projects/settings/slacks_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_controller_spec.rb'
- 'ee/spec/controllers/registrations/groups_projects_controller_spec.rb'
- 'ee/spec/controllers/subscriptions_controller_spec.rb'
- 'ee/spec/controllers/trials_controller_spec.rb'
- 'ee/spec/elastic/migrate/20220118150500_delete_orphaned_commits_spec.rb'
@ -17,7 +15,6 @@ RSpec/ExpectInHook:
- 'ee/spec/features/projects/feature_flags/user_creates_feature_flag_spec.rb'
- 'ee/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb'
- 'ee/spec/features/projects/settings/ee/service_desk_setting_spec.rb'
- 'ee/spec/features/registrations/combined_registration_spec.rb'
- 'ee/spec/features/registrations/saas_user_registration_spec.rb'
- 'ee/spec/features/registrations/trial_during_signup_flow_spec.rb'
- 'ee/spec/features/signup_spec.rb'
@ -35,7 +32,7 @@ RSpec/ExpectInHook:
- 'ee/spec/helpers/ee/issues_helper_spec.rb'
- 'ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb'
- 'ee/spec/helpers/ee/welcome_helper_spec.rb'
- 'ee/spec/helpers/kerberos_spnego_helper_spec.rb'
- 'ee/spec/helpers/kerberos_helper_spec.rb'
- 'ee/spec/helpers/vulnerabilities_helper_spec.rb'
- 'ee/spec/lib/ee/api/helpers/members_helpers_spec.rb'
- 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
@ -72,7 +69,7 @@ RSpec/ExpectInHook:
- 'ee/spec/requests/api/geo_spec.rb'
- 'ee/spec/requests/api/internal/base_spec.rb'
- 'ee/spec/requests/groups/analytics/devops_adoption_controller_spec.rb'
- 'ee/spec/requests/omniauth_kerberos_spnego_spec.rb'
- 'ee/spec/requests/omniauth_kerberos_spec.rb'
- 'ee/spec/services/analytics/cycle_analytics/stages/update_service_spec.rb'
- 'ee/spec/services/app_sec/dast/profiles/update_service_spec.rb'
- 'ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb'
@ -103,7 +100,6 @@ RSpec/ExpectInHook:
- 'ee/spec/services/projects/update_mirror_service_spec.rb'
- 'ee/spec/services/security/findings/cleanup_service_spec.rb'
- 'ee/spec/services/upcoming_reconciliations/update_service_spec.rb'
- 'ee/spec/support/shared_examples/controllers/registrations/projects_controller_shared_examples.rb'
- 'ee/spec/support/shared_examples/lib/gitlab/graphql/issuables_lazy_links_aggregate_shared_examples.rb'
- 'ee/spec/support/shared_examples/models/concerns/elastic/cannot_read_cross_project_shared_examples.rb'
- 'ee/spec/support/shared_examples/models/concerns/verifiable_replicator_shared_examples.rb'
@ -315,12 +311,10 @@ RSpec/ExpectInHook:
- 'spec/lib/gitlab/verify/uploads_spec.rb'
- 'spec/lib/gitlab/zentao/query_spec.rb'
- 'spec/lib/gitlab_spec.rb'
- 'spec/lib/learn_gitlab/onboarding_spec.rb'
- 'spec/lib/omni_auth/strategies/jwt_spec.rb'
- 'spec/lib/prometheus/pid_provider_spec.rb'
- 'spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb'
- 'spec/lib/sidebars/projects/menus/external_wiki_menu_spec.rb'
- 'spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb'
- 'spec/mailers/emails/service_desk_spec.rb'
- 'spec/metrics_server/metrics_server_spec.rb'
- 'spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb'

View file

@ -0,0 +1,16 @@
---
RSpec/MissingExampleGroupArgument:
Exclude:
- 'ee/spec/controllers/groups/audit_events_controller_spec.rb'
- 'ee/spec/services/ee/notification_service_spec.rb'
- 'ee/spec/support/shared_examples/controllers/concerns/description_diff_actions_shared_examples.rb'
- 'spec/controllers/projects/issues_controller_spec.rb'
- 'spec/controllers/projects/merge_requests_controller_spec.rb'
- 'spec/factories/projects/ci_feature_usages.rb'
- 'spec/lib/gitlab/background_migration/backfill_jira_tracker_deployment_type2_spec.rb'
- 'spec/lib/gitlab/git_access_spec.rb'
- 'spec/policies/award_emoji_policy_spec.rb'
- 'spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb'
- 'spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb'
- 'spec/services/notification_service_spec.rb'
- 'spec/support/shared_examples/graphql/sorted_paginated_query_shared_examples.rb'

View file

@ -340,6 +340,7 @@ RSpec/PredicateMatcher:
- 'spec/models/concerns/awardable_spec.rb'
- 'spec/models/concerns/chronic_duration_attribute_spec.rb'
- 'spec/models/concerns/ci/has_deployment_name_spec.rb'
- 'spec/models/concerns/counter_attribute_spec.rb'
- 'spec/models/concerns/featurable_spec.rb'
- 'spec/models/concerns/ignorable_columns_spec.rb'
- 'spec/models/concerns/integrations/has_data_fields_spec.rb'

View file

@ -0,0 +1,24 @@
---
# Cop supports --auto-correct.
RSpec/SharedExamples:
Exclude:
- 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
- 'ee/spec/lib/ee/gitlab/email/handler/service_desk_handler_spec.rb'
- 'ee/spec/lib/gitlab/email/handler/create_note_handler_spec.rb'
- 'ee/spec/services/approval_rules/params_filtering_service_spec.rb'
- 'spec/lib/banzai/filter/repository_link_filter_spec.rb'
- 'spec/lib/gitlab/asciidoc_spec.rb'
- 'spec/lib/gitlab/email/handler/create_issue_handler_spec.rb'
- 'spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb'
- 'spec/lib/gitlab/email/handler/create_note_handler_spec.rb'
- 'spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb'
- 'spec/lib/gitlab/email/handler/service_desk_handler_spec.rb'
- 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb'
- 'spec/lib/gitlab/email/receiver_spec.rb'
- 'spec/lib/gitlab/git/tree_spec.rb'
- 'spec/models/design_management/version_spec.rb'
- 'spec/models/integrations/drone_ci_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/requests/api/graphql/project/issue/design_collection/version_spec.rb'
- 'spec/rubocop/cop/performance/readlines_each_spec.rb'
- 'spec/support/shared_contexts/email_shared_context.rb'

View file

@ -41,7 +41,7 @@ RSpec/VerifiedDoubles:
- ee/spec/helpers/ee/subscribable_banner_helper_spec.rb
- ee/spec/helpers/ee/trial_helper_spec.rb
- ee/spec/helpers/ee/trial_registration_helper_spec.rb
- ee/spec/helpers/kerberos_spnego_helper_spec.rb
- ee/spec/helpers/kerberos_helper_spec.rb
- ee/spec/helpers/license_helper_spec.rb
- ee/spec/helpers/roadmaps_helper_spec.rb
- ee/spec/helpers/routing/pseudonymization_helper_spec.rb
@ -90,7 +90,6 @@ RSpec/VerifiedDoubles:
- ee/spec/lib/sidebars/groups/menus/analytics_menu_spec.rb
- ee/spec/lib/system_check/geo/geo_database_configured_check_spec.rb
- ee/spec/models/app_sec/fuzzing/api/ci_configuration_spec.rb
- ee/spec/models/approvable_spec.rb
- ee/spec/models/concerns/geo/verification_state_spec.rb
- ee/spec/models/ee/ci/job_artifact_spec.rb
- ee/spec/models/ee/user_spec.rb
@ -449,7 +448,6 @@ RSpec/VerifiedDoubles:
- spec/lib/gitlab/ci/config/external/file/project_spec.rb
- spec/lib/gitlab/ci/config/external/rules_spec.rb
- spec/lib/gitlab/ci/parsers/test/junit_spec.rb
- spec/lib/gitlab/ci/pipeline/chain/command_spec.rb
- spec/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb
- spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb
- spec/lib/gitlab/ci/pipeline/chain/limit/deployments_spec.rb

View file

@ -1,16 +1,13 @@
---
# Cop supports --auto-correct.
Style/BarePercentLiterals:
# Offense count: 220
# Temporarily disabled due to too many offenses
Enabled: false
Details: grace period
Exclude:
- 'app/models/commit.rb'
- 'app/models/concerns/storage/legacy_namespace.rb'
- 'app/models/integrations/datadog.rb'
- 'app/services/feature_flags/base_service.rb'
- 'app/services/repositories/base_service.rb'
- 'app/services/repositories/destroy_service.rb'
- 'ee/app/services/jira/jql_builder_service.rb'
- 'ee/lib/ee/gitlab/checks/push_rules/file_size_check.rb'
- 'ee/spec/features/projects/environments/environments_spec.rb'
@ -41,17 +38,15 @@ Style/BarePercentLiterals:
- 'qa/qa/ee/page/project/show.rb'
- 'qa/qa/ee/page/project/snippet/index.rb'
- 'qa/qa/ee/page/project/wiki/show.rb'
- 'qa/qa/page/component/design_management.rb'
- 'qa/qa/page/component/select2.rb'
- 'qa/qa/page/element.rb'
- 'qa/qa/page/file/form.rb'
- 'qa/qa/page/project/web_ide/edit.rb'
- 'qa/qa/resource/events/project.rb'
- 'qa/qa/resource/members.rb'
- 'qa/qa/resource/personal_access_token_cache.rb'
- 'qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/1_manage/group/group_saml_enforced_sso_new_account_spec.rb'
- 'qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb'
- 'qa/qa/support/page/logging.rb'
- 'qa/spec/runtime/feature_spec.rb'
- 'scripts/regenerate-schema'
- 'scripts/trigger-build.rb'
@ -79,6 +74,7 @@ Style/BarePercentLiterals:
- 'spec/lib/banzai/filter/references/label_reference_filter_spec.rb'
- 'spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb'
- 'spec/lib/banzai/pipeline/full_pipeline_spec.rb'
- 'spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb'
- 'spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb'
- 'spec/lib/banzai/reference_parser/commit_parser_spec.rb'
- 'spec/lib/banzai/reference_parser/issue_parser_spec.rb'
@ -95,6 +91,7 @@ Style/BarePercentLiterals:
- 'spec/mailers/emails/releases_spec.rb'
- 'spec/mailers/emails/service_desk_spec.rb'
- 'spec/models/deployment_spec.rb'
- 'spec/models/incident_management/timeline_event_spec.rb'
- 'spec/models/integrations/drone_ci_spec.rb'
- 'spec/models/integrations/teamcity_spec.rb'
- 'spec/models/project_label_spec.rb'
@ -102,6 +99,8 @@ Style/BarePercentLiterals:
- 'spec/requests/api/ci/job_artifacts_spec.rb'
- 'spec/requests/api/deployments_spec.rb'
- 'spec/requests/api/graphql/mutations/snippets/destroy_spec.rb'
- 'spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb'
- 'spec/requests/projects/packages/package_files_controller_spec.rb'
- 'spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb'
- 'spec/services/prometheus/proxy_variable_substitution_service_spec.rb'
- 'spec/support/banzai/reference_filter_shared_examples.rb'

View file

@ -384,9 +384,6 @@ Style/ClassAndModuleChildren:
- 'ee/app/controllers/admin/push_rules_controller.rb'
- 'ee/app/controllers/admin/subscriptions_controller.rb'
- 'ee/app/controllers/admin/user_permission_exports_controller.rb'
- 'ee/app/controllers/concerns/registrations/apply_trial.rb'
- 'ee/app/controllers/concerns/registrations/create_group.rb'
- 'ee/app/controllers/concerns/registrations/create_project.rb'
- 'ee/app/controllers/concerns/registrations/verification.rb'
- 'ee/app/controllers/ee/profiles/accounts_controller.rb'
- 'ee/app/controllers/ee/profiles/preferences_controller.rb'

View file

@ -29,7 +29,7 @@ Style/EmptyElse:
- 'config/initializers/doorkeeper_openid_connect.rb'
- 'ee/app/controllers/admin/audit_logs_controller.rb'
- 'ee/app/controllers/ee/groups_controller.rb'
- 'ee/app/helpers/ee/kerberos_spnego_helper.rb'
- 'ee/app/helpers/ee/kerberos_helper.rb'
- 'ee/app/helpers/ee/trial_helper.rb'
- 'ee/app/models/ee/audit_event.rb'
- 'ee/app/services/ee/users/update_service.rb'

View file

@ -0,0 +1,7 @@
---
Style/FloatDivision:
Exclude:
- 'ee/app/models/geo_node_status.rb'
- 'ee/app/models/namespaces/storage/root_size.rb'
- 'qa/qa/support/formatters/allure_metadata_formatter.rb'
- 'qa/qa/tools/reliable_report.rb'

View file

@ -65,6 +65,7 @@ Style/FormatString:
- 'app/helpers/members_helper.rb'
- 'app/helpers/merge_requests_helper.rb'
- 'app/helpers/mirror_helper.rb'
- 'app/helpers/notify_helper.rb'
- 'app/helpers/preferences_helper.rb'
- 'app/helpers/profiles_helper.rb'
- 'app/helpers/projects/project_members_helper.rb'

View file

@ -20,7 +20,6 @@ Style/HashAsLastArrayItem:
- 'app/graphql/resolvers/concerns/issue_resolver_arguments.rb'
- 'app/graphql/types/boards/board_issuable_input_base_type.rb'
- 'app/graphql/types/boards/board_issue_input_base_type.rb'
- 'app/helpers/learn_gitlab_helper.rb'
- 'app/helpers/namespaces_helper.rb'
- 'app/models/customer_relations/contact.rb'
- 'app/models/customer_relations/organization.rb'

View file

@ -652,6 +652,7 @@ Style/IfUnlessModifier:
- 'ee/app/services/vulnerability_feedback/create_service.rb'
- 'ee/app/services/vulnerability_feedback/destroy_service.rb'
- 'ee/app/services/vulnerability_feedback_module/update_service.rb'
- 'ee/app/services/elastic/cluster_reindexing_service.rb'
- 'ee/app/validators/host_validator.rb'
- 'ee/app/validators/password/complexity_validator.rb'
- 'ee/app/workers/app_sec/dast/profile_schedule_worker.rb'

View file

@ -77,7 +77,7 @@ Style/Lambda:
- 'app/models/note.rb'
- 'app/models/note_diff_file.rb'
- 'app/models/notification_setting.rb'
- 'app/models/onboarding_progress.rb'
- 'app/models/onboarding/progress.rb'
- 'app/models/operations/feature_flags/user_list.rb'
- 'app/models/packages/package.rb'
- 'app/models/packages/package_file.rb'
@ -217,7 +217,6 @@ Style/Lambda:
- 'lib/gitlab/sidekiq_signals.rb'
- 'lib/gitlab/utils/measuring.rb'
- 'lib/gitlab/visibility_level.rb'
- 'qa/qa/fixtures/auto_devops_rack/config.ru'
- 'rubocop/cop/rspec/modify_sidekiq_middleware.rb'
- 'rubocop/cop/rspec/timecop_freeze.rb'
- 'rubocop/cop/rspec/timecop_travel.rb'

View file

@ -3,17 +3,7 @@
Style/Next:
Exclude:
- 'app/models/concerns/integrations/slack_mattermost_notifier.rb'
- 'app/models/preloaders/environments/deployment_preloader.rb'
- 'app/models/route.rb'
- 'app/services/authorized_project_update/find_records_due_for_refresh_service.rb'
- 'app/validators/nested_attributes_duplicates_validator.rb'
- 'config/initializers/01_secret_token.rb'
- 'config/initializers/sidekiq_cluster.rb'
- 'ee/app/controllers/groups/analytics/cycle_analytics/value_streams_controller.rb'
- 'ee/app/services/app_sec/dast/profiles/create_associations_service.rb'
- 'ee/app/services/elastic/cluster_reindexing_service.rb'
- 'ee/app/services/gitlab_subscriptions/fetch_purchase_eligible_namespaces_service.rb'
- 'ee/app/services/security/auto_fix_service.rb'
- 'ee/app/services/security/ingestion/tasks/update_vulnerability_uuids.rb'
- 'ee/db/fixtures/development/20_vulnerabilities.rb'
- 'ee/lib/ee/audit/protected_branches_changes_auditor.rb'

View file

@ -254,7 +254,6 @@ Style/PercentLiteralDelimiters:
- 'ee/app/mailers/previews/license_mailer_preview.rb'
- 'ee/app/models/app_sec/fuzzing/api/scan_profile.rb'
- 'ee/app/models/app_sec/fuzzing/coverage/corpus.rb'
- 'ee/app/models/concerns/approvable.rb'
- 'ee/app/models/concerns/ee/issue_available_features.rb'
- 'ee/app/models/ee/audit_event.rb'
- 'ee/app/models/ee/description_version.rb'

View file

@ -47,7 +47,6 @@ Style/RedundantSelf:
- 'app/models/commit_status.rb'
- 'app/models/compare.rb'
- 'app/models/concerns/after_commit_queue.rb'
- 'app/models/concerns/approvable_base.rb'
- 'app/models/concerns/atomic_internal_id.rb'
- 'app/models/concerns/avatarable.rb'
- 'app/models/concerns/awardable.rb'

View file

@ -74,7 +74,7 @@ Style/StringConcatenation:
- 'ee/lib/elastic/latest/git_class_proxy.rb'
- 'ee/lib/gitlab/elastic/search_results.rb'
- 'ee/lib/gitlab/geo/git_ssh_proxy.rb'
- 'ee/lib/omni_auth/strategies/kerberos_spnego.rb'
- 'ee/lib/omni_auth/strategies/kerberos.rb'
- 'ee/lib/tasks/gitlab/elastic.rake'
- 'ee/lib/tasks/gitlab/license.rake'
- 'ee/spec/controllers/trial_registrations_controller_spec.rb'
@ -263,9 +263,9 @@ Style/StringConcatenation:
- 'spec/models/custom_emoji_spec.rb'
- 'spec/models/grafana_integration_spec.rb'
- 'spec/models/integrations/campfire_spec.rb'
- 'spec/models/integrations/datadog_spec.rb'
- 'spec/models/integrations/chat_message/pipeline_message_spec.rb'
- 'spec/models/integrations/chat_message/push_message_spec.rb'
- 'spec/models/integrations/datadog_spec.rb'
- 'spec/models/integrations/jenkins_spec.rb'
- 'spec/models/merge_request_diff_spec.rb'
- 'spec/models/merge_request_spec.rb'

View file

@ -239,7 +239,6 @@ Style/SymbolProc:
- 'spec/graphql/mutations/releases/create_spec.rb'
- 'spec/graphql/types/work_items/widget_type_enum_spec.rb'
- 'spec/helpers/instance_configuration_helper_spec.rb'
- 'spec/helpers/learn_gitlab_helper_spec.rb'
- 'spec/helpers/members_helper_spec.rb'
- 'spec/lib/backup/gitaly_backup_spec.rb'
- 'spec/lib/gitlab/database/dynamic_model_helpers_spec.rb'

View file

@ -2,25 +2,663 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 15.3.4 (2022-09-29)
## 15.4.2 (2022-10-04)
### Fixed (1 change)
- [Ensure that stage name and record are in sync for page deployments](gitlab-org/gitlab@ce58ec2ef959bd35ddbc6992560a163c8fc4f145) ([merge request](gitlab-org/gitlab!100037))
## 15.4.1 (2022-09-29)
### Security (15 changes)
- [Redact user's private email in group member event webhook](gitlab-org/security/gitlab@172b8a57bd4acca14d65a4b7a5fd021babacb146) ([merge request](gitlab-org/security/gitlab!2794))
- [Redact secrets from WebHookLogs](gitlab-org/security/gitlab@7394ab9b32a7bd83b98f93e904312e469f34cd9c) ([merge request](gitlab-org/security/gitlab!2737))
- [Forbid creating a tag using default branch name](gitlab-org/security/gitlab@1b556c33aa11c32994be562cfea0ff2e5e13a54e) ([merge request](gitlab-org/security/gitlab!2799))
- [Sanitize Url and check for valid numerical errorId in error tracking](gitlab-org/security/gitlab@2a5a51b5b2839963fe7084261c8a7fcc6f09f19c) ([merge request](gitlab-org/security/gitlab!2785))
- [Add security protection for Github](gitlab-org/security/gitlab@bc23f46dba26bcdf0c773c24081e4ae3597bf751) ([merge request](gitlab-org/security/gitlab!2802))
- [Fix leaking emails in WebHookLogs](gitlab-org/security/gitlab@a31a652c331877e0f97269310ec5f1bc6266398f) ([merge request](gitlab-org/security/gitlab!2807))
- [Restrict max duration to 1 year for trace display](gitlab-org/security/gitlab@b62fd774b6f311988c7e10f3544f2aeabeab85d1) ([merge request](gitlab-org/security/gitlab!2815))
- [Use UntrustedRegexp for upload rewriter](gitlab-org/security/gitlab@2eea36acbc5687aa9806946861e73f2fb11a9654) ([merge request](gitlab-org/security/gitlab!2791))
- [Validate httpUrlToRepo to be http or https only](gitlab-org/security/gitlab@0b340ef6d6e54804445916f5b1fa53185de4b1f7) ([merge request](gitlab-org/security/gitlab!2760))
- [Respect instance level rule for editing approval rules](gitlab-org/security/gitlab@2d2a7b8652dbd1085fe1bfc0b69138aecdeaf9c8) ([merge request](gitlab-org/security/gitlab!2782))
- [Prevent users creating issues in ay project via board/issues controller](gitlab-org/security/gitlab@559b23e6942a650cafa358ea96b7ee549f76fbd6) ([merge request](gitlab-org/security/gitlab!2780))
- [Prevent serialization of sensible attributes from JsonCache](gitlab-org/security/gitlab@f712d58af3aeb3f0fe1c56a290188e19fce72ad6) ([merge request](gitlab-org/security/gitlab!2771))
- [Update TodoPolicy to handle confidential notes](gitlab-org/security/gitlab@6bd37cd0595bbf4c744a5b212fc41181c9dc88ef) ([merge request](gitlab-org/security/gitlab!2748))
- [Enforce group IP restriction on Dependency Proxy](gitlab-org/security/gitlab@cc42b5e91e04e77ade63f1fdb91e88b998c156f7) ([merge request](gitlab-org/security/gitlab!2764))
- [Fixes XSS in widget extensions](gitlab-org/security/gitlab@1d10849c7eee6207435bfd223e1f8639b2816c1e) ([merge request](gitlab-org/security/gitlab!2759))
- [Redact user's private email in group member event webhook](gitlab-org/security/gitlab@f556c625f37d1be801b54c5a1ff3dd37434d48e4) ([merge request](gitlab-org/security/gitlab!2809))
- [Redact secrets from WebHookLogs](gitlab-org/security/gitlab@7101edbc7fc27e2d2d23b8f9f84611943b310b71) ([merge request](gitlab-org/security/gitlab!2805))
- [Forbid creating a tag using default branch name](gitlab-org/security/gitlab@ba3e62fc30f475b9334440409f5bad481b3c5dd6) ([merge request](gitlab-org/security/gitlab!2798))
- [Sanitize Url and check for valid numerical errorId in error tracking](gitlab-org/security/gitlab@fba573834091aec7bde7856bfddd080cc74fb3ae) ([merge request](gitlab-org/security/gitlab!2819))
- [Add security protection for Github](gitlab-org/security/gitlab@6265bdb12496d34f30d9ae6889288c6857fd4fd0) ([merge request](gitlab-org/security/gitlab!2803))
- [Fix leaking emails in WebHookLogs](gitlab-org/security/gitlab@7580a2d62cd421b5176a3ce7f23c7d192e69989e) ([merge request](gitlab-org/security/gitlab!2806))
- [Restrict max duration to 1 year for trace display](gitlab-org/security/gitlab@e1162719cc9e62692c911c992175d6ef3b5f996f) ([merge request](gitlab-org/security/gitlab!2817))
- [Use UntrustedRegexp for upload rewriter](gitlab-org/security/gitlab@fde2bb115242a9af3678e5c8547c7c9ccd2b0c1e) ([merge request](gitlab-org/security/gitlab!2790))
- [Validate httpUrlToRepo to be http or https only](gitlab-org/security/gitlab@d56ebc1a207618ec846e6ee2c842d3a5019444b7) ([merge request](gitlab-org/security/gitlab!2811))
- [Respect instance level rule for editing approval rules](gitlab-org/security/gitlab@dc5dd5be3f3f681ca499d3a59eb469bd12dad51b) ([merge request](gitlab-org/security/gitlab!2796))
- [Prevent users creating issues in ay project via board/issues controller](gitlab-org/security/gitlab@e0b09653ff468b65a73155a2e28077a0e94dc7e8) ([merge request](gitlab-org/security/gitlab!2781))
- [Prevent serialization of sensible attributes from JsonCache](gitlab-org/security/gitlab@d1842119756b8a69a5d1b14ebd902dc2f4b24dbf) ([merge request](gitlab-org/security/gitlab!2818))
- [Update TodoPolicy to handle confidential notes](gitlab-org/security/gitlab@cddab943af028c4653dacdd832be5e3e8ac778d3) ([merge request](gitlab-org/security/gitlab!2833))
- [Enforce group IP restriction on Dependency Proxy](gitlab-org/security/gitlab@fff740c7ab046c5e8ef6495ffa3b45228e11841a) ([merge request](gitlab-org/security/gitlab!2801))
- [Fixes XSS in widget extensions](gitlab-org/security/gitlab@459becb7a1b0336ddf67f867eecbdf37d579f881) ([merge request](gitlab-org/security/gitlab!2832))
## 15.4.0 (2022-09-21)
### Added (162 changes)
- [Add git tags from last deployment to environment detail page](gitlab-org/gitlab@dd9fbfc75790666b2ff3aff0dc45d2ddfc1695ae) ([merge request](gitlab-org/gitlab!96060))
- [Background worker for suggested reviewers](gitlab-org/gitlab@38048811859fa714a5f2dcb79e38877f99b3460f) ([merge request](gitlab-org/gitlab!97622))
- [Maven request forwarding](gitlab-org/gitlab@80c6b14a94c96eb9772786b669249512ae6bfb86) ([merge request](gitlab-org/gitlab!85299))
- [Add edited by information to GraphQL WorkItem type](gitlab-org/gitlab@4be6e1c75b511c2e4173517b0e57b1f9c534b8ba) ([merge request](gitlab-org/gitlab!97328))
- [RPM initial upload and package creation](gitlab-org/gitlab@b1f7bf75fe40ab26d1ffa50d20b07ae426b30b9f) ([merge request](gitlab-org/gitlab!96940))
- [Add codeOwnerReviewRequired to EE](gitlab-org/gitlab@8bd7af46e98e2ee3b4680e01e6817cc968a7c865) ([merge request](gitlab-org/gitlab!96693)) **GitLab Enterprise Edition**
- [Added REST APIs to fetch latest release and download release assets](gitlab-org/gitlab@09faee593310ed2c5965788cb1efbebfbd7690f8) by @zillemarco ([merge request](gitlab-org/gitlab!92607))
- [Add iterations cadences to Gitlab Migration](gitlab-org/gitlab@9aa3c847a7a838f887c1ccdd8af0aedbfb322052) ([merge request](gitlab-org/gitlab!96570)) **GitLab Enterprise Edition**
- [Expose user and group for branch protection access levels in EE](gitlab-org/gitlab@5a96b284a5985a1192f3a63856d07640e704e3b9) ([merge request](gitlab-org/gitlab!96301)) **GitLab Enterprise Edition**
- [Add cluster_agent_id and image to GraphQL vulnerabilitySeveritiesCount](gitlab-org/gitlab@1e8223d08bd2103a99e10b5e8a93888ae9fa0616) ([merge request](gitlab-org/gitlab!98168)) **GitLab Enterprise Edition**
- [Add unique index to ci_builds_metadata](gitlab-org/gitlab@f84cbd4a20b86d596d405afb9b9d099996aa425b) ([merge request](gitlab-org/gitlab!97924))
- [Add job field to ProjectType](gitlab-org/gitlab@442fc9f599032672cea48385377a29962a03ac1e) ([merge request](gitlab-org/gitlab!97400))
- [Enable search option for environments](gitlab-org/gitlab@9e4fade945ea26a151ccbc081fbdd3c8a657335d) ([merge request](gitlab-org/gitlab!97832))
- [Added markdown support for solution](gitlab-org/gitlab@1ccfa0ea7385dd2f1280addff29588d54fb27abe) ([merge request](gitlab-org/gitlab!95858)) **GitLab Enterprise Edition**
- [Support delivery of emails using Microsoft Graph API](gitlab-org/gitlab@5a413f7c48df0c2c28de86ee56f3b874a53323ef) ([merge request](gitlab-org/gitlab!97372))
- [Expose CI variable limits through GraphQL](gitlab-org/gitlab@2496be70c2cb7a049d37538db542d628449beece) ([merge request](gitlab-org/gitlab!97707))
- [Add checkbox supported by Autosave and autosave confidential in Issuable form ](gitlab-org/gitlab@29c1df949e84265a3aeb737cd16e1bf4b037355f) by @ali_o_kan ([merge request](gitlab-org/gitlab!97237))
- [Backfill namespace_id on issues table](gitlab-org/gitlab@fd3abd01d1ed223fa233045601888e970e681d1e) ([merge request](gitlab-org/gitlab!91921))
- [Add issue resource_iteration_events to Project Import/Export](gitlab-org/gitlab@c4f4e2c2b59d26b00011bbbda7f5df6cc2f9350d) ([merge request](gitlab-org/gitlab!96184)) **GitLab Enterprise Edition**
- [Enabling feature flag immediate_delete_subgroup_api by default](gitlab-org/gitlab@0db8710accec0363e9aec1814e880824ceb952e0) ([merge request](gitlab-org/gitlab!98027))
- [Add harbor registry tags page](gitlab-org/gitlab@319dd8ec9c317c7fb75b95c57d0020ae1353da17) by @orozot ([merge request](gitlab-org/gitlab!95931))
- [Add the resource state events REST API endpoint for epics](gitlab-org/gitlab@b64b2b8944536ec66d1063fc3ed26f04c9b663ef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97554)) **GitLab Enterprise Edition**
- [Add last_downloaded_at to packages](gitlab-org/gitlab@e9bba3ece35167622755f5428233d6453b4e022c) ([merge request](gitlab-org/gitlab!97143))
- [Documentation of Move to start/end of list actions](gitlab-org/gitlab@cf73d679243c1fe6321df4a3507cdeb01ceffd9a) ([merge request](gitlab-org/gitlab!97094))
- [Add monthly count_user_auth metric](gitlab-org/gitlab@a72ad9e9458067ed7e70a3d65d4a5850d0844ddb) ([merge request](gitlab-org/gitlab!97725))
- [Add auth_type to jwt controller tokens](gitlab-org/gitlab@835bbb241583f32d426793477c2dde088756c953) ([merge request](gitlab-org/gitlab!97904))
- [Add column to store over user limit notification status](gitlab-org/gitlab@105b1808b7a977677930fea57d55c33413c8db91) ([merge request](gitlab-org/gitlab!97517))
- [Domain Verification MVC](gitlab-org/gitlab@0a7775eb3ccd878b880dde41102ba4d650a58189) ([merge request](gitlab-org/gitlab!95407)) **GitLab Enterprise Edition**
- [Add default project for epics](gitlab-org/gitlab@0a5e350e8c0df7c98d396abc9caae31cb7bef733) ([merge request](gitlab-org/gitlab!97498)) **GitLab Enterprise Edition**
- [Extend packages project policy to consider access level](gitlab-org/gitlab@f9a3eacc5b465405a46a7fb77cb1313cf7a4e15f) by @wwwjon ([merge request](gitlab-org/gitlab!97001))
- [Add system note service for resource links](gitlab-org/gitlab@746625a161de9427374774812c7e0c169d785936) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96937))
- [Add group shares in group transfer locations API](gitlab-org/gitlab@d05cc2a34ad12ac5edf8eb70c48e018c413578f0) ([merge request](gitlab-org/gitlab!96347))
- [Removes group_ip_restrictions_allow_global feature_flag](gitlab-org/gitlab@bdce5a2f4b7d2dae2683177d1662c3ad8c8cea3a) ([merge request](gitlab-org/gitlab!97268))
- [GraphQL query for last and upcoming deployment](gitlab-org/gitlab@d9b5a672e87c68aab0eb144d90b03653986d7352) ([merge request](gitlab-org/gitlab!97098))
- [Add clear status after dropdown to profile set status form](gitlab-org/gitlab@f99409d2377285fe68dde02d27bb5110a2d203be) ([merge request](gitlab-org/gitlab!96800))
- [Migrate merge request review_requested/removed events](gitlab-org/gitlab@f1fa496c959245dacfe0f797f93392912291cdf9) ([merge request](gitlab-org/gitlab!94171))
- [Memoize search_environments finder](gitlab-org/gitlab@05326cfa0c8d4455d3822a7e012c70791f7d320e) ([merge request](gitlab-org/gitlab!97015))
- [Add state field to environments varchar name index](gitlab-org/gitlab@c8bd5f81c251cc4eee48d7003e473b14b8f41e93) ([merge request](gitlab-org/gitlab!97015))
- [Add version sort to tags API](gitlab-org/gitlab@40a4c992d9c6d81a4cebfe00052e6333f69e3654) ([merge request](gitlab-org/gitlab!95150))
- [Show better errors from GraphQL on Releases](gitlab-org/gitlab@47a723eb81ae1e85fc02a283ef65a6ee0a86076a) ([merge request](gitlab-org/gitlab!96586))
- [Debian Acquire-By-Hash (to avoid Hash Sum Mismatch errors)](gitlab-org/gitlab@956f1aaea82dcb794090e604f101e0e4c2217f07) by @sathieu ([merge request](gitlab-org/gitlab!96947))
- [Add cube proxy API request](gitlab-org/gitlab@89d8ed00a3f033d25e293088ec86df2efba3a685) ([merge request](gitlab-org/gitlab!96250))
- [Adds endpoints for MLFlow client Run entity](gitlab-org/gitlab@398493c671a9e99b15f7df1b85ab57fee9efebc5) ([merge request](gitlab-org/gitlab!97003))
- [Optimize the pending todos check query](gitlab-org/gitlab@830cab0786528d112146f6933f672272294512c1) ([merge request](gitlab-org/gitlab!97641))
- [Load more for task assignees when user scrolls](gitlab-org/gitlab@ff06bf3647ac222ed45a61a65c263c47d37bf6f0) ([merge request](gitlab-org/gitlab!96632))
- [Add pushAccessLevels to graphql endpoint](gitlab-org/gitlab@5d6f94226c303dcb9527fe345edc9aeeb73ce53d) ([merge request](gitlab-org/gitlab!96300))
- [Add mergeAccessLevels to graphql endpoint](gitlab-org/gitlab@b4965666b3cdf570b04aa5745ef5ab6ee9e9f7e5) ([merge request](gitlab-org/gitlab!96174))
- [Support variable expansion on environment auto_stop_in](gitlab-org/gitlab@9c9f6b9d02d842b617ad33bbe145ebd048515ed1) ([merge request](gitlab-org/gitlab!96044))
- [Add dismissal_reason to StateTransitions](gitlab-org/gitlab@7886e02b7954023ab2fbc448e4e2cbbbb6873276) ([merge request](gitlab-org/gitlab!97485))
- [Add branchProtection under project.branchRules in graphql endpoint](gitlab-org/gitlab@668405690422e37c701d30f6b928a7ba9983710a) ([merge request](gitlab-org/gitlab!95925))
- [Updates container registry project settings](gitlab-org/gitlab@558c2aeff40e4f46ecbae66709ae15300bad17a4) ([merge request](gitlab-org/gitlab!96799))
- [Add support for semantic versioning tags sort](gitlab-org/gitlab@f238e872666dc21cf1ad67f5001ef7ce28ab3345) ([merge request](gitlab-org/gitlab!95090))
- [New GraphQL mutation for dismiss security finding](gitlab-org/gitlab@541bf4b803dc9adee09b4c9b3a29765c5913de3b) ([merge request](gitlab-org/gitlab!93302)) **GitLab Enterprise Edition**
- [Add rpm package type](gitlab-org/gitlab@4aac17b0a5f5691c13c5b82b22751b372291ba8e) ([merge request](gitlab-org/gitlab!96278))
- [Update groups api to accept parameter for ip_restriction_range](gitlab-org/gitlab@23faab455417a58ae456d5e614f20bd07215429d) ([merge request](gitlab-org/gitlab!96397)) **GitLab Enterprise Edition**
- [Allow users to filter issues by health status](gitlab-org/gitlab@0527842f35485b686d62d83dfab69eae165fdae1) ([merge request](gitlab-org/gitlab!97105))
- [Moved assignees to work_items feature flag](gitlab-org/gitlab@34d296b815f39ede2a1a047e012700393be4b7c8) ([merge request](gitlab-org/gitlab!95522))
- [Add support for Google CDN](gitlab-org/gitlab@191f65c2d4b72593973b217a5d061c04d73f25da) ([merge request](gitlab-org/gitlab!96336))
- [Use ListCommits rpc to fetch context commits](gitlab-org/gitlab@2fe0dcffd253e7a516d3202df69a82d2197b4a3b) by @akumar1503 ([merge request](gitlab-org/gitlab!90559))
- [Create international phone input component in Vue](gitlab-org/gitlab@8b601e60cbe3887eddfb50b98f231d470826c1a8) ([merge request](gitlab-org/gitlab!96529)) **GitLab Enterprise Edition**
- [Create ultimate feature removal banner](gitlab-org/gitlab@7193da1f27038aba3052d8a85e22a87f8d442a11) ([merge request](gitlab-org/gitlab!94271))
- [Add basic DORA configuration model](gitlab-org/gitlab@a74622c2cdf9b9e828b86a4a50d2edc4059192f8) ([merge request](gitlab-org/gitlab!96561))
- [Autosave due_date in Issuable form](gitlab-org/gitlab@3a5189a758ab55a064ea480c1b2f08df4a1d38fa) by @ali_o_kan ([merge request](gitlab-org/gitlab!97379))
- [Remove not allowed epics properties from issue CSV export](gitlab-org/gitlab@eeb23b5bbc08fb1c91b6bd59be0d274035949ee9) ([merge request](gitlab-org/gitlab!96710)) **GitLab Enterprise Edition**
- [Add View entire blame button](gitlab-org/gitlab@0fff583f5d808ac2f96961e7419876383d871888) ([merge request](gitlab-org/gitlab!97405))
- [Support $…$ and $$…$$ syntax math in markdown](gitlab-org/gitlab@d942e4d88d9bddfed901e4d604d9b3f8255b8e21) ([merge request](gitlab-org/gitlab!94111))
- [Add integration status area to the agent details](gitlab-org/gitlab@916bc3889da6d7a3dff4be391a27258ddb933308) ([merge request](gitlab-org/gitlab!97144)) **GitLab Enterprise Edition**
- [Add support for sorting project and group members Graphql resolvers](gitlab-org/gitlab@97bdf4ca77759e40ed43ea0d3f93d8bc2979981b) ([merge request](gitlab-org/gitlab!97092))
- [Add id, size and expiry to GraphQL Job Artifact](gitlab-org/gitlab@79cb541b8cc00f170ed43e360d1accc7178ccc4e) by @leetickett ([merge request](gitlab-org/gitlab!97129))
- [Add count field to the GraphQL EpicConnection type](gitlab-org/gitlab@d107fe3757e5309d8da2803d5291d659fe81ebfd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96776)) **GitLab Enterprise Edition**
- [Add instrumentation for MAU visiting environments pages](gitlab-org/gitlab@4667eae9a595d814578df01c7fa4ee6cd5f1e638) ([merge request](gitlab-org/gitlab!97063))
- [Add edit confirmation popover in sidebar dropdown widget](gitlab-org/gitlab@5e255a2f0e95cbb3b1a04a5025982347afd87de9) ([merge request](gitlab-org/gitlab!96872)) **GitLab Enterprise Edition**
- [Adding graphQL parameters for move to start and end for boards](gitlab-org/gitlab@8329b64030a1ab3e11bd5aa2d1e627a38fcc3762) ([merge request](gitlab-org/gitlab!96125))
- [Autosave weight in Issuable form](gitlab-org/gitlab@b14acb9ca5a30c6e9c2133a932d25075b0552085) by @ali_o_kan ([merge request](gitlab-org/gitlab!96899)) **GitLab Enterprise Edition**
- [Move embedded Zoom calls to Linked Resources](gitlab-org/gitlab@0777cd3002c51f5766a8f349e9e69c6e640bde8a) ([merge request](gitlab-org/gitlab!95588)) **GitLab Enterprise Edition**
- [Allow the creation of scan result policies](gitlab-org/gitlab@5a6fbe7f5a3899eeaaf02a847b5e5d2b9ab84d68) ([merge request](gitlab-org/gitlab!96563)) **GitLab Enterprise Edition**
- [Add ArtifactDestroy GraphQL mutation](gitlab-org/gitlab@5562883393ce20200f46777afb68e5f6d721c304) by @leetickett ([merge request](gitlab-org/gitlab!96425))
- [Introduce backend updates for toggle of diff preview](gitlab-org/gitlab@640fb496732d8d4bd63dfd5e0b06b812f3e1bf4c) by @joe-snyder ([merge request](gitlab-org/gitlab!89150))
- [Add a search bar to the list of assigned projects](gitlab-org/gitlab@d33265f34044ed01848dde46a69c62ffeb7ec1e1) ([merge request](gitlab-org/gitlab!96999))
- [GraphQL: Add resolver to runner projects](gitlab-org/gitlab@a0f73de8cc5caa559e6c9909bebac78460e0f417) ([merge request](gitlab-org/gitlab!96386))
- [Add partition_id column to selected CI database tables](gitlab-org/gitlab@d7d6efe12d962b68085acff413abbca2299caf28) ([merge request](gitlab-org/gitlab!96856))
- [Adds first endpoints for MLFlow Integration](gitlab-org/gitlab@bcca7cbb3d7fa6a0340e654c9d21e62a13677d85) ([merge request](gitlab-org/gitlab!95689))
- [Add index to todos the improve query performance](gitlab-org/gitlab@bc0d8a0172f3ccfb5027d1b45e72a1ca9a04bc6f) ([merge request](gitlab-org/gitlab!97025))
- [Graphql query for environment information](gitlab-org/gitlab@0376a74c924d0d814714f620599ba64442d9f978) ([merge request](gitlab-org/gitlab!97099))
- [Allow admins to merge topics [API]](gitlab-org/gitlab@788cb9ec0e59d73c19b42467e86b708b9dc760bd) by @wwwjon ([merge request](gitlab-org/gitlab!95501))
- [Add autosave on design notes](gitlab-org/gitlab@379d683631fe16c17a8e79d55af9a1ff2f60a782) ([merge request](gitlab-org/gitlab!96494))
- [Add new Katalon ci/cd template for partnership program](gitlab-org/gitlab@b666446e02304ea2b6630e05d150a749b5a4a875) by @philip.becker ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86484))
- [Add JobArtifactsDestroy GraphQL mutation](gitlab-org/gitlab@5eca99c054c0ca14a10261354a84504091cd674e) by @leetickett ([merge request](gitlab-org/gitlab!96431))
- [Default-enable Pipeline Wizard for pages](gitlab-org/gitlab@3a09e6338cdc9e64da5cde2af03e1ebfba10d0b2) ([merge request](gitlab-org/gitlab!97037))
- [Add a work item widget for iteration](gitlab-org/gitlab@d682dbf77ab45e18a97ae0bb8ec88e16f267d69f) ([merge request](gitlab-org/gitlab!96736)) **GitLab Enterprise Edition**
- [Expose dates where DORA data is missing](gitlab-org/gitlab@a5aa4fc1d104d08624f40dddb73e9cb55cf8a815) ([merge request](gitlab-org/gitlab!96527)) **GitLab Enterprise Edition**
- [Rollout shimo integration](gitlab-org/gitlab@6be7fb717d63bcd887cb38694ca34d5258d0059d) by @icbd ([merge request](gitlab-org/gitlab!95161))
- [Add streaming audit event for work item and MR deletion](gitlab-org/gitlab@f5054716b8504d6fd0e89831a1fbafd3e643de8d) ([merge request](gitlab-org/gitlab!96773))
- [Add mutation to move to start / end of board lists](gitlab-org/gitlab@ab9c8dbc2d2de013ee448b0191d460114619d04a) ([merge request](gitlab-org/gitlab!95906))
- [Migration for creating ghost_user_migrations table](gitlab-org/gitlab@e77535b283db3c96a490cf9df9add0d548c206bf) ([merge request](gitlab-org/gitlab!95473))
- [Add pipelined Redis commands to performance bar](gitlab-org/gitlab@1ef7f978e35cd9250a5ef2450e582878628858f1) ([merge request](gitlab-org/gitlab!94373))
- [Add hasEpic to issue type](gitlab-org/gitlab@3ff08589888b06626ae2833b4c81dbbddd8bc2db) ([merge request](gitlab-org/gitlab!96255)) **GitLab Enterprise Edition**
- [Add id, size and expiry to GraphQL Job Artifact](gitlab-org/gitlab@18f264a75caec72918371f7c5ecef222ba9feeb3) by @leetickett ([merge request](gitlab-org/gitlab!96422))
- [Make Short Sha in Deployments Page a Link](gitlab-org/gitlab@081ba1c56b9a204a9ce967e10f09acc4c732b5e2) ([merge request](gitlab-org/gitlab!96581))
- [Add harbor registry list page](gitlab-org/gitlab@95d4e201f1b90943b66e4932126b09e13ca550a2) by @orozot ([merge request](gitlab-org/gitlab!82784))
- [Monitor memory growth in memory-watchdog](gitlab-org/gitlab@d233174c3292a16c96bf636e42b5b05fd935fad3) ([merge request](gitlab-org/gitlab!96241))
- [Enable `escape_gitaly_refs` by default](gitlab-org/gitlab@3e7bcc1f79cc08a5648cf48143b373dc84ce987e) ([merge request](gitlab-org/gitlab!96682))
- [Add Debian endpoints for Sources](gitlab-org/gitlab@85498977a5a687f9480889d4ca1154024bf42354) by @sathieu ([merge request](gitlab-org/gitlab!71918))
- [Add Debian endpoints for D-I Packages](gitlab-org/gitlab@32b646a4d443c43f6adabcfeaf0e3e8c52aeac8f) by @sathieu ([merge request](gitlab-org/gitlab!71918))
- [Add support for task item status tooltip](gitlab-org/gitlab@3cba766af094334950ad508bcb51262fe24e80e7) ([merge request](gitlab-org/gitlab!96251))
- [Support Group Avatar Removal in REST API](gitlab-org/gitlab@b212c782d07e682271643eeb33e0e13ea0591426) by @tuxtimo ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96421))
- [Align namespace of DeployAccessLevel model](gitlab-org/gitlab@7fde5bdb710d81a68d8939656389c8bb494dc677) ([merge request](gitlab-org/gitlab!96351))
- [Show epics blocking info on list & boards](gitlab-org/gitlab@7a94c59aae538f26a22d1f1c6237cc0ac9716356) ([merge request](gitlab-org/gitlab!89316)) **GitLab Enterprise Edition**
- [Create API endpoint to update a protected environment](gitlab-org/gitlab@ba0c0be1a73de086b7077bf679943e68d1d3397b) ([merge request](gitlab-org/gitlab!95914)) **GitLab Enterprise Edition**
- [Add work item weight widget subscription](gitlab-org/gitlab@83a8f7999db35a393859f07ec80a1971dc9615b7) ([merge request](gitlab-org/gitlab!96371))
- [Add security finding dismiss service](gitlab-org/gitlab@eaa3e799094277f7b5aa02863d7165e8397f9359) ([merge request](gitlab-org/gitlab!96168)) **GitLab Enterprise Edition**
- [Add branchRules to project in graphql endpoint](gitlab-org/gitlab@d6f8deda701407725e0a8043cdd54628a511fb83) ([merge request](gitlab-org/gitlab!95583))
- [Introduce etag caching for diff batches endpoint](gitlab-org/gitlab@63dfa9b06f0d343352ec943790651e242b785c3e) ([merge request](gitlab.com/gitlab-org/gitlab/-/merge_requests/96456))
- [Set forked source cost factor to .008](gitlab-org/gitlab@a750452c556e5232e82d65fff89f5f288ee04f1c) ([merge request](gitlab-org/gitlab!96190)) **GitLab Enterprise Edition**
- [Add auto_ban_user_on_excessive_projects_download to group settings](gitlab-org/gitlab@9e49cf109b5c289408b11ecab7c8d170ac2176fe) ([merge request](gitlab-org/gitlab!94159))
- [Support GraphQL subscription for weight update](gitlab-org/gitlab@b4b9bcc761731918ea7b769c35d3ffd6eac033f1) ([merge request](gitlab-org/gitlab!93993)) **GitLab Enterprise Edition**
- [Utilize dormant user period in application settings](gitlab-org/gitlab@96f04ae63b948b9585ad296c20cc0df3603e7328) by @joe-snyder ([merge request](gitlab-org/gitlab!95496))
- [Extend deployments graphql query for index page](gitlab-org/gitlab@15c76231c6ed88030ebf08b686a3c8191d7f36c9) ([merge request](gitlab-org/gitlab!95792))
- [Add resource events to Import/Export](gitlab-org/gitlab@d71b379b49f5a7368e69c7cab9cab090d5484d1c) ([merge request](gitlab-org/gitlab!96033)) **GitLab Enterprise Edition**
- [Add sorting/filtering/paging to CRM organizations](gitlab-org/gitlab@b7a530c44306b8dc0191b6d671901669053af3a4) by @leetickett ([merge request](gitlab-org/gitlab!95658))
- [Add helper method to prevent default action on submit in feature specs](gitlab-org/gitlab@521bcc63b742cc865dddfc0a1bcab8e5275a5271) by @mehulsharma ([merge request](gitlab-org/gitlab!96002))
- [Backfill values for cluster_agents.has_vulnerabilities](gitlab-org/gitlab@2039cd08157eca9238af8d25c3f18936e07b9207) ([merge request](gitlab-org/gitlab!90276))
- [Display health status on issue board cards](gitlab-org/gitlab@e12e518a978bdd8631a1f38895b9736b3abd508c) ([merge request](gitlab-org/gitlab!95771))
- [Adds a Cleanup class for unused still-active Personal Access Tokens](gitlab-org/gitlab@cb10135353e5ed9c59344a4d00dd9d7851dc36de) ([merge request](gitlab-org/gitlab!95340))
- [Relate `BroadcastMessage` and `Namespace` models](gitlab-org/gitlab@e9dc58b253cb150bccf27ba9b50835c8b40ea10a) ([merge request](gitlab-org/gitlab!95913))
- [Adds CiConfigVariableType to ProjectType](gitlab-org/gitlab@e26fda1125a7f9bc57a29c50c070514faa0e952a) ([merge request](gitlab-org/gitlab!93387))
- [Update Import/Export for iterations cadences](gitlab-org/gitlab@2a8315e4e588b325013d7f4fbe0dfda7a0f33f51) ([merge request](gitlab-org/gitlab!95918)) **GitLab Enterprise Edition**
- [Record cache data about api/web cache helpers](gitlab-org/gitlab@4d7f19aad7b114ff65110b105ccca32b336e156d) ([merge request](gitlab-org/gitlab!94966))
- [Add clusterAgent.vulnerabilityImages to GraphQL API](gitlab-org/gitlab@b6b53821ad12c5abf877852513756ffddfb36141) ([merge request](gitlab-org/gitlab!95383)) **GitLab Enterprise Edition**
- [Allow to specify the fields to search for when querying work items](gitlab-org/gitlab@40b8edeec1e92a8161005369a16359f78a0952ce) ([merge request](gitlab-org/gitlab!95268)) **GitLab Enterprise Edition**
- [Support lowercase query string status](gitlab-org/gitlab@2fcb2ebc30c1c7b92f5e9db651a316f8c6789fb6) ([merge request](gitlab-org/gitlab!96089))
- [Add new instance setting to UI and controller](gitlab-org/gitlab@26c8d415981f9ff901e8ca126bc8692032f0e2ce) ([merge request](gitlab-org/gitlab!92218))
- [Support Project Avatar removal in REST API](gitlab-org/gitlab@d612f34e9b4b8702fbad710db72e3e2a0d88f204) by @tuxtimo ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92604))
- [Add external_url field to Environment GraphQL Type](gitlab-org/gitlab@388e63b015b95042498bd12440543fd3052f74e6) by @Taucher2003 ([merge request](gitlab-org/gitlab!95843))
- [Introduce REST API for group transfer locations](gitlab-org/gitlab@dc8358a5aeaec18c42e695627b135fd0a5167d43) ([merge request](gitlab-org/gitlab!95675))
- [Show alert for email exposure for service desk](gitlab-org/gitlab@1d80b958181340faf7a42bd7509615685fb53139) ([merge request](gitlab-org/gitlab!95919))
- [Add work type icon to boards and color gray for icons](gitlab-org/gitlab@c447ccac08a82d1a7ca7681559064c2d2b3c6ba4) ([merge request](gitlab-org/gitlab!95671))
- [Implement Vuln Scanner reportTypeHumanized for easier frontend use](gitlab-org/gitlab@e0b27b50b8e1d4142203104142495826b7a0ee06) ([merge request](gitlab-org/gitlab!93208)) **GitLab Enterprise Edition**
- [REST API for project transfer locations](gitlab-org/gitlab@ad8a8d09606c1c8648df5df844d88a51951b80a8) ([merge request](gitlab-org/gitlab!95572))
- [Re-introduce manual iteration management](gitlab-org/gitlab@3daf9f8509e8bc98f9dc4a693cd254eb5b4415fa) ([merge request](gitlab-org/gitlab!94768)) **GitLab Enterprise Edition**
- [Add GraphQL query for deployment details](gitlab-org/gitlab@275073165ec43d90b3434c826d8a36295bb18478) ([merge request](gitlab-org/gitlab!95681))
- [Add auto_ban_user_on_excessive_projects_download to application settings](gitlab-org/gitlab@eeef1a1f3a0615663853ae5adc3418ec1034bff9) ([merge request](gitlab-org/gitlab!94153))
- [Add support for snippet spam](gitlab-org/gitlab@423e7036c94a53804c506898c168fb66df815b8c) ([merge request](gitlab-org/gitlab!90080))
- [Added loading state to "Commit changes" button in the single file editor](gitlab-org/gitlab@a887b17203f8aefd942aa7545d0e1928b6ba17df) by @payal-jain ([merge request](gitlab-org/gitlab!94211))
- [Allow admins to merge topics [frontend]](gitlab-org/gitlab@c57c261a4bfe1cb1bba897f0fde9ed948ded1474) by @wwwjon ([merge request](gitlab-org/gitlab!95261))
- [Fetch child epics with colour when FF is enabled](gitlab-org/gitlab@06b9a1d23502c8d1f6101b70ea4ea274d5015a5d) ([merge request](gitlab-org/gitlab!92055)) **GitLab Enterprise Edition**
- [Thread Google Chat messages by topic](gitlab-org/gitlab@f137d4ca3720b531efcdf9030cac6fec026e5dd4) by @csarva ([merge request](gitlab-org/gitlab!92610))
- [Add query string filtering](gitlab-org/gitlab@7e1c4a17426a882660bc0a4b6d5b9c03dfd1df75) ([merge request](gitlab-org/gitlab!95740))
- [Add Vulnerabilities Finding Create Issue mutation](gitlab-org/gitlab@bf4a43a9707b828b5c4c984c4c3ac9310c2fbc7a) ([merge request](gitlab-org/gitlab!86830)) **GitLab Enterprise Edition**
- [Add selected state for ellipsis button in last commit](gitlab-org/gitlab@09bb8214ec69975a669b8e768c9f2f8c98b2f40e) ([merge request](gitlab-org/gitlab!95032))
- [Set public open source cost factor to .5](gitlab-org/gitlab@ac876bd6496f8238f2dc5c742b705f4d8cb63f2f) ([merge request](gitlab-org/gitlab!95705)) **GitLab Enterprise Edition**
- [Add GraphQL query for deployments](gitlab-org/gitlab@64be1a1331cc07421b06804933c6c664c7406156) ([merge request](gitlab-org/gitlab!95255))
- [Support line chart for DORA charts](gitlab-org/gitlab@c9f7c96e71dddafd042ad9f7f061f163e95a6cbb) ([merge request](gitlab-org/gitlab!95591)) **GitLab Enterprise Edition**
- [Add GraphQL custom emoji schema, flagged](gitlab-org/gitlab@0c964b70dfed5ebd644a940f542a1c7b7ec8bccc) ([merge request](gitlab-org/gitlab!95416))
- [Provide ability to move a board card to the top/bottom of the list](gitlab-org/gitlab@bcec772529f65b323a8e29b192e7874f0ed5590d) ([merge request](gitlab-org/gitlab!93669))
- [Enables track_work_items_activity feature flag by default](gitlab-org/gitlab@268f90547b538cf3bc0d550d4f0a7bf832964966) ([merge request](gitlab-org/gitlab!95654))
- [Add GraphQL sort/filter/page crm organizations](gitlab-org/gitlab@342a27315653559815532186c1800a223d0a36e3) by @leetickett ([merge request](gitlab-org/gitlab!95368))
- [Track CI/CD Tunnel usage](gitlab-org/gitlab@0dd8d6c5908091424b65efdc34d40037dda70dda) ([merge request](gitlab-org/gitlab!95648))
- [Add present on default branch to project_id_and_id_active_cis index](gitlab-org/gitlab@ff812dd41e92ed9d35b5d69314568a2f380e601f) ([merge request](gitlab-org/gitlab!90426))
- [Log JWT authentication failures](gitlab-org/gitlab@ffbfaf2173293fedf31f1add333be53336a5013c) ([merge request](gitlab-org/gitlab!95565))
- [Show tooltip on hover on work item icons](gitlab-org/gitlab@1752660efd85f839143fe57f418c485c1ee6fceb) ([merge request](gitlab-org/gitlab!95563))
- [Add Iteration Cadences to Group Import/Export](gitlab-org/gitlab@92d433ccda4efc50677d0f21d3b0fd8cb4fa5471) ([merge request](gitlab-org/gitlab!95372)) **GitLab Enterprise Edition**
### Fixed (163 changes)
- [Remove vulnerability approval rules](gitlab-org/gitlab@3f8f2309d7717157f90a298a502fa2f1fcf30df1) ([merge request](gitlab-org/gitlab!96293)) **GitLab Enterprise Edition**
- [Fix default date timezone for VSA](gitlab-org/gitlab@16dc337f38b3abeab32357245d6c7018c6b9550d) ([merge request](gitlab-org/gitlab!97106))
- [Fixing Deduplication of ProcessSyncEventsWorkers](gitlab-org/gitlab@27ce7b29958bb9022dd2779e302ad8360d9acc1a) ([merge request](gitlab-org/gitlab!97718))
- [List groups from group shares on project transfer](gitlab-org/gitlab@849ab5557f96e4dfb40be035803f86bbbe3a2237) ([merge request](gitlab-org/gitlab!98191))
- [Remove extra padding on every 8th participant in sidebar](gitlab-org/gitlab@fcc0416124c95d79eddf18c3cc3b3b1083f285ad) ([merge request](gitlab-org/gitlab!98001))
- [Handle large offset more gracefully](gitlab-org/gitlab@43c1df2b305a1ccd0c38b96584cadda786c79441) ([merge request](gitlab-org/gitlab!97553))
- [Show add button when user has sufficient permissions](gitlab-org/gitlab@57218a5226d3cfb1497ba77dd201dc213da47949) ([merge request](gitlab-org/gitlab!97782)) **GitLab Enterprise Edition**
- [Don't show View entire blame button for a single blame page](gitlab-org/gitlab@dc9b94f76e241a799dadf78435ef908c40a80b70) ([merge request](gitlab-org/gitlab!98049))
- [Resolve web hook edit page timeout](gitlab-org/gitlab@1b875cac2eae89ca8be288251efb1c4eec2360ac) ([merge request](gitlab-org/gitlab!98046))
- [Fix selective code owner removals](gitlab-org/gitlab@730da89701b56ac098c0d8d70b2d98b6a29f6e5f) by @leetickett ([merge request](gitlab-org/gitlab!96933))
- [Fix gitaly ref replication on project fork](gitlab-org/gitlab@44f8f29ff9731d1f011a015d8b8066d725415653) ([merge request](gitlab-org/gitlab!97210))
- [Add a new ability for reading billable members](gitlab-org/gitlab@f26c03909120b7de26b88bdd4f56ab7c2c587434) ([merge request](gitlab-org/gitlab!97686)) **GitLab Enterprise Edition**
- [Fill missing dates on VSA duration chart](gitlab-org/gitlab@111c3489523717445dbe9c28ffb4a2e6fe0cb55e) ([merge request](gitlab-org/gitlab!97230)) **GitLab Enterprise Edition**
- [Resetting form doesn't affect submit button](gitlab-org/gitlab@18d431663205874dab0480e596752903509bf011) ([merge request](gitlab-org/gitlab!97480))
- [Fix group IP allowlist update bug](gitlab-org/gitlab@000fdd31fe7f30491d12228aafa673b6056a951e) ([merge request](gitlab-org/gitlab!97768)) **GitLab Enterprise Edition**
- [Fix 500 error sorting merge requests with approvers by milestone](gitlab-org/gitlab@c53867248589c0a56bf9f2f59e7cffc38a7454a3) ([merge request](gitlab-org/gitlab!97726))
- [Show test reports immediately on pipeline tests tab](gitlab-org/gitlab@c9e8dff4ba3acc2af45fd33fa881f83fc25f7934) ([merge request](gitlab-org/gitlab!97494))
- [Improve fast-forward merge service reliability](gitlab-org/gitlab@3a32634a9bc880d98f3b3f8ab7099d86b9498338) ([merge request](gitlab-org/gitlab!97871))
- [Fixes spacing for issue widgets](gitlab-org/gitlab@219a108b07f99c9262aac24e6cbc176faf598cfc) ([merge request](gitlab-org/gitlab!97629)) **GitLab Enterprise Edition**
- [Fix feature flag link in related feature flags](gitlab-org/gitlab@193b6f7091893dec80911dcabcdf83206cf03aa6) ([merge request](gitlab-org/gitlab!97861)) **GitLab Enterprise Edition**
- [Fixes spacing for design management](gitlab-org/gitlab@4c6f80040d088222c6213cf52aceff7a5b7aab8e) ([merge request](gitlab-org/gitlab!97631))
- [Fix json payload for external status check feature](gitlab-org/gitlab@b4514086c5168591fa9f80323e2c78dfd0759401) ([merge request](gitlab-org/gitlab!97821)) **GitLab Enterprise Edition**
- [Fix group name in memberships export email](gitlab-org/gitlab@05bb570d350ec98da6ffaf6d18ae87327136e93d) ([merge request](gitlab-org/gitlab!97665)) **GitLab Enterprise Edition**
- [Prevent error when user has approved the merge request](gitlab-org/gitlab@6b5895aa4d6d13075a28df593f2676f2483307ff) by @batu ([merge request](gitlab-org/gitlab!97448))
- [Fix: locale issues on repository settings](gitlab-org/gitlab@f61d64b677fb3c11ca2e3fb743c079e20d83d102) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!97786)) **GitLab Enterprise Edition**
- [Create authroizations record for personal projects](gitlab-org/gitlab@173e32655c7ef30a6b3f9725938d1420015441f9) ([merge request](gitlab-org/gitlab!97118))
- [Remove search bar from project/group hook log pages](gitlab-org/gitlab@00409b5d76cbf3b08e1801ac34470d01a128e514) ([merge request](gitlab-org/gitlab!95973))
- [Fix: milestones sidebar locale issue](gitlab-org/gitlab@99a787c93d4ddfb44077e6f5ea5a611c60a650d5) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!97741)) **GitLab Enterprise Edition**
- [Geo: Avoid runaway queue growth](gitlab-org/gitlab@c3a0355351d0bf57cd15118d66501fa831b8012a) ([merge request](gitlab-org/gitlab!97442)) **GitLab Enterprise Edition**
- [Use distinct location fingerprints for manually created vulnerabilities](gitlab-org/gitlab@474acee857d74a6adb7f8464ad46954f28a38c61) ([merge request](gitlab-org/gitlab!97720)) **GitLab Enterprise Edition**
- [Add flex wrap tp prevent aws logo from overflowing](gitlab-org/gitlab@d88c1f464bf2d127348d4eba7d4356e04a42a7c1) by @beverett ([merge request](gitlab-org/gitlab!94498))
- [Add db fixtures for providers](gitlab-org/gitlab@93c183fb344dcac98fe22124041dece065c08cfd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95953)) **GitLab Enterprise Edition**
- [CI npm template: Fix comparison of pre-release versions](gitlab-org/gitlab@cc59396a7e654518f64dd56de02af6ab503e57a6) by @the_s ([merge request](gitlab-org/gitlab!97357))
- [Update the Changes tab with the real file count when it loads](gitlab-org/gitlab@68c56126f3a9adaee9317bfa7214fc993c055aa1) ([merge request](gitlab-org/gitlab!96205))
- [Override ancestor icon background for dark mode](gitlab-org/gitlab@ebdb36fb58590a92ddeabfdedde19832d0d4c741) ([merge request](gitlab-org/gitlab!97621))
- [Use first day of week in roadmap](gitlab-org/gitlab@e1b8e4834f2d19446d934a4ba95e4b6d08538746) ([merge request](gitlab-org/gitlab!97623)) **GitLab Enterprise Edition**
- [Prevent outdated manual deployment jobs from being ran](gitlab-org/gitlab@7eaf7b5206da80a6f50d653b4e7f6ef7c9eaf91e) ([merge request](gitlab-org/gitlab!97171))
- [Remove unintended "#" from push_to_merge_request_email](gitlab-org/gitlab@489c07afb9f599482554ed542e4933e9ff0a096c) ([merge request](gitlab-org/gitlab!97555))
- [Fix trial applying bug in .com](gitlab-org/gitlab@dbda37b92dfa4c6025f7077932be5b5a6d114c32) ([merge request](gitlab-org/gitlab!97558)) **GitLab Enterprise Edition**
- [Fix paste markdown feature in Content Editor](gitlab-org/gitlab@9bb5bc27851d1118e8d9aaa7e45a690fad54313d) ([merge request](gitlab-org/gitlab!97538))
- [Improve VSA edit modal responsiveness](gitlab-org/gitlab@a223acc262f8d5a282af0e335d5c20eea1854a98) ([merge request](gitlab-org/gitlab!97387)) **GitLab Enterprise Edition**
- [Give blob header buttons correct spacing](gitlab-org/gitlab@916855a595bfdd43c03861f32aaaa256a4e3d615) ([merge request](gitlab-org/gitlab!97524))
- [Fix GitHub import un/assigned events](gitlab-org/gitlab@42afcb30a6c3fde10b7fc843c8845e95298134bf) ([merge request](gitlab-org/gitlab!97069))
- [Fix deploy freezes when period overlaps with itself](gitlab-org/gitlab@0366c3d1b8a97573d6c8b9d89e156f29dbb8833c) ([merge request](gitlab-org/gitlab!97474))
- [Hide Auto DevOps button on the project page](gitlab-org/gitlab@c294f5fd9b8a571102c2a44899a75b7d22d28bcd) ([merge request](gitlab-org/gitlab!97242))
- [Show visibility level when creating subgroup](gitlab-org/gitlab@d020b5a946711f073b5844946c7815378f2bfe70) ([merge request](gitlab-org/gitlab!97224))
- [Remove hidden checkboxes when not needed](gitlab-org/gitlab@f8402ad55ab74f0720a81580013402dce482619e) ([merge request](gitlab-org/gitlab!97380))
- [Ensure the VSA duration chart renders all dates](gitlab-org/gitlab@5f8fbcb4990b15fb7ec0a0347fcd73af73e5fb36) ([merge request](gitlab-org/gitlab!96634)) **GitLab Enterprise Edition**
- [Fix: pipeline reports missing secret detection report](gitlab-org/gitlab@f542bec855296720fde3840ac1ec392e48d85ca0) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!96841)) **GitLab Enterprise Edition**
- [Fix: repository analytics time rendering locale issue](gitlab-org/gitlab@18dfa0c4ad77c62c9ede847408a0c5ebf0074b20) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!97369)) **GitLab Enterprise Edition**
- [Geo: Realign concurrency limits](gitlab-org/gitlab@293195c6c3d11a96a5dc68d4b8ad25f045a4d7b9) ([merge request](gitlab-org/gitlab!96934)) **GitLab Enterprise Edition**
- [This MR fixes bug with missing banner](gitlab-org/gitlab@d322d14138233964f9b42c0ec67ffb46ee51b458) ([merge request](gitlab-org/gitlab!97050))
- [Fix environment auto stop in assignment when former value present](gitlab-org/gitlab@37e0becee88f4da0e8219077c88eab74f5ffc271) ([merge request](gitlab-org/gitlab!97425))
- [Fix: locale on reviewer sidebar](gitlab-org/gitlab@e60e37ea5b9c1f18a980ea50bb28303de7117e21) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!97018))
- [Fix sha argument passing of ProjectType.ci_config_variables](gitlab-org/gitlab@32bc27c2f2275ac8df95ca736ee8d8ded207c29d) ([merge request](gitlab-org/gitlab!97166))
- [Sort timeline events by occurred_at then by id](gitlab-org/gitlab@cfde27acbdd0e066589728f7f59c4f94a88676eb) ([merge request](gitlab-org/gitlab!96626))
- [Return 0 when credit_card_validation.holder_name is nil](gitlab-org/gitlab@4c9ef3b0ce7f27bb673cb2f81ef84ca7306cc3df) ([merge request](gitlab-org/gitlab!97081))
- [Fix: locale on assignee sidebar](gitlab-org/gitlab@a8798caefd860db9108796afc199f1633d12271f) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!97012))
- [Fix padding for text editors](gitlab-org/gitlab@f0401ac8022f0eb09e149791d648962f37ac5f45) ([merge request](gitlab-org/gitlab!97257)) **GitLab Enterprise Edition**
- [Switch 'b' shortcut to not ever focus or click an in-page element](gitlab-org/gitlab@ba7516b35ce21fb55c858e1a0740f3a9f827f945) ([merge request](gitlab-org/gitlab!95637))
- [Fix boards switcher for unauthorized user](gitlab-org/gitlab@ffd538c9c8d87e755d5c8ea274c72630accf8866) ([merge request](gitlab-org/gitlab!97209))
- [Fix subgroup support for approval rules](gitlab-org/gitlab@9d607b26acc6bfac12a377ba5232cbe06fc22c8d) ([merge request](gitlab-org/gitlab!96657)) **GitLab Enterprise Edition**
- [Handling Database Timeouts in gitlab:db:truncate_legacy_tables:*](gitlab-org/gitlab@34f950ced268acc38a670e1963b51ed3b28c6d9f) ([merge request](gitlab-org/gitlab!96576))
- [Fix: new compare merge request locale issues](gitlab-org/gitlab@17ca2fc585dc5af8e5abed510979f783c53d270a) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!97084))
- [Removed detached prefix from mr pipelines](gitlab-org/gitlab@f1e6cffaca85f486cf208c1ae81f754a0801ad92) by @leetickett ([merge request](gitlab-org/gitlab!97021))
- [Prevent race condition when jobs acquire resource groups](gitlab-org/gitlab@15f5d957bb6f4cb9d47661e2806be93747439f05) ([merge request](gitlab-org/gitlab!96786))
- [Invalidate the merge request cache when assignee/reviewer changes](gitlab-org/gitlab@3ed1e8f26991401ec745dae195dd342c3475ceff) ([merge request](gitlab-org/gitlab!96860))
- [Fix stage name escaping in pipeline views](gitlab-org/gitlab@82c2a55e74337cd082dd32981fae9605f2787a5b) by @fabsrc ([merge request](gitlab-org/gitlab!96869))
- [Fix wrapping in source files](gitlab-org/gitlab@81ddd10525c415fe1d8fcd4d27af5e41c7fb9893) ([merge request](gitlab-org/gitlab!96888))
- [Call .length rather than .size so another query isn't executed](gitlab-org/gitlab@8a0f5b7a015dd102ea6d914d161fe712fa08dd75) ([merge request](gitlab-org/gitlab!96769))
- [Trigger hooks when updating assignees via GraphQL](gitlab-org/gitlab@46c10dd2437dabdad33e2c71c5db1960a588850f) ([merge request](gitlab-org/gitlab!96726))
- [Multiline blockquote leading/trailing newline](gitlab-org/gitlab@b96c029bff512352881f7658c3cfabec49a65e54) ([merge request](gitlab-org/gitlab!95967))
- [Update region codes on gtag analytics](gitlab-org/gitlab@75e5d5d0e5bfa78c8550cb200f0d5ec6c359dd24) ([merge request](gitlab-org/gitlab!95650))
- [Fix oauth password to not be forced to be lowercase](gitlab-org/gitlab@6d279a74ab8e814a1abae4cbaebcc67a0f10e6da) by @mtan-gitlab ([merge request](gitlab-org/gitlab!96442))
- [Update squash commit SHA outside of merge method](gitlab-org/gitlab@12b7988976a50dbb60012271b6b602eaddc702b8) ([merge request](gitlab-org/gitlab!96806))
- [Fix visual regression in top toolbar](gitlab-org/gitlab@7fab72d5bc787e41554cde87f079f1f6205af2ab) ([merge request](gitlab-org/gitlab!95626))
- [Improve toolbar performance](gitlab-org/gitlab@837c2ddaccf27742d7a826bb686765b7902cecdd) ([merge request](gitlab-org/gitlab!95626))
- [Clean up orphaned invited members](gitlab-org/gitlab@66478d170fe0050bd06d52248f54256ae37367b9)
- [Fix parsing commit trailers without specified email](gitlab-org/gitlab@ac218dfdbd3e3030fa4870cd745b39b3a31cad68) ([merge request](gitlab-org/gitlab!96791))
- [Fix link bubble menu bug](gitlab-org/gitlab@261596d709774fb9ab94ad622133212e9af55014) ([merge request](gitlab-org/gitlab!95954))
- [Remove any broken symlink before creating it for .gitlab_shell_secret](gitlab-org/gitlab@ac65596e8160103c9c02240eafd0b92830172d36) ([merge request](gitlab-org/gitlab!96775))
- [Use FIFO as pending builds strategy for group runners](gitlab-org/gitlab@06c30825126291df9e91e5426f6127f77ab7eaaa) by @wwwjon ([merge request](gitlab-org/gitlab!94815))
- [Fix 500 error for Commits API](gitlab-org/gitlab@d0749f2e3a39d29cdc0df2b566948f1baa648440) ([merge request](gitlab-org/gitlab!96768))
- [Fixed note buttons spacing on issues](gitlab-org/gitlab@0618fa5473a0de1336b421133ac62c6166c47a64) by @zillemarco ([merge request](gitlab-org/gitlab!96750))
- [Fix markdown tabs alignment on issue/MR create pages](gitlab-org/gitlab@f7c392905e03253cba1512895a7aacc25c53b86f) ([merge request](gitlab-org/gitlab!96720))
- [Geo: Fix redirects of LFS transfer downloads](gitlab-org/gitlab@5ada5356d1ccfc67169a84fa7eedee76bb09616b) ([merge request](gitlab-org/gitlab!95974)) **GitLab Enterprise Edition**
- [Fixes todo button in sticky header not working](gitlab-org/gitlab@8fe1cb2e4405fc98ff1299d1c6ed1059e9c864d2) ([merge request](gitlab-org/gitlab!96643))
- [Fix start_line/end_line link values](gitlab-org/gitlab@e5312c60660ce556f10ff250c42eedb3dae98eed) ([merge request](gitlab-org/gitlab!96580)) **GitLab Enterprise Edition**
- [Fix page javascript after a deploy token got created](gitlab-org/gitlab@3c912ddb5c000f01bd2172a5690ae999674abb22) ([merge request](gitlab-org/gitlab!96671))
- [Fix for broken tag/branch switcher](gitlab-org/gitlab@29c119aec34e463ed57eb46557ae6bbd393de833) ([merge request](gitlab-org/gitlab!96564))
- [Use dynamic select dropdown on forks form](gitlab-org/gitlab@b1370d6bbb7b7a989b39ad956d5146410ba28638) ([merge request](gitlab-org/gitlab!92363))
- [Fix/Add css selector](gitlab-org/gitlab@e9f188e1420fcca8ddc108347de63bb2e6d46edb) by @TrueKalix ([merge request](gitlab-org/gitlab!95171))
- [Fix/Add css selector](gitlab-org/gitlab@1cbb78d4a8a438ab5a988b19e2d17016b93aefff) by @TrueKalix ([merge request](gitlab-org/gitlab!95178))
- [Enable geo_batch_count feature flag](gitlab-org/gitlab@af7d9861d222c8b141cb4e0795a9b5241d69156c) ([merge request](gitlab-org/gitlab!96574)) **GitLab Enterprise Edition**
- [Save repository size limit set in admin group page correctly](gitlab-org/gitlab@88566c55bd2d2f101b9d3575d9a0d6d041569d5b) ([merge request](gitlab-org/gitlab!96193)) **GitLab Enterprise Edition**
- [Fix incorrect job artifacts expire_at](gitlab-org/gitlab@94099c2b22dc5a0a20a1602749e3a042e9b7d4c7) ([merge request](gitlab-org/gitlab!89318))
- [Fix language mapping in the Source Viewer](gitlab-org/gitlab@a567b2f04b7bbdac52b0cb8f692a9ca2f2089534) ([merge request](gitlab-org/gitlab!96043))
- [Fix SVGs not rendering in issuables](gitlab-org/gitlab@6ff8a04cf1087b14e656e76a624c01198107474f) ([merge request](gitlab-org/gitlab!96398))
- [Do not prefill new form again with successfully created deploy token](gitlab-org/gitlab@dfa031ff4380ee2c497f5261fd06ea5839f96fb2) ([merge request](gitlab-org/gitlab!95477))
- [Fix custody report CSV for projects inside subgroup](gitlab-org/gitlab@693982937b30a9a1f8d1ce0afcefc34fdc694e62) ([merge request](gitlab-org/gitlab!96396)) **GitLab Enterprise Edition**
- [Fix not showing "job dependencies" view when all jobs are bridges](gitlab-org/gitlab@b7976b54aac2555e3e600e5201829532a735d0e7) ([merge request](gitlab-org/gitlab!89660))
- [Fix 'Assign yourself' visibility for users without permissions](gitlab-org/gitlab@d10bb9a9b246cf854ebebd553d0d23f331088c2e) by @zillemarco ([merge request](gitlab-org/gitlab!96378))
- [Fix missing metadata for system notes](gitlab-org/gitlab@09ec6dc0e0da4d9511c16470df56183e336513b4) ([merge request](gitlab-org/gitlab!96272))
- [Fix: issue list assignees label translation](gitlab-org/gitlab@9d587a0ba9780cd1388c9e78c27712dfc105750b) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!95891))
- [Board card location row breaks incorrectly fix](gitlab-org/gitlab@224cd1e0467a0ce45639d46d97c5b3574a217388) ([merge request](gitlab-org/gitlab!96330))
- [Add screen reader only text to content editor dropdowns](gitlab-org/gitlab@2868c30075958b6471aacef48982e3a1b6b16799) ([merge request](gitlab-org/gitlab!96296))
- [Handle the exception in case of large yml](gitlab-org/gitlab@e4efa43f0471cf13c4d4a3dc6cd25e6b692dec8b) ([merge request](gitlab-org/gitlab!94192)) **GitLab Enterprise Edition**
- [Fix empty state MR pipeline run](gitlab-org/gitlab@b9f5e5337031cbb7e7da9d691dc26e3efb898d19) ([merge request](gitlab-org/gitlab!96200))
- [Fix: merge request editing page wrong translations](gitlab-org/gitlab@650e0fff8741b4d3927612cfe4fd7aee3282f689) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!96003))
- [Update 2FA requirements async for group members](gitlab-org/gitlab@1aa065f1cfc3da548c24a699a41373b4d99662b2) ([merge request](gitlab-org/gitlab!95424))
- [Add missing runner variables to predefined list](gitlab-org/gitlab@fc7336f649b46ac402f7cbf5770c198ce6839e54) by @bbodenmiller ([merge request](gitlab-org/gitlab!93133))
- [Fix search_files_by_name escaping names twice](gitlab-org/gitlab@f4b74eb15d4dbaea446daa1989a2b96ff62bb159) ([merge request](gitlab-org/gitlab!95672))
- [Automatically remove leading spaces in project names](gitlab-org/gitlab@e56b0649cadd5dd5957f77f9657568ed768bb744) ([merge request](gitlab-org/gitlab!95952))
- [Fix clear icon alignment](gitlab-org/gitlab@ddcf97140f1485089a460149f363787946761568) ([merge request](gitlab-org/gitlab!96169))
- [Prevent invalid characters from causing diffs to error out](gitlab-org/gitlab@2642ebbcdc966562a9ce80ae9db476d2f866cc81) ([merge request](gitlab-org/gitlab!96192))
- [Removing mixin from mr widget pipeline](gitlab-org/gitlab@a953759a9d489a7f25d02052410b719fc34dece5) ([merge request](gitlab-org/gitlab!96189))
- [Alter when to send releasedAt when release created](gitlab-org/gitlab@78df38e392d0f9b5d67ea4b60308c4e1b9876c87) ([merge request](gitlab-org/gitlab!96183))
- [Fix broken UI text in selector in dashboard milestones](gitlab-org/gitlab@f80d241b193587e11b85662f9e024e9b9f1a07b2) by @tnir ([merge request](gitlab-org/gitlab!96171))
- [Ensure the VSA form loading state is rendered](gitlab-org/gitlab@64335ee973aaca21ef0356f7d756fa9fc90fcb3c) ([merge request](gitlab-org/gitlab!95343)) **GitLab Enterprise Edition**
- [Fix hash order issue test in DORA reducer](gitlab-org/gitlab@5c4c0d21968f69f8f84b2f4dc2f077f92bd5998d) ([merge request](gitlab-org/gitlab!96161)) **GitLab Enterprise Edition**
- [Improve the performance of bubble menus](gitlab-org/gitlab@efba65a89a6d470db1302f23520b78b5282318d8) ([merge request](gitlab-org/gitlab!95732))
- [Fix missing project for included remote file including with rules:exists](gitlab-org/gitlab@e4e0ca6ed12c5c311a2b1f51d1701b57c8f72ca3) ([merge request](gitlab-org/gitlab!96138))
- [Fix NoMethodError in IssueResolverArguments](gitlab-org/gitlab@37a5cb376de7c09ae02f519bce6e3ff83cd0c008) ([merge request](gitlab-org/gitlab!96149))
- [Include reserved report_approvers rule names as](gitlab-org/gitlab@1649515cacb2a678b36fc43d7008723969e66ce9) ([merge request](gitlab-org/gitlab!96140)) **GitLab Enterprise Edition**
- [Fix board sidebar links color](gitlab-org/gitlab@93505421d938f8b6a66a5034022aa3e4824bd474) ([merge request](gitlab-org/gitlab!96107))
- [Fix hardcode text on new branch page](gitlab-org/gitlab@4fadebbdbde4d46ee1da068eba95133b2d2cf6aa) by @icbd ([merge request](gitlab-org/gitlab!95791))
- [Fix nested ordered task list styling in issue description](gitlab-org/gitlab@147f117bc11dca64a69a084cb0a3919a075165b8) ([merge request](gitlab-org/gitlab!95799))
- [Add gray color on component icon to fix all use cases](gitlab-org/gitlab@9aca6689d8641c9300de7199fbde11f0b6d1f7ff) ([merge request](gitlab-org/gitlab!95980))
- [Fix fetching epics when changing sort option](gitlab-org/gitlab@87f0c2921bfdb6dc8ed04ceeb74e63fb6966e549) ([merge request](gitlab-org/gitlab!95978))
- [Fix timelog type policy check](gitlab-org/gitlab@cb87176051f7f0abcbed3afae3d21c87d5ca12eb) by @leetickett ([merge request](gitlab-org/gitlab!96017))
- [Remove extra space after dismissing free cap alert](gitlab-org/gitlab@b1096f5d1e3d44dad42d582cc9b663506c3bf8b0) ([merge request](gitlab-org/gitlab!96077)) **GitLab Enterprise Edition**
- [Localize dateformat text](gitlab-org/gitlab@5d8a65289598dc8ed5dfa103b3e24946ba3f472d) ([merge request](gitlab-org/gitlab!95492))
- [Improve blame link feature](gitlab-org/gitlab@a7f2ebae1b22602339f5bd6c2e2006be2da0d666) ([merge request](gitlab-org/gitlab!95962))
- [Skip file removal if GitLab managed replication is disabled](gitlab-org/gitlab@76f7e413ec36f72196ba8e5cf10fb9be5f5f83ea) ([merge request](gitlab-org/gitlab!95937)) **GitLab Enterprise Edition**
- [Fixed fullPath for assignees and labels](gitlab-org/gitlab@818e6eaf7b7686873ee412306145e30de60bb41f) ([merge request](gitlab-org/gitlab!95932))
- [Open task in new window when doing ctrl/cmd+click](gitlab-org/gitlab@f26167fe3b53596d6799a72799849c9f45fa29d5) ([merge request](gitlab-org/gitlab!96024))
- [Upgrade three.js dependency](gitlab-org/gitlab@a6c1066191cc8a8e759617310d0e4eac8015a1c4) ([merge request](gitlab-org/gitlab!95994))
- [Fix issue searches using Russian characters](gitlab-org/gitlab@5763d4c8b0793f2bdfbd27c6cf88bb6eee8e8575) ([merge request](gitlab-org/gitlab!96005))
- [Fix: untranslated merge request consent box](gitlab-org/gitlab@88f9e12b4a3d657921bd4498938fe7bc7d211d38) by @JeremyWuuuuu ([merge request](gitlab-org/gitlab!95993))
- [Remove redundant class name from group template](gitlab-org/gitlab@2afbf0c771b76d194c9fe1d5db90912293c2262c) by @tnir ([merge request](gitlab-org/gitlab!94462))
- [Added lowercase to the actual con-reg api call](gitlab-org/gitlab@5a908aff6fe2932cab9df26b2f84ba5ca121bbaa) ([merge request](gitlab-org/gitlab!95923))
- [Fixed alignment of MR activity dropdowns on mobile](gitlab-org/gitlab@592d46ffebc1180df9301e12aa204b5fc7b1e5ee) by @zillemarco ([merge request](gitlab-org/gitlab!95715))
- [Handle all uploads instead of a hardcoded list](gitlab-org/gitlab@e588f0e910adc771903a55130ff9df482776a593) ([merge request](gitlab-org/gitlab!95587))
- [Bypass earliest date validation in importing of iteration cadences](gitlab-org/gitlab@1959672609f03ace6c4e9c873dde9a79ea87df2a) ([merge request](gitlab-org/gitlab!95872)) **GitLab Enterprise Edition**
- [Fix Geo removing uploads on object storage](gitlab-org/gitlab@59cce76ac68a6fc0549f9a98e8f1bbde81fc7dca) ([merge request](gitlab-org/gitlab!95130)) **GitLab Enterprise Edition**
- [Set all attachments to Content-Type application/octet-stream](gitlab-org/gitlab@d77bb599a6287fa0a90b932df53243a439a87b95) ([merge request](gitlab-org/gitlab!95859))
- [Do not update approval rules for merge request](gitlab-org/gitlab@91753d421635fcb6d087405a77b8571ce2b5dee5) ([merge request](gitlab-org/gitlab!95727)) **GitLab Enterprise Edition**
- [Rake Task gitlab:db:lock_writes more efficient](gitlab-org/gitlab@9c9970a027dd2e9a32aab34468cf2e11ad73a6f6) ([merge request](gitlab-org/gitlab!95728))
- [Update subscription service for new hashed OAuth tokens](gitlab-org/gitlab@3b169c6739bb2589350f061e61ab395eb9cfefef) ([merge request](gitlab-org/gitlab!95647)) **GitLab Enterprise Edition**
- [Ignore accents in search term when searcing issues](gitlab-org/gitlab@8ffa3144cfd230e768797ac3ade452318c15c2ce) ([merge request](gitlab-org/gitlab!95262))
- [Update Oj to v3.13.21](gitlab-org/gitlab@866dbfb1d4cb0df414679b20338a2f23aea240d8) ([merge request](gitlab-org/gitlab!95822))
- [Make compliance report email `html_safe`](gitlab-org/gitlab@519c7683d8bcf784e2bb965f28fe856653fecad7) ([merge request](gitlab-org/gitlab!95578))
- [Quick fix for the move to position](gitlab-org/gitlab@cf52ecf5c62e110b9b3c56010c3b0ced56a37f4f) ([merge request](gitlab-org/gitlab!95777))
- [Fix Redis pipeline/multi-exec deprecation errors](gitlab-org/gitlab@7957211eafd09c215dea4f854c5f4b403de48bc8) ([merge request](gitlab-org/gitlab!95402))
- [Geo: Fix registry backfilling](gitlab-org/gitlab@b3ee8ce858a7386c33e576431fd395fe1f11e4fb) ([merge request](gitlab-org/gitlab!87720)) **GitLab Enterprise Edition**
- [Fix user recent activity links for work item actions](gitlab-org/gitlab@59a2abe050440ea9020a3d80609410189a3af481) ([merge request](gitlab-org/gitlab!95738))
- [Restore transaction block while extracting sync](gitlab-org/gitlab@f73a430c0704dbee936055b1eb206581ec2eb261) ([merge request](gitlab-org/gitlab!95400)) **GitLab Enterprise Edition**
- [Fix issue description list item reordering indentation](gitlab-org/gitlab@83bfd9271c35467252d7603b9b75d90074e164aa) ([merge request](gitlab-org/gitlab!95487))
- [Fix boards alignment and dark mode issues](gitlab-org/gitlab@fdeec5e0f0bebdbf72fca8d513f378b3ea05e7ea) ([merge request](gitlab-org/gitlab!95026))
- [Fix visual bugs from !95073](gitlab-org/gitlab@510b2d9638e060d51ef69025fbab07561f867e22) ([merge request](gitlab-org/gitlab!95638))
- [Fix CI/CD legacy variables fetching group projects](gitlab-org/gitlab@2432e4d89f4a4df403a8e435eb74ca4db4749679) ([merge request](gitlab-org/gitlab!95624))
- [Hide copy failed tests button when endpoint returns null files](gitlab-org/gitlab@a880fbead69e7d421710acef2ea2ef12cc2de52b) ([merge request](gitlab-org/gitlab!95558))
- [Fix detection of URLs in markdown selection](gitlab-org/gitlab@4e7190b4f94273b8abf51147c1909b63efb97079) ([merge request](gitlab-org/gitlab!95353))
### Changed (167 changes)
- [Rename last_run_date to next_run_date](gitlab-org/gitlab@d5f107d679116f60cfc2d0563f1fb323cac36be7) ([merge request](gitlab-org/gitlab!91074))
- [Update pg_query to v2.1.4](gitlab-org/gitlab@91a037f7c17a0a61e0416833d34cefcd06538281) ([merge request](gitlab-org/gitlab!98274))
- [Convert issues analytics table to graphql](gitlab-org/gitlab@b85f0a86da91ce50c2d4070cf2eacf5271a6bd46) by @ali_o_kan ([merge request](gitlab-org/gitlab!97955)) **GitLab Enterprise Edition**
- [Hash Oauth application secrets](gitlab-org/gitlab@e0452a432d8424b72e2531edf93b1d96332bbf98) ([merge request](gitlab-org/gitlab!96252))
- [Fix: notify locale on new user email](gitlab-org/gitlab@92f17aba68cb8e1c584b4b245e5a13a82c19476d) by @qt-gith ([merge request](gitlab-org/gitlab!96732))
- [Cleanup attention request related system notes](gitlab-org/gitlab@2231abbc1f92d8f6d4342ddf651e543f532dcc65) ([merge request](gitlab-org/gitlab!97753))
- [Remove temp index group membership namespace id](gitlab-org/gitlab@8d5ef9e45a40d9a475dd2d260f1c6a65797ff889) ([merge request](gitlab-org/gitlab!93324))
- [Add graphql feature flag for job_app](gitlab-org/gitlab@a7af150a2109ffc9282b17fcf0d45f77be1884cb) ([merge request](gitlab-org/gitlab!96703))
- [Account for inherited runners in RunnerPolicy](gitlab-org/gitlab@4298966270e3ba2474e3527f7fa4a1d781cb7ca9) ([merge request](gitlab-org/gitlab!97263))
- [Allow job token configuration while disabled](gitlab-org/gitlab@d4e7795c37ec1a057c1eef0013b143b4529fb01d) by @ali_o_kan ([merge request](gitlab-org/gitlab!96661))
- [Use a stacked layout for runners list](gitlab-org/gitlab@272b381d6b71d2347703b89104816935ee2734d1) ([merge request](gitlab-org/gitlab!98004))
- [Adjust codequality inline severity icon](gitlab-org/gitlab@81f9bdc01cbf1af403c46246fcb68de2d1240c71) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96472)) **GitLab Enterprise Edition**
- [Add project harbor registry feature flag](gitlab-org/gitlab@7e45ed04402d0e5fc08fc82cf89f373827cfa45f) by @orozot ([merge request](gitlab-org/gitlab!98060))
- [Fix: notify locale on pipeline fixed email](gitlab-org/gitlab@66f8bed1f662c4e78c514130b2b9b8d8020c6091) by @qt-gith ([merge request](gitlab-org/gitlab!96730))
- [Hide information for blocked user in popover](gitlab-org/gitlab@65ef9b86a4092270963b6e59cc22aa35cff7fcce) ([merge request](gitlab-org/gitlab!97670))
- [Add new MR environment auto-stop logic](gitlab-org/gitlab@7c6383a74b1e17235c58b40d9ae85ba6122c8165) ([merge request](gitlab-org/gitlab!96827))
- [Add epoch column to rpm metadata](gitlab-org/gitlab@7fb9a35ffc4b31457455ddab26da2c4eb759d998) ([merge request](gitlab-org/gitlab!97710))
- [Merge branch '359067-rename-package-files-to-assets' into 'master'](gitlab-org/gitlab@312798606324084ff1d3c426e18c06b7a2ede154) ([merge request](gitlab-org/gitlab!93962))
- [Add bot badge in user list for admins](gitlab-org/gitlab@e63b0c1ec04d0d2ea5ef7762e97995e4176ae220) ([merge request](gitlab-org/gitlab!97584))
- [Issuable title updates no longer update last_edited values](gitlab-org/gitlab@66f216011ccb4c8e6fe338d5ceb86f9b339047c9) ([merge request](gitlab-org/gitlab!97721))
- [Move Google IP fetch into a separate service with rate limiting](gitlab-org/gitlab@0535ff53a0673a07661aaa9bfd3900a74a7bee0a) ([merge request](gitlab-org/gitlab!97709))
- [Fix: notify locale on remote mirror update failed email](gitlab-org/gitlab@cba01daeeb1639902dbd2d46da1b44950a3e1867) by @qt-gith ([merge request](gitlab-org/gitlab!96636))
- [Enable restyle_login_page by default](gitlab-org/gitlab@2aa2242efd1bd88447bd9f7115dde70d7e1950fe) ([merge request](gitlab-org/gitlab!97499))
- [Changed draft text](gitlab-org/gitlab@c198956c5c834b36bfe2f135bf8f23d56b9d611c) by @mehulsharma ([merge request](gitlab-org/gitlab!96629))
- [Use default project for epic issue creation](gitlab-org/gitlab@c56d15622ec0e4ab225c57e0b1d7a279e33f321c) ([merge request](gitlab-org/gitlab!97513)) **GitLab Enterprise Edition**
- [Add bot badge in project and group member lists](gitlab-org/gitlab@1dcabb6a83bb273739919ed5ed3c0c84e0de67e2) ([merge request](gitlab-org/gitlab!97583))
- [Feat(Subscripion activation): add error handling](gitlab-org/gitlab@5a9ac6d454b3228b536d212ce955202274ccf748) ([merge request](gitlab-org/gitlab!95807)) **GitLab Enterprise Edition**
- [Adds redirection when cleanup policy is saved](gitlab-org/gitlab@16addf6d8842431a4eaee13ace73dcb12c79cc7b) ([merge request](gitlab-org/gitlab!97085))
- [GraphQL Max Call field extension](gitlab-org/gitlab@9d0cedfaf68b71d0874cef7f8a7a21e18f47fb5e) ([merge request](gitlab-org/gitlab!95885))
- [Update SubscriptionUpgradeInfoCard title when group is in a trial](gitlab-org/gitlab@246d95f7d763cd027fd9e9b47fe977c143825d39) ([merge request](gitlab-org/gitlab!97250)) **GitLab Enterprise Edition**
- [Move file editor CSS to its own page bundle](gitlab-org/gitlab@d0bad14bcd4a86394a69e205c5c4204b958e89cf) ([merge request](gitlab-org/gitlab!97862))
- [Remove the markdown_corrected_blockquote](gitlab-org/gitlab@51f8cab8a86fb9dfa5c30cf62ddebefc41f455b0) ([merge request](gitlab-org/gitlab!97859))
- [Unlock CI pipeline artifacts when pipeline is unlocked](gitlab-org/gitlab@4cff4b9bd362fb0a59119b1557a4e78e94c92562) ([merge request](gitlab-org/gitlab!97228))
- [Updated show work item page title](gitlab-org/gitlab@8513fb267bb9de1ac3723c1476e49303f939fcfb) ([merge request](gitlab-org/gitlab!94834))
- [Remove exess buttons](gitlab-org/gitlab@4d8d947fcbb3d44e73ad9662adcfb203ef6cb102) ([merge request](gitlab-org/gitlab!97389))
- [Update default initializer value for Sidekiq routing_rules](gitlab-org/gitlab@270941d79b60971e21d120063bb4aeb28a9e89c9) ([merge request](gitlab-org/gitlab!97908))
- [Update Service Desk settings help text](gitlab-org/gitlab@dcd1058845a64b43f2cd86e5f596056516fa56cb) ([merge request](gitlab-org/gitlab!97463))
- [Update Service Desk settings help text](gitlab-org/gitlab@f0d622a23d6355c8b87ad45f0eb636c66c26d410) ([merge request](gitlab-org/gitlab!97346))
- [Mass update legacy Slack integrations](gitlab-org/gitlab@4d8b0ffe316a9fb1de0c3e29a847ad6dcd75e49a) ([merge request](gitlab-org/gitlab!97734))
- [Update third party login styles](gitlab-org/gitlab@ba5438feb39c3006b139e468b12d5bdb595fd4d5) ([merge request](gitlab-org/gitlab!97232))
- [Narrow the definition of an OSS contribution](gitlab-org/gitlab@f5c53637e3710f1bd4f8fb2cb7db98e716a728cb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97713))
- [Allow to sort tags by semantic version](gitlab-org/gitlab@9e5bfce2d5e2badfd05bcc0b8198568c43653e8e) ([merge request](gitlab-org/gitlab!95095))
- [Splits feature flag for removing note attributes](gitlab-org/gitlab@e2a7b297ec69de78d76e667c0efc9e422fc57b59) ([merge request](gitlab-org/gitlab!97520)) **GitLab Enterprise Edition**
- [Rename last_used_before scope to last_used_before_or_unused](gitlab-org/gitlab@6eaa6cf5bf6655b089f93c92383786a801fcca46) by @TrueKalix ([merge request](gitlab-org/gitlab!97636))
- [Add prefix comment on note in backend](gitlab-org/gitlab@fb15bc0d67a6c553e30e6e337c3057713ff1bfd7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97473))
- [Update license compliance docs](gitlab-org/gitlab@ae5b5233585729980f010f3645f1a3a15c8b6142) ([merge request](gitlab-org/gitlab!97417)) **GitLab Enterprise Edition**
- [Add setting for max pages custom domains per project](gitlab-org/gitlab@74f9042b8965f0e5008d7a5cdab481309ad8c064) ([merge request](gitlab-org/gitlab!95610))
- [This MR enables feature flag](gitlab-org/gitlab@dc9b0bbc2215bbd0fd2fff471e5caa4cfcb88db1) ([merge request](gitlab-org/gitlab!96678)) **GitLab Enterprise Edition**
- [Simplify primary navigation bar and align global search to the left](gitlab-org/gitlab@325c6dc89f3f2e74bbe5da707c9e9b51576c6ed7) ([merge request](gitlab-org/gitlab!96932))
- [Simplify primary navigation by removing infrequently used options](gitlab-org/gitlab@5c0ad0b8d229dd41fcbf259e7d2236b3b56685be) ([merge request](gitlab-org/gitlab!96931))
- [Removed vuln training message](gitlab-org/gitlab@fb43545d8109462911d3026d26659e48043a513b) ([merge request](gitlab-org/gitlab!97540)) **GitLab Enterprise Edition**
- [Removed and-Separators with comma-separators](gitlab-org/gitlab@8cd7188390cc6be6327f2c51a2d26668fb378141) by @anshulriyal ([merge request](gitlab-org/gitlab!94134))
- [Cleanup «New tag» page](gitlab-org/gitlab@57d5c134148d745a38f7b8267f26814bf147c96f) ([merge request](gitlab-org/gitlab!97495))
- [Pipeline job pill alignment](gitlab-org/gitlab@df7a7e94913f4a800e9e30c163c8edb79c84864c) ([merge request](gitlab-org/gitlab!97505))
- [Update controller update to allow clean MD render](gitlab-org/gitlab@f79f6e1086abc59bc36aa9156745deeb2982e030) ([merge request](gitlab-org/gitlab!95938))
- [Lower the default Rails.cache ttl to 8 hours](gitlab-org/gitlab@e63fee03348cb7b9d16bcfd94f2db20f4e8b79d7) ([merge request](gitlab-org/gitlab!97374))
- [Improve account limit settings text](gitlab-org/gitlab@ffb0113e24f67eb87b017679e23c52014e97d93c) ([merge request](gitlab-org/gitlab!97456))
- [Update dependency auto-deploy-image to v2.37.0](gitlab-org/gitlab@82b4785d0a6121f3be1cb7586d7c2228f8fe1cde) ([merge request](gitlab-org/gitlab!94920))
- [Improve UI text of FloC setting](gitlab-org/gitlab@95f2df1b66d50441dad67fc85478eb8e58617f7a) ([merge request](gitlab-org/gitlab!97204))
- [Fix: notify locale on push to merge request email](gitlab-org/gitlab@e3db01096b67084041a08eba555b826269970f09) by @qt-gith ([merge request](gitlab-org/gitlab!96642))
- [Remove extra whitespace in buildkite.rb](gitlab-org/gitlab@b76a9501d534fe2d57c30b20cb78b0fa426071ff) ([merge request](gitlab-org/gitlab!93620))
- [Update group runners Edit page look and feel](gitlab-org/gitlab@5a61d5897711d8f4e748d655cdedd7571a5c1fae) ([merge request](gitlab-org/gitlab!97393))
- [Update removal date in clusters deprecation alert](gitlab-org/gitlab@144d07e6cc0757747aecd5c8398525d0874ad096) ([merge request](gitlab-org/gitlab!97383))
- [Replace the term homepage with dashboard](gitlab-org/gitlab@411ae4e78b4814ae5bfc4fc0fc16223b48cf9907) ([merge request](gitlab-org/gitlab!96579))
- [Dropzone: Change border-radius to default radius](gitlab-org/gitlab@ed8f3cd132129f03a178d37043cee5d4c87d8e89) ([merge request](gitlab-org/gitlab!97146))
- [Call update_web_hook! for buildkite when ensuring ssl validation](gitlab-org/gitlab@88ac00442e5cdcc7ae1e9a2366cf2072f9776eb2) ([merge request](gitlab-org/gitlab!93620))
- [Update copy text for self metrics toggle](gitlab-org/gitlab@a2a19f33bb21d3302a3e020ea779f46a975840df) ([merge request](gitlab-org/gitlab!97164))
- [Add locked column to Ci::PipelineArtifact](gitlab-org/gitlab@c730b7c5a784c5602fa7375c2bb3fd7ba02cd99b) ([merge request](gitlab-org/gitlab!97194))
- [Advanced Search: Index label_ids for issues](gitlab-org/gitlab@3b7edbe464f75b77cffb6359ea9518ed3318d1dc) ([merge request](gitlab-org/gitlab!96153)) **GitLab Enterprise Edition**
- [Remove after_save callback to create integration webhooks](gitlab-org/gitlab@1f2c8e25c790999942ba093e8df9e4041bfc3e1f) ([merge request](gitlab-org/gitlab!93620))
- [Replace Wiki service find_page RPC by normal repository RPCs](gitlab-org/gitlab@0ed0882a8ae22040c3166a7842884330ba7baf11) ([merge request](gitlab-org/gitlab!95897))
- [Add column 'branch_filter_strategy' to 'web_hooks'](gitlab-org/gitlab@93eeb88f37d15ecbe32ccfc3587663ca5a08d37e) by @luzhiyuan.deer ([merge request](gitlab-org/gitlab!97132))
- [First pass legacy license compliance widget removal](gitlab-org/gitlab@369585475e26223dbef213195bfe794ed40eb51b) ([merge request](gitlab-org/gitlab!96948)) **GitLab Enterprise Edition**
- [Remove file edit actions from blame view](gitlab-org/gitlab@e863572c48b68156b7e810a83f7f0d10eca4cdd7) ([merge request](gitlab-org/gitlab!96554))
- [Fix: notify locale on resolved all discussions email](gitlab-org/gitlab@f5e4b1418646be79409074da268d2ed37eb8e494) by @qt-gith ([merge request](gitlab-org/gitlab!96500))
- [Handle 429 response for the integration testing](gitlab-org/gitlab@ca5b7e945da4e4580c50ad56ab2ccc15def49b5d) ([merge request](gitlab-org/gitlab!96871))
- [Improve bulk issue creation on epics](gitlab-org/gitlab@5eb6924a11e092863999e95609a70e96fb93c877) ([merge request](gitlab-org/gitlab!96879)) **GitLab Enterprise Edition**
- [Limit number of branches/tags loaded from Gitaly](gitlab-org/gitlab@0aa8beb1faaeadaebb50048f4c1f9df25937be22) ([merge request](gitlab-org/gitlab!97137))
- [EE Group Settings General headers expand on click](gitlab-org/gitlab@6424e196b80b9ee08e99efd248c2b396db6bbc15) by @quatauta ([merge request](gitlab-org/gitlab!97032)) **GitLab Enterprise Edition**
- [Fix case of DAST UI text](gitlab-org/gitlab@03587ecb2b3e824bd013d492123cd1ad6ac95498) ([merge request](gitlab-org/gitlab!96725)) **GitLab Enterprise Edition**
- [Fix migration type](gitlab-org/gitlab@5f4088d656d0b63112ec52f4f50ad21d94b22cc7) ([merge request](gitlab-org/gitlab!97067))
- [Update packages registries menu as sentence case](gitlab-org/gitlab@fd0c9526a98e1d9ea9b7278fc45b8b051a5295f4) by @parkourkarthik ([merge request](gitlab-org/gitlab!95575))
- [Allow tokens with any scope to use the self-revocation API](gitlab-org/gitlab@15356d6895d87f1608d3128bf0b0e15e8d689a92) by @fabsrc ([merge request](gitlab-org/gitlab!94463))
- [Update Runner UI badges](gitlab-org/gitlab@d54cf964a603fe49124f7ea086e70a6276842fb7) ([merge request](gitlab-org/gitlab!95720))
- [Add days as unit to VSA duration chart](gitlab-org/gitlab@2d077b091e22087ae36278793be761dd18d2643e) ([merge request](gitlab-org/gitlab!96358)) **GitLab Enterprise Edition**
- [Do not show revoke button if revoke_path is absent](gitlab-org/gitlab@25a6439e8f0321c1dd3cd03dbd1ce0de9ec98526) ([merge request](gitlab-org/gitlab!96276))
- [Change code block border-radius to default](gitlab-org/gitlab@969384f5aa5a710f717b3b2d3e1db1e280ac445a) ([merge request](gitlab-org/gitlab!96886))
- [Hide mirror repos list when not available](gitlab-org/gitlab@7cce6189b77edfb6ce9fdad386ad386413d53ff0) by @parkourkarthik ([merge request](gitlab-org/gitlab!94939))
- [Modify scope to avoid table join](gitlab-org/gitlab@2bb70eb02443cb36c0c74f931a96446eaa07c4fe) ([merge request](gitlab-org/gitlab!95580))
- [Conclude the combined registration experiment](gitlab-org/gitlab@95c16a23b5fe6601341c619b735a623802c6903d) ([merge request](gitlab-org/gitlab!95755)) **GitLab Enterprise Edition**
- [Cleans up the edit form for issuables](gitlab-org/gitlab@0a6ff8892de2fe08e6c9001ef24aa54b680e4383) ([merge request](gitlab-org/gitlab!96018))
- [This MR adds warning modal for unsaved changes](gitlab-org/gitlab@84e82bb90f6ec6d1a9e3499f5026dcd126ffa39f) ([merge request](gitlab-org/gitlab!94213)) **GitLab Enterprise Edition**
- [Destroy invalid project members](gitlab-org/gitlab@3a3a3a7fc008555234fe73ea0a777ee637640b90) ([merge request](gitlab-org/gitlab!95881))
- [Update successful plan purchase message and variant](gitlab-org/gitlab@5f41e57dabcaa2d2965717ffef9d11d8686f8a08) ([merge request](gitlab-org/gitlab!96674)) **GitLab Enterprise Edition**
- [Remove s3_omit_multipart_urls feature flag](gitlab-org/gitlab@4ba376fabf4e187474e08eba1a2726641005aca3) ([merge request](gitlab-org/gitlab!96411))
- [Feat: Increase stats margin on the project home page](gitlab-org/gitlab@c1d5009e0f48d92238e33dc9b65c8c6e5b14c4fa) by @nadia_sotnikova ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96524))
- [Add vulnerability_advisories and vulnerable_component_versions tables](gitlab-org/gitlab@9317c8cb0f7afdd05b292a28977f734240d829e0) ([merge request](gitlab-org/gitlab!95622))
- [Update blocking issues system note text](gitlab-org/gitlab@0f1faa413f6c493008d043dcdcb8f27df9972fc4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95636)) **GitLab Enterprise Edition**
- [Refactored time tracking widget to be more reactive](gitlab-org/gitlab@c3902eaeec8f93cb25326b623ffffe8606cb27f8) by @zillemarco ([merge request](gitlab-org/gitlab!92234))
- [Use the standard dynamic segment for Debian packages](gitlab-org/gitlab@638f9b15ffd06ff07015e4fd779deaaf2a9cee4a) by @sathieu ([merge request](gitlab-org/gitlab!93036))
- [Add similar credit cards counts to external PVS payload](gitlab-org/gitlab@dafded912147d52bd55521e397a76a5d77a9977a) ([merge request](gitlab-org/gitlab!96264))
- [Edit profile tooltip for style compliance](gitlab-org/gitlab@37caf393dc2beeb153b8c010c411b459ff56b62b) ([merge request](gitlab-org/gitlab!96209)) **GitLab Enterprise Edition**
- [Reset access token form selectively](gitlab-org/gitlab@929dc1cc34a9150bf0b8d7f214f6b6efea7fb9d0) ([merge request](gitlab-org/gitlab!96379))
- [Show an additional warning text on SaaS for removing license](gitlab-org/gitlab@c68d777b7b3b6b1eb7c6ab8fbae936f30e23b5e4) ([merge request](gitlab-org/gitlab!96185)) **GitLab Enterprise Edition**
- [Change text Elasticsearch to OpenSearch in AWS search service config](gitlab-org/gitlab@2787a9352aab996a60ccdadc4fbd511130c51dee) ([merge request](gitlab-org/gitlab!96413)) **GitLab Enterprise Edition**
- [Update stackprof to v0.2.21](gitlab-org/gitlab@75aba050c06cc54afec9ccf6c5b38afcfe3ec3bd) ([merge request](gitlab-org/gitlab!96113))
- [Hide Register Runner button when user is not permitted to do the action](gitlab-org/gitlab@697eec1d89bd84887d2ed5ba4342118824cde738) ([merge request](gitlab-org/gitlab!92396))
- [Update case for Manually added text](gitlab-org/gitlab@51e25b43029fd6e0e04f050954da7112124b0bae) ([merge request](gitlab-org/gitlab!96281)) **GitLab Enterprise Edition**
- [Show deployment approval options for read access](gitlab-org/gitlab@4aaf6526b24a89502a86eff06725d3fb846349fe) ([merge request](gitlab-org/gitlab!95071))
- [Always show deployment approval options](gitlab-org/gitlab@7c824813ec65561bc6f1aa88ec73e5505b5aa78f) ([merge request](gitlab-org/gitlab!95071)) **GitLab Enterprise Edition**
- [Updates UI for package duplicate settings](gitlab-org/gitlab@51a6d3755e31aff8002e02283ce90d6a68ee9e5b) ([merge request](gitlab-org/gitlab!95193))
- [Clarify lifetime setting that affects all tokens](gitlab-org/gitlab@b1cb11ba5b0d880d461e2661cc9344c7a34e2bb0) ([merge request](gitlab-org/gitlab!96181)) **GitLab Enterprise Edition**
- [Add environment tier to allowed agents API response](gitlab-org/gitlab@668f4b56639c6598945a69b97dc146b7b863c6ca) ([merge request](gitlab-org/gitlab!95441))
- [Removes spacing from system note](gitlab-org/gitlab@92b9ba647043f2252a88ca3445ae97967a9e3754) ([merge request](gitlab-org/gitlab!95800))
- [Hide create project tile for some users](gitlab-org/gitlab@21b38d3ec9c56dd404dca66c12ec8bf79344246a) ([merge request](gitlab-org/gitlab!95726))
- [Remove FF for seat count usage alerts](gitlab-org/gitlab@5516d5a669cbf1388c52d89271295a4a7241de11) ([merge request](gitlab-org/gitlab!95775)) **GitLab Enterprise Edition**
- [Adds skeleton loader to Usage Quotas Seats page](gitlab-org/gitlab@0335c2f31bf0cfd3981505d551794823ce110307) ([merge request](gitlab-org/gitlab!91716)) **GitLab Enterprise Edition**
- [Expose ci_job_token_scope_enabled in job API](gitlab-org/gitlab@8ac85bb3fe977ba337e3999ad722a93501682c5f) by @paulbry ([merge request](gitlab-org/gitlab!95105))
- [Remove the Show Details button for Deployments](gitlab-org/gitlab@17cf1f4b55ad7df2947d565c6511236c4abd6abc) ([merge request](gitlab-org/gitlab!95955))
- [Changes column width on package side by side settings](gitlab-org/gitlab@7a899347f5c604e107ee5f12cb3aa1610a161742) ([merge request](gitlab-org/gitlab!96162))
- [Update tabs line-height to match Pajamas](gitlab-org/gitlab@2ba05a69ceade68a3981610d8289f028d4eba839) ([merge request](gitlab-org/gitlab!96156))
- [Event type information in saml auth audit event stream](gitlab-org/gitlab@6853f9cc84aad036974676ba8087fd2d157f51c6) ([merge request](gitlab-org/gitlab!95172)) **GitLab Enterprise Edition**
- [Extend approvers_select component to group level](gitlab-org/gitlab@ce9adc28d368b3ad7d80693630eb742f47a45fc7) ([merge request](gitlab-org/gitlab!95196)) **GitLab Enterprise Edition**
- [Updated copy around tasks](gitlab-org/gitlab@b94c7dc192d3ae159da3948367528c86b8d9e00b) ([merge request](gitlab-org/gitlab!95529))
- [Move Slack Events code to EE](gitlab-org/gitlab@a40a1502bec3434c8668ee5eb9aa42e4aa784527) ([merge request](gitlab-org/gitlab!96094)) **GitLab Enterprise Edition**
- [Add description_html to SecurityReportFindingType](gitlab-org/gitlab@3d6e6c959dec9129645e71bff4fb3bffb48bfccf) ([merge request](gitlab-org/gitlab!96079)) **GitLab Enterprise Edition**
- [Update Puma to v5.6.5](gitlab-org/gitlab@4e6ca70f8a9643449d1f77744eae3e248842db45) ([merge request](gitlab-org/gitlab!95987))
- [Disallow the rebase without pipeline on certain settings](gitlab-org/gitlab@e5e5e937c0a26edd7714dbda6ed7ccd88ac60996) ([merge request](gitlab-org/gitlab!95736))
- [Rename existing task system notes](gitlab-org/gitlab@8f7e96a8a1798a30df8f740ed3fa074ebaf999b9) ([merge request](gitlab-org/gitlab!95631))
- [Dont generate pipeline reports if the base pipeline is not complete](gitlab-org/gitlab@7435602ba923319c14e46798250db57db34ff943) ([merge request](gitlab-org/gitlab!93229))
- [Add generic cost factor logging](gitlab-org/gitlab@96ee0f1854c57ac47b63135b3de86b9fb24424fd) ([merge request](gitlab-org/gitlab!95845)) **GitLab Enterprise Edition**
- [Update error message](gitlab-org/gitlab@df7b2fd595396d5cc10aa66552ed3f9a86d9901c) ([merge request](gitlab-org/gitlab!95946)) **GitLab Enterprise Edition**
- [Update breadcrumbs of packages and registries under settings](gitlab-org/gitlab@37f4d3f90bc5388286a85e028dc0869380842a3f) by @parkourkarthik ([merge request](gitlab-org/gitlab!95554))
- [Add prefix to trigger tokens](gitlab-org/gitlab@4c44cb600b3a82dc9ab1c0cc06b60581fe04e8cd) ([merge request](gitlab-org/gitlab!95968))
- [Remove execute_build_hooks_inline feature flag](gitlab-org/gitlab@a05ba200c088234686f3632db4022a3bfbf00238) ([merge request](gitlab-org/gitlab!95712))
- [Autocomplete dropdown optimization](gitlab-org/gitlab@90450a9947f5f7cf362fe9c45e345fb73cd1884a) ([merge request](gitlab-org/gitlab!94058))
- [Fix canary badge styling](gitlab-org/gitlab@3f271cb56aa796023be114e55cc5f4bb1fc5f65e) ([merge request](gitlab-org/gitlab!95277))
- [Enable async_after_approval feature flag](gitlab-org/gitlab@ffdc7bd77ced8ced74c33b65bcb5fc9f3b934007) ([merge request](gitlab-org/gitlab!95677))
- [Combine sort and filter into one dropdown](gitlab-org/gitlab@cc30f9bdc26ffdc9058ff35fee36f154b8a93a7a) ([merge request](gitlab-org/gitlab!92072))
- [Use static terraform-images version in Terraform template](gitlab-org/gitlab@8c4a6de3705f532726693e74b252c2c0d4371003) ([merge request](gitlab-org/gitlab!95883))
- [Don't create `EE::Member` audit events when there is no change](gitlab-org/gitlab@b8f9c99a1409e92832984005cdea15cca8fc0ccb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95508)) **GitLab Enterprise Edition**
- [Update haml-lint to v0.40.1](gitlab-org/gitlab@6ef8517a5467122aced5f8f24f4589d275bc576c) ([merge request](gitlab-org/gitlab!95870))
- [Highlight runner name and move locked icon](gitlab-org/gitlab@e28dd5825ef8e7119f0b0a1cef89579ef10427db) ([merge request](gitlab-org/gitlab!95693))
- [Update thrift to v0.16.0](gitlab-org/gitlab@ab38c0933ae8a3f6bde0062f89ef1bf3ea824625) ([merge request](gitlab-org/gitlab!95838))
- [Use ProtectedBranch service to destroy the branch](gitlab-org/gitlab@5bd75706602d8fd2852b652530b1a3c7cc0c1080) ([merge request](gitlab-org/gitlab!95702))
- [Extract 'read_package' rule into separate policy](gitlab-org/gitlab@a406799420e410928d4595b02a02abca3f1d032c) by @wwwjon ([merge request](gitlab-org/gitlab!90963))
- [Remove self managed wiki notes](gitlab-org/gitlab@970df8b2c02e231548559064021afa2a9f8dce33) ([merge request](gitlab-org/gitlab!88545))
- [This MR adds schedule rule component](gitlab-org/gitlab@d8096ef8a8f629dcdd00b389514599a51680eaec) ([merge request](gitlab-org/gitlab!95192)) **GitLab Enterprise Edition**
- [Change the way autoclosing issues is checked](gitlab-org/gitlab@340dbccb04790c473e31a06770ac192123aef33c) ([merge request](gitlab-org/gitlab!95614))
- [Reduce header and footer height of comments](gitlab-org/gitlab@bc5d40c13952d3d2f13fa0f0633042f490f2cfb4) ([merge request](gitlab-org/gitlab!95772))
- [Update redis gem to v4.7.1](gitlab-org/gitlab@e3b5ecd35f9b72d4e4c11a47db3c816a389400cc) ([merge request](gitlab-org/gitlab!95402))
- [Update Cluster Managed project template](gitlab-org/gitlab@a09f430dccfdd89a42c81d843502052686c6cacf) ([merge request](gitlab-org/gitlab!95643))
- [Redesign runners stats](gitlab-org/gitlab@73dba9e929ee9db518f751fc2c6f276d41013d21) ([merge request](gitlab-org/gitlab!95509))
- [Allow verification token when creation external audit event destination](gitlab-org/gitlab@dc46f0874fdb95a69fdc3f3b4e37decc5d06d0ff) ([merge request](gitlab-org/gitlab!94936)) **GitLab Enterprise Edition**
- [Replace native date input field to `GlDatePicker`](gitlab-org/gitlab@6bc608fcca99adc3108eb8b2eccd3ee102820c14) ([merge request](gitlab-org/gitlab!93467))
- [Geo Replicables - Enhaced Empty States](gitlab-org/gitlab@4a45847fce79887c0e1f5a81d8d0bbb9bb9cd5a8) ([merge request](gitlab-org/gitlab!95113)) **GitLab Enterprise Edition**
- [Consolidate pipeline mini graph code](gitlab-org/gitlab@9a03bea1809c2f9274b76772e2a87f83c4ba3d07) ([merge request](gitlab-org/gitlab!91612)) **GitLab Enterprise Edition**
- [Move Group Push Rules to Settings/Repository](gitlab-org/gitlab@c53f2b605719e8f3929ab38f0da1ebb7a9e66ce4) ([merge request](gitlab-org/gitlab!92977)) **GitLab Enterprise Edition**
- [Query group descendants using comparison operators](gitlab-org/gitlab@9799c67fb18e0811a1256d00c03fa631146ba764) ([merge request](gitlab-org/gitlab!94004))
- [Disable DAST profile name field when configured](gitlab-org/gitlab@75bbfcd4b460daec844cab9a792f0caaa329974a) ([merge request](gitlab-org/gitlab!94188)) **GitLab Enterprise Edition**
- [Add job logs collection to Datadog Integration](gitlab-org/gitlab@c3305a2de47399dc3b2e11d70c88e9bded5dc31d) by @AdrianLC ([merge request](gitlab-org/gitlab!89548))
- [Reorganize runner tags in runners table](gitlab-org/gitlab@78b7316cd0294cb49988e4c8c8437490d0dd0d08) ([merge request](gitlab-org/gitlab!95460))
- [Add support for MulanPSL-2.0 in license detection](gitlab-org/gitlab@67b2a3b5388752a23cdd838f0ef06627f994ea5e) by @tnir ([merge request](gitlab-org/gitlab!94948))
- [Destroy invalid group membership records](gitlab-org/gitlab@65dbfd39815a9211fcf39ed10ee431501cd06d6d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80253))
- [Allow Invite button to be enabled by default](gitlab-org/gitlab@1bfa8c18de1705ceb0dafa373a50de6c27c38557) ([merge request](gitlab-org/gitlab!95527))
- [Add skip_users as param for members rest api](gitlab-org/gitlab@88166066340bbfb0978dc5414b75fbbfd9f7abf5) ([merge request](gitlab-org/gitlab!95195)) **GitLab Enterprise Edition**
- [Rename web_hooks service_id to integration_id](gitlab-org/gitlab@a627b1bcc55908d16fbe60d99dab0072dc90a262) ([merge request](gitlab-org/gitlab!95335))
### Deprecated (5 changes)
- [Deprecate draft quick action toggle](gitlab-org/gitlab@fe4549783dedac09cc5abd5e356e34ddf2faf9e3) ([merge request](gitlab-org/gitlab!96794))
- [Add feature flag for /draft toggle](gitlab-org/gitlab@ee1c73ed2f32067c51be11a9c3714aee8bd59290) ([merge request](gitlab-org/gitlab!92654))
- [GraphQL: Deprecate RunnerMembershipFilter](gitlab-org/gitlab@5e97c2e04f830bdd9c9626ed04b8ede7fa55069e) ([merge request](gitlab-org/gitlab!97127))
- [Document CS environment variable deprecations](gitlab-org/gitlab@3bb34b006484a87c87628d327d0345a243a39126) ([merge request](gitlab-org/gitlab!96172))
- [Deprecate security related `confidence` fields](gitlab-org/gitlab@23001ffa2abe40638247f456e1334687fd2c6e40) ([merge request](gitlab-org/gitlab!96361)) **GitLab Enterprise Edition**
### Removed (17 changes)
- [Remove unused VSA aggregation DB columns](gitlab-org/gitlab@07f6285afc6f9c614bfaf22012d34ba8736f09ce) ([merge request](gitlab-org/gitlab!98201))
- [Analyzer consolidation in SAST CI template](gitlab-org/gitlab@7752a7a6deea2724563bb09d5b53e31c2f020b7c) ([merge request](gitlab-org/gitlab!97216)) **GitLab Enterprise Edition**
- [Remove free user cap awaiting user logic](gitlab-org/gitlab@ed673d8ca878f389551e5049b91ae7fda5c7d5f7) ([merge request](gitlab-org/gitlab!96582))
- [Remove nonexistent index from schema](gitlab-org/gitlab@40b55826b4be12a1c3b59d502b3ce92762f95076) ([merge request](gitlab-org/gitlab!96401))
- [Remove awaiting members from billable user finder](gitlab-org/gitlab@3ff90056a0479be36164882e79d76fbd886678af) ([merge request](gitlab-org/gitlab!96925)) **GitLab Enterprise Edition**
- [Put DAST Basic-auth option behind feature flag](gitlab-org/gitlab@c9329e0eef2e3dec9940fd7a2081254dbb627161) ([merge request](gitlab-org/gitlab!96877)) **GitLab Enterprise Edition**
- [Weekend migration for dropping an empty index](gitlab-org/gitlab@b94439a154112f9dd88ad16bc28df9e4d4deb324) ([merge request](gitlab-org/gitlab!96400))
- [Remove pipeline insights experiment](gitlab-org/gitlab@ce7363d07bfc6f968b79571ab697be4c771e9433) ([merge request](gitlab-org/gitlab!95951))
- [Remove mr_attention_requests feature flag](gitlab-org/gitlab@523c4c8fffc62d97bef7444d93f0b5fc7a13f9a6) ([merge request](gitlab-org/gitlab!95446))
- [Remove temporary todos index for attention request](gitlab-org/gitlab@8a8ec206960fd2e292d6ba6576bef92130dfc01f) ([merge request](gitlab-org/gitlab!96228))
- [Remove unused /scan_execution_policies internal API](gitlab-org/gitlab@e702c38d039cff94dbcca7214b1affd22b793c86) ([merge request](gitlab-org/gitlab!96083)) **GitLab Enterprise Edition**
- [Drop Project#build_coverage_regex](gitlab-org/gitlab@ab50d40b9ee40d0282ece9605537bebf84b8000a) ([merge request](gitlab-org/gitlab!95908))
- [Remove other_role column from user_details](gitlab-org/gitlab@aee1474ea5aeeb55e69ab3b0691ab7355196bcd1) ([merge request](gitlab-org/gitlab!95889))
- [chore: Cleanup report_artifact_build_completed FF](gitlab-org/gitlab@fc3be99490e156198c82b7f0dbf93486b30de97c) ([merge request](gitlab-org/gitlab!95823))
- [Remove the use_vsa_aggregated_tables FF](gitlab-org/gitlab@8505c2db6cb04d6c3130c28fec420a4b26f57e7d) ([merge request](gitlab-org/gitlab!94945)) **GitLab Enterprise Edition**
- [Deprecations in SAST template](gitlab-org/gitlab@973f70cdc6586b93cafbe6e8f533e8484f4758d4) ([merge request](gitlab-org/gitlab!92325))
- [Remove tmp_index_merge_requests_draft_and_status](gitlab-org/gitlab@9b0d550a563a898bb5726dcc2c6aba30c7587ea3) ([merge request](gitlab-org/gitlab!90524))
### Security (19 changes)
- [No overriding methods for Sawyer class](gitlab-org/gitlab@089d1cac03d8b21d89fad09c3e791c9358489157)
- [Optimize handling repositories with huge trees](gitlab-org/gitlab@b4a91d2d0ecd9d5024976cce69d7e406626d0c7d)
- [HTML escape the label background color](gitlab-org/gitlab@513066c360bcfaa8d5cd40795f7d98d46b9e1e44)
- [Fix unauthorized GFM references in Incident Timeline](gitlab-org/gitlab@8c59e44edffd6ebcb798d533476797ee91b4de51)
- [Sandbox jupyter notebook HTML output](gitlab-org/gitlab@56bbf33ef15557cc6bde32a432539866a8c4a38c)
- [Prevent long loops when generating suggested branch name](gitlab-org/gitlab@754ee30016139b6315acef874707b2e1618cad15)
- [Validate description length for snippets](gitlab-org/gitlab@34d02079a31a1ba28f8206a1c5c0f84056b705c1)
- [Prevent brute force vuln for Git over HTTP(S) requests](gitlab-org/gitlab@2a7449f6d903a5b87fa48d9667133f01f1267033)
- [Replaced smooshpack to fix the vulnerability in LivePreview](gitlab-org/gitlab@83fe17cf45176103afa14641e361ac227d61e147)
- [Check for pathological markdown input](gitlab-org/gitlab@01992b9884bbe86dffba0550f3b2be0466141897)
- [Update package auth for group IP allowlist](gitlab-org/gitlab@1c59c4a8b945138d3c7ee678ece1c9a709cfcbca)
- [IDOR in Zentao integration issue show page](gitlab-org/gitlab@85fa1ffac02579954aefd3fcf664eab532d1e170)
- [Patch VULNDB-255039 (potential Rack cache poisoning)](gitlab-org/gitlab@848d7a0cd095c564f258beb6ab4786cf8c28131e)
- [Don't show pipeline status](gitlab-org/gitlab@f0bb4d181acd1ea5f90de91babf605d952bd5ce8)
- [Parse commit trailers without using regexp](gitlab-org/gitlab@f1854753c3cc923615e311e218dc9e581e781ea1)
- [Sanitize img attributes in Banzai::Filter::ImageLinkFilter](gitlab-org/gitlab@99a451bd4a279eaf77befd5c2bfc646128e7ddb8)
- [Validate if values to be saved in Redis can be converted to string](gitlab-org/gitlab@cc8d3e3efdcb919439317d010f1949b92de92e19)
- [Enable SSL certification verification by default with Fog access](gitlab-org/gitlab@ee6b07e70351c7cb81e0704ac0659dd4afc57857) ([merge request](gitlab-org/gitlab!95514))
- [Update diffy to v3.4.2](gitlab-org/gitlab@b3e685df7b090e0161e3d1ea4791f346a430127f) ([merge request](gitlab-org/gitlab!95485))
### Performance (19 changes)
- [Optimize GraphQL next page check](gitlab-org/gitlab@cd9c2c0697bcd10f7b878bf9fe574946f8cd7707) ([merge request](gitlab-org/gitlab!97509))
- [Introduce rate-limiting for namespace exists API](gitlab-org/gitlab@6179f66d298c738bdb6a999f0f907aedadcedb41) ([merge request](gitlab-org/gitlab!98188))
- [Optimize contribution analytics queries](gitlab-org/gitlab@0080b3bdc2c70ba9a8c2d2c310f7894cabcd51b0) ([merge request](gitlab-org/gitlab!98028)) **GitLab Enterprise Edition**
- [Broadly restrict downstream pipeline tree size](gitlab-org/gitlab@8467414dbf6acf1da8e1807d002a5c35775d48c5) ([merge request](gitlab-org/gitlab!95857))
- [Remove ci_namespace_mirrors sync_children_namespaces](gitlab-org/gitlab@d9838f3c276e249f21ee4abb23a1e6c43e6173e2) ([merge request](gitlab-org/gitlab!96194))
- [Remove Workhorse pubsub feature flags](gitlab-org/gitlab@9e129af6c8cc3d224fea741f33f7f4cee7570d49) ([merge request](gitlab-org/gitlab!97646))
- [Place trial creation on user registration in background](gitlab-org/gitlab@459acb51b9ce12b18d730df276abf60d3b78fec1) ([merge request](gitlab-org/gitlab!96807)) **GitLab Enterprise Edition**
- [Speed up environments search](gitlab-org/gitlab@5e0ede982e6780a4c9acfcb029bce27f3ef24b7d) ([merge request](gitlab-org/gitlab!96774))
- [Refactor diff_view to include diff_line](gitlab-org/gitlab@b299f8533e1d609aa0a8c91831f280e8d0a38ec6) ([merge request](gitlab-org/gitlab!96454))
- [Enable async project authroizations by default](gitlab-org/gitlab@8fcf6aecff58c9b1ea89590f08701c7e264c9000) ([merge request](gitlab-org/gitlab!96650))
- [Remove the feature flag remove_branch_caching_feature_flag](gitlab-org/gitlab@27962c00497ab87b1b8d9c14b00b7749411359ac) ([merge request](gitlab-org/gitlab!96748))
- [Add performance optimization for Insights queries](gitlab-org/gitlab@388b55b7a99648109b6ded44c98204362f824967) ([merge request](gitlab-org/gitlab!95935))
- [Introduce rate-limiting for namespace exists API](gitlab-org/gitlab@d5e5d8697aa3646b45c992e2425d1fcd1425c9d1) ([merge request](gitlab-org/gitlab!96133))
- [Place learn gitlab creation into background and measure](gitlab-org/gitlab@a0a991563ea8ccbf5e7d019488412dda4496bcd2) ([merge request](gitlab-org/gitlab!95629)) **GitLab Enterprise Edition**
- [Prevent CounterJobWorker from exceeding 300 seconds](gitlab-org/gitlab@c687279ac003e24c236beca9d4470f14ad6e6cce) ([merge request](gitlab-org/gitlab!95466))
- [Fix N+1 in runner jobs API](gitlab-org/gitlab@6871b9b96f43420062f0849acfa546ab55635373) ([merge request](gitlab-org/gitlab!95887))
- [Update container repositories migration index](gitlab-org/gitlab@10b20473a6f49e413383c4ee0049277015a22ac6) ([merge request](gitlab-org/gitlab!95871))
- [Drop database_async_index_creation feature flag](gitlab-org/gitlab@00a8dc5a0ac510d235c9632c52027410604947cd) ([merge request](gitlab-org/gitlab!95570))
- [Skip repository disconnect if project is pending delete](gitlab-org/gitlab@212c1e07a92d0393a2ff82facd40855636b551bf) ([merge request](gitlab-org/gitlab!93006))
### Other (54 changes)
- [RPM initial upload and package creation](gitlab-org/gitlab@3aa4ee895879364eefc157b116d9be6f1d6269ec) ([merge request](gitlab-org/gitlab!97587))
- [Remove feature flags for tracking jetbeans and cli api requests](gitlab-org/gitlab@22791eee184a81d15d198d5aa0acc927fb198052) ([merge request](gitlab.com/gitlab-org/gitlab/-/merge_requests/98078))
- [Helper to convert a table to its first partition](gitlab-org/gitlab@76088d6bf6feb7ed9eacd8430fbd0d9a9ccf9a7f) ([merge request](gitlab-org/gitlab!96815))
- [Workhorse: Bump gitaly version](gitlab-org/gitlab@8a87e4ef9913d1f31bc55f17ecc814fa997274c6) ([merge request](gitlab-org/gitlab!98089))
- [RuboCop: Enable previously disabled Style/BarePercentLiterals](gitlab-org/gitlab@9bb15926760bbf825a9b32fca9037e14a80a5afd) by @edith007 ([merge request](gitlab-org/gitlab!94078))
- [Enable FF ci_stop_expanding_file_vars_for_runners](gitlab-org/gitlab@52ba68d06526b0d13f27bacd03da8435b50ff06a) ([merge request](gitlab-org/gitlab!98038))
- [Add internal column to notes](gitlab-org/gitlab@e4be938c3bc2b911cad684e0eb483b76575e7188) ([merge request](gitlab-org/gitlab!97253))
- [Clean up attention_requested states](gitlab-org/gitlab@aaf7b77f0e6cbc55a38f12dc574a53512c79af6a) ([merge request](gitlab-org/gitlab!97010))
- [Reschedule work_item_type backfill on issues](gitlab-org/gitlab@5ae56311fe282f0deb35c5fde0b61576b0b434e6) ([merge request](gitlab-org/gitlab!96591))
- [Disable ultimate for projects less than 1 MB in size](gitlab-org/gitlab@cd8e978ac3f02b5c1d515356d2bab402cda7457e) ([merge request](gitlab-org/gitlab!97140))
- [Remove duplicated % in sprintf](gitlab-org/gitlab@1cdb176563040f7875b2bea213827fe0873656e6) ([merge request](gitlab-org/gitlab!95613))
- [Update the Harbor registry doc](gitlab-org/gitlab@8960f6308c899d046f9accce3dfe99662d8c821a) by @zhaoqi01 ([merge request](gitlab-org/gitlab!97362))
- [Remove FF group_level_protected_environment_settings_permission](gitlab-org/gitlab@6d0466828203decaba145ba2a702e6c0d8f4c810) ([merge request](gitlab-org/gitlab!95939))
- [Cleanup rebalance_issues feature flag](gitlab-org/gitlab@21fd2344210c163fa242550db09e25e72e2be1a6) ([merge request](gitlab-org/gitlab!97644))
- [Quarantine flaky test in redis_interceptor_spec.rb](gitlab-org/gitlab@c84b65f039b4b04a8ca672ddc13d4e28ba694660) ([merge request](gitlab-org/gitlab!97568))
- [Remove find_epics_performance_improvement feature flag](gitlab-org/gitlab@3cbef9517a13f10b416459cb6653c19bc98e3e02) ([merge request](gitlab-org/gitlab!97537)) **GitLab Enterprise Edition**
- [Add menu headers in primary navigation dropdown](gitlab-org/gitlab@59d0bfc380b3277d2d6daea316ecc09736ca9c5f) ([merge request](gitlab-org/gitlab!96924))
- [Remove redis caching for diff_batches endpoint](gitlab-org/gitlab@d8e9680fd0b156e70d1df9a2f271ff36e662fe4d) ([merge request](gitlab-org/gitlab!97355))
- [Update the Harbor registry doc](gitlab-org/gitlab@24515cb7db500a293fe5762c074938d4ad4447e9) by @zhaoqi01 ([merge request](gitlab-org/gitlab!97362))
- [Remove unnecessary gl-alert-dismiss class](gitlab-org/gitlab@61504d4e9ecebca946fdeaa943b52c0dedb6af7d) ([merge request](gitlab-org/gitlab!97433))
- [Add the Harbor registry doc](gitlab-org/gitlab@c409b8eb7bd7cd4d444a15a60bd127c7a8842870) by @zhaoqi01 ([merge request](gitlab-org/gitlab!97362))
- [Remove GITLAB_LEGACY_BACKGROUND_UPLOADS](gitlab-org/gitlab@83980495ef512ffc6afcc5a7b8369ea5f40f03b7) ([merge request](gitlab-org/gitlab!97170))
- [Remove user callouts that are related to attention request](gitlab-org/gitlab@ca82ad35799b07072da8b3c530fe16a0a9f95c9d) ([merge request](gitlab-org/gitlab!96740))
- [Add not null constraint for board recent visits columns](gitlab-org/gitlab@2362f3553ef5ce4b3e7517ec747077bbd0b88c2e) ([merge request](gitlab-org/gitlab!96705))
- [Remove feature flag `inactive_projects_deletion`](gitlab-org/gitlab@3af90fb938bcaa0a8caecf70c85f0fc446d8cfd2) ([merge request](gitlab-org/gitlab!96803))
- [Remove reads from ci_builds.stage](gitlab-org/gitlab@99a0530b34d620b818b27d799d4c53569851396a) ([merge request](gitlab-org/gitlab!97030))
- [Improve error message while validating config/database.yml](gitlab-org/gitlab@b91e55166e7069956106594be51f9f6adf21e4cf) ([merge request](gitlab-org/gitlab!97058))
- [Delete the FF ci_variable_for_group_gitlab_deploy_token](gitlab-org/gitlab@8c4c9c314743829debfa7763b407bd036e51c912) ([merge request](gitlab-org/gitlab!96648))
- [Geo: Remove geo_file_transfer_validation FF](gitlab-org/gitlab@25fd50651bf2f9519322fc1e75b48b18782ee9bf) ([merge request](gitlab-org/gitlab!96836)) **GitLab Enterprise Edition**
- [Create partitioned `security_findings` table](gitlab-org/gitlab@0728b4c565cb7df93dcb84c9d9e7ba6c0e5e48c7) ([merge request](gitlab-org/gitlab!93558))
- [Prevent updating requirement deprecated attributes](gitlab-org/gitlab@b06aad0bf611f57e0e7aa58010bc21484bd7d2e0) ([merge request](gitlab-org/gitlab!95506)) **GitLab Enterprise Edition**
- [Finalize removal of incorrect issue indexes](gitlab-org/gitlab@5cea3b23ef76eb4a4a1f2d092bcfbb4ea7943862) ([merge request](gitlab-org/gitlab!96743))
- [Refactor Groups Rest API to use workhorse for avatar upload](gitlab-org/gitlab@b50749d099da0e0fa7432d23eeaac8f414f05bbd) by @tuxtimo ([merge request](gitlab-org/gitlab!96381))
- [Fix flaky tests in ee/spec/models/ee/group_spec.rb](gitlab-org/gitlab@d66b2f58deeb217672789372d61669c9de76aadd) ([merge request](gitlab-org/gitlab!96313)) **GitLab Enterprise Edition**
- [Change copy on issues empty state for logged users](gitlab-org/gitlab@fffc77825e3cde0dd5dfa9622fdb726be6be9812) by @pjjakubowska ([merge request](gitlab-org/gitlab!96430)) **GitLab Enterprise Edition**
- [Remove not null constraint for confidence columns](gitlab-org/gitlab@998f2661a92c60125fc18c98d61b03823c599912) ([merge request](gitlab-org/gitlab!96268))
- [Add extended open issues index](gitlab-org/gitlab@27a1763895ce15ea341c28888a4a83928f2e9aab) ([merge request](gitlab-org/gitlab!96274))
- [Use the new mergeability check framework](gitlab-org/gitlab@8ed5d5080fa3e995dca736fdca372b4cb61f7d14) ([merge request](gitlab-org/gitlab!95916))
- [Migrate cadence start date to automation start date](gitlab-org/gitlab@b84a2d54ffac9b6949cae59a0418914ab213c475) ([merge request](gitlab-org/gitlab!95571))
- [Cleanup old work item type id backfill on issues table](gitlab-org/gitlab@0d22ebe8bee78304372c3e0bbb59d23b3ead28b5) ([merge request](gitlab-org/gitlab!96198))
- [Vertically align the revoke button](gitlab-org/gitlab@1dbd8999bd8d89689f0001749e6cda8b7b1baeb9) ([merge request](gitlab-org/gitlab!96289))
- [Remove registry deploy_token feature flag](gitlab-org/gitlab@46e92973c6442de613874f61725549980be84eb8) ([merge request](gitlab-org/gitlab!96389))
- [Remove code to limit inviting groups in hierarchy for free user cap](gitlab-org/gitlab@9d381d3017aeddaef5c37a59c2538189e6c4140f) ([merge request](gitlab-org/gitlab!95812))
- [Use keyset pagination for Tags API](gitlab-org/gitlab@ad6a31d8cad19f97d39ecba50351d0ccee51bf61) ([merge request](gitlab-org/gitlab!96259))
- [Rake Task to truncate Legacy tables on Main and CI Database](gitlab-org/gitlab@37f231d6e366a5cfba9fec6a052a3805d1812958) ([merge request](gitlab-org/gitlab!94252))
- [Remove the feature flag ci_docker_image_pull_policy](gitlab-org/gitlab@b436386708ff8e395027f71c583e641f10393365) ([merge request](gitlab-org/gitlab!96245))
- [Move data-reference-type attribute into a constant](gitlab-org/gitlab@77441654e69e8995aaf0d524c0a86518fd2d0f7f) ([merge request](gitlab-org/gitlab!96075))
- [Improve how fields can bre preloaded for WidgetInterface](gitlab-org/gitlab@1b605f1e36ae138f9e913501187c54a692ec8100) ([merge request](gitlab-org/gitlab!95290))
- [Avoid using group's web_url in issue_analytics QA](gitlab-org/gitlab@1357d4cbf390d604a7d9f651e65627a07729621e) by @tnir ([merge request](gitlab-org/gitlab!95311))
- [Update trial alert to follow design system](gitlab-org/gitlab@557e0100a489bc11801b728beb511908d4cb7f8a) ([merge request](gitlab-org/gitlab!95844)) **GitLab Enterprise Edition**
- [Fix group authorization when searching epics](gitlab-org/gitlab@7614aea2bcbca7cafa23e1e8ec4cabbe05c6c2bb) ([merge request](gitlab-org/gitlab!95731)) **GitLab Enterprise Edition**
- [Drop unused security findings index](gitlab-org/gitlab@0fbee5c0d4eb896547f695326f6e1ce081f34a47) ([merge request](gitlab-org/gitlab!95450))
- [Improve specs with shared examples](gitlab-org/gitlab@dd3f2ecd882e89511eaa927102fc4101f684a38f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95539)) **GitLab Enterprise Edition**
- [Fix Style/Next offenses](gitlab-org/gitlab@bdf877063ba1d8d4df1216f7875905343d9e5e33) ([merge request](gitlab-org/gitlab!93329))
## 15.3.3 (2022-09-01)
@ -665,6 +1303,36 @@ entry.
- [Remove FF import_release_authors_from_github](gitlab-org/gitlab@c4d6871e4438a1626d688856903778623138f671) ([merge request](gitlab-org/gitlab!92686))
- [Remove unused feature](gitlab-org/gitlab@0ef95d341e4a15150d6ccb3d104ebbe064aa062a) ([merge request](gitlab-org/gitlab!92753))
## 15.2.4 (2022-08-30)
### Security (18 changes)
- [No overriding methods for Sawyer class](gitlab-org/security/gitlab@fafcaf91c510ace5c3fc845197fa71d2ad8943cc) ([merge request](gitlab-org/security/gitlab!2755))
- [Update Oj to v3.13.21](gitlab-org/security/gitlab@e14f62112f51315288f3f08108b59cf40ab5635e) ([merge request](gitlab-org/security/gitlab!2729))
- [Bump yajl-ruby gem version](gitlab-org/security/gitlab@ad7469e802aff36989276bd77afcebf9bcb8a545) ([merge request](gitlab-org/security/gitlab!2689))
- [Prevent long loops when generating suggested branch name](gitlab-org/security/gitlab@f8f1631a7751b40444debbd69188187c895d2ad6) ([merge request](gitlab-org/security/gitlab!2744))
- [IDOR in Zentao integration issue show page](gitlab-org/security/gitlab@01004871400564e5b18a2efa4f6d87c8ca37db5c) ([merge request](gitlab-org/security/gitlab!2741))
- [Patch VULNDB-255039 (potential Rack cache poisoning)](gitlab-org/security/gitlab@a951318f5870e8f35c742eab58132c63d6d36198) ([merge request](gitlab-org/security/gitlab!2694))
- [HTML escape the label background color](gitlab-org/security/gitlab@de115e3b0896aa1504882d3230b5427506fee3e2) ([merge request](gitlab-org/security/gitlab!2720))
- [Sandbox jupyter notebook HTML output](gitlab-org/security/gitlab@67aeba4ae4c95d2668d0428cb66d263ee4247b68) ([merge request](gitlab-org/security/gitlab!2711))
- [Fix unauthorized GFM references in Incident Timeline](gitlab-org/security/gitlab@f091bc238efa1d669c1257aa146339f4b1134a0c) ([merge request](gitlab-org/security/gitlab!2708))
- [Optimize handling repositories with huge trees](gitlab-org/security/gitlab@9969c2cabccef2367631498f38ab8d0b19cf9da3) ([merge request](gitlab-org/security/gitlab!2666))
- [Parse commit trailers without using regexp](gitlab-org/security/gitlab@9bd64457525313a949f151fd27f2954ff71e399d) ([merge request](gitlab-org/security/gitlab!2700))
- [Check for pathological markdown input](gitlab-org/security/gitlab@c05642874c38e4d914297ad788a07c42b77b6b1e) ([merge request](gitlab-org/security/gitlab!2732))
- [Replaced smooshpack to fix the vulnerability in LivePreview](gitlab-org/security/gitlab@e48df65563c6c66fd6d89fb7bf626bdf8b465cc0) ([merge request](gitlab-org/security/gitlab!2662))
- [Update package auth for group IP allowlist](gitlab-org/security/gitlab@eb7b9e646732cc3590e00d5694d5a662e71c9f99) ([merge request](gitlab-org/security/gitlab!2684))
- [Don't show pipeline status](gitlab-org/security/gitlab@a5962d9ee7aec4f86a982f2d686a690806df6f15) ([merge request](gitlab-org/security/gitlab!2680))
- [Sanitize img attributes in Banzai::Filter::ImageLinkFilter](gitlab-org/security/gitlab@ee68b29c2199e1c399a4d0065ed53c50592e54a0) ([merge request](gitlab-org/security/gitlab!2676))
- [Validate description length for snippets](gitlab-org/security/gitlab@e9e4c3b3109590a5c12ecb2f25e4641dd408ce36) ([merge request](gitlab-org/security/gitlab!2703))
- [Prevent brute force vuln for Git over HTTP(S) requests](gitlab-org/security/gitlab@aab24e532b8c0b9e8acc90e7954434519e19b908) ([merge request](gitlab-org/security/gitlab!2717))
## 15.2.3 (2022-08-22)
### Security (2 changes)
- [Validate if values to be saved in Redis can be converted to string](gitlab-org/security/gitlab@427c7818b229fd45b10cb5de9ea6cc7c451dd4da) ([merge request](gitlab-org/security/gitlab!2724))
- [Fix CSS selector used in specs](gitlab-org/security/gitlab@47bb40d097e2b05ecdbeebf6bdbe6eb9b6db1c7b) ([merge request](gitlab-org/security/gitlab!2727))
## 15.2.2 (2022-08-01)
### Fixed (6 changes)
@ -1381,6 +2049,35 @@ entry.
- [Update GitLab Runner Helm Chart to 0.42.0](gitlab-org/gitlab@cc89200f498fe216864914c79b5b0d1d578edab3) ([merge request](gitlab-org/gitlab!90605))
- [Address database documentation Vale warningss](gitlab-org/gitlab@e5f9a089766bace046d3bbd760a2979865a4bbc0) by @cgives ([merge request](gitlab-org/gitlab!90093))
## 15.1.6 (2022-08-30)
### Security (17 changes)
- [No overriding methods for Sawyer class](gitlab-org/security/gitlab@720a17d03791c298d193b2d49d322a5f259bb6f2) ([merge request](gitlab-org/security/gitlab!2756))
- [Bump yajl-ruby gem version](gitlab-org/security/gitlab@acb8bee73354ddbd7a7a52e3d09c870d1cd99e27) ([merge request](gitlab-org/security/gitlab!2690))
- [Prevent long loops when generating suggested branch name](gitlab-org/security/gitlab@e331ecf658de25901def2ea4a368104b82a0109c) ([merge request](gitlab-org/security/gitlab!2745))
- [IDOR in Zentao integration issue show page](gitlab-org/security/gitlab@0a238baf6a1d4aa0bc834448aefaf756d594a7be) ([merge request](gitlab-org/security/gitlab!2742))
- [Patch VULNDB-255039 (potential Rack cache poisoning)](gitlab-org/security/gitlab@1f5ecd95b3631c8352ff57cf4bee23d26aa51ecc) ([merge request](gitlab-org/security/gitlab!2695))
- [HTML escape the label background color](gitlab-org/security/gitlab@470b75a53ea4383ea30de5a482d39b322f87dfa2) ([merge request](gitlab-org/security/gitlab!2721))
- [Sandbox jupyter notebook HTML output](gitlab-org/security/gitlab@72089898a60de7f17c19a2fa9d4f1330d3052b52) ([merge request](gitlab-org/security/gitlab!2713))
- [Fix unauthorized GFM references in Incident Timeline](gitlab-org/security/gitlab@c62408682ed47bc2e5f93585a5b4e92e8cfebf9f) ([merge request](gitlab-org/security/gitlab!2709))
- [Optimize handling repositories with huge trees](gitlab-org/security/gitlab@396f20e019a9888d1645e9345a82fdf21153bf76) ([merge request](gitlab-org/security/gitlab!2667))
- [Parse commit trailers without using regexp](gitlab-org/security/gitlab@b377a1ecbb37c5359b2c2a0ecfbd911654664700) ([merge request](gitlab-org/security/gitlab!2701))
- [Check for pathological markdown input](gitlab-org/security/gitlab@e3a1376ec70d8d60f11a380cce6e0b3c35f68646) ([merge request](gitlab-org/security/gitlab!2731))
- [Replaced smooshpack to fix the vulnerability in LivePreview](gitlab-org/security/gitlab@d520ffd2a5a75d33ac98c39cd2f2fe623b0e1115) ([merge request](gitlab-org/security/gitlab!2664))
- [Update package auth for group IP allowlist](gitlab-org/security/gitlab@12bb8656bdaa9a7502c0a1b77c12fefb72677ba1) ([merge request](gitlab-org/security/gitlab!2685))
- [Don't show pipeline status](gitlab-org/security/gitlab@7fb43f899f2342704bda81643f8375a126efc2ae) ([merge request](gitlab-org/security/gitlab!2679))
- [Sanitize img attributes in Banzai::Filter::ImageLinkFilter](gitlab-org/security/gitlab@594fa5874fb7cc6b6588bbf8aff2f04b8acbbfd0) ([merge request](gitlab-org/security/gitlab!2677))
- [Validate description length for snippets](gitlab-org/security/gitlab@94ae3d05741bc69b9307e5f58f0d61bf2566c21b) ([merge request](gitlab-org/security/gitlab!2704))
- [Prevent brute force vuln for Git over HTTP(S) requests](gitlab-org/security/gitlab@7b76542e197ea72289c881c312b3a519c8b28e63) ([merge request](gitlab-org/security/gitlab!2718))
## 15.1.5 (2022-08-22)
### Security (2 changes)
- [Validate if values to be saved in Redis can be converted to string](gitlab-org/security/gitlab@0bc82f875f78b6a2703b294b1a5a8d941000f9f2) ([merge request](gitlab-org/security/gitlab!2725))
- [Fix CSS selector used in specs](gitlab-org/security/gitlab@a900e65b192a8415baa6bcd4050566543107ab1f) ([merge request](gitlab-org/security/gitlab!2728))
## 15.1.4 (2022-07-28)
### Security (18 changes)

View file

@ -1 +1 @@
15.3.4
15.4.2

View file

@ -1 +1 @@
3.0.1
3.0.2

View file

@ -1 +1 @@
15.3.0
15.4.0

71
Gemfile
View file

@ -2,6 +2,8 @@
source 'https://rubygems.org'
gem 'bundler-checksum', '~> 0.1.0', path: 'vendor/gems/bundler-checksum', require: false
gem 'rails', '~> 6.1.6.1'
gem 'bootsnap', '~> 1.13.0', require: false
@ -11,7 +13,7 @@ gem 'responders', '~> 3.0'
gem 'sprockets', '~> 3.7.0'
gem 'view_component', '~> 2.61'
gem 'view_component', '~> 2.71.0'
# Default values for AR models
gem 'default_value_for', '~> 3.4.0'
@ -29,32 +31,33 @@ gem 'marginalia', '~> 1.10.0'
gem 'declarative_policy', '~> 1.1.0'
# Authentication libraries
gem 'devise', '~> 4.7.2'
gem 'devise', '~> 4.8.1'
gem 'devise-pbkdf2-encryptable', '~> 0.0.0', path: 'vendor/gems/devise-pbkdf2-encryptable'
gem 'bcrypt', '~> 3.1', '>= 3.1.14'
gem 'doorkeeper', '~> 5.5.0.rc2'
gem 'doorkeeper-openid_connect', '~> 1.7.5'
gem 'rexml', '~> 3.2.5'
gem 'ruby-saml', '~> 1.13.0'
gem 'omniauth', '~> 1.8'
gem 'omniauth-rails_csrf_protection'
gem 'omniauth', '~> 2.1.0'
gem 'omniauth-auth0', '~> 2.0.0'
gem 'omniauth-azure-activedirectory-v2', '~> 1.0'
gem 'omniauth-azure-oauth2', '~> 0.0.9' # See vendor/gems/omniauth-azure-oauth2/README.md
gem 'omniauth-azure-oauth2', '~> 0.0.9', path: 'vendor/gems/omniauth-azure-oauth2' # See gem README.md
gem 'omniauth-cas3', '~> 1.1.4', path: 'vendor/gems/omniauth-cas3' # See vendor/gems/omniauth-cas3/README.md
gem 'omniauth-dingtalk-oauth2', '~> 1.0'
gem 'omniauth-alicloud', '~> 1.0.1'
gem 'omniauth-facebook', '~> 4.0.0'
gem 'omniauth-github', '~> 1.4'
gem 'omniauth-github', '2.0.0'
gem 'omniauth-gitlab', '~> 4.0.0', path: 'vendor/gems/omniauth-gitlab' # See vendor/gems/omniauth-gitlab/README.md
gem 'omniauth-google-oauth2', '~> 0.6.0'
gem 'omniauth-google-oauth2', '~> 1.0.1', path: 'vendor/gems/omniauth-google-oauth2' # See gem README.md
gem 'omniauth-oauth2-generic', '~> 0.2.2'
gem 'omniauth-saml', '~> 1.10'
gem 'omniauth-saml', '~> 2.0.0'
gem 'omniauth-shibboleth', '~> 1.3.0'
gem 'omniauth-twitter', '~> 1.4'
gem 'omniauth_crowd', '~> 2.4.0', path: 'vendor/gems/omniauth_crowd' # See vendor/gems/omniauth_crowd/README.md
gem 'omniauth-authentiq', '~> 0.3.3'
gem 'gitlab-omniauth-openid-connect', '~> 0.9.0', require: 'omniauth_openid_connect'
gem 'omniauth-salesforce', '~> 1.0.5'
gem 'gitlab-omniauth-openid-connect', '~> 0.10.0', require: 'omniauth_openid_connect'
gem 'omniauth-salesforce', '~> 1.0.5', path: 'vendor/gems/omniauth-salesforce' # See gem README.md
gem 'omniauth-atlassian-oauth2', '~> 0.2.0'
gem 'rack-oauth2', '~> 1.21.2'
gem 'jwt', '~> 2.1.0'
@ -164,21 +167,21 @@ gem 'rdoc', '~> 6.3.2'
gem 'org-ruby', '~> 0.9.12'
gem 'creole', '~> 0.5.0'
gem 'wikicloth', '0.8.1'
gem 'asciidoctor', '~> 2.0.10'
gem 'asciidoctor', '~> 2.0.17'
gem 'asciidoctor-include-ext', '~> 0.4.0', require: false
gem 'asciidoctor-plantuml', '~> 0.0.12'
gem 'asciidoctor-plantuml', '~> 0.0.16'
gem 'asciidoctor-kroki', '~> 0.5.0', require: false
gem 'rouge', '~> 3.30.0'
gem 'truncato', '~> 0.7.12'
gem 'bootstrap_form', '~> 4.2.0'
gem 'nokogiri', '~> 1.13.0'
gem 'nokogiri', '~> 1.13.8'
gem 'escape_utils', '~> 1.1'
# Calendar rendering
gem 'icalendar'
# Diffs
gem 'diffy', '~> 3.3'
gem 'diffy', '~> 3.4'
gem 'diff_match_patch', '~> 0.1.0'
# Application server
@ -187,7 +190,7 @@ gem 'rack', '~> 2.2.4'
gem 'rack-timeout', '~> 0.6.0', require: 'rack/timeout/base'
group :puma do
gem 'puma', '~> 5.6.4', require: false
gem 'puma', '~> 5.6.5', require: false
gem 'puma_worker_killer', '~> 0.3.1', require: false
gem 'sd_notify', '~> 0.1.0', require: false
end
@ -199,8 +202,8 @@ gem 'state_machines-activerecord', '~> 0.8.0'
gem 'acts-as-taggable-on', '~> 9.0'
# Background jobs
gem 'sidekiq', '~> 6.4'
gem 'sidekiq-cron', '~> 1.2'
gem 'sidekiq', '~> 6.4.0'
gem 'sidekiq-cron', '~> 1.4.0'
gem 'redis-namespace', '~> 1.8.1'
gem 'gitlab-sidekiq-fetcher', '0.8.0', require: 'sidekiq-reliable-fetch'
@ -233,7 +236,7 @@ gem 'js_regex', '~> 3.7'
gem 'device_detector'
# Redis
gem 'redis', '~> 4.4.0'
gem 'redis', '~> 4.7.0'
gem 'connection_pool', '~> 2.0'
# Redis session store
@ -272,7 +275,9 @@ gem 'babosa', '~> 1.0.4'
gem 'loofah', '~> 2.18.0'
# Working with license
gem 'licensee', '~> 9.14.1'
# Detects the open source license the repository includes
# This version needs to be in sync with gitlab-org/gitaly
gem 'licensee', '~> 9.15'
# Detect and convert string character encoding
gem 'charlock_holmes', '~> 0.7.7'
@ -318,9 +323,7 @@ gem 'premailer-rails', '~> 1.10.3'
# LabKit: Tracing and Correlation
gem 'gitlab-labkit', '~> 0.24.0'
# 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'
gem 'thrift', '>= 0.16.0'
# I18n
gem 'ruby_parser', '~> 3.15', require: false
@ -338,22 +341,21 @@ gem 'peek', '~> 1.1'
gem 'snowplow-tracker', '~> 0.6.1'
# Metrics
gem 'method_source', '~> 1.0', require: false
gem 'webrick', '~> 1.6.1', require: false
gem 'prometheus-client-mmap', '~> 0.16', require: 'prometheus/client'
gem 'warning', '~> 1.3.0'
group :development do
gem 'lefthook', '~> 1.1.0', require: false
gem 'lefthook', '~> 1.1.1', require: false
gem 'rubocop'
gem 'solargraph', '~> 0.45.0', require: false
gem 'solargraph', '~> 0.46.0', require: false
gem 'letter_opener_web', '~> 2.0.0'
gem 'lookbook'
gem 'lookbook', '~> 1.0'
# Better errors handler
gem 'better_errors', '~> 2.9.0'
gem 'better_errors', '~> 2.9.1'
gem 'sprite-factory', '~> 1.7'
end
@ -380,12 +382,14 @@ group :development, :test do
gem 'spring', '~> 2.1.0'
gem 'spring-commands-rspec', '~> 1.0.4'
gem 'gitlab-styles', '~> 7.1.0', require: false
gem 'gitlab-styles', '~> 8.0.0', require: false
gem 'haml_lint', '~> 0.36.0', require: false
gem 'haml_lint', '~> 0.40.0', require: false
gem 'bundler-audit', '~> 0.7.0.1', require: false
# Benchmarking & profiling
gem 'benchmark-ips', '~> 2.3.0', require: false
gem 'benchmark-memory', '~> 0.1', require: false
gem 'knapsack', '~> 1.21.1'
gem 'crystalball', '~> 0.7.0', require: false
@ -406,7 +410,7 @@ group :development, :test do
end
group :development, :test, :danger do
gem 'gitlab-dangerfiles', '~> 3.5.0', require: false
gem 'gitlab-dangerfiles', '~> 3.5.2', require: false
end
group :development, :test, :coverage do
@ -457,10 +461,9 @@ gem 'email_reply_trimmer', '~> 0.1'
gem 'html2text'
gem 'ruby-prof', '~> 1.3.0'
gem 'stackprof', '~> 0.2.15', require: false
gem 'stackprof', '~> 0.2.21', require: false
gem 'rbtrace', '~> 0.4', require: false
gem 'memory_profiler', '~> 0.9', require: false
gem 'benchmark-memory', '~> 0.1', require: false
gem 'activerecord-explain-analyze', '~> 0.1', require: false
# OAuth
@ -480,10 +483,10 @@ gem 'net-ntp'
gem 'ssh_data', '~> 1.3'
# Spamcheck GRPC protocol definitions
gem 'spamcheck', '~> 0.1.0'
gem 'spamcheck', '~> 1.0.0'
# Gitaly GRPC protocol definitions
gem 'gitaly', '~> 15.3.0-rc3'
gem 'gitaly', '~> 15.4.0-rc2'
# KAS GRPC protocol definitions
gem 'kas-grpc', '~> 0.0.2'
@ -524,6 +527,8 @@ gem 'erubi', '~> 1.9.0'
gem 'mail', '= 2.7.1'
gem 'mail-smtp_pool', '~> 0.1.0', path: 'vendor/gems/mail-smtp_pool', require: false
gem 'microsoft_graph_mailer', '~> 0.1.0', path: 'vendor/gems/microsoft_graph_mailer'
# File encryption
gem 'lockbox', '~> 0.6.2'

639
Gemfile.checksum Normal file
View file

@ -0,0 +1,639 @@
[
{"name":"RedCloth","version":"4.3.2","platform":"ruby","checksum":"1ee7bc55c8dcec92cf7741a2132a9a6cd19e4b884fbc1b3aca23e1a4fcd92d55"},
{"name":"acme-client","version":"2.0.11","platform":"ruby","checksum":"edf6da9f3c5dbe3ab0c6738eb3b97978b7a60e3500445480d2a72fcc610089de"},
{"name":"actioncable","version":"6.1.6.1","platform":"ruby","checksum":"11f079141cf032026881e4a79ae0cc93753351089c1b6ca1ed30a8a6a21f961b"},
{"name":"actionmailbox","version":"6.1.6.1","platform":"ruby","checksum":"a4cc16fe634c9de4e22669fc4bf20d5b84f65039c7e3d7308c804b82726d03d2"},
{"name":"actionmailer","version":"6.1.6.1","platform":"ruby","checksum":"13964bff4a75efd705304cb7aeb71380a4b11d404c7304b67f3bc3208cde12a7"},
{"name":"actionpack","version":"6.1.6.1","platform":"ruby","checksum":"f3e0a82a62aa36fecadbacbb266e38338da032f18aaf97674f335671b420bdd4"},
{"name":"actiontext","version":"6.1.6.1","platform":"ruby","checksum":"ff26b96769b6f4bdf3c0e74f613b232b2cdab7e46f1433c9cfa4fdcd081afac0"},
{"name":"actionview","version":"6.1.6.1","platform":"ruby","checksum":"a87fc7d2c4fe9b6357492a3ee361be8169f3f319f47bf70fda1b1718b944d06b"},
{"name":"activejob","version":"6.1.6.1","platform":"ruby","checksum":"9efee4499d31aaaab73b843a09564d4a2aabcd51c2088361a92e08766ab0db65"},
{"name":"activemodel","version":"6.1.6.1","platform":"ruby","checksum":"239953365a7da4bcb9a3819b8ac2557a58a3ba89ddd36bee9bb3eca818e4a3e2"},
{"name":"activerecord","version":"6.1.6.1","platform":"ruby","checksum":"82f74804ab34ea549fd593e5ced68c32426564786127d2de9b933ba78467d0b0"},
{"name":"activerecord-explain-analyze","version":"0.1.0","platform":"ruby","checksum":"5debb11fe23f35b91953a80677d80ba9284ee737fd9d148c1d7603ce45217f7b"},
{"name":"activestorage","version":"6.1.6.1","platform":"ruby","checksum":"3fbf4c355a69a46e14676004ad8e06245bdce7f96858e72782715218326aafc5"},
{"name":"activesupport","version":"6.1.6.1","platform":"ruby","checksum":"5fc9fd6fe6f755e7523bb3aaf4370fb91a8416b39e3202939fd8bded4fec606d"},
{"name":"acts-as-taggable-on","version":"9.0.0","platform":"ruby","checksum":"5a409be0eae125b7b02c1a7316264b40d4a583584a13d4ea4a6d82acdb351b86"},
{"name":"addressable","version":"2.8.0","platform":"ruby","checksum":"f76d29d2d1f54b6c6a49aec58f9583b08d97e088c227a3fcba92f6c6531d5908"},
{"name":"aes_key_wrap","version":"1.1.0","platform":"ruby","checksum":"b935f4756b37375895db45669e79dfcdc0f7901e12d4e08974d5540c8e0776a5"},
{"name":"akismet","version":"3.0.0","platform":"ruby","checksum":"74991b8e3d3257eeea996b47069abb8da2006c84a144255123e8dffd1c86b230"},
{"name":"android_key_attestation","version":"0.3.0","platform":"ruby","checksum":"467eb01a99d2bb48ef9cf24cc13712669d7056cba5a52d009554ff037560570b"},
{"name":"apollo_upload_server","version":"2.1.0","platform":"ruby","checksum":"e5f3c9dda0c2ca775d007072742b98d517dfd91a667111fedbcdc94dfabd904e"},
{"name":"asana","version":"0.10.13","platform":"ruby","checksum":"36d0d37f8dd6118a54580f1b80224875d7b6a9027598938e1722a508bfc2d7ac"},
{"name":"asciidoctor","version":"2.0.17","platform":"ruby","checksum":"ed5b5e399e8d64994cc16f0983f993d6e33990909a8415b6fc8b786cdeb00f3d"},
{"name":"asciidoctor-include-ext","version":"0.4.0","platform":"ruby","checksum":"406adb9d2fbfc25536609ca13b787ed704dc06a4e49d6709b83f3bad578f7878"},
{"name":"asciidoctor-kroki","version":"0.5.0","platform":"ruby","checksum":"622c8b74796689bdaf8abdf89ad5295b11ce310e3d193e28f19e5baf58d45f12"},
{"name":"asciidoctor-plantuml","version":"0.0.16","platform":"ruby","checksum":"407e47cd1186ded5ccc75f0c812e5524c26c571d542247c5132abb8f47bd1793"},
{"name":"ast","version":"2.4.2","platform":"ruby","checksum":"1e280232e6a33754cde542bc5ef85520b74db2aac73ec14acef453784447cc12"},
{"name":"atlassian-jwt","version":"0.2.0","platform":"ruby","checksum":"52e653e9d6062d7a740c3675b0e79fa08367927c6fc17f5476d1b6b3798c6eb2"},
{"name":"attr_encrypted","version":"3.1.0","platform":"ruby","checksum":"4f0682604714ed4599cf00771ad27e82f0b51b0ed8644af51a43d21fbe129b59"},
{"name":"attr_required","version":"1.0.1","platform":"ruby","checksum":"024e10393bd30901e1adf6769bd756b873a5ef7da60f86f8f11066116b5742bc"},
{"name":"autoprefixer-rails","version":"10.2.5.1","platform":"ruby","checksum":"3711d67f1112361c7628847ac192d8aa6f3b8abe47527aee8a69dc8985e798ee"},
{"name":"awesome_print","version":"1.9.2","platform":"ruby","checksum":"e99b32b704acff16d768b3468680793ced40bfdc4537eb07e06a4be11133786e"},
{"name":"awrence","version":"1.1.1","platform":"ruby","checksum":"9be584c97408ed92d5e1ca11740853646fe270de675f2f8dd44e8233226dfc97"},
{"name":"aws-eventstream","version":"1.2.0","platform":"ruby","checksum":"ffa53482c92880b001ff2fb06919b9bb82fd847cbb0fa244985d2ebb6dd0d1df"},
{"name":"aws-partitions","version":"1.600.0","platform":"ruby","checksum":"23592386dd0bb34c38fae2714eb1ab5c18fbef714f22b042815a92fdd51fa733"},
{"name":"aws-sdk-cloudformation","version":"1.41.0","platform":"ruby","checksum":"31e47539719734413671edf9b1a31f8673fbf9688549f50c41affabbcb1c6b26"},
{"name":"aws-sdk-core","version":"3.131.1","platform":"ruby","checksum":"481c602d682b61abccb4e9f5b64750907bb49758f6f31b3bec599819951a3f7a"},
{"name":"aws-sdk-kms","version":"1.57.0","platform":"ruby","checksum":"ffd7dbb9b4251f29d4f508af761d0addd7035a346a88e3481cdb4dc548e51bd5"},
{"name":"aws-sdk-s3","version":"1.114.0","platform":"ruby","checksum":"ce0f71df1a7b0fb1f88d40a70636ef1a9b08e69fb560694c5dab3f4ac7efcde4"},
{"name":"aws-sigv4","version":"1.5.0","platform":"ruby","checksum":"3f81c08bacabec6cbc77ebbbac755ca6132a74a4a3279afbde64db83796ce776"},
{"name":"azure-storage-blob","version":"2.0.3","platform":"ruby","checksum":"61b76118843c91776bd24bee22c74adafeb7c4bb3a858a325047dae3b59d0363"},
{"name":"azure-storage-common","version":"2.0.4","platform":"ruby","checksum":"608f4daab0e06b583b73dcffd3246ea39e78056de31630286b0cf97af7d6956b"},
{"name":"babosa","version":"1.0.4","platform":"ruby","checksum":"18dea450f595462ed7cb80595abd76b2e535db8c91b350f6c4b3d73986c5bc99"},
{"name":"backport","version":"1.2.0","platform":"ruby","checksum":"912c7dfdd9ee4625d013ddfccb6205c3f92da69a8990f65c440e40f5b2fc7f75"},
{"name":"base32","version":"0.3.2","platform":"ruby","checksum":"532e9b19c5dd1fce281df67fc93a803ebd5d26426a93f6dda6612769bc46fe2c"},
{"name":"batch-loader","version":"2.0.1","platform":"ruby","checksum":"93f711df78d316ee0440a7a45daba4f5418d0ee2b5f58f60c9ea038424e7a89d"},
{"name":"bcrypt","version":"3.1.16","platform":"java","checksum":"2925a1546fa8e85bdb1b10f1fc95c4e1ea15992ada16adea4af82b0978ed662c"},
{"name":"bcrypt","version":"3.1.16","platform":"ruby","checksum":"0b8bf031ba81aa76c0f10c5a8dac779b6035d84b09af1dbb2b1a32a7e360210b"},
{"name":"benchmark","version":"0.2.0","platform":"ruby","checksum":"5f7087b794613abdd3ac9c13f4351f65b164bcb15ced2ad29508e365f9b28c77"},
{"name":"benchmark-ips","version":"2.3.0","platform":"ruby","checksum":"12443aa327d3129aa965244f79d7d5cb0f692f0f92ba7db76fba61526a40062e"},
{"name":"benchmark-malloc","version":"0.2.0","platform":"ruby","checksum":"37c68f0435261634026f584d79956a35325a3027e3e6b4cc8d7575aa10537e6b"},
{"name":"benchmark-memory","version":"0.1.2","platform":"ruby","checksum":"aa7bfe6776174d0ddefe6fb39945d88fff6d76eac165690188391d9acd441c87"},
{"name":"benchmark-perf","version":"0.6.0","platform":"ruby","checksum":"fe2b01959f3de0f9dd34820d54ef881eb4f3589fccb7d17b63068ac92d7f9621"},
{"name":"benchmark-trend","version":"0.4.0","platform":"ruby","checksum":"de5a02a9f443babefbbd97784759820decee8554a0c273d859c02a0990845d81"},
{"name":"better_errors","version":"2.9.1","platform":"ruby","checksum":"39efc116ab04d6c4200052c5782936e4bd99906978d098992bce6bf81d054284"},
{"name":"bindata","version":"2.4.10","platform":"ruby","checksum":"798b5e3ec00e9d562243076b819c16b1e226eb176d5b7b5cd21417bc3589981a"},
{"name":"binding_ninja","version":"0.2.3","platform":"java","checksum":"bbcf70b211d6e397493bf57c249bbec6aaf28fa7dafeb78e447b1b2f0610484f"},
{"name":"binding_ninja","version":"0.2.3","platform":"ruby","checksum":"4a85550a0066ee4721506b4e150857486808e50c9ddfeed04bdc896bb61eca9d"},
{"name":"bootsnap","version":"1.13.0","platform":"ruby","checksum":"c673282ec0f48506f093ca9acefe0f666d1ab9fda716e49fb95c9fe677653e78"},
{"name":"bootstrap_form","version":"4.2.0","platform":"ruby","checksum":"f578b3c900d2cf15fab641064d357318b29e285bd5fdf090f903727912889710"},
{"name":"browser","version":"4.2.0","platform":"ruby","checksum":"fc194b422ea8b313f98443c6ec249ccf252e29007ce01bb99ebe828bd7fe3e60"},
{"name":"builder","version":"3.2.4","platform":"ruby","checksum":"99caf08af60c8d7f3a6b004029c4c3c0bdaebced6c949165fe98f1db27fbbc10"},
{"name":"bullet","version":"7.0.2","platform":"ruby","checksum":"4b7986b366f694bb05d5c1b4ea8ba949a99224d4511bf02f0c3944112f719c81"},
{"name":"bundler-audit","version":"0.7.0.1","platform":"ruby","checksum":"12d853cb0b92fa8868abbb539414d7a33da9e48b792e2ff28271d36c8ace8912"},
{"name":"byebug","version":"11.1.3","platform":"ruby","checksum":"2485944d2bb21283c593d562f9ae1019bf80002143cc3a255aaffd4e9cf4a35b"},
{"name":"capybara","version":"3.35.3","platform":"ruby","checksum":"3389f8203b05175352b763f4d04c31b29ba606a96224649ac42ef967f56538ee"},
{"name":"capybara-screenshot","version":"1.0.22","platform":"ruby","checksum":"f86040349a0df7f723123460d9456023f7d693068338991529f10f670fa420f5"},
{"name":"carrierwave","version":"1.3.2","platform":"ruby","checksum":"3c42f3f3c2c83b29efe2b441d246829c42bc626ac3f6af1486c9a62d971fb114"},
{"name":"cbor","version":"0.5.9.6","platform":"ruby","checksum":"434a147658dd1df24ec9e7b3297c1fd4f8a691c97d0e688b3049df8e728b2114"},
{"name":"character_set","version":"1.4.1","platform":"java","checksum":"38b632136b40e02fecba2898497b07ac640cc121f17ac536eaf19873d50053d0"},
{"name":"character_set","version":"1.4.1","platform":"ruby","checksum":"f71b1ac35b21c4c6f9f26b8a67c7eec8e10bdf0da17488ac7f8fae756d9f8062"},
{"name":"charlock_holmes","version":"0.7.7","platform":"ruby","checksum":"1790eca3f661ffa6bbf5866c53c7191e4b8472626fc4997ff9dbe7c425e2cb43"},
{"name":"chef-config","version":"16.10.17","platform":"ruby","checksum":"1f4961e4d6aa4df374f739c6f62ae1d2be03dcff1bd93e56d9c963b8a156747c"},
{"name":"chef-utils","version":"16.10.17","platform":"ruby","checksum":"a74253da6aab8ff92c955549536bdecbc4d1ce8032c8201576f2a8ef4e8ed7b3"},
{"name":"childprocess","version":"3.0.0","platform":"ruby","checksum":"4579a87cdc962de252eebf1482a4185fad383ae7dbe29a746ba2be8e261280c5"},
{"name":"chunky_png","version":"1.3.5","platform":"ruby","checksum":"b6ab1011b2e79bcc973c92deee4110d071d5cd59ed950efcd0aba49a5f57c06d"},
{"name":"citrus","version":"3.0.2","platform":"ruby","checksum":"4ec2412fc389ad186735f4baee1460f7900a8e130ffe3f216b30d4f9c684f650"},
{"name":"claide","version":"1.1.0","platform":"ruby","checksum":"6d3c5c089dde904d96aa30e73306d0d4bd444b1accb9b3125ce14a3c0183f82e"},
{"name":"claide-plugins","version":"0.9.2","platform":"ruby","checksum":"c7ea78bc067ab23bce8515497cdcdcb8f01c86dadfbe13c44644e382922c1c2e"},
{"name":"coderay","version":"1.1.3","platform":"ruby","checksum":"dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b"},
{"name":"colored2","version":"3.1.2","platform":"ruby","checksum":"b13c2bd7eeae2cf7356a62501d398e72fde78780bd26aec6a979578293c28b4a"},
{"name":"commonmarker","version":"0.23.4","platform":"ruby","checksum":"95d9cb050576376374a66d71a4feab3562e0955aab9d80a3e8606a5cf5e9c7ce"},
{"name":"concurrent-ruby","version":"1.1.10","platform":"ruby","checksum":"244cb1ca0d91ec2c15ca2209507c39fb163336994428e16fbd3f465c87bd8e68"},
{"name":"connection_pool","version":"2.2.5","platform":"ruby","checksum":"13a8fc3921ce4df8e04fb65f1037251decb08d74757b41163688bd1c1feccd39"},
{"name":"contracts","version":"0.11.0","platform":"ruby","checksum":"df6e438efa89c31dd3095851c3f7a25dfdae36b35ff1d4547f1d92941b3c7286"},
{"name":"cork","version":"0.3.0","platform":"ruby","checksum":"a0a0ac50e262f8514d1abe0a14e95e71c98b24e3378690e5d044daf0013ad4bc"},
{"name":"cose","version":"1.0.0","platform":"ruby","checksum":"520ebaad97b56d2873de02ff4e2c973f5e77ce2f8edbda454af9ee3073643bc0"},
{"name":"countries","version":"3.0.0","platform":"ruby","checksum":"ecb4287436f83f4bb098a9462828b145bec3143fa49e7ce5b1714d0ee5454770"},
{"name":"crack","version":"0.4.3","platform":"ruby","checksum":"5318ba8cd9cf7e0b5feb38948048503ba4b1fdc1b6ff30a39f0a00feb6036b29"},
{"name":"crass","version":"1.0.6","platform":"ruby","checksum":"dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d"},
{"name":"creole","version":"0.5.0","platform":"ruby","checksum":"951701e2d80760f156b1cb2a93471ca97c076289becc067a33b745133ed32c03"},
{"name":"crystalball","version":"0.7.0","platform":"ruby","checksum":"6e729f372a5071daec877adb40c5df4cb25fe21f350635e2a9624373fc151ef2"},
{"name":"css_parser","version":"1.11.0","platform":"ruby","checksum":"568926c3193579446ad3e3f9d761c73e2918ee5b3b7757a1a49ec166c67d6de1"},
{"name":"danger","version":"8.6.1","platform":"ruby","checksum":"d95eb58b41f68d3aaa9bbef697916b6b4d161a38819517c98562531be75cdfd8"},
{"name":"danger-gitlab","version":"8.0.0","platform":"ruby","checksum":"497dd7d0f6513913de651019223d8058cf494df10acbd17de92b175dfa04a3a8"},
{"name":"database_cleaner","version":"1.7.0","platform":"ruby","checksum":"bdf833c197afac7054015bcde2567c3834c366bbfe6a377c30151ca984b32016"},
{"name":"dead_end","version":"3.1.1","platform":"ruby","checksum":"1011df7f7c0149be004e11cbbc37747760227c55305cd902fd3c06e1394b2f5b"},
{"name":"deckar01-task_list","version":"2.3.1","platform":"ruby","checksum":"205a08c22a8f05c063d43c452aeada4214b58fdce1e55e92ec709e2cfb9e7ca1"},
{"name":"declarative","version":"0.0.20","platform":"ruby","checksum":"8021dd6cb17ab2b61233c56903d3f5a259c5cf43c80ff332d447d395b17d9ff9"},
{"name":"declarative-option","version":"0.1.0","platform":"ruby","checksum":"17508349f51c5631e5ad4158c29f78a4b2de618abffa066d76c11953705f91bc"},
{"name":"declarative_policy","version":"1.1.0","platform":"ruby","checksum":"9af4cf299ade03f2bbf63908f2ce6a117d132fc714c39a128596667fb13331cb"},
{"name":"default_value_for","version":"3.4.0","platform":"ruby","checksum":"35d2dc51675a6bedfa875778628d44b823e0d7336da9432519477174ebb0f40f"},
{"name":"deprecation_toolkit","version":"1.5.1","platform":"ruby","checksum":"a8a1ab1a19ae40ea12560b65010e099f3459ebde390b76621ef0c21c516a04ba"},
{"name":"derailed_benchmarks","version":"2.1.1","platform":"ruby","checksum":"25b0ba79dc52c715ea6cce35fd8afbbf84511ef1c7f2bbe1d8b7a30addc6aab3"},
{"name":"device_detector","version":"1.0.0","platform":"ruby","checksum":"b800fb3150b00c23e87b6768011808ac1771fffaae74c3238ebaf2b782947a7d"},
{"name":"devise","version":"4.8.1","platform":"ruby","checksum":"fdd48bbe79a89e7c1152236a70479842ede48bea4fa7f4f2d8da1f872559803e"},
{"name":"devise-two-factor","version":"4.0.2","platform":"ruby","checksum":"6548d2696ed090d27046f888f4fa7380f151e0f823902d46fd9b91e7d0cac511"},
{"name":"diff-lcs","version":"1.5.0","platform":"ruby","checksum":"49b934001c8c6aedb37ba19daec5c634da27b318a7a3c654ae979d6ba1929b67"},
{"name":"diff_match_patch","version":"0.1.0","platform":"ruby","checksum":"b36057bfcfeaedf19dcb7b2c28c19ee625bd6ec6d0d182717d3ef22b3879c40e"},
{"name":"diffy","version":"3.4.2","platform":"ruby","checksum":"36b42ffbe5138ddc56182107c24ad8d6b066ecfd2876829f391e3a4993d89ae1"},
{"name":"discordrb-webhooks","version":"3.4.2","platform":"ruby","checksum":"cfdba8a4b28236b6ab34e37389f881a59c241aeb5be0a4447249efd4e4383c6e"},
{"name":"docile","version":"1.4.0","platform":"ruby","checksum":"5f1734bde23721245c20c3d723e76c104208e1aa01277a69901ce770f0ebb8d3"},
{"name":"domain_name","version":"0.5.20190701","platform":"ruby","checksum":"000a600454cb4a344769b2f10b531765ea7bd3a304fe47ed12e5ca1eab969851"},
{"name":"doorkeeper","version":"5.5.0.rc2","platform":"ruby","checksum":"93a322ffca3cadbfb862b0199f78674d8372780afdd7471e657064610bb7b2d5"},
{"name":"doorkeeper-openid_connect","version":"1.7.5","platform":"ruby","checksum":"2dea201ffd9e4bec573609c90bb638254a48bfa3de3ec4af892ec64e0b5947b2"},
{"name":"dotenv","version":"2.7.6","platform":"ruby","checksum":"2451ed5e8e43776d7a787e51d6f8903b98e446146c7ad143d5678cc2c409d547"},
{"name":"dry-configurable","version":"0.12.0","platform":"ruby","checksum":"87a9579a04dfbae73e401d694282800d64bbdb8631cb3e987bfb79b673df7c67"},
{"name":"dry-container","version":"0.7.2","platform":"ruby","checksum":"a071824ba3451048b23500210f96a2b9facd6e46ac687f65e49c75d18786f6da"},
{"name":"dry-core","version":"0.5.0","platform":"ruby","checksum":"3af9777320a7c930766e2fe638df970c62145100f673caf7aae25ecc3a2c4493"},
{"name":"dry-equalizer","version":"0.3.0","platform":"ruby","checksum":"866c9245b98280696ee7799f14e0c89d19d0afe890832aaf914649f9c0bc5867"},
{"name":"dry-inflector","version":"0.2.0","platform":"ruby","checksum":"c7cf29c3dc9d961c115aac873ac39a4ff6988fae7f7871c473a9694c1f6fb39e"},
{"name":"dry-logic","version":"1.1.0","platform":"ruby","checksum":"eca4b39084c9d22778144b7e4cf8db20e8bab7de6d89deb220d20a9fde60b69d"},
{"name":"dry-types","version":"1.4.0","platform":"ruby","checksum":"68003bb0db3077fecd0270f4ae486a82ee76bab6d666fdc4e094380a67c9a1df"},
{"name":"e2mmap","version":"0.1.0","platform":"ruby","checksum":"45ee6bba2d97a7d91ee0885774261feee87e28c598355df31e93b56196ec0f59"},
{"name":"ecma-re-validator","version":"0.3.0","platform":"ruby","checksum":"66a95bd8c2b0641baf1fbf9bd355a0dcf13c82c6883f6f496a722420a8b6e0d7"},
{"name":"ed25519","version":"1.3.0","platform":"java","checksum":"8e5d2f8a5325c7a463d61d1a48406ce54074c610f3dccd889e6532c9527a3894"},
{"name":"ed25519","version":"1.3.0","platform":"ruby","checksum":"514a5584f84d39daac568a17ec93a4e7261e140c52c562ed8c382c18456e627d"},
{"name":"elasticsearch","version":"7.13.3","platform":"ruby","checksum":"58b1ad787fafd41836388176dc09e914b2f6e0b257e73b8a51a704ba6bf75b41"},
{"name":"elasticsearch-api","version":"7.13.3","platform":"ruby","checksum":"888f35c64c896db7909f1a56f6c383c45ad6b73c3231649b9c989e39b3d2ba2e"},
{"name":"elasticsearch-model","version":"7.2.0","platform":"ruby","checksum":"2cc1810a45619223c43eff78c6112988f12d475d201523243007dccc6ef96cc7"},
{"name":"elasticsearch-rails","version":"7.2.1","platform":"ruby","checksum":"0750dc0e956358d9a3a0912a8186c266ef19f8de0b178c61996ed1a6998156e4"},
{"name":"elasticsearch-transport","version":"7.13.3","platform":"ruby","checksum":"ab8d0226652fb5b32923f172c1abfbc7464058b7de2d9dde3215c88d518c8e2e"},
{"name":"email_reply_trimmer","version":"0.1.6","platform":"ruby","checksum":"9fede222ce660993e4e2e3dad282535ceb7914e246eb8302c19aa9e021f7326e"},
{"name":"email_spec","version":"2.2.0","platform":"ruby","checksum":"60b7980580a835e7f676db60667f17a2d60e8e0e39c26d81cfc231805c544d79"},
{"name":"encryptor","version":"3.0.0","platform":"ruby","checksum":"abf23f94ab4d864b8cea85b43f3432044a60001982cda7c33c1cd90da8db1969"},
{"name":"erubi","version":"1.9.0","platform":"ruby","checksum":"7d84d6037396418c4ba30bc40ed7a0aec9beb567ce55bcecb12e8c0cb1ed9fdb"},
{"name":"escape_utils","version":"1.2.1","platform":"ruby","checksum":"e5292fe8d7e12a9bcb4502d99e28fb602e4e1514690d98a1c4957f6f77b4b162"},
{"name":"et-orbi","version":"1.2.7","platform":"ruby","checksum":"3b693d47f94a4060ccc07e60adda488759b1e8b9228a633ebbad842dfc245fb4"},
{"name":"ethon","version":"0.15.0","platform":"ruby","checksum":"0809805a035bc10f54162ca99f15ded49e428e0488bcfe1c08c821e18261a74d"},
{"name":"excon","version":"0.90.0","platform":"ruby","checksum":"01beac0f20652b12de95aef931f72bcb82ffb009e1c34c42a5cf5df93f4070ae"},
{"name":"execjs","version":"2.8.1","platform":"ruby","checksum":"6d939919cfd81bcc4d6556f322c3995a70cfe4289ea0bd3b1f999b489c323088"},
{"name":"expression_parser","version":"0.9.0","platform":"ruby","checksum":"2b56db3cffc48c3337f4f29f5bc2374c86e7ba29acb40269c74bb55af9f868a4"},
{"name":"extended-markdown-filter","version":"0.6.0","platform":"ruby","checksum":"46844b5740b1703a0e0674e31a17c83d1244a3198abb3aae51cad1eb152eb19e"},
{"name":"factory_bot","version":"6.2.0","platform":"ruby","checksum":"d181902cdda531cf6cef036001b3a700a7b5e04bac63976864530120b2ac7d13"},
{"name":"factory_bot_rails","version":"6.2.0","platform":"ruby","checksum":"278b969666b078e76e1c972c501da9b1fac15e5b0ff328cc7ce400366164d0a1"},
{"name":"faraday","version":"1.10.0","platform":"ruby","checksum":"a42158d5c1932c16fd483c512f7e0797b4916096bcf0eb5fb927a1c915a7ea02"},
{"name":"faraday-cookie_jar","version":"0.0.7","platform":"ruby","checksum":"f3cbbe6f2de3d4028f00a67ae4196b99348a6dc3c065fdae6d3c7123fa8b1402"},
{"name":"faraday-em_http","version":"1.0.0","platform":"ruby","checksum":"7a3d4c7079789121054f57e08cd4ef7e40ad1549b63101f38c7093a9d6c59689"},
{"name":"faraday-em_synchrony","version":"1.0.0","platform":"ruby","checksum":"460dad1c30cc692d6e77d4c391ccadb4eca4854b315632cd7e560f74275cf9ed"},
{"name":"faraday-excon","version":"1.1.0","platform":"ruby","checksum":"b055c842376734d7f74350fe8611542ae2000c5387348d9ba9708109d6e40940"},
{"name":"faraday-http-cache","version":"2.4.0","platform":"ruby","checksum":"388f901d63bd5903b470c5696bc886ed94fab0c4206b25c3761e7b9bdbbf6c90"},
{"name":"faraday-httpclient","version":"1.0.1","platform":"ruby","checksum":"4c8ff1f0973ff835be8d043ef16aaf54f47f25b7578f6d916deee8399a04d33b"},
{"name":"faraday-multipart","version":"1.0.4","platform":"ruby","checksum":"9012021ab57790f7d712f590b48d5f948b19b43cfa11ca83e6459f06090b0725"},
{"name":"faraday-net_http","version":"1.0.1","platform":"ruby","checksum":"3245ce406ebb77b40e17a77bfa66191dda04be2fd4e13a78d8a4305854d328ba"},
{"name":"faraday-net_http_persistent","version":"1.2.0","platform":"ruby","checksum":"0b0cbc8f03dab943c3e1cc58d8b7beb142d9df068b39c718cd83e39260348335"},
{"name":"faraday-patron","version":"1.0.0","platform":"ruby","checksum":"dc2cd7b340bb3cc8e36bcb9e6e7eff43d134b6d526d5f3429c7a7680ddd38fa7"},
{"name":"faraday-rack","version":"1.0.0","platform":"ruby","checksum":"ef60ec969a2bb95b8dbf24400155aee64a00fc8ba6c6a4d3968562bcc92328c0"},
{"name":"faraday-retry","version":"1.0.3","platform":"ruby","checksum":"add154f4f399243cbe070806ed41b96906942e7f5259bb1fe6daf2ec8f497194"},
{"name":"faraday_middleware","version":"1.2.0","platform":"ruby","checksum":"ded15d574d50e92bd04448d5566913af5cb1a01b2fa311ceecc2464fa0ab88af"},
{"name":"faraday_middleware-aws-sigv4","version":"0.3.0","platform":"ruby","checksum":"744654bd5b15539a54aed39b806e2dfb45aa47708fa1e6f6766fedcda6c262be"},
{"name":"faraday_middleware-multi_json","version":"0.0.6","platform":"ruby","checksum":"38fc4dab7a78916ad09827d5a164aab62fbf2cb8b9de0507763de1f561d7a118"},
{"name":"fast_blank","version":"1.0.0","platform":"ruby","checksum":"a67c93dbcb8c34ba40973688e4b600b640760503362f3aeb63b37ebe3d8d419b"},
{"name":"fast_gettext","version":"2.1.0","platform":"ruby","checksum":"0d095dbc5a003b3caea13b9569288703086ae05aac2cc6d7b0881c8e0a07ae15"},
{"name":"ffaker","version":"2.10.0","platform":"ruby","checksum":"4323b85b4bbdb0d932695b2ebffeb3645304215092e64e2a451630a9f5a5e507"},
{"name":"ffi","version":"1.15.5","platform":"java","checksum":"610b9a993e67b812123cfedc1c45a639aa2f2455747af5443d54f98e092b1abe"},
{"name":"ffi","version":"1.15.5","platform":"ruby","checksum":"6f2ed2fa68047962d6072b964420cba91d82ce6fa8ee251950c17fca6af3c2a0"},
{"name":"ffi","version":"1.15.5","platform":"x64-mingw-ucrt","checksum":"3dea5573d11cd4c8a965e861052b0036098b239140caa0a98940c5c84eb5990d"},
{"name":"ffi","version":"1.15.5","platform":"x64-mingw32","checksum":"9acc4e474bef25dbcf827b1e6fce4067e9a1eff74a0296d25f0af392fafcd096"},
{"name":"ffi","version":"1.15.5","platform":"x86-mingw32","checksum":"6e52c39fdbbccc085ae05d489d1b835ce05dcdf2a4c88ba739e3b42afd2b5404"},
{"name":"ffi-compiler","version":"1.0.1","platform":"ruby","checksum":"019f389b078a2fec9de7f4f65771095f80a447e34436b4588bcb629e2a564c30"},
{"name":"ffi-yajl","version":"2.3.4","platform":"ruby","checksum":"a54b70a7539745701f79bb38602a3193527c89e939a9ae56096cb07c1fb0d5dd"},
{"name":"ffi-yajl","version":"2.3.4","platform":"universal-java","checksum":"ac1acda7a7ebe900235222ddb4f47247f6480f06f480915d4e450f3b1ebe8713"},
{"name":"filelock","version":"1.1.1","platform":"ruby","checksum":"5207258374370a75d5927b2eaf9b831732d224e48ce56c318e8308c7cdcabb20"},
{"name":"find_a_port","version":"1.0.1","platform":"ruby","checksum":"605d6a84b5e6f138da2b06c87c5a4a0231e4fdc9b9a92022d9caa361f77d5ceb"},
{"name":"flipper","version":"0.25.0","platform":"ruby","checksum":"ccb2776752b8378bc994c9d873ccde290c090341940761b873494695ee697add"},
{"name":"flipper-active_record","version":"0.25.0","platform":"ruby","checksum":"85a5c99465e2cc6a09e91931a9998b0dbd463cd6c80dd513129377132e3eb67f"},
{"name":"flipper-active_support_cache_store","version":"0.25.0","platform":"ruby","checksum":"7282bf994b08d1a076b65c6f3b51e3dc04fcb00fa6e7b20089e60db25c7b531b"},
{"name":"flowdock","version":"0.7.1","platform":"ruby","checksum":"cfa95b2ac96e5f883f6e419d7a891f76cfcc17a28c416b6b714bbdffc8dbd912"},
{"name":"fog-aliyun","version":"0.3.3","platform":"ruby","checksum":"d0aa317f7c1473a1d684fff51699f216bb9cb78b9ee9ce55a81c9bcc93fb85ee"},
{"name":"fog-aws","version":"3.14.0","platform":"ruby","checksum":"07442dff8ee2a314413f812d6f6052e7d4a444540df84c193c135c1994114bbf"},
{"name":"fog-core","version":"2.1.0","platform":"ruby","checksum":"53e5d793554d7080d015ef13cd44b54027e421d924d9dba4ce3d83f95f37eda9"},
{"name":"fog-google","version":"1.15.0","platform":"ruby","checksum":"2f840780fbf2384718e961b05ef2fc522b4213bbda6f25b28c1bbd875ff0b306"},
{"name":"fog-json","version":"1.2.0","platform":"ruby","checksum":"dd4f5ab362dbc72b687240bba9d2dd841d5dfe888a285797533f85c03ea548fe"},
{"name":"fog-local","version":"0.6.0","platform":"ruby","checksum":"417473fe22a839af8f1388218d1843dbd09a5edfc8fcc59a893edb322ca5442d"},
{"name":"fog-openstack","version":"1.0.8","platform":"ruby","checksum":"8f174ab5e5b1bc107c7da90cc7c47a24930e1566cd88ab4df447026ea8b63d9c"},
{"name":"fog-rackspace","version":"0.1.1","platform":"ruby","checksum":"4a8c7a2432dd32321958c869f3b1b8190cf4eac292024e6ea267bc6040a44b78"},
{"name":"fog-xml","version":"0.1.3","platform":"ruby","checksum":"5604c42649ebb0d8a31bd973aa000c2dd0127f1c1c4c174b69266a2e78e37410"},
{"name":"formatador","version":"0.2.5","platform":"ruby","checksum":"80821869ddacb79e72870ff4bb1531efacd278c04f2df26bc6b4529ee13582bd"},
{"name":"fugit","version":"1.2.3","platform":"ruby","checksum":"a0ba58211f4e69103531cc26d6d5c18f03a2d3989e7b8aa03d2d83f2181cb745"},
{"name":"fuubar","version":"2.2.0","platform":"ruby","checksum":"9b0263c4074f39c68b37f1e4e69a7d3cfc7523c41bea43601235daa723179b4a"},
{"name":"fuzzyurl","version":"0.9.0","platform":"ruby","checksum":"542efa80f2bcaadbdc402c2f0b572f2e335a1d53e375aecad68bbb3d86860c0f"},
{"name":"gemoji","version":"3.0.1","platform":"ruby","checksum":"80553f2f4932a7a95fb1b3c7c63f7dd937e7c8c610164bbdea28fd06eba5f36d"},
{"name":"get_process_mem","version":"0.2.7","platform":"ruby","checksum":"4afd3c3641dd6a817c09806c7d6d509d8a9984512ac38dea8b917426bbf77eba"},
{"name":"gettext","version":"3.3.6","platform":"ruby","checksum":"ee6bbd1b2f833ee52d7797fa68acbfecc4726aec6b6280fd7eab92aa0190b413"},
{"name":"gettext_i18n_rails","version":"1.8.0","platform":"ruby","checksum":"95e5cf8440b1e08705b27f2bccb56143272c5a7a0dabcf54ea1bd701140a496f"},
{"name":"gettext_i18n_rails_js","version":"1.3.0","platform":"ruby","checksum":"5d10afe4be3639bff78c50a56768c20f39aecdabc580c08aa45573911c2bd687"},
{"name":"git","version":"1.11.0","platform":"ruby","checksum":"7e95ba4da8298a0373ef1a6862aa22007d761f3c8274b675aa787966fecea0f1"},
{"name":"gitaly","version":"15.4.0.pre.rc2","platform":"ruby","checksum":"48764528a730605a46f00cf86c7cfcb92d25f4f3d8cb9e09557baac3e9f3f8e3"},
{"name":"github-markup","version":"1.7.0","platform":"ruby","checksum":"97eb27c70662d9cc1d5997cd6c99832026fae5d4913b5dce1ce6c9f65078e69d"},
{"name":"gitlab","version":"4.16.1","platform":"ruby","checksum":"13fd7059cbdad5a1a21b15fa2cf9070b97d92e27f8c688581fe3d84dc038074f"},
{"name":"gitlab-chronic","version":"0.10.5","platform":"ruby","checksum":"f80f18dc699b708870a80685243331290bc10cfeedb6b99c92219722f729c875"},
{"name":"gitlab-dangerfiles","version":"3.5.2","platform":"ruby","checksum":"fae28a55b83b6c7f8298b9b1d90354ae73636729fd829ad58326bef46bd2f01f"},
{"name":"gitlab-experiment","version":"0.7.1","platform":"ruby","checksum":"166dddb3aa83428bcaa93c35684ed01dc4d61f321fd2ae40b020806dc54a7824"},
{"name":"gitlab-fog-azure-rm","version":"1.3.0","platform":"ruby","checksum":"2fef5317d6515f95f803099afa860fe3019ce6e1907bf49f66b5e06468a617b5"},
{"name":"gitlab-labkit","version":"0.24.0","platform":"ruby","checksum":"8f16e5aa4e0a05be58958fe880bdd53c84b659a081ea9981d2b510922a4a0548"},
{"name":"gitlab-license","version":"2.2.1","platform":"ruby","checksum":"39fcf6be8b2887df8afe01b5dcbae8d08b7c5d937ff56b0fb40484a8c4f02d30"},
{"name":"gitlab-mail_room","version":"0.0.9","platform":"ruby","checksum":"6700374b5c0aa9d9ad4e711aeb677f0b7d415a6d01d3baa699efab25349d851c"},
{"name":"gitlab-markup","version":"1.8.0","platform":"ruby","checksum":"fb629369dca5dd343e47ebf5fa2e0a0fc146012fc49c35eff5ca826ae4186c86"},
{"name":"gitlab-net-dns","version":"0.9.1","platform":"ruby","checksum":"bcd1a08dcb31b731e8ff602d828de619d2d9f53f5812f6abacf11c720873d4cb"},
{"name":"gitlab-omniauth-openid-connect","version":"0.10.0","platform":"ruby","checksum":"ea44a23ea93457057bba6a9912e883f5aefab36a941c6c58512c8a7095fb1153"},
{"name":"gitlab-sidekiq-fetcher","version":"0.8.0","platform":"ruby","checksum":"9c564caa2a958d44a8d78672dc23b2a206102d0223b41b77b58626a945e37362"},
{"name":"gitlab-styles","version":"8.0.0","platform":"ruby","checksum":"ff77d8543b7093e387430ebdaa2adce9dc3caaa8b10ce9bf9b40242d5f7b66da"},
{"name":"gitlab_chronic_duration","version":"0.10.6.2","platform":"ruby","checksum":"6dda4cfe7dca9b958f163ac8835c3d9cc70cf8df8cbb89bb2fbf9ba4375105fb"},
{"name":"gitlab_omniauth-ldap","version":"2.2.0","platform":"ruby","checksum":"bb4d20acb3b123ed654a8f6a47d3fac673ece7ed0b6992edb92dca14bad2838c"},
{"name":"globalid","version":"1.0.0","platform":"ruby","checksum":"1253641b1dc3392721c964351773755d75135d3d3c5cc65d88b0a3880a60bed8"},
{"name":"gon","version":"6.4.0","platform":"ruby","checksum":"e3a618d659392890f1aa7db420f17c75fd7d35aeb5f8fe003697d02c4b88d2f0"},
{"name":"google-api-client","version":"0.50.0","platform":"ruby","checksum":"3ae45e972f293f3a66e53950ecc0fd350d85d6347c06a430bb971bd1ae5ad617"},
{"name":"google-cloud-env","version":"1.6.0","platform":"ruby","checksum":"6179acb946975892c7908748df5722a4ebadfc8cf5bb7b0d8d933ca67183fa15"},
{"name":"google-protobuf","version":"3.21.5","platform":"java","checksum":"f63a511439c6350823790d1c8d903a7b536549bbc3eec21160aff3ee5594dcc3"},
{"name":"google-protobuf","version":"3.21.5","platform":"ruby","checksum":"c94bee502390041d0f5c6fd4b776118656c5b54521c2a5c7957686de6ba95bfb"},
{"name":"google-protobuf","version":"3.21.5","platform":"x64-mingw-ucrt","checksum":"cf17273c5d5d33fc4c4879ba8aa5973aa9e34f879d728c461facf5da24db7745"},
{"name":"google-protobuf","version":"3.21.5","platform":"x64-mingw32","checksum":"677a4c0770446e0b08828da6b8c021469551639cfb2b489f3d3f32da435bd6e8"},
{"name":"google-protobuf","version":"3.21.5","platform":"x86-linux","checksum":"cdaa147bbb7e5fd59adc2aba167b7965221013a39830494f616974e97db02a42"},
{"name":"google-protobuf","version":"3.21.5","platform":"x86-mingw32","checksum":"eda2bd51324e855a1593aa0c805d1c99a95dcc5161bc61eb6e8afb5d4e7bcb75"},
{"name":"google-protobuf","version":"3.21.5","platform":"x86_64-darwin","checksum":"4e2c937e5dc991a5675e4b78d6132e818862f19479013c2edc2455c76b54be53"},
{"name":"google-protobuf","version":"3.21.5","platform":"x86_64-linux","checksum":"ec2dabea012d31dd99f450174be461f9323b4e97460af13cc3a4f9426c2b0fc0"},
{"name":"googleapis-common-protos-types","version":"1.3.0","platform":"ruby","checksum":"c5411f3197cc3e02547ded1858303b1f830b4dc89c588c142ad6c8a231050671"},
{"name":"googleauth","version":"0.14.0","platform":"ruby","checksum":"4659b563d5b2727e775ba9231e75485c1b55ac8fc319e0bf1bc87d5e9705a632"},
{"name":"gpgme","version":"2.0.20","platform":"ruby","checksum":"fc194689cff40cd4ccafb3086031e930650b3efc15348bbfdf7a2f8b5a826f75"},
{"name":"grape","version":"1.5.2","platform":"ruby","checksum":"1df3b734c3862e235174232bc629587eddda9ef3df648230827575186700ae29"},
{"name":"grape-entity","version":"0.10.0","platform":"ruby","checksum":"9aed1e7cbbc96d9e73f72e5f32c776d4ba8a5baf54c3acda2682008dba2b2cfe"},
{"name":"grape-path-helpers","version":"1.7.1","platform":"ruby","checksum":"2e27271a20d4073e3a3b2b955425c7f803e198be3ba8f6e59e3d59643c5381e2"},
{"name":"grape_logging","version":"1.8.4","platform":"ruby","checksum":"efcc3e322dbd5d620a68f078733b7db043cf12680144cd03c982f14115c792d1"},
{"name":"graphiql-rails","version":"1.8.0","platform":"ruby","checksum":"02e2c5098be2c6c29219a0e9b2910a2cd3c494301587a3199a7c4484d8038ed1"},
{"name":"graphlient","version":"0.5.0","platform":"ruby","checksum":"0f2c9416142e50b6bd4edcd86fe6810f792951732c487f9061aee6d420e0f292"},
{"name":"graphlyte","version":"1.0.0","platform":"ruby","checksum":"b5af4ab67dde6e961f00ea1c18f159f73b52ed11395bb4ece297fe628fa1804d"},
{"name":"graphql","version":"1.13.12","platform":"ruby","checksum":"1d82666cf201193a8d0cb54cea38576b820418db4869b549f61a35f3a2d97ac3"},
{"name":"graphql-client","version":"0.17.0","platform":"ruby","checksum":"5aaf02ce8f2dbc8e3ba05a7eaeb3ad9336762c4424c6093f4438fbb9490eeb5d"},
{"name":"graphql-docs","version":"2.1.0","platform":"ruby","checksum":"7eb82402f8fda455104b2b60364e9ada145d79d3121a8f915790d49da38bb576"},
{"name":"grpc","version":"1.42.0","platform":"ruby","checksum":"b3d2649e67c6a636544996843d9ec191699c54c1aca797dbfea4dff36c14584a"},
{"name":"grpc","version":"1.42.0","platform":"x64-mingw32","checksum":"6aac1b6576134b0a83e000b1269f60d502eb24aee96c64e2658c3f24f8e32ac0"},
{"name":"grpc","version":"1.42.0","platform":"x86-linux","checksum":"4aa50538aa929f1f3bcefb11c65ee1a1606b5aef838ea4d4e93c100b5f4263a5"},
{"name":"grpc","version":"1.42.0","platform":"x86-mingw32","checksum":"eeb2a9381bea43fafe879b6ddaa011351a44d0894d48bdc965a07bcb67c6eb56"},
{"name":"grpc","version":"1.42.0","platform":"x86_64-darwin","checksum":"20fa202d46d8a055628260622e98fb6439529fbac283f0552af620b909f78535"},
{"name":"grpc","version":"1.42.0","platform":"x86_64-linux","checksum":"92e2ceb2aca335d5755163dd8030082091d5b0e63c117b1ca07051b66c53eb2e"},
{"name":"gssapi","version":"1.2.0","platform":"ruby","checksum":"3d0e3222f36532c1ab3b7eaab171ad4245889edc5439a5483ff714999cb62349"},
{"name":"guard","version":"2.16.2","platform":"ruby","checksum":"71ba7abaddecc8be91ab77bbaf78f767246603652ebbc7b976fda497ebdc8fbb"},
{"name":"guard-compat","version":"1.2.1","platform":"ruby","checksum":"3ad21ab0070107f92edfd82610b5cdc2fb8e368851e72362ada9703443d646fe"},
{"name":"guard-rspec","version":"4.7.3","platform":"ruby","checksum":"a47ba03cbd1e3c71e6ae8645cea97e203098a248aede507461a43e906e2f75ca"},
{"name":"haml","version":"5.2.2","platform":"ruby","checksum":"6e759246556145642ef832d670fc06f9bd8539159a0e600847a00291dd7aae0c"},
{"name":"haml_lint","version":"0.40.1","platform":"ruby","checksum":"b658322eb245399e40b19a27a341039c76aead5794bc622d469e877162e34802"},
{"name":"hamlit","version":"2.15.0","platform":"java","checksum":"fda165464e59337ab7cda6304a66bfdb607bb7155f25566da19c9ee7b98e03d1"},
{"name":"hamlit","version":"2.15.0","platform":"ruby","checksum":"d2e8505362338945fa309c68b2b8be07ebdc181200ec6021223567bf66dac38e"},
{"name":"hana","version":"1.3.7","platform":"ruby","checksum":"5425db42d651fea08859811c29d20446f16af196308162894db208cac5ce9b0d"},
{"name":"hangouts-chat","version":"0.0.5","platform":"ruby","checksum":"bdbeb6c6e4abc98f395cb273f53b39911b3aa9e248fbbf063242b021ced8b6b6"},
{"name":"hashdiff","version":"1.0.1","platform":"ruby","checksum":"2cd4d04f5080314ecc8403c4e2e00dbaa282dff395e2d031bc16c8d501bdd6db"},
{"name":"hashie","version":"4.1.0","platform":"ruby","checksum":"7890dcb9ec18a4b66acec797018c73824b89cef5eb8cda36e8e8501845e87a09"},
{"name":"hashie-forbidden_attributes","version":"0.1.1","platform":"ruby","checksum":"3a6ed37f3a314e4fb1dd1e2df6eb7721bcadd023a30bc0b951b2b5285a790fb2"},
{"name":"health_check","version":"3.0.0","platform":"ruby","checksum":"1b336c5c49036a993153e75c8d14e9742377fb9b7361c0a6af2e5fedb45b991f"},
{"name":"heapy","version":"0.2.0","platform":"ruby","checksum":"74141e845d61ffc7c1e8bf8b127c8cf94544ec7a1181aec613288682543585ea"},
{"name":"html-pipeline","version":"2.13.2","platform":"ruby","checksum":"a1de83f7bd2d3464f3a068e391b661983fc6099d194c8d9ceb91ace02dadb803"},
{"name":"html2text","version":"0.2.0","platform":"ruby","checksum":"31c2f0be9ab7aa4fc780b07d5f84882ebc22a9024c29a45f4f5adfe42e92ad4f"},
{"name":"htmlbeautifier","version":"1.4.2","platform":"ruby","checksum":"9de0c98480fe80d795ed5734a11f183563cd969686f25a04609c0f5a446fa5f8"},
{"name":"htmlentities","version":"4.3.4","platform":"ruby","checksum":"125a73c6c9f2d1b62100b7c3c401e3624441b663762afa7fe428476435a673da"},
{"name":"http","version":"4.4.1","platform":"ruby","checksum":"be10f1d054fcc732ac32410553767ac3e4141b4182a4d8f5bf93d23cedae1b7d"},
{"name":"http-accept","version":"1.7.0","platform":"ruby","checksum":"c626860682bfbb3b46462f8c39cd470fd7b0584f61b3cc9df5b2e9eb9972a126"},
{"name":"http-cookie","version":"1.0.5","platform":"ruby","checksum":"73756d46c7dbdc7023deecdb8a171348ea95a1b99810b31cfe8b4fb4e9a6318f"},
{"name":"http-form_data","version":"2.3.0","platform":"ruby","checksum":"cc4eeb1361d9876821e31d7b1cf0b68f1cf874b201d27903480479d86448a5f3"},
{"name":"http-parser","version":"1.2.3","platform":"ruby","checksum":"414dec1f443d68e1068509f184ee4b93e3442f626645071182ce49bc27db18a3"},
{"name":"httparty","version":"0.16.4","platform":"ruby","checksum":"62c89d00f5e8933b2d397a49b57deb18ca18e16cb7d862ee4f53b73228dc3d81"},
{"name":"httpclient","version":"2.8.3","platform":"ruby","checksum":"2951e4991214464c3e92107e46438527d23048e634f3aee91c719e0bdfaebda6"},
{"name":"i18n","version":"1.12.0","platform":"ruby","checksum":"91e3cc1b97616d308707eedee413d82ee021d751c918661fb82152793e64aced"},
{"name":"i18n_data","version":"0.8.0","platform":"ruby","checksum":"92d942cc193dc4a54a95b68f44e52c79e024fa72e09f26a982bc61153b6f0c6c"},
{"name":"icalendar","version":"2.4.1","platform":"ruby","checksum":"ade7384b3a78d302e01c0b93f66816b734c9abd85d1511b90200de2eee6d5ef7"},
{"name":"imagen","version":"0.1.8","platform":"ruby","checksum":"fde7b727d4fe79c6bb5ac46c1f7184bf87a6d54df54d712ad2be039d2f93a162"},
{"name":"invisible_captcha","version":"1.1.0","platform":"ruby","checksum":"3670294a998ab1430ff07cd1697d25c70e6367bdb0dff534df24a14fdee8b4d2"},
{"name":"ipaddress","version":"0.8.3","platform":"ruby","checksum":"85640c4f9194c26937afc8c78e3074a8e7c97d5d1210358d1440f01034d006f5"},
{"name":"jaeger-client","version":"1.1.0","platform":"ruby","checksum":"cb5e9b9bbee6ee8d6a82d03d947a5b04543d8c0a949c22e484254f18d8a458a8"},
{"name":"jaro_winkler","version":"1.5.4","platform":"java","checksum":"0454333a50b44a09745878bfe57859893631ff7dfe48c029827894944514fe7c"},
{"name":"jaro_winkler","version":"1.5.4","platform":"ruby","checksum":"50c3e83c5a9e8769c1cf5b73c8b51bb6eebbf8852a0ee53bf6ad6e4dc63414f9"},
{"name":"jira-ruby","version":"2.1.4","platform":"ruby","checksum":"4267c095cac8323b9eef3ba866eb28bb1388b7623a5abb60c1e7caf12d4adb9e"},
{"name":"jmespath","version":"1.6.1","platform":"ruby","checksum":"40ca83f4141bdd1e503db5485de68b84237183d84cf7a159fbeebcc6005adbd6"},
{"name":"js_regex","version":"3.7.0","platform":"ruby","checksum":"b13fac68c4416d1a5f21c3bab8a71b4530f424b7c4ff9f46d8e62b895dc05975"},
{"name":"json","version":"2.5.1","platform":"java","checksum":"be284a0c4a9d0373e81b0d5dfe71ed5b18d0479f05970e60a77be89a2978ce6c"},
{"name":"json","version":"2.5.1","platform":"ruby","checksum":"918d8c41dacb7cfdbe0c7bbd6014a5372f0cf1c454ca150e9f4010fe80cc3153"},
{"name":"json-jwt","version":"1.13.0","platform":"ruby","checksum":"b9bded80ba687e59d199db365731494ee68214f27d0d7be5b635b9956b98eb5b"},
{"name":"json_schemer","version":"0.2.18","platform":"ruby","checksum":"3362c21efbefdd12ce994e541a1e7fdb86fd267a6541dd8715e8a580fe3b6be6"},
{"name":"jsonpath","version":"1.1.2","platform":"ruby","checksum":"6804124c244d04418218acb85b15c7caa79c592d7d6970195300428458946d3a"},
{"name":"jwt","version":"2.1.0","platform":"ruby","checksum":"7e7e7ffc1a5ebce628ac7da428341c50615a3a10ac47bb74c22c1cba325613f0"},
{"name":"kaminari","version":"1.2.1","platform":"ruby","checksum":"03b26388ebb732b708e40b4f1d858c4cbc58d7cb18d12eeb9364176f23c3b3ef"},
{"name":"kaminari-actionview","version":"1.2.1","platform":"ruby","checksum":"31a3dc6955e7dff95f6133e1f4c03b9dec36d714b632330034ee51b33d0c1770"},
{"name":"kaminari-activerecord","version":"1.2.1","platform":"ruby","checksum":"8327823ddf8a8e059ce10d9da0c784ef44d5323e9f6d53054e03d26876efc50a"},
{"name":"kaminari-core","version":"1.2.1","platform":"ruby","checksum":"9ff2f0fa5a454731943a847bbd9960f0b9f859dd6910df5f40d6c9e049660440"},
{"name":"kas-grpc","version":"0.0.2","platform":"ruby","checksum":"111ff7515952e939f491297ba4c69a218b72d9d0ef8e5bff80a5df6a56df9a16"},
{"name":"knapsack","version":"1.21.1","platform":"ruby","checksum":"82f70422adebcacec1b514f6ebff65265fc85d836e3c320718a160d8ac41cf14"},
{"name":"kramdown","version":"2.3.2","platform":"ruby","checksum":"cb4530c2e9d16481591df2c9336723683c354e5416a5dd3e447fa48215a6a71c"},
{"name":"kramdown-parser-gfm","version":"1.1.0","platform":"ruby","checksum":"fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729"},
{"name":"kubeclient","version":"4.9.3","platform":"ruby","checksum":"d5d38e719fbac44f396851aa57cd1b9f4f7dab4410ab680ccd21c9b741230046"},
{"name":"launchy","version":"2.5.0","platform":"ruby","checksum":"954243c4255920982ce682f89a42e76372dba94770bf09c23a523e204bdebef5"},
{"name":"lefthook","version":"1.1.1","platform":"ruby","checksum":"fa7dcd2c55dc14f6f164f96cf1404e712be84a2ac256e75947213093e080d05b"},
{"name":"letter_opener","version":"1.7.0","platform":"ruby","checksum":"095bc0d58e006e5b43ea7d219e64ecf2de8d1f7d9dafc432040a845cf59b4725"},
{"name":"letter_opener_web","version":"2.0.0","platform":"ruby","checksum":"33860ad41e1785d75456500e8ca8bba8ed71ee6eaf08a98d06bbab67c5577b6f"},
{"name":"libyajl2","version":"1.2.0","platform":"ruby","checksum":"1117cd1e48db013b626e36269bbf1cef210538ca6d2e62d3fa3db9ded005b258"},
{"name":"license_finder","version":"7.0.1","platform":"ruby","checksum":"0b22c9567e2a8b102c7245da49ebeddaec60f66d237d2bb91b9feddf5d242f6a"},
{"name":"licensee","version":"9.15.2","platform":"ruby","checksum":"4b6959b544da88499d3be0d9f486179c90b93d5049ef500ae340ac1420493ded"},
{"name":"listen","version":"3.7.1","platform":"ruby","checksum":"3b80caa7aa77fae836916c2f9e3fbcafbd15f5d695dd487c1f5b5e7e465efe29"},
{"name":"locale","version":"2.1.3","platform":"ruby","checksum":"b6ddee011e157817cb98e521b3ce7cb626424d5882f1e844aafdee3e8b212725"},
{"name":"lockbox","version":"0.6.2","platform":"ruby","checksum":"0136677875c3d6e27cef87cd7bd66610404e2b3cd7f07f1ac8ed34e48f18dc3c"},
{"name":"lograge","version":"0.11.2","platform":"ruby","checksum":"4cbd1554b86f545d795eff15a0c24fd25057d2ac4e1caa5fc186168b3da932ef"},
{"name":"loofah","version":"2.18.0","platform":"ruby","checksum":"61975a247a6aeb8f09ac5a3430305451efc4525c0b9b79c05feaec35a8b9d5a3"},
{"name":"lookbook","version":"1.0.3","platform":"ruby","checksum":"c53e130a37588e32f66be3b9418b1efcb51bef69946b276edd3b4348a71cbcd6"},
{"name":"lru_redux","version":"1.1.0","platform":"ruby","checksum":"ee71d0ccab164c51de146c27b480a68b3631d5b4297b8ffe8eda1c72de87affb"},
{"name":"lumberjack","version":"1.2.7","platform":"ruby","checksum":"a5c6aae6b4234f1420dbcd80b23e3bca0817bd239440dde097ebe3fa63c63b1f"},
{"name":"mail","version":"2.7.1","platform":"ruby","checksum":"ec2a3d489f7510b90d8eaa3f6abaad7038cf1d663cdf8ee66d0214a0bdf99c03"},
{"name":"marcel","version":"1.0.2","platform":"ruby","checksum":"a013b677ef46cbcb49fd5c59b3d35803d2ee04dd75d8bfdc43533fc5a31f7e4e"},
{"name":"marginalia","version":"1.10.0","platform":"ruby","checksum":"68289091ee493e1a8f22369c245f250652a6538e497fdeef68cb2a2490830380"},
{"name":"memoist","version":"0.16.2","platform":"ruby","checksum":"a52c53a3f25b5875151670b2f3fd44388633486dc0f09f9a7150ead1e3bf3c45"},
{"name":"memory_profiler","version":"0.9.14","platform":"ruby","checksum":"de558cf6525d8d56d2c0ea465b1664517fbe45560f892dc7a898d3b8c2863b12"},
{"name":"method_source","version":"1.0.0","platform":"ruby","checksum":"d779455a2b5666a079ce58577bfad8534f571af7cec8107f4dce328f0981dede"},
{"name":"mime-types","version":"3.4.1","platform":"ruby","checksum":"6bcf8b0e656b6ae9977bdc1351ef211d0383252d2f759a59ef4bcf254542fc46"},
{"name":"mime-types-data","version":"3.2022.0105","platform":"ruby","checksum":"d8c401ba9ea8b648b7145b90081789ec714e91fd625d82c5040079c5ea696f00"},
{"name":"mini_histogram","version":"0.3.1","platform":"ruby","checksum":"6a114b504e4618b0e076cc672996036870f7cc6f16b8e5c25c0c637726d2dd94"},
{"name":"mini_magick","version":"4.10.1","platform":"ruby","checksum":"e939d2c70c8002233fc6b1eecfe762f38a156d69ad31a87160205870be08f852"},
{"name":"mini_mime","version":"1.1.2","platform":"ruby","checksum":"a54aec0cc7438a03a850adb00daca2bdb60747f839e28186994df057cea87151"},
{"name":"mini_portile2","version":"2.8.0","platform":"ruby","checksum":"1e06b286ff19b73cfc9193cb3dd2bd80416f8262443564b25b23baea74a05765"},
{"name":"minitest","version":"5.11.3","platform":"ruby","checksum":"78e18aa2c49c58e9bc53c54a0b900e87ad0a96394e92fbbfa58d3ff860a68f45"},
{"name":"mixlib-cli","version":"2.1.8","platform":"ruby","checksum":"e6f27be34d580f6ed71731ca46b967e57793a627131c1f6e1ed2dad39ea3bdf9"},
{"name":"mixlib-config","version":"3.0.9","platform":"ruby","checksum":"9867adab3ab547eb74a8efdc9dfab6bcc83d2802a571ff8af8d6e981ca8d53ab"},
{"name":"mixlib-log","version":"3.0.9","platform":"ruby","checksum":"fd6ca2c8075f8085065dffcee0805c5b3f88d643d5c954acdc3282f463a9ad58"},
{"name":"mixlib-shellout","version":"3.2.5","platform":"ruby","checksum":"121a54005e52b6596a945f7bfc95bbcbd7d8ee7685cb3736dd3cef5ff46029bd"},
{"name":"mixlib-shellout","version":"3.2.5","platform":"universal-mingw32","checksum":"c40ef5f34a68eec5e0cad13482497f6c3898a30cff1747517f2169d4fa4055e0"},
{"name":"ms_rest","version":"0.7.6","platform":"ruby","checksum":"272a1d592594c5c25edd2f3378c17ac9d840a29991572fb1bc7616d5565030ca"},
{"name":"ms_rest_azure","version":"0.12.0","platform":"ruby","checksum":"3006060104629cf56f611bee9040023e461c748a7a97eaa601028b4cd03a231a"},
{"name":"msgpack","version":"1.5.4","platform":"java","checksum":"05b3bd16a65dddc64c878634b7ecb9cd613569ca3dd6e480d7295626a0a3f562"},
{"name":"msgpack","version":"1.5.4","platform":"ruby","checksum":"a53db320fba40f58c07c5b66ed9fd4d73cbe8eba4cb28fe9e3218444341a4e09"},
{"name":"multi_json","version":"1.14.1","platform":"ruby","checksum":"d971296c0eacea289d31e4a7ab7ac5eda97262c62bbc8c110de4f5e36425c577"},
{"name":"multi_xml","version":"0.6.0","platform":"ruby","checksum":"d24393cf958adb226db884b976b007914a89c53ad88718e25679d7008823ad52"},
{"name":"multipart-post","version":"2.2.3","platform":"ruby","checksum":"462979de2971b8df33c2ee797fd497731617241f9dcd93960cc3caccb2dd13d8"},
{"name":"murmurhash3","version":"0.1.6","platform":"java","checksum":"7e8677549a65b454362d8688885a21cca721a22c086d14e874c26c1e213946f0"},
{"name":"murmurhash3","version":"0.1.6","platform":"ruby","checksum":"c78f06d1636665c92e2b3cc309e31036ca4cb8f47f1cdc080d4f964f4865fceb"},
{"name":"mustermann","version":"1.1.1","platform":"ruby","checksum":"0a21cfe505869cce9ce17998db5260344e78df81ae857c07a62143fd30299531"},
{"name":"mustermann-grape","version":"1.0.1","platform":"ruby","checksum":"00ce12b3df66be33ec4304aa9108fb9e1a0689f2a136c96b51c104684f5c5436"},
{"name":"nap","version":"1.1.0","platform":"ruby","checksum":"949691660f9d041d75be611bb2a8d2fd559c467537deac241f4097d9b5eea576"},
{"name":"nenv","version":"0.3.0","platform":"ruby","checksum":"d9de6d8fb7072228463bf61843159419c969edb34b3cef51832b516ae7972765"},
{"name":"net-http-persistent","version":"4.0.1","platform":"ruby","checksum":"2752f4cce05fd1c45e0537c6f3a98fa5a4899efd5f88e63c104ed5f05cbddef9"},
{"name":"net-ldap","version":"0.16.3","platform":"ruby","checksum":"db464d2f8236e5f8546c07abb51b08e0a62b77136b1c7f91fa0ec5fe2336908e"},
{"name":"net-ntp","version":"2.1.3","platform":"ruby","checksum":"5bc73f4102bde0d1872bd3b293608ae99d9f5007d744f21919c6a565eda9267d"},
{"name":"net-scp","version":"3.0.0","platform":"ruby","checksum":"8fc6c80365b95230c6bfc529dbea3893d2d81724855bfb01cbf385866e1c902c"},
{"name":"net-ssh","version":"6.0.0","platform":"ruby","checksum":"6290ddcb232380cae79b772af924e12f57fe1dcd0f71254411dd21c04f7b13d0"},
{"name":"netrc","version":"0.11.0","platform":"ruby","checksum":"de1ce33da8c99ab1d97871726cba75151113f117146becbe45aa85cb3dabee3f"},
{"name":"nio4r","version":"2.5.8","platform":"java","checksum":"b2b1800f6bf7ce4b797ca8b639ad278a99c9c904fb087a91d944f38e4bd71401"},
{"name":"nio4r","version":"2.5.8","platform":"ruby","checksum":"3becb4ad95ab8ac0a9bd2e1b16466869402be62848082bf6329ae9091f276676"},
{"name":"no_proxy_fix","version":"0.1.2","platform":"ruby","checksum":"4e9b4c31bb146de7fcf347dc1087bb13ac2039b56d50aa019e61036256abcd00"},
{"name":"nokogiri","version":"1.13.8","platform":"aarch64-linux","checksum":"d6b2c45a57738f12fe27783939fe1394e7049246288c7770d3b1fee7f49432a6"},
{"name":"nokogiri","version":"1.13.8","platform":"arm64-darwin","checksum":"00217e48a6995e81dd83014325c0ea0b015023a8922c7bdb2ef1416aa87c1f43"},
{"name":"nokogiri","version":"1.13.8","platform":"java","checksum":"9d04c616900e2b5118e501436ebb9bc48520d08f3695d012a314006e28082f72"},
{"name":"nokogiri","version":"1.13.8","platform":"ruby","checksum":"79c279298b2f22fd4e760f49990c7930436bac1b1cfeff7bacff192f30edea3c"},
{"name":"nokogiri","version":"1.13.8","platform":"x64-mingw-ucrt","checksum":"98f7dac7583f07a84ec3fcc01dc03a66fce10f412cd363fce7de749acdb2a42d"},
{"name":"nokogiri","version":"1.13.8","platform":"x64-mingw32","checksum":"117a71b37f2e1d774a9f031d393e72d5d04b92af8036e0c1a8dd509c247b2013"},
{"name":"nokogiri","version":"1.13.8","platform":"x86-linux","checksum":"6d04342456edfb8fbc041d0c2cf5a59baaa7aacdda414b2333100b02f85d441d"},
{"name":"nokogiri","version":"1.13.8","platform":"x86-mingw32","checksum":"0529d558b4280a55bc7af500d3d4d590b7c059c814a0cea52e4e18cb30c25d15"},
{"name":"nokogiri","version":"1.13.8","platform":"x86_64-darwin","checksum":"8966d79e687b271df87a4b240456597c43cd98584e3f783fc35de4f066486421"},
{"name":"nokogiri","version":"1.13.8","platform":"x86_64-linux","checksum":"344f1bc66feac787e5b2053c6e9095d1f33605083e58ddf2b8d4eef257bccc5f"},
{"name":"notiffany","version":"0.1.3","platform":"ruby","checksum":"d37669605b7f8dcb04e004e6373e2a780b98c776f8eb503ac9578557d7808738"},
{"name":"numerizer","version":"0.2.0","platform":"ruby","checksum":"e58076d5ee5370417b7e52d9cb25836d62acd1b8d9a194c308707986c1705d7b"},
{"name":"oauth","version":"0.5.6","platform":"ruby","checksum":"4085fe28e0c5e2434135e00a6555294fd2a4ff96a98d1bdecdcd619fc6368dff"},
{"name":"oauth2","version":"2.0.3","platform":"ruby","checksum":"b343d8665a936b4223b335b38f8640134ce14e07c540b8d17e8bbac0b4e5c41b"},
{"name":"octokit","version":"4.25.1","platform":"ruby","checksum":"c02092ee82dcdfe84db0e0ea630a70d32becc54245a4f0bacfd21c010df09b96"},
{"name":"ohai","version":"16.10.6","platform":"ruby","checksum":"b835806e585faea4ac8346b68c722fb5fc29a29f73fd7e3a022f9073132dec22"},
{"name":"oj","version":"3.13.21","platform":"ruby","checksum":"aef31a8dcc6f0b9b4bb5cc7ac6cc5272b2d851deb11a1804c2ed6b5501b50e46"},
{"name":"omniauth","version":"2.1.0","platform":"ruby","checksum":"bff7234f5ec9323622b217c7f26d52f850de0b0e2b8c807c3358fc79fe572300"},
{"name":"omniauth-alicloud","version":"1.0.1","platform":"ruby","checksum":"2f81ec0b8f98d2ab5e5d64555c75ace46582cf27c4ef4207aa59f15331dd697a"},
{"name":"omniauth-atlassian-oauth2","version":"0.2.0","platform":"ruby","checksum":"eb07574a188ab8a03376ce288bce86bc2dd4a1382ffa5781cb5e2b7bc15d76c9"},
{"name":"omniauth-auth0","version":"2.0.0","platform":"ruby","checksum":"823769be7883b45b2fa94367c2f6a17f7b3b1333986016089c016d45827da545"},
{"name":"omniauth-authentiq","version":"0.3.3","platform":"ruby","checksum":"11b3791085a130782bf14b0088653beeb085638a9548d7110a57d3cbbb54fb4c"},
{"name":"omniauth-azure-activedirectory-v2","version":"1.0.0","platform":"ruby","checksum":"edcdd77ace89ae3a0ed4b3d350b64a0c81b5a2435dff6f8eda8cbce15cbf69df"},
{"name":"omniauth-dingtalk-oauth2","version":"1.0.1","platform":"ruby","checksum":"6545670f1c38344eaf960df9750c550a9534f790f888af088761a9e04269139b"},
{"name":"omniauth-facebook","version":"4.0.0","platform":"ruby","checksum":"05ae3565c8fdb38df8dab04eb8ca854ea6c18e81591d3e6598ce101293a2f20f"},
{"name":"omniauth-github","version":"2.0.0","platform":"ruby","checksum":"1ca26576125a97e27d3f8dc39cd98853d7382dd0fc04a40d3b9ec345ee378649"},
{"name":"omniauth-oauth","version":"1.2.0","platform":"ruby","checksum":"e7a78658498dc83aa3f3be1a776425c0f06a60d45d9236dbe5e98e61fadf827b"},
{"name":"omniauth-oauth2","version":"1.7.3","platform":"ruby","checksum":"3f5a8f99fa72e0f91d2abd7475ceb972a4ae67ed59e049f314c0c1bad81f4745"},
{"name":"omniauth-oauth2-generic","version":"0.2.2","platform":"ruby","checksum":"e30814f6c472e04f3d9e4a3ddc03bc9a46f53f9333f8d443bf3ad43c6ebcdbd4"},
{"name":"omniauth-rails_csrf_protection","version":"1.0.1","platform":"ruby","checksum":"fc546aeb7d43b7b9d7737051c380156e61c8f080b898cd4934d523eaa7e59acf"},
{"name":"omniauth-saml","version":"2.0.0","platform":"ruby","checksum":"02594fd6630de26a9e65a2e64223e9ad32324fa97a6c7f1f22a1553ea3dd44c7"},
{"name":"omniauth-shibboleth","version":"1.3.0","platform":"ruby","checksum":"b0bb725ced5cb76fbfc187ddbb8ad6864d0cd5df714cab36a528df8ee4b1d113"},
{"name":"omniauth-twitter","version":"1.4.0","platform":"ruby","checksum":"c5cc6c77cd767745ffa9ebbd5fbd694a3fa99d1d2d82a4d7def0bf3b6131b264"},
{"name":"open4","version":"1.3.4","platform":"ruby","checksum":"a1df037310624ecc1ea1d81264b11c83e96d0c3c1c6043108d37d396dcd0f4b1"},
{"name":"openid_connect","version":"1.3.0","platform":"ruby","checksum":"a796855096850cc01140e37ea6ae9fd14f2be818b9b5bc698418063dfe228770"},
{"name":"openssl","version":"2.2.0","platform":"ruby","checksum":"1cdcbd35c7977647d7583def720aed15111cd29b326b737aa0c72b38bff58b0f"},
{"name":"openssl-signature_algorithm","version":"0.4.0","platform":"ruby","checksum":"e53a225b773784935249cf4c61238c6cf0e1e464e78ae2f8ddaf995fb22ca991"},
{"name":"opentracing","version":"0.5.0","platform":"ruby","checksum":"deb5d7abe6b0e7631d866d8cb5ee7bb9352650a504a32f61591302bc510b9286"},
{"name":"optimist","version":"3.0.1","platform":"ruby","checksum":"336b753676d6117cad9301fac7e91dab4228f747d4e7179891ad3a163c64e2ed"},
{"name":"org-ruby","version":"0.9.12","platform":"ruby","checksum":"93cbec3a4470cb9dca6a4a98dc276a6434ea9d9e7bc2d42ea33c3aedd5d1c974"},
{"name":"orm_adapter","version":"0.5.0","platform":"ruby","checksum":"aa5d0be5d540cbb46d3a93e88061f4ece6a25f6e97d6a47122beb84fe595e9b9"},
{"name":"os","version":"1.1.1","platform":"ruby","checksum":"3db1fbc14ab8ea99b69ed8e353c894613e1b35e665fffb90414996cf8989d489"},
{"name":"pact","version":"1.59.0","platform":"ruby","checksum":"6272cea35e4ee809493fadcba9800d4a24c262ef0778a0d1ba5d9a9b3f61fc59"},
{"name":"pact-mock_service","version":"3.6.2","platform":"ruby","checksum":"cc91229484ae428b6eb3a6673c178046cbf6610ee6536ca6cbac060b6071f547"},
{"name":"pact-support","version":"1.15.1","platform":"ruby","checksum":"c364596fe9fe78c4f93028013262d5d97867a680fa6acc35dda946447cdf1d1f"},
{"name":"parallel","version":"1.22.1","platform":"ruby","checksum":"ebdf1f0c51f182df38522f70ba770214940bef998cdb6e00f36492b29699761f"},
{"name":"parser","version":"3.1.2.1","platform":"ruby","checksum":"57e49821b52d5fe7baffaca44ed77e9754688c9bbc68443b5293a722fdb161e0"},
{"name":"parslet","version":"1.8.2","platform":"ruby","checksum":"08d1ab3721cd3f175bfbee8788b2ddff71f92038f2d69bd65454c22bb9fbd98a"},
{"name":"pastel","version":"0.8.0","platform":"ruby","checksum":"481da9fb7d2f6e6b1a08faf11fa10363172dc40fd47848f096ae21209f805a75"},
{"name":"peek","version":"1.1.0","platform":"ruby","checksum":"d6501ead8cde46d8d8ed0d59eb6f0ba713d0a41c11a2c4a81447b2dce37b3ecc"},
{"name":"pg","version":"1.4.1","platform":"ruby","checksum":"386bbffad223cce1dda903dad2c59268e41f3d183792506671ae526011ff0487"},
{"name":"pg","version":"1.4.1","platform":"x64-mingw-ucrt","checksum":"de35769d4e7c25daa035f2dc33447e74711ab0dc8b73f685a846987e0080d030"},
{"name":"pg","version":"1.4.1","platform":"x64-mingw32","checksum":"3457bf6bfdda7144097ef23d490a83980ba4572c78c58689aadaf58940a1989d"},
{"name":"pg","version":"1.4.1","platform":"x86-mingw32","checksum":"323d09138b7bbfc6ae8eb427774d3639fc0e995983e65bb729527bf8e859fc29"},
{"name":"pg_query","version":"2.1.3","platform":"ruby","checksum":"f3dd4b4c88c638eab48e9274f0dd88c584b60f8da58e3008b873192fe1e47001"},
{"name":"plist","version":"3.6.0","platform":"ruby","checksum":"f468bcf6b72ec6d1585ed6744eb4817c1932a5bf91895ed056e69b7f12ca10f2"},
{"name":"png_quantizator","version":"0.2.1","platform":"ruby","checksum":"6023d4d064125c3a7e02929c95b7320ed6ac0d7341f9e8de0c9ea6576ef3106b"},
{"name":"po_to_json","version":"1.0.1","platform":"ruby","checksum":"6a7188aa6c42a22c9718f9b39062862ef7f3d8f6a7b4177cae058c3308b56af7"},
{"name":"premailer","version":"1.16.0","platform":"ruby","checksum":"03e4402c448e6bae13fb5f6301a8bde4f3508e1bff90ae7c0972c7be94694786"},
{"name":"premailer-rails","version":"1.10.3","platform":"ruby","checksum":"7cdcb97027866f7a81c490c6d15ada7f39666b5f6375f0821b7e97e0483b112f"},
{"name":"proc_to_ast","version":"0.1.0","platform":"ruby","checksum":"92a73fa66e2250a83f8589f818b0751bcf227c68f85916202df7af85082f8691"},
{"name":"prometheus-client-mmap","version":"0.16.2","platform":"ruby","checksum":"36e7e96fdd603c2d1fed050ec71504797f3f8b2560123306ba72018ee3561165"},
{"name":"pry","version":"0.13.1","platform":"java","checksum":"9612d825e2c3bc160633b2a4fae21041126ee33f1ac8035c851417e561b2b46c"},
{"name":"pry","version":"0.13.1","platform":"ruby","checksum":"1393918c415af46b6d09044d2b78dde92b29bc834fd85c369a950bab0826dc47"},
{"name":"pry-byebug","version":"3.9.0","platform":"ruby","checksum":"3bba08f97fea15b89cc299f3b5136e3b85763cd18cf84960eac4fbfbeb2ede24"},
{"name":"pry-rails","version":"0.3.9","platform":"ruby","checksum":"468662575abb6b67f4a9831219f99290d5eae7bf186e64dd810d0a3e4a8cc4b1"},
{"name":"pry-shell","version":"0.5.1","platform":"ruby","checksum":"2b9000e30677acf5d66f55fa53d31934b7c069d9e0f738a0b84eed03a4ab677d"},
{"name":"public_suffix","version":"4.0.7","platform":"ruby","checksum":"8be161e2421f8d45b0098c042c06486789731ea93dc3a896d30554ee38b573b8"},
{"name":"puma","version":"5.6.5","platform":"java","checksum":"29d78fc2bc070b9db285a3334a890c3e0ece9bb369388065f0f340ccb1e57faf"},
{"name":"puma","version":"5.6.5","platform":"ruby","checksum":"661029d15a115e9f6c0641a69c830ffd9f1b9ac63fcd0791d94ccd900e03f863"},
{"name":"puma_worker_killer","version":"0.3.1","platform":"ruby","checksum":"9c5534d296b5e92d1ad4a578f2daf2aa71563003c84f7263f0a8dfd22b5c614a"},
{"name":"pyu-ruby-sasl","version":"0.0.3.3","platform":"ruby","checksum":"5683a6bc5738db5a1bf5ceddeaf545405fb241b4184dd4f2587e679a7e9497e5"},
{"name":"raabro","version":"1.4.0","platform":"ruby","checksum":"d4fa9ff5172391edb92b242eed8be802d1934b1464061ae5e70d80962c5da882"},
{"name":"racc","version":"1.6.0","platform":"java","checksum":"d449a3c279026451b9fd5f34e829dc5f6e0ef6b9b472b7ff89fd3877fe8fe8cf"},
{"name":"racc","version":"1.6.0","platform":"ruby","checksum":"2dede3b136eeabd0f7b8c9356b958b3d743c00158e2615acab431af141354551"},
{"name":"rack","version":"2.2.4","platform":"ruby","checksum":"ea2232b638cbd919129c8c8ad8012ecaccc09f848152a7e705d2139d0137ac2b"},
{"name":"rack-accept","version":"0.4.5","platform":"ruby","checksum":"66247b5449db64ebb93ae2ec4af4764b87d1ae8a7463c7c68893ac13fa8d4da2"},
{"name":"rack-attack","version":"6.6.1","platform":"ruby","checksum":"187e5d248c6a162ed8cafa8241a7b5947d9b9cf122a4870eb1cdd0db861f3a11"},
{"name":"rack-cors","version":"1.1.1","platform":"ruby","checksum":"4702644ac6d63ebbddff372a3cd4cd573513287e3524b5a5415f678970057a4b"},
{"name":"rack-oauth2","version":"1.21.2","platform":"ruby","checksum":"06fc157cad243ac11d8681c18139c4556a3f86b518f0fcb419e29512181a3ff2"},
{"name":"rack-protection","version":"2.2.2","platform":"ruby","checksum":"fd41414dbabbec274af0bdb1f72a48504449de4d979782c9af38cbb5dfff3299"},
{"name":"rack-proxy","version":"0.7.2","platform":"ruby","checksum":"89c74fd6d3e5a4db0ed7e0d8b9915dbc85360fd6f98f6c1f9a66479fe236f4b6"},
{"name":"rack-test","version":"1.1.0","platform":"ruby","checksum":"154161f40f162b1c009a655b7b0c5de3a3102cc6d7d2e94b64e1f46ace800866"},
{"name":"rack-timeout","version":"0.6.0","platform":"ruby","checksum":"6038d1cc31936394bd2c57bb16c17b31d2fd1d33ce928537cf0ef6f1f1905099"},
{"name":"rails","version":"6.1.6.1","platform":"ruby","checksum":"17024921a3913fb341f584542b06adf6bb12977a8b92d5fce093c3996c963686"},
{"name":"rails-controller-testing","version":"1.0.5","platform":"ruby","checksum":"741448db59366073e86fc965ba403f881c636b79a2c39a48d0486f2607182e94"},
{"name":"rails-dom-testing","version":"2.0.3","platform":"ruby","checksum":"b140c4f39f6e609c8113137b9a60dfc2ecb89864e496f87f23a68b3b8f12d8d1"},
{"name":"rails-html-sanitizer","version":"1.4.3","platform":"ruby","checksum":"2ebba6ad9a0b100f79fda853a46851e7664febe1728223f9734281e0d55940d6"},
{"name":"rails-i18n","version":"7.0.3","platform":"ruby","checksum":"e3158e98c5332d129fd5131f171ac575eb30dbb8919b21595382b08850cf2bd3"},
{"name":"railties","version":"6.1.6.1","platform":"ruby","checksum":"bafecdf2dcbe4ea44e1ab7081fd797aa87ae9bbcd0f3a4372b662a1b93949733"},
{"name":"rainbow","version":"3.1.1","platform":"ruby","checksum":"039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a"},
{"name":"rake","version":"13.0.6","platform":"ruby","checksum":"5ce4bf5037b4196c24ac62834d8db1ce175470391026bd9e557d669beeb19097"},
{"name":"randexp","version":"0.1.7","platform":"ruby","checksum":"3026510ecf6a8e8642b9b96fa44bb41af6d24058023b7df77cf280f08e14e4c8"},
{"name":"rash_alt","version":"0.4.12","platform":"ruby","checksum":"1d4a6dd5b8fdcecc6b777c0b924dbf31c125ddd8d805e72dc9359db8324e1607"},
{"name":"rb-fsevent","version":"0.11.2","platform":"ruby","checksum":"43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe"},
{"name":"rb-inotify","version":"0.10.1","platform":"ruby","checksum":"050062d4f31d307cca52c3f6a7f4b946df8de25fc4bd373e1a5142e41034a7ca"},
{"name":"rbtrace","version":"0.4.14","platform":"ruby","checksum":"162bbf89cecabfc4f09c869b655f6f3a679c4870ebb7cbdcadf7393a81cc1769"},
{"name":"rbtree","version":"0.4.4","platform":"ruby","checksum":"c1277a502a96fe8fd8656cb619db1ac87145df809ea4db35f7242b50bb161d5c"},
{"name":"rchardet","version":"1.8.0","platform":"ruby","checksum":"693acd5253d5ade81a51940697955f6dd4bb2f0d245bda76a8e23deec70a52c7"},
{"name":"rdoc","version":"6.3.2","platform":"ruby","checksum":"def4a720235c27d56c176ae73555e647eb04ea58a8bbaa927f8f9f79de7805a6"},
{"name":"re2","version":"1.4.0","platform":"ruby","checksum":"5c07d2351be1159530e2b815aae499b6524942e79bf21d560fcff5b2fa20ea8f"},
{"name":"recaptcha","version":"4.13.1","platform":"ruby","checksum":"dc6c2cb78afa87034358b7ba1c6f7175972b5709fdf7500e2550623e119e3788"},
{"name":"recursive-open-struct","version":"1.1.3","platform":"ruby","checksum":"a3538a72552fcebcd0ada657bdff313641a4a5fbc482c08cfb9a65acb1c9de5a"},
{"name":"redcarpet","version":"3.5.1","platform":"ruby","checksum":"717f64cb6ec11c8d9ec9b521ed26ca2eeda68b4fe1fc3388a641176dbd47732f"},
{"name":"redis","version":"4.7.1","platform":"ruby","checksum":"ecb256d4e53ead3eca05bf394dd100e6a162c136f461fe752ddf5d35b64a2df6"},
{"name":"redis-actionpack","version":"5.3.0","platform":"ruby","checksum":"3fb1ad0a8fd9d26a289c9399bb609dcaef38bf37711e6f677a53ca728fc19140"},
{"name":"redis-namespace","version":"1.8.1","platform":"ruby","checksum":"c81707d693e5e754c690b4e1fa68ecfa8bd1028fbf306e533b3832e44e76c54c"},
{"name":"redis-rack","version":"2.1.4","platform":"ruby","checksum":"0872eecb303e483c3863d6bd0d47323d230640d41c1a4ac4a2c7596ec0b1774c"},
{"name":"redis-store","version":"1.9.1","platform":"ruby","checksum":"7b4c7438d46f7b7ce8f67fc0eda3a04fc67d32d28cf606cc98a5df4d2b77071d"},
{"name":"regexp_parser","version":"2.5.0","platform":"ruby","checksum":"a076d2d35ab8d11feab5fecf8aa09ec6df68c2429810748cba079f7b021ecde5"},
{"name":"regexp_property_values","version":"1.0.0","platform":"java","checksum":"5e26782b01241616855c4ee7bb8a62fce9387e484f2d3eaf04f2a0633708222e"},
{"name":"regexp_property_values","version":"1.0.0","platform":"ruby","checksum":"162499dc0bba1e66d334273a059f207a61981cc8cc69d2ca743594e7886d080f"},
{"name":"representable","version":"3.0.4","platform":"ruby","checksum":"07d43917dea4712ecebd19c1909e769deed863ad444d23ceb6461519e2cba962"},
{"name":"request_store","version":"1.5.1","platform":"ruby","checksum":"07a204d161590789f2b1d27f9f0eadcdecd6d868cb2f03240250e1bc747df78e"},
{"name":"responders","version":"3.0.0","platform":"ruby","checksum":"a267b281582802d04cf0968dbc7d60df0d48384915934b3bf9018f811dc3f7dc"},
{"name":"rest-client","version":"2.1.0","platform":"ruby","checksum":"35a6400bdb14fae28596618e312776c158f7ebbb0ccad752ff4fa142bf2747e3"},
{"name":"rest-client","version":"2.1.0","platform":"x64-mingw32","checksum":"7cd156496196d90b7d8f5b8de521ef67d8a9e03f06862da80b9b5912ab05a470"},
{"name":"rest-client","version":"2.1.0","platform":"x86-mingw32","checksum":"fb543caf36cb555c05c6186aeb1273c6a1b059896e4cfd394e7269b20c40ca01"},
{"name":"rest-client","version":"2.1.0","platform":"x86-mswin32","checksum":"a35a3bb8d16ca39d110a946a2c805267f98ce07a0ae890e4512a45eadea47a6e"},
{"name":"retriable","version":"3.1.2","platform":"ruby","checksum":"0a5a5d0ca4ba61a76fb31a17ab8f7f80281beb040c329d34dfc137a1398688e0"},
{"name":"reverse_markdown","version":"1.4.0","platform":"ruby","checksum":"a3305da1509ac8388fa84a28745621113e121383402a2e8e9350ba649034e870"},
{"name":"rexml","version":"3.2.5","platform":"ruby","checksum":"a33c3bf95fda7983ec7f05054f3a985af41dbc25a0339843bd2479e93cabb123"},
{"name":"rinku","version":"2.0.0","platform":"ruby","checksum":"3e695aaf9f24baba3af45823b5c427b58a624582132f18482320e2737f9f8a85"},
{"name":"rotp","version":"6.2.0","platform":"ruby","checksum":"239a2eefba6f1bd4157b2c735d0f975598e0ef94823eea2f35d103d2e5cc0787"},
{"name":"rouge","version":"3.30.0","platform":"ruby","checksum":"a3d353222aa72e49e2c86726c0bcfd719f82592f57d494474655f48e669eceb6"},
{"name":"rqrcode","version":"0.7.0","platform":"ruby","checksum":"8b3a5cba9cc199ba2d781a7c767cb55679f29a3621aa0506a799cec3760d16a1"},
{"name":"rqrcode-rails3","version":"0.1.7","platform":"ruby","checksum":"6f0582f26485123e5ed6f2a8a2871f00d86d353e0f58c8429a5a13212bcf48c4"},
{"name":"rspec","version":"3.10.0","platform":"ruby","checksum":"b870b43d49ae4a4e063b94976d2742b0854ec10458c425d569b5556ee5898ab7"},
{"name":"rspec-benchmark","version":"0.6.0","platform":"ruby","checksum":"1014adb57ec2599a2455c63884229f367a2fff6a63a77fd68ce5d804c83dd6cf"},
{"name":"rspec-core","version":"3.10.1","platform":"ruby","checksum":"ac9abdc9577a3a34e9e92815603da8343931055ab4fba1c2a49de6dd3b749673"},
{"name":"rspec-expectations","version":"3.10.1","platform":"ruby","checksum":"27acf5d5df13f8cc8f7158001ebf572513bcec3d45404ba76e0a8998895ce9eb"},
{"name":"rspec-mocks","version":"3.10.3","platform":"ruby","checksum":"d2f6f3d8b7569b1e846703d164cb23e24c7f530d38217fc06da2beaf6024260a"},
{"name":"rspec-parameterized","version":"0.5.0","platform":"ruby","checksum":"f163ac07b5edd1eeb13136480623db7020852c70cf0ad2fa98e31384ae162454"},
{"name":"rspec-rails","version":"5.0.1","platform":"ruby","checksum":"c61e7f35db2266f83b3cc58a340fc3ec0bd6344818040430fd5ddc99775242de"},
{"name":"rspec-retry","version":"0.6.1","platform":"ruby","checksum":"86b7e8513c5b0c713c2e28854f4d996deb8efa6304eef50f0ad68ee6c563d8da"},
{"name":"rspec-support","version":"3.10.2","platform":"ruby","checksum":"74315f89069fbaf2a710e2117340373b77ee45eceb026de87e0cad9dd5154596"},
{"name":"rspec_junit_formatter","version":"0.4.1","platform":"ruby","checksum":"3788f9b3fabc6284b93493cf4b3a80cba2b59b3a774b95f39dd7886d5faed6ab"},
{"name":"rspec_profiling","version":"0.0.6","platform":"ruby","checksum":"7a45697f79dcec9a174a0e26703465f6bd52ee78e8d798741240bfcef38f6e6e"},
{"name":"rubocop","version":"0.93.1","platform":"ruby","checksum":"73b44fbbe872edbd3f14487175b6369a0f48e952c155f305896ffa56c48b195e"},
{"name":"rubocop-ast","version":"1.21.0","platform":"ruby","checksum":"8f5d98611343498602de2d41bc583aca71599daad16daeadaeeee60f134c9568"},
{"name":"rubocop-gitlab-security","version":"0.1.1","platform":"ruby","checksum":"96f6ed727847a5876ddfc89ee0399438a1aef7934db773c7efce907e2720006c"},
{"name":"rubocop-graphql","version":"0.14.6","platform":"ruby","checksum":"b40f2cbac9990ece44eb85eec5c5ae04fca1e197c07c790ac1ca60600b55bdad"},
{"name":"rubocop-performance","version":"1.9.2","platform":"ruby","checksum":"3373ad82b70189fa16b593b6237eb06186da669d468b7d6483bca64c0a844a05"},
{"name":"rubocop-rails","version":"2.9.1","platform":"ruby","checksum":"2d8d113c3ae074c78c89cb706b4a08116d730bf92dbef148798498171435c540"},
{"name":"rubocop-rspec","version":"1.44.1","platform":"ruby","checksum":"7b2238e7d6cf17a925a90992914f3cd8ecd68b65b31710d60a3f7f647f8a8b2a"},
{"name":"ruby-fogbugz","version":"0.2.1","platform":"ruby","checksum":"15b2e7fe7e95b021a94ee6e9d8bb32fdad6ae44e820c2ce0dc312fe6e77d40ca"},
{"name":"ruby-magic","version":"0.5.4","platform":"ruby","checksum":"2c17b185130d10a83791f63a40baa358c4b138af37da3f4dab53690121c421d5"},
{"name":"ruby-prof","version":"1.3.1","platform":"ruby","checksum":"e735d20c92954e1fa2a4475539c99dfc8d0166b4cc6915ca309e8ee2dd19323c"},
{"name":"ruby-prof","version":"1.3.1","platform":"x64-mingw32","checksum":"a97bb6ff0abb01131ecba88799222d492d9124e057535db8e5bd47119f2a58ba"},
{"name":"ruby-progressbar","version":"1.11.0","platform":"ruby","checksum":"cc127db3866dc414ffccbf92928a241e585b3aa2b758a5563e74a6ee0f57d50a"},
{"name":"ruby-saml","version":"1.13.0","platform":"ruby","checksum":"d31cbdf5fb8fdd6aa3187e48dba3085cfeb751af30276a5739aa3659a66f069c"},
{"name":"ruby-statistics","version":"3.0.0","platform":"ruby","checksum":"610301370346931cb701e3a8d3d3e28eb65681162cae6066c0c11abf20efdc81"},
{"name":"ruby2_keywords","version":"0.0.5","platform":"ruby","checksum":"ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef"},
{"name":"ruby_parser","version":"3.15.0","platform":"ruby","checksum":"53784028e46407d43b5a704f10f105db00241102ee4402d2a55755b5fa2ad42c"},
{"name":"rubyntlm","version":"0.6.3","platform":"ruby","checksum":"5b321456dba3130351f7451f8669f1afa83a0d26fd63cdec285b7b88e667102d"},
{"name":"rubypants","version":"0.2.0","platform":"ruby","checksum":"f07e38eac793655a0323fe91946081052341b9e69807026fcf102346589eedee"},
{"name":"rubyzip","version":"2.3.2","platform":"ruby","checksum":"3f57e3935dc2255c414484fbf8d673b4909d8a6a57007ed754dde39342d2373f"},
{"name":"rugged","version":"1.2.0","platform":"ruby","checksum":"111979962e75378209673ae262a8f43bd1971b5b5f96f4dfb77ca82b343604ed"},
{"name":"safe_yaml","version":"1.0.4","platform":"ruby","checksum":"248193992ef1730a0c9ec579999ef2256a2b3a32a9bd9d708a1e12544a489ec2"},
{"name":"safety_net_attestation","version":"0.4.0","platform":"ruby","checksum":"96be2d74e7ed26453a51894913449bea0e072f44490021545ac2d1c38b0718ce"},
{"name":"sanitize","version":"6.0.0","platform":"ruby","checksum":"81795f985873f3bacee2eaaededeaafc3a29aafeaa9aff51e04b85a66bbf08ff"},
{"name":"sass","version":"3.5.5","platform":"ruby","checksum":"1bb5431bc620ce29076728a4c8f7b4acb55066ed9df8cf5d57db6cda450d8080"},
{"name":"sass-listen","version":"4.0.0","platform":"ruby","checksum":"ae9dcb76dd3e234329e5ba6e213f48e532c5a3e7b0b4d8a87f13aaca0cc18377"},
{"name":"sassc","version":"2.4.0","platform":"ruby","checksum":"4c60a2b0a3b36685c83b80d5789401c2f678c1652e3288315a1551d811d9f83e"},
{"name":"sassc","version":"2.4.0","platform":"x64-mingw32","checksum":"8773b917cb52c7e92c94d4bf324c1c0be3e50d9092f9f5ed4c3c6e454b451c5e"},
{"name":"sassc-rails","version":"2.1.0","platform":"ruby","checksum":"764dcc74e06930e3483caf0d595084d11f2b0fefd6539abf487cdddfba6cafa2"},
{"name":"sawyer","version":"0.9.2","platform":"ruby","checksum":"fa3a72d62a4525517b18857ddb78926aab3424de0129be6772a8e2ba240e7aca"},
{"name":"sd_notify","version":"0.1.0","platform":"ruby","checksum":"22b68623635175dfdb856d43c9480f9ad13eafa604ab410dc91168102287a663"},
{"name":"securecompare","version":"1.0.0","platform":"ruby","checksum":"cb0c6599deaaedf6d28f8d88538b06e7198c4826b1b8edb1dbeb44a2162fc62b"},
{"name":"seed-fu","version":"2.3.7","platform":"ruby","checksum":"f19673443e9af799b730e3d4eca6a89b39e5a36825015dffd00d02ea3365cf74"},
{"name":"selenium-webdriver","version":"3.142.7","platform":"ruby","checksum":"dea0993e0e4fdb364f0453144814c0e6099a411d17396807c6cac666d0ddac29"},
{"name":"sentry-rails","version":"5.1.1","platform":"ruby","checksum":"906ef0a776ddc35884ab8b548856ba81c607e3fdee7c9c9f7c44efccc16a657f"},
{"name":"sentry-raven","version":"3.1.2","platform":"ruby","checksum":"103d3b122958810d34898ce2e705bcf549ddb9d855a70ce9a3970ee2484f364a"},
{"name":"sentry-ruby","version":"5.1.1","platform":"ruby","checksum":"4e49563b72c1c22ffe3a67e5024b856c364766146d01e270423fd494d8fcc125"},
{"name":"sentry-ruby-core","version":"5.1.1","platform":"ruby","checksum":"152ed891ee78348da448a65237be92990f3e8b9e5b34bb39003eade48cca5d04"},
{"name":"sentry-sidekiq","version":"5.1.1","platform":"ruby","checksum":"e4c3618577fba37f7a9fc3812013a7868d09e0e0a0970efc605e6e184079d1af"},
{"name":"set","version":"1.0.1","platform":"ruby","checksum":"d169fe8df4738e9da1118199429a9cf1ce0ac5e8a3cacc481e2ed24d585419dd"},
{"name":"settingslogic","version":"2.0.9","platform":"ruby","checksum":"5925a91d0d48dfb59a6e48ae2bb9c9b801fe6fab25a8e8d302ce8699d92f2ae6"},
{"name":"sexp_processor","version":"4.15.1","platform":"ruby","checksum":"9291a0f2247f50d15068ee6965b67cd7b678b0d273e18adf3c0b2ea4a890125c"},
{"name":"shellany","version":"0.0.1","platform":"ruby","checksum":"0e127a9132698766d7e752e82cdac8250b6adbd09e6c0a7fbbb6f61964fedee7"},
{"name":"shoulda-matchers","version":"5.1.0","platform":"ruby","checksum":"a01d20589989e9653ab4a28c67d9db2b82bcf0a2496cf01d5e1a95a4aaaf5b07"},
{"name":"sidekiq","version":"6.4.2","platform":"ruby","checksum":"0d3c05fecb5fbace5ff5efc63da707e02a9c4673fb8e33ceca10b5ec0e9f062c"},
{"name":"sidekiq-cron","version":"1.4.0","platform":"ruby","checksum":"21612ade25ea79b4eeb8eacd7fb559a85a1abf6bf1da1aca1aa0079cafd3376d"},
{"name":"sigdump","version":"0.2.4","platform":"ruby","checksum":"0bf2176e55c1a262788623fe5ea57caddd6ba2abebe5e349d9d5e7c3a3010ed7"},
{"name":"signet","version":"0.17.0","platform":"ruby","checksum":"1d2831930dc28da32e34bec68cf7ded97ee2867b208f97c500ee293829cb0004"},
{"name":"simple_po_parser","version":"1.1.6","platform":"ruby","checksum":"122687d44d3de516a0e69e2f383a4180f5015e8c5ed5a7f2258f2b376f64cbf3"},
{"name":"simplecov","version":"0.21.2","platform":"ruby","checksum":"990db6aedb55086d6bf8874993ff1f796e4830abfa11937468ca502a0d013bc3"},
{"name":"simplecov-cobertura","version":"1.3.1","platform":"ruby","checksum":"9b738110652421cd5a9f09f495cc1159533c02ac4a53e7fe8ae60934bca0331e"},
{"name":"simplecov-html","version":"0.12.3","platform":"ruby","checksum":"4b1aad33259ffba8b29c6876c12db70e5750cb9df829486e4c6e5da4fa0aa07b"},
{"name":"simplecov-lcov","version":"0.8.0","platform":"ruby","checksum":"0115f31cb7ef5ec4334f5d9382c67fd43de2e5270e21b65bfc693da82dd713c1"},
{"name":"simplecov_json_formatter","version":"0.1.4","platform":"ruby","checksum":"529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428"},
{"name":"sixarm_ruby_unaccent","version":"1.2.0","platform":"ruby","checksum":"0043a6077bdf2c4b03040152676a07f8bf77144f9b007b1960ee5c94d13a4384"},
{"name":"slack-messenger","version":"2.3.4","platform":"ruby","checksum":"49c611d2be5b0f9c250a3a957b9cc09b9c07b81dacb9843642d87b6fa35609c1"},
{"name":"snowplow-tracker","version":"0.6.1","platform":"ruby","checksum":"9cec52fd060619f4974b3dc1f7d9a2776c5e31b668a6ead53145b9780e312314"},
{"name":"solargraph","version":"0.46.0","platform":"ruby","checksum":"1da9fd8c364501f18b0454e54506e7098bc38dae719219713fe5f246dfc91465"},
{"name":"sorted_set","version":"1.0.3","platform":"java","checksum":"996283f2e5c6e838825bcdcee31d6306515ae5f24bcb0ee4ce09dfff32919b8c"},
{"name":"sorted_set","version":"1.0.3","platform":"ruby","checksum":"4f2b8bee6e8c59cbd296228c0f1f81679357177a8b6859dcc2a99e86cce6372f"},
{"name":"spamcheck","version":"1.0.0","platform":"ruby","checksum":"dfeea085184091353e17d729d2f3d714b07cba36aaf64c32dfc35ce9b466fc9c"},
{"name":"spring","version":"2.1.1","platform":"ruby","checksum":"0d0ccd42eb6ac035b26a6791d10715b3b59c069d1fcd34693d7782257cf85cf4"},
{"name":"spring-commands-rspec","version":"1.0.4","platform":"ruby","checksum":"6202e54fa4767452e3641461a83347645af478bf45dddcca9737b43af0dd1a2c"},
{"name":"sprite-factory","version":"1.7.1","platform":"ruby","checksum":"5586524a1aec003241f1abc6852b61433e988aba5ee2b55f906387bf49b01ba2"},
{"name":"sprockets","version":"3.7.2","platform":"ruby","checksum":"5ea1d7facd09203c1aa196afd6178208cd25abdbcc2a9978810a2f0754e152a0"},
{"name":"sprockets-rails","version":"3.4.2","platform":"ruby","checksum":"36d6327757ccf7460a00d1d52b2d5ef0019a4670503046a129fa1fb1300931ad"},
{"name":"sqlite3","version":"1.4.2","platform":"ruby","checksum":"e8b8ef3b0f75c18e1a7ee62c5678c827e99389e53fa55eb7a9a5f57459004a52"},
{"name":"ssh_data","version":"1.3.0","platform":"ruby","checksum":"ec7c1e95a3aebeee412147998f4c147b4b05da6ed0aafda6083f9449318eaac0"},
{"name":"ssrf_filter","version":"1.0.7","platform":"ruby","checksum":"80dc5728e5743201239e465c7e14290c7acf1de3b9f1f664579112429c79953a"},
{"name":"stackprof","version":"0.2.21","platform":"ruby","checksum":"2b6406c55dc2e134b2789c4cc631d96e67da87821a166f4ae12f15bec5cff5ae"},
{"name":"state_machines","version":"0.5.0","platform":"ruby","checksum":"23e6249d374a920b528dccade403518b4abbd83841a3e2c9ef13e6f1a009b102"},
{"name":"state_machines-activemodel","version":"0.8.0","platform":"ruby","checksum":"e932dab190d4be044fb5f9cab01a3ea0b092c5f113d4676c6c0a0d49bf738d2c"},
{"name":"state_machines-activerecord","version":"0.8.0","platform":"ruby","checksum":"072fb701b8ab03de0608297f6c55dc34ed096e556fa8f77e556f3c461c71aab6"},
{"name":"strings","version":"0.2.1","platform":"ruby","checksum":"933293b3c95cf85b81eb44b3cf673e3087661ba739bbadfeadf442083158d6fb"},
{"name":"strings-ansi","version":"0.2.0","platform":"ruby","checksum":"90262d760ea4a94cc2ae8d58205277a343409c288cbe7c29416b1826bd511c88"},
{"name":"swd","version":"1.3.0","platform":"ruby","checksum":"bc382a19e1d36a95529b25152976db61b80376c3d486b21c8dd60ac2b5c06389"},
{"name":"sync","version":"0.5.0","platform":"ruby","checksum":"668356cc07c59ac7ed9ecf34fec3929831f179c07adb1f3e1c3b7a1609a638fd"},
{"name":"sys-filesystem","version":"1.4.3","platform":"ruby","checksum":"390919de89822ad6d3ba3daf694d720be9d83ed95cdf7adf54d4573c98b17421"},
{"name":"sysexits","version":"1.2.0","platform":"ruby","checksum":"598241c4ae57baa403c125182dfdcc0d1ac4c0fb606dd47fbed57e4aaf795662"},
{"name":"tanuki_emoji","version":"0.6.0","platform":"ruby","checksum":"4ce91aefed2d076b73fba3eff50e89660c3d25691787a9fe4c0dfabb4218c12a"},
{"name":"temple","version":"0.8.2","platform":"ruby","checksum":"c12071214346c606dbd219b4117276d04a9f2c20d65e66a66b2c4ec18efc1f18"},
{"name":"term-ansicolor","version":"1.7.1","platform":"ruby","checksum":"92339ffec77c4bddc786a29385c91601dd52fc68feda23609bba0491229b05f7"},
{"name":"terminal-table","version":"1.8.0","platform":"ruby","checksum":"13371f069af18e9baa4e44d404a4ada9301899ce0530c237ac1a96c19f652294"},
{"name":"terser","version":"1.0.2","platform":"ruby","checksum":"80c2e0bc7e2db4e12e8529658f9e0820e13d685ae67d745bf981f269743bb28e"},
{"name":"test-prof","version":"1.0.7","platform":"ruby","checksum":"7df2ece7acf4f14c52788abdfdefae689b4d1cd84530b2fe7cacadf89cfce0ed"},
{"name":"test_file_finder","version":"0.1.4","platform":"ruby","checksum":"bc36d8339eac4fb9dc36514a7c5f4d389ac2fb6d010716fc715c5c8fbb98eacd"},
{"name":"text","version":"1.3.1","platform":"ruby","checksum":"2fbbbc82c1ce79c4195b13018a87cbb00d762bda39241bb3cdc32792759dd3f4"},
{"name":"thor","version":"1.2.1","platform":"ruby","checksum":"b1752153dc9c6b8d3fcaa665e9e1a00a3e73f28da5e238b81c404502e539d446"},
{"name":"thrift","version":"0.16.0","platform":"ruby","checksum":"d023286ea89e30444c9f1c28dd76107f87d8aaf85fe1742da1d8cd3b5417dcce"},
{"name":"tilt","version":"2.0.10","platform":"ruby","checksum":"9b664f0e9ae2b500cfa00f9c65c34abc6ff1799cf0034a8c0a0412d520fac866"},
{"name":"timecop","version":"0.9.1","platform":"ruby","checksum":"374b543f0961dbd487e96d09ac812d4fdfeb603ec705bbff241ba060d0a9f534"},
{"name":"timeliness","version":"0.3.10","platform":"ruby","checksum":"c357233ce19dc53148e8b29dfddde134689f18f52b32928e9dfe12ebcf4a773f"},
{"name":"timfel-krb5-auth","version":"0.8.3","platform":"ruby","checksum":"ab388c9d747fa3cd95baf2cc1c03253e372d8c680adcc543670f4f099854bb80"},
{"name":"tins","version":"1.31.0","platform":"ruby","checksum":"20b5ea997dc046358fd05f15d39636bd7946798591b9c5741cc41f69853c7894"},
{"name":"toml-rb","version":"2.0.1","platform":"ruby","checksum":"5016c6c77ac72bca5fe67c372722bdfdd4479a6fe1a1c4ff2a486e247849b274"},
{"name":"tomlrb","version":"1.3.0","platform":"ruby","checksum":"68666bf53fa70ba686a48a7435ce7e086f5227c58c4c993bd9792f4760f2a503"},
{"name":"tpm-key_attestation","version":"0.9.0","platform":"ruby","checksum":"e469ad9111a68dab4d04596e1c0621d7c877c2e3e247f765af3c04f1adf2b8cd"},
{"name":"train-core","version":"3.4.9","platform":"ruby","checksum":"d7ad8fa9a379c43a30baaaf1141af1cb28349d386c054f7fc81d169a625d6edd"},
{"name":"truncato","version":"0.7.12","platform":"ruby","checksum":"fed9e8a04fa35fd1a64506cd2089761bae4adfe47e756c3ce98a5c43856c9c4c"},
{"name":"tty-color","version":"0.6.0","platform":"ruby","checksum":"6f9c37ca3a4e2367fb2e6d09722762647d6f455c111f05b59f35730eeb24332a"},
{"name":"tty-cursor","version":"0.7.1","platform":"ruby","checksum":"79534185e6a777888d88628b14b6a1fdf5154a603f285f80b1753e1908e0bf48"},
{"name":"tty-markdown","version":"0.7.0","platform":"ruby","checksum":"251e8ef71f6a8bc91faa48aa49c341aff644321f493f94c030e571c5aa59e642"},
{"name":"tty-prompt","version":"0.23.1","platform":"ruby","checksum":"fcdbce905238993f27eecfdf67597a636bc839d92192f6a0eef22b8166449ec8"},
{"name":"tty-reader","version":"0.9.0","platform":"ruby","checksum":"c62972c985c0b1566f0e56743b6a7882f979d3dc32ff491ed490a076f899c2b1"},
{"name":"tty-screen","version":"0.8.1","platform":"ruby","checksum":"6508657c38f32bdca64880abe201ce237d80c94146e1f9b911cba3c7823659a2"},
{"name":"typhoeus","version":"1.4.0","platform":"ruby","checksum":"fff9880d5dc35950e7706cf132fd297f377c049101794be1cf01c95567f642d4"},
{"name":"tzinfo","version":"2.0.5","platform":"ruby","checksum":"c5352fd901544d396745d013f46a04ae2ed081ce806d942099825b7c2b09a167"},
{"name":"u2f","version":"0.2.1","platform":"ruby","checksum":"7907b163c00682ce94d82178154af2ec3930e50f342c3502d64929c6370c5553"},
{"name":"uber","version":"0.1.0","platform":"ruby","checksum":"5beeb407ff807b5db994f82fa9ee07cfceaa561dad8af20be880bc67eba935dc"},
{"name":"undercover","version":"0.4.4","platform":"ruby","checksum":"61c4cbe03a9de0764b07cceef82a63f9d8dbf4d8680ec017cee307927561f6a5"},
{"name":"unf","version":"0.1.4","platform":"java","checksum":"49a5972ec0b3d091d3b0b2e00113f2f342b9b212f0db855eb30a629637f6d302"},
{"name":"unf","version":"0.1.4","platform":"ruby","checksum":"4999517a531f2a955750f8831941891f6158498ec9b6cb1c81ce89388e63022e"},
{"name":"unf_ext","version":"0.0.8.2","platform":"ruby","checksum":"90b9623ee359cc4878461c5d2eab7d3d3ce5801a680a9e7ac83b8040c5b742fa"},
{"name":"unf_ext","version":"0.0.8.2","platform":"x64-mingw-ucrt","checksum":"580e3c1ca389f10ca17d13ddeb5dc3fbdc80ce2c2b8cdb15c08af3a3b45a60fc"},
{"name":"unf_ext","version":"0.0.8.2","platform":"x64-mingw32","checksum":"f7e4c01774c91eb22e30d53dfc40ffbbb5a175f785c8f6f1be17ad96a0b29ed0"},
{"name":"unf_ext","version":"0.0.8.2","platform":"x86-mingw32","checksum":"6d44c13c98924bebd15ebdd4ed196ead403a0770ac03304570873349fda2a208"},
{"name":"unicode-display_width","version":"1.8.0","platform":"ruby","checksum":"0292132d364d59fcdd83f144910c48b3c8332b28a14c5c04bb093dd165600488"},
{"name":"unicode_utils","version":"1.4.0","platform":"ruby","checksum":"b922d0cf2313b6b7136ada6645ce7154ffc86418ca07d53b058efe9eb72f2a40"},
{"name":"uniform_notifier","version":"1.16.0","platform":"ruby","checksum":"99b39ee4a0864e3b49f375b5e5803eb26d35ed6eb1719c96407573a87bc4dbb5"},
{"name":"unleash","version":"3.2.2","platform":"ruby","checksum":"0f6e56498de920de66a01bceffb93933693ade646bb853fc70eb16bd1026b93b"},
{"name":"unparser","version":"0.6.0","platform":"ruby","checksum":"4afa0540583032d28a623e65f057809fdbed6dc84bd8a1de93262e1aa4618608"},
{"name":"uri_template","version":"0.7.0","platform":"ruby","checksum":"312c8fe13700db86ac9d05ea997af3db03abdf50c65b1801d775bc7a695f185d"},
{"name":"valid_email","version":"0.1.3","platform":"ruby","checksum":"b81452b51b64c4beb67913f68db52c20ecb4d73d45512f5b282ab4a3f4416570"},
{"name":"validate_email","version":"0.1.6","platform":"ruby","checksum":"9dfe9016d527b17a8d3a6e95e4dc50a125400eef899d13d4cc2a254393f82ee4"},
{"name":"validate_url","version":"1.0.15","platform":"ruby","checksum":"72fe164c0713d63a9970bd6700bea948babbfbdcec392f2342b6704042f57451"},
{"name":"validates_hostname","version":"1.0.11","platform":"ruby","checksum":"d506bae0342ec14c920eb319e057fc1886c321a59b85b4b6e966ee4b88fab8c3"},
{"name":"version_gem","version":"1.0.0","platform":"ruby","checksum":"929c93a4d46482bb3b0359980c7a5fb1b5a833548f1202a480b08a6f0a5f8f2f"},
{"name":"version_sorter","version":"2.2.4","platform":"ruby","checksum":"7ad071609edfaa3cf28c42d83b1a03096e43512244ae5a9e2fce1404f7e06d41"},
{"name":"view_component","version":"2.71.0","platform":"ruby","checksum":"c1880647800d9cfb03ff4ba92313db624a4a4b3d5753e137effe86e5f2b3662b"},
{"name":"vmstat","version":"2.3.0","platform":"ruby","checksum":"ab5446a3e3bd0a9cdb9d9ac69a0bbd119c4f161d945a0846a519dd7018af656d"},
{"name":"warden","version":"1.2.9","platform":"ruby","checksum":"46684f885d35a69dbb883deabf85a222c8e427a957804719e143005df7a1efd0"},
{"name":"warning","version":"1.3.0","platform":"ruby","checksum":"23695a5d8e50bd5c46068931b529bee0b28e4982cbcefbe77d867800dde8069e"},
{"name":"webauthn","version":"2.3.0","platform":"ruby","checksum":"96fbee59f4a45219f1dae96f467b693de144f871be9ec6ea357168624dacd89e"},
{"name":"webfinger","version":"1.2.0","platform":"ruby","checksum":"7814ef1c85da47514f65c6e5ca14205fa9ce41ea2a70785e0c872842162852a2"},
{"name":"webmock","version":"3.9.1","platform":"ruby","checksum":"bcf6822456b234fb1bed2b0a89bff31fe0641214b44f6ba4ced2b824cf31337d"},
{"name":"webrick","version":"1.6.1","platform":"ruby","checksum":"0b4d1eab918f5f53333c690ad470825e51844ce9851e403a3fd47d6a84d9d67c"},
{"name":"websocket-driver","version":"0.7.5","platform":"java","checksum":"fffa83aa188e9ac90e32a385832ec9d26acdf019538e1c7d703f2c8a323b39c8"},
{"name":"websocket-driver","version":"0.7.5","platform":"ruby","checksum":"a280c3f44dcbb0323d58bc78dc49350c05d589ab7d13267fcff08d9d5ae76b28"},
{"name":"websocket-extensions","version":"0.1.5","platform":"ruby","checksum":"1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241"},
{"name":"wikicloth","version":"0.8.1","platform":"ruby","checksum":"7ac8a9ca0a948cf472851e521afc6c2a6b04a8f91ef1d824ba6a61ffbd60e6ca"},
{"name":"wisper","version":"2.0.1","platform":"ruby","checksum":"ce17bc5c3a166f241a2e6613848b025c8146fce2defba505920c1d1f3f88fae6"},
{"name":"with_env","version":"1.1.0","platform":"ruby","checksum":"50b3e4f0a6cda8f90d8a6bd87a6261f6c381429abafb161c4c69ad4a0cd0b6e4"},
{"name":"wmi-lite","version":"1.0.5","platform":"ruby","checksum":"14efa710be3226e281a66ab93f7ebc92f5e0807029e02b9cf1d3f39d15d90d84"},
{"name":"xml-simple","version":"1.1.9","platform":"ruby","checksum":"d21131e519c86f1a5bc2b6d2d57d46e6998e47f18ed249b25cad86433dbd695d"},
{"name":"xpath","version":"3.2.0","platform":"ruby","checksum":"6dfda79d91bb3b949b947ecc5919f042ef2f399b904013eb3ef6d20dd3a4082e"},
{"name":"yajl-ruby","version":"1.4.3","platform":"ruby","checksum":"8c974d9c11ae07b0a3b6d26efea8407269b02e4138118fbe3ef0d2ec9724d1d2"},
{"name":"yard","version":"0.9.26","platform":"ruby","checksum":"30594aa05cf737aa725c73444c7be3d54a443d0e258e1503da4eb1a0822cf963"},
{"name":"zeitwerk","version":"2.6.0","platform":"ruby","checksum":"6cb2ee4645c6e597640d6f2d8cc91a59a6699ab38896a5c3fac3eefeb5c84d76"}
]

View file

@ -1,3 +1,9 @@
PATH
remote: vendor/gems/bundler-checksum
specs:
bundler-checksum (0.1.0)
bundler
PATH
remote: vendor/gems/devise-pbkdf2-encryptable
specs:
@ -14,7 +20,7 @@ PATH
remote: vendor/gems/ipynbdiff
specs:
ipynbdiff (0.4.7)
diffy (~> 3.3)
diffy (~> 3.4)
oj (~> 3.13.16)
PATH
@ -24,28 +30,59 @@ PATH
connection_pool (~> 2.0)
mail (~> 2.7)
PATH
remote: vendor/gems/microsoft_graph_mailer
specs:
microsoft_graph_mailer (0.1.0)
mail (~> 2.7)
oauth2 (>= 1.4.4, < 3)
PATH
remote: vendor/gems/omniauth-azure-oauth2
specs:
omniauth-azure-oauth2 (0.0.10)
jwt (>= 1.0, < 3.0)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.4)
PATH
remote: vendor/gems/omniauth-cas3
specs:
omniauth-cas3 (1.1.4)
addressable (~> 2.3)
nokogiri (~> 1.7, >= 1.7.1)
omniauth (~> 1.2, < 3)
omniauth (~> 2.0)
PATH
remote: vendor/gems/omniauth-gitlab
specs:
omniauth-gitlab (4.0.0)
omniauth (~> 1.0)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.7.1)
PATH
remote: vendor/gems/omniauth-google-oauth2
specs:
omniauth-google-oauth2 (1.0.1)
jwt (>= 2.0)
oauth2 (~> 2.0)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.7.1)
PATH
remote: vendor/gems/omniauth-salesforce
specs:
omniauth-salesforce (1.0.5)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.0)
PATH
remote: vendor/gems/omniauth_crowd
specs:
omniauth_crowd (2.4.0)
activesupport
nokogiri (>= 1.4.4)
omniauth (~> 1.0, < 3)
omniauth (~> 2.0)
GEM
remote: https://rubygems.org/
@ -131,13 +168,13 @@ GEM
faraday_middleware (~> 1.0)
faraday_middleware-multi_json (~> 0.0)
oauth2 (>= 1.4, < 3)
asciidoctor (2.0.15)
asciidoctor (2.0.17)
asciidoctor-include-ext (0.4.0)
asciidoctor (>= 1.5.6, < 3.0.0)
asciidoctor-kroki (0.5.0)
asciidoctor (~> 2.0)
asciidoctor-plantuml (0.0.12)
asciidoctor (>= 1.5.6, < 3.0.0)
asciidoctor-plantuml (0.0.16)
asciidoctor (>= 2.0.17, < 3.0.0)
ast (2.4.2)
atlassian-jwt (0.2.0)
jwt (~> 2.1.0)
@ -306,7 +343,7 @@ GEM
ruby-statistics (>= 2.1)
thor (>= 0.19, < 2)
device_detector (1.0.0)
devise (4.7.3)
devise (4.8.1)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@ -320,7 +357,7 @@ GEM
rotp (~> 6.0)
diff-lcs (1.5.0)
diff_match_patch (0.1.0)
diffy (3.3.0)
diffy (3.4.2)
discordrb-webhooks (3.4.2)
rest-client (>= 2.0.0)
docile (1.4.0)
@ -377,7 +414,7 @@ GEM
encryptor (3.0.0)
erubi (1.9.0)
escape_utils (1.2.1)
et-orbi (1.2.1)
et-orbi (1.2.7)
tzinfo
ethon (0.15.0)
ffi (>= 1.15.0)
@ -486,7 +523,7 @@ GEM
fog-core
nokogiri (>= 1.5.11, < 2.0.0)
formatador (0.2.5)
fugit (1.2.1)
fugit (1.2.3)
et-orbi (~> 1.1, >= 1.1.8)
raabro (~> 1.1)
fuubar (2.2.0)
@ -508,7 +545,7 @@ GEM
rails (>= 3.2.0)
git (1.11.0)
rchardet (~> 1.8)
gitaly (15.3.0.pre.rc3)
gitaly (15.4.0.pre.rc2)
grpc (~> 1.0)
github-markup (1.7.0)
gitlab (4.16.1)
@ -516,7 +553,7 @@ GEM
terminal-table (~> 1.5, >= 1.5.1)
gitlab-chronic (0.10.5)
numerizer (~> 0.2)
gitlab-dangerfiles (3.5.0)
gitlab-dangerfiles (3.5.2)
danger (>= 8.4.5)
danger-gitlab (>= 8.0.0)
rake
@ -540,15 +577,15 @@ GEM
redis (> 3.0.0, < 5.0.0)
gitlab-license (2.2.1)
gitlab-mail_room (0.0.9)
gitlab-markup (1.8.0)
gitlab-markup (1.8.1)
gitlab-net-dns (0.9.1)
gitlab-omniauth-openid-connect (0.9.1)
gitlab-omniauth-openid-connect (0.10.0)
addressable (~> 2.7)
omniauth (~> 1.9)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.2)
gitlab-sidekiq-fetcher (0.8.0)
sidekiq (~> 6.1)
gitlab-styles (7.1.0)
gitlab-styles (8.0.0)
rubocop (~> 0.91, >= 0.91.1)
rubocop-gitlab-security (~> 0.1.1)
rubocop-graphql (~> 0.10)
@ -580,7 +617,7 @@ GEM
signet (~> 0.12)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-protobuf (3.21.3)
google-protobuf (3.21.5)
googleapis-common-protos-types (1.3.0)
google-protobuf (~> 3.14)
googleauth (0.14.0)
@ -649,10 +686,10 @@ GEM
guard (~> 2.1)
guard-compat (~> 1.1)
rspec (>= 2.99.0, < 4.0)
haml (5.1.2)
haml (5.2.2)
temple (>= 0.8.0)
tilt
haml_lint (0.36.0)
haml_lint (0.40.1)
haml (>= 4.0, < 5.3)
parallel (~> 1.10)
rainbow
@ -757,7 +794,7 @@ GEM
rest-client (~> 2.0)
launchy (2.5.0)
addressable (~> 2.7)
lefthook (1.1.0)
lefthook (1.1.1)
letter_opener (1.7.0)
launchy (~> 2.2)
letter_opener_web (2.0.0)
@ -773,9 +810,9 @@ GEM
tomlrb (>= 1.3, < 2.1)
with_env (= 1.1.0)
xml-simple (~> 1.1.9)
licensee (9.14.1)
licensee (9.15.2)
dotenv (~> 2.0)
octokit (~> 4.17)
octokit (~> 4.20)
reverse_markdown (~> 1.0)
rugged (>= 0.24, < 2.0)
thor (>= 0.19, < 2.0)
@ -792,9 +829,11 @@ GEM
loofah (2.18.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lookbook (0.9.3)
lookbook (1.0.3)
actioncable
css_parser
htmlbeautifier (~> 1.3)
htmlentities (~> 4.3.4)
listen (~> 3.0)
railties (>= 5.0)
redcarpet (~> 3.5)
@ -888,9 +927,10 @@ GEM
train-core
wmi-lite (~> 1.0)
oj (3.13.21)
omniauth (1.9.1)
omniauth (2.1.0)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
rack (>= 2.2.3)
rack-protection
omniauth-alicloud (1.0.1)
omniauth-oauth2 (~> 1.7.1)
omniauth-atlassian-oauth2 (0.2.0)
@ -903,21 +943,13 @@ GEM
omniauth-oauth2 (>= 1.5)
omniauth-azure-activedirectory-v2 (1.0.0)
omniauth-oauth2 (~> 1.7)
omniauth-azure-oauth2 (0.0.10)
jwt (>= 1.0, < 3.0)
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.4)
omniauth-dingtalk-oauth2 (1.0.1)
omniauth-oauth2 (~> 1.7)
omniauth-facebook (4.0.0)
omniauth-oauth2 (~> 1.2)
omniauth-github (1.4.0)
omniauth (~> 1.5)
omniauth-oauth2 (>= 1.4.0, < 2.0)
omniauth-google-oauth2 (0.6.0)
jwt (>= 2.0)
omniauth (>= 1.1.1)
omniauth-oauth2 (>= 1.5)
omniauth-github (2.0.0)
omniauth (~> 2.0)
omniauth-oauth2 (~> 1.7.1)
omniauth-oauth (1.2.0)
oauth
omniauth (>= 1.0, < 3)
@ -926,12 +958,12 @@ GEM
omniauth (>= 1.9, < 3)
omniauth-oauth2-generic (0.2.2)
omniauth-oauth2 (~> 1.0)
omniauth-salesforce (1.0.5)
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.0)
omniauth-saml (1.10.0)
omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.7)
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth-saml (2.0.0)
omniauth (~> 2.0)
ruby-saml (~> 1.9)
omniauth-shibboleth (1.3.0)
omniauth (>= 1.0.0)
omniauth-twitter (1.4.0)
@ -980,7 +1012,7 @@ GEM
rspec (>= 2.14)
term-ansicolor (~> 1.0)
parallel (1.22.1)
parser (3.1.2.0)
parser (3.1.2.1)
ast (~> 2.4.1)
parslet (1.8.2)
pastel (0.8.0)
@ -988,7 +1020,7 @@ GEM
peek (1.1.0)
railties (>= 4.0.0)
pg (1.4.1)
pg_query (2.1.3)
pg_query (2.1.4)
google-protobuf (>= 3.19.2)
plist (3.6.0)
png_quantizator (0.2.1)
@ -1019,13 +1051,13 @@ GEM
tty-markdown
tty-prompt
public_suffix (4.0.7)
puma (5.6.4)
puma (5.6.5)
nio4r (~> 2.0)
puma_worker_killer (0.3.1)
get_process_mem (~> 0.2)
puma (>= 2.7)
pyu-ruby-sasl (0.0.3.3)
raabro (1.1.6)
raabro (1.4.0)
racc (1.6.0)
rack (2.2.4)
rack-accept (0.4.5)
@ -1040,6 +1072,8 @@ GEM
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-protection (2.2.2)
rack
rack-proxy (0.7.2)
rack
rack-test (1.1.0)
@ -1083,7 +1117,7 @@ GEM
randexp (0.1.7)
rash_alt (0.4.12)
hashie (>= 3.4)
rb-fsevent (0.11.1)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rbtrace (0.4.14)
@ -1098,7 +1132,7 @@ GEM
json
recursive-open-struct (1.1.3)
redcarpet (3.5.1)
redis (4.4.0)
redis (4.7.1)
redis-actionpack (5.3.0)
actionpack (>= 5, < 8)
redis-rack (>= 2.1.0, < 3)
@ -1187,11 +1221,11 @@ GEM
rubocop-ast (>= 0.6.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-ast (1.19.1)
rubocop-ast (1.21.0)
parser (>= 3.1.1.0)
rubocop-gitlab-security (0.1.1)
rubocop (>= 0.51)
rubocop-graphql (0.14.3)
rubocop-graphql (0.14.6)
rubocop (>= 0.87, < 2)
rubocop-performance (1.9.2)
rubocop (>= 0.90.0, < 2.0)
@ -1269,12 +1303,12 @@ GEM
shellany (0.0.1)
shoulda-matchers (5.1.0)
activesupport (>= 5.2.0)
sidekiq (6.4.0)
sidekiq (6.4.2)
connection_pool (>= 2.2.2)
rack (~> 2.0)
redis (>= 4.2.0)
sidekiq-cron (1.2.0)
fugit (~> 1.1)
sidekiq-cron (1.4.0)
fugit (~> 1)
sidekiq (>= 4.2.1)
sigdump (0.2.4)
signet (0.17.0)
@ -1296,7 +1330,7 @@ GEM
slack-messenger (2.3.4)
snowplow-tracker (0.6.1)
contracts (~> 0.7, <= 0.11)
solargraph (0.45.0)
solargraph (0.46.0)
backport (~> 1.2)
benchmark
bundler (>= 1.17.2)
@ -1314,7 +1348,7 @@ GEM
sorted_set (1.0.3)
rbtree
set (~> 1.0)
spamcheck (0.1.0)
spamcheck (1.0.0)
grpc (~> 1.0)
spring (2.1.1)
spring-commands-rspec (1.0.4)
@ -1330,7 +1364,7 @@ GEM
sqlite3 (1.4.2)
ssh_data (1.3.0)
ssrf_filter (1.0.7)
stackprof (0.2.15)
stackprof (0.2.21)
state_machines (0.5.0)
state_machines-activemodel (0.8.0)
activemodel (>= 5.1)
@ -1364,7 +1398,7 @@ GEM
faraday (~> 1.0)
text (1.3.1)
thor (1.2.1)
thrift (0.14.0)
thrift (0.16.0)
tilt (2.0.10)
timecop (0.9.1)
timeliness (0.3.10)
@ -1432,7 +1466,7 @@ GEM
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
validate_url (1.0.13)
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
validates_hostname (1.0.11)
@ -1440,12 +1474,13 @@ GEM
activesupport (>= 3.0)
version_gem (1.0.0)
version_sorter (2.2.4)
view_component (2.61.0)
view_component (2.71.0)
activesupport (>= 5.0.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
vmstat (2.3.0)
warden (1.2.8)
rack (>= 2.0.6)
warden (1.2.9)
rack (>= 2.0.9)
warning (1.3.0)
webauthn (2.3.0)
android_key_attestation (~> 0.3.0)
@ -1495,10 +1530,10 @@ DEPENDENCIES
akismet (~> 3.0)
apollo_upload_server (~> 2.1.0)
asana (~> 0.10.13)
asciidoctor (~> 2.0.10)
asciidoctor (~> 2.0.17)
asciidoctor-include-ext (~> 0.4.0)
asciidoctor-kroki (~> 0.5.0)
asciidoctor-plantuml (~> 0.0.12)
asciidoctor-plantuml (~> 0.0.16)
atlassian-jwt (~> 0.2.0)
attr_encrypted (~> 3.1.0)
autoprefixer-rails (= 10.2.5.1)
@ -1512,12 +1547,13 @@ DEPENDENCIES
bcrypt (~> 3.1, >= 3.1.14)
benchmark-ips (~> 2.3.0)
benchmark-memory (~> 0.1)
better_errors (~> 2.9.0)
better_errors (~> 2.9.1)
bootsnap (~> 1.13.0)
bootstrap_form (~> 4.2.0)
browser (~> 4.2)
bullet (~> 7.0.2)
bundler-audit (~> 0.7.0.1)
bundler-checksum (~> 0.1.0)!
capybara (~> 3.35.3)
capybara-screenshot (~> 1.0.22)
carrierwave (~> 1.3)
@ -1535,11 +1571,11 @@ DEPENDENCIES
deprecation_toolkit (~> 1.5.1)
derailed_benchmarks
device_detector
devise (~> 4.7.2)
devise (~> 4.8.1)
devise-pbkdf2-encryptable (~> 0.0.0)!
devise-two-factor (~> 4.0.2)
diff_match_patch (~> 0.1.0)
diffy (~> 3.3)
diffy (~> 3.4)
discordrb-webhooks (~> 3.4)
doorkeeper (~> 5.5.0.rc2)
doorkeeper-openid_connect (~> 1.7.5)
@ -1573,10 +1609,10 @@ DEPENDENCIES
gettext (~> 3.3)
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3)
gitaly (~> 15.3.0.pre.rc3)
gitaly (~> 15.4.0.pre.rc2)
github-markup (~> 1.7.0)
gitlab-chronic (~> 0.10.5)
gitlab-dangerfiles (~> 3.5.0)
gitlab-dangerfiles (~> 3.5.2)
gitlab-experiment (~> 0.7.1)
gitlab-fog-azure-rm (~> 1.3.0)
gitlab-labkit (~> 0.24.0)
@ -1584,9 +1620,9 @@ DEPENDENCIES
gitlab-mail_room (~> 0.0.9)
gitlab-markup (~> 1.8.0)
gitlab-net-dns (~> 0.9.1)
gitlab-omniauth-openid-connect (~> 0.9.0)
gitlab-omniauth-openid-connect (~> 0.10.0)
gitlab-sidekiq-fetcher (= 0.8.0)
gitlab-styles (~> 7.1.0)
gitlab-styles (~> 8.0.0)
gitlab_chronic_duration (~> 0.10.6.2)
gitlab_omniauth-ldap (~> 2.2.0)
gon (~> 6.4.0)
@ -1605,7 +1641,7 @@ DEPENDENCIES
grpc (~> 1.42.0)
gssapi
guard-rspec
haml_lint (~> 0.36.0)
haml_lint (~> 0.40.0)
hamlit (~> 2.15.0)
hangouts-chat (~> 0.0.5)
hashie
@ -1628,46 +1664,47 @@ DEPENDENCIES
knapsack (~> 1.21.1)
kramdown (~> 2.3.1)
kubeclient (~> 4.9.3)
lefthook (~> 1.1.0)
lefthook (~> 1.1.1)
letter_opener_web (~> 2.0.0)
license_finder (~> 7.0)
licensee (~> 9.14.1)
licensee (~> 9.15)
lockbox (~> 0.6.2)
lograge (~> 0.5)
loofah (~> 2.18.0)
lookbook
lookbook (~> 1.0)
lru_redux
mail (= 2.7.1)
mail-smtp_pool (~> 0.1.0)!
marginalia (~> 1.10.0)
memory_profiler (~> 0.9)
method_source (~> 1.0)
microsoft_graph_mailer (~> 0.1.0)!
mini_magick (~> 4.10.1)
minitest (~> 5.11.0)
multi_json (~> 1.14.1)
net-ldap (~> 0.16.3)
net-ntp
nokogiri (~> 1.13.0)
nokogiri (~> 1.13.8)
oauth2 (~> 2.0)
octokit (~> 4.15)
ohai (~> 16.10)
oj (~> 3.13.21)
omniauth (~> 1.8)
omniauth (~> 2.1.0)
omniauth-alicloud (~> 1.0.1)
omniauth-atlassian-oauth2 (~> 0.2.0)
omniauth-auth0 (~> 2.0.0)
omniauth-authentiq (~> 0.3.3)
omniauth-azure-activedirectory-v2 (~> 1.0)
omniauth-azure-oauth2 (~> 0.0.9)
omniauth-azure-oauth2 (~> 0.0.9)!
omniauth-cas3 (~> 1.1.4)!
omniauth-dingtalk-oauth2 (~> 1.0)
omniauth-facebook (~> 4.0.0)
omniauth-github (~> 1.4)
omniauth-github (= 2.0.0)
omniauth-gitlab (~> 4.0.0)!
omniauth-google-oauth2 (~> 0.6.0)
omniauth-google-oauth2 (~> 1.0.1)!
omniauth-oauth2-generic (~> 0.2.2)
omniauth-salesforce (~> 1.0.5)
omniauth-saml (~> 1.10)
omniauth-rails_csrf_protection
omniauth-salesforce (~> 1.0.5)!
omniauth-saml (~> 2.0.0)
omniauth-shibboleth (~> 1.3.0)
omniauth-twitter (~> 1.4)
omniauth_crowd (~> 2.4.0)!
@ -1684,7 +1721,7 @@ DEPENDENCIES
pry-byebug
pry-rails (~> 0.3.9)
pry-shell (~> 0.5.1)
puma (~> 5.6.4)
puma (~> 5.6.5)
puma_worker_killer (~> 0.3.1)
rack (~> 2.2.4)
rack-attack (~> 6.6.0)
@ -1700,7 +1737,7 @@ DEPENDENCIES
rdoc (~> 6.3.2)
re2 (~> 1.4.0)
recaptcha (~> 4.11)
redis (~> 4.4.0)
redis (~> 4.7.0)
redis-actionpack (~> 5.3.0)
redis-namespace (~> 1.8.1)
request_store (~> 1.5)
@ -1735,8 +1772,8 @@ DEPENDENCIES
sentry-sidekiq (~> 5.1.1)
settingslogic (~> 2.0.9)
shoulda-matchers (~> 5.1.0)
sidekiq (~> 6.4)
sidekiq-cron (~> 1.2)
sidekiq (~> 6.4.0)
sidekiq-cron (~> 1.4.0)
sigdump (~> 0.2.4)
simple_po_parser (~> 1.1.6)
simplecov (~> 0.21)
@ -1744,21 +1781,21 @@ DEPENDENCIES
simplecov-lcov (~> 0.8.0)
slack-messenger (~> 2.3.4)
snowplow-tracker (~> 0.6.1)
solargraph (~> 0.45.0)
spamcheck (~> 0.1.0)
solargraph (~> 0.46.0)
spamcheck (~> 1.0.0)
spring (~> 2.1.0)
spring-commands-rspec (~> 1.0.4)
sprite-factory (~> 1.7)
sprockets (~> 3.7.0)
ssh_data (~> 1.3)
stackprof (~> 0.2.15)
stackprof (~> 0.2.21)
state_machines-activerecord (~> 0.8.0)
sys-filesystem (~> 1.4.3)
tanuki_emoji (~> 0.6)
terser (= 1.0.2)
test-prof (~> 1.0.7)
test_file_finder (~> 0.1.3)
thrift (>= 0.14.0)
thrift (>= 0.16.0)
timecop (~> 0.9.1)
timfel-krb5-auth (~> 0.8)
toml-rb (~> 2.0)
@ -1771,7 +1808,7 @@ DEPENDENCIES
valid_email (~> 0.1)
validates_hostname (~> 1.0.11)
version_sorter (~> 2.2.4)
view_component (~> 2.61)
view_component (~> 2.71.0)
vmstat (~> 2.3.0)
warning (~> 1.3.0)
webauthn (~> 2.3)

View file

@ -1 +1 @@
15.3.4
15.4.2

View file

@ -140,6 +140,7 @@ export default {
<template #cell(action)="{ item: { revokePath } }">
<gl-button
v-if="revokePath"
category="tertiary"
:aria-label="$options.i18n.revokeButton"
:data-confirm="modalMessage"

View file

@ -12,8 +12,6 @@ export const FIELDS = [
key: 'name',
label: __('Token name'),
sortable: true,
tdClass: `gl-text-black-normal`,
thClass: `gl-text-black-normal`,
},
{
formatter(scopes) {
@ -22,40 +20,30 @@ export const FIELDS = [
key: 'scopes',
label: __('Scopes'),
sortable: true,
tdClass: `gl-text-black-normal`,
thClass: `gl-text-black-normal`,
},
{
key: 'createdAt',
label: s__('AccessTokens|Created'),
sortable: true,
tdClass: `gl-text-black-normal`,
thClass: `gl-text-black-normal`,
},
{
key: 'lastUsedAt',
label: __('Last Used'),
sortable: true,
tdClass: `gl-text-black-normal`,
thClass: `gl-text-black-normal`,
},
{
key: 'expiresAt',
label: __('Expires'),
sortable: true,
tdClass: `gl-text-black-normal`,
thClass: `gl-text-black-normal`,
},
{
key: 'role',
label: __('Role'),
tdClass: `gl-text-black-normal`,
thClass: `gl-text-black-normal`,
sortable: true,
},
{
key: 'action',
label: __('Action'),
thClass: `gl-text-black-normal`,
tdClass: 'gl-py-3!',
},
];

View file

@ -16,6 +16,16 @@ export default {
import('ee_component/access_tokens/components/max_expiration_date_message.vue'),
},
props: {
defaultDateOffset: {
type: Number,
required: false,
default: 30,
},
description: {
type: String,
required: false,
default: null,
},
inputAttrs: {
type: Object,
required: false,
@ -33,9 +43,15 @@ export default {
},
},
computed: {
in30Days() {
const today = new Date();
return getDateInFuture(today, 30);
defaultDate() {
const defaultDate = getDateInFuture(new Date(), this.defaultDateOffset);
// The maximum date can be set by admins. If the maximum date is sooner
// than the default expiration date we use the maximum date as default
// expiration date.
if (this.maxDate && this.maxDate < defaultDate) {
return this.maxDate;
}
return defaultDate;
},
},
};
@ -47,7 +63,7 @@ export default {
:target="null"
:min-date="minDate"
:max-date="maxDate"
:default-date="in30Days"
:default-date="defaultDate"
show-clear-button
:input-name="inputAttrs.name"
:input-id="inputAttrs.id"
@ -55,7 +71,10 @@ export default {
data-qa-selector="expiry_date_field"
/>
<template #description>
<max-expiration-date-message :max-date="maxDate" />
<template v-if="description">
{{ description }}
</template>
<max-expiration-date-message v-else :max-date="maxDate" />
</template>
</gl-form-group>
</template>

View file

@ -42,7 +42,6 @@ export default {
formInputGroupProps() {
return {
id: this.$options.tokenInputId,
class: 'qa-created-access-token',
'data-qa-selector': 'created_access_token_field',
name: this.$options.tokenInputId,
};
@ -82,7 +81,14 @@ export default {
this.infoAlert = createAlert({ message: this.alertInfoMessage, variant: VARIANT_INFO });
this.form.reset();
// Selectively reset all input fields except for the date picker and submit.
// The form token creation is not controlled by Vue.
this.form.querySelectorAll('input[type=text]:not([id$=expires_at])').forEach((el) => {
el.value = '';
});
this.form.querySelectorAll('input[type=checkbox]').forEach((el) => {
el.checked = false;
});
},
},
};

View file

@ -61,7 +61,7 @@ export const initExpiresAtField = () => {
}
const { expiresAt: inputAttrs } = parseRailsFormFields(el);
const { minDate, maxDate } = el.dataset;
const { minDate, maxDate, defaultDateOffset, description } = el.dataset;
return new Vue({
el,
@ -71,6 +71,8 @@ export const initExpiresAtField = () => {
inputAttrs,
minDate: minDate ? new Date(minDate) : undefined,
maxDate: maxDate ? new Date(maxDate) : undefined,
defaultDateOffset: defaultDateOffset ? Number(defaultDateOffset) : undefined,
description,
},
});
},

View file

@ -0,0 +1,52 @@
<script>
import { GlLink, GlSprintf } from '@gitlab/ui';
import { helpPagePath } from '~/helpers/help_page_helper';
import { s__ } from '~/locale';
export default {
components: {
GlLink,
GlSprintf,
},
props: {
message: {
type: String,
required: true,
},
},
i18n: {
fieldHelpText: s__(
'AdminSettings|If no unit is written, it defaults to seconds. For example, these are all equivalent: %{oneDayInSeconds}, %{oneDayInHoursHumanReadable}, or %{oneDayHumanReadable}. Minimum value is two hours. %{linkStart}Learn more.%{linkEnd}',
),
},
computed: {
helpUrl() {
return helpPagePath('ci/runners/configure_runners', {
anchor: 'authentication-token-security',
});
},
},
};
</script>
<template>
<p>
{{ message }}
<gl-sprintf :message="$options.i18n.fieldHelpText">
<template #oneDayInSeconds>
<!-- eslint-disable-next-line @gitlab/vue-require-i18n-strings -->
<code>86400</code>
</template>
<template #oneDayInHoursHumanReadable>
<!-- eslint-disable-next-line @gitlab/vue-require-i18n-strings -->
<code>24 hours</code>
</template>
<template #oneDayHumanReadable>
<!-- eslint-disable-next-line @gitlab/vue-require-i18n-strings -->
<code>1 day</code>
</template>
<template #link>
<gl-link :href="helpUrl" target="_blank">{{ __('Learn more.') }}</gl-link>
</template>
</gl-sprintf>
</p>
</template>

View file

@ -0,0 +1,123 @@
<script>
import { GlFormGroup } from '@gitlab/ui';
import { s__ } from '~/locale';
import ChronicDurationInput from '~/vue_shared/components/chronic_duration_input.vue';
import ExpirationIntervalDescription from './expiration_interval_description.vue';
export default {
components: {
ChronicDurationInput,
ExpirationIntervalDescription,
GlFormGroup,
},
props: {
instanceRunnerExpirationInterval: {
type: Number,
required: false,
default: null,
},
groupRunnerExpirationInterval: {
type: Number,
required: false,
default: null,
},
projectRunnerExpirationInterval: {
type: Number,
required: false,
default: null,
},
},
data() {
return {
perInput: {
instance: {
value: this.instanceRunnerExpirationInterval,
valid: null,
feedback: '',
},
group: {
value: this.groupRunnerExpirationInterval,
valid: null,
feedback: '',
},
project: {
value: this.projectRunnerExpirationInterval,
valid: null,
feedback: '',
},
},
};
},
methods: {
updateValidity(obj, event) {
/* eslint-disable no-param-reassign */
obj.valid = event.valid;
obj.feedback = event.feedback;
/* eslint-enable no-param-reassign */
},
},
i18n: {
instanceRunnerTitle: s__('AdminSettings|Instance runners expiration'),
instanceRunnerDescription: s__(
'AdminSettings|Set the expiration time of authentication tokens of newly registered instance runners. Authentication tokens are automatically reset at these intervals.',
),
groupRunnerTitle: s__('AdminSettings|Group runners expiration'),
groupRunnerDescription: s__(
'AdminSettings|Set the expiration time of authentication tokens of newly registered group runners.',
),
projectRunnerTitle: s__('AdminSettings|Project runners expiration'),
projectRunnerDescription: s__(
'AdminSettings|Set the expiration time of authentication tokens of newly registered project runners.',
),
},
};
</script>
<template>
<div>
<gl-form-group
:label="$options.i18n.instanceRunnerTitle"
:invalid-feedback="perInput.instance.feedback"
:state="perInput.instance.valid"
>
<template #description>
<expiration-interval-description :message="$options.i18n.instanceRunnerDescription" />
</template>
<chronic-duration-input
v-model="perInput.instance.value"
name="application_setting[runner_token_expiration_interval]"
:state="perInput.instance.valid"
@valid="updateValidity(perInput.instance, $event)"
/>
</gl-form-group>
<gl-form-group
:label="$options.i18n.groupRunnerTitle"
:invalid-feedback="perInput.group.feedback"
:state="perInput.group.valid"
>
<template #description>
<expiration-interval-description :message="$options.i18n.groupRunnerDescription" />
</template>
<chronic-duration-input
v-model="perInput.group.value"
name="application_setting[group_runner_token_expiration_interval]"
:state="perInput.group.valid"
@valid="updateValidity(perInput.group, $event)"
/>
</gl-form-group>
<gl-form-group
:label="$options.i18n.projectRunnerTitle"
:invalid-feedback="perInput.project.feedback"
:state="perInput.project.valid"
>
<template #description>
<expiration-interval-description :message="$options.i18n.projectRunnerDescription" />
</template>
<chronic-duration-input
v-model="perInput.project.value"
name="application_setting[project_runner_token_expiration_interval]"
:state="perInput.project.valid"
@valid="updateValidity(perInput.project, $event)"
/>
</gl-form-group>
</div>
</template>

View file

@ -0,0 +1,32 @@
import Vue from 'vue';
import { parseInterval } from '~/runner/utils';
import ExpirationIntervals from './components/expiration_intervals.vue';
const initRunnerTokenExpirationIntervals = (selector = '#js-runner-token-expiration-intervals') => {
const el = document.querySelector(selector);
if (!el) {
return null;
}
const {
instanceRunnerTokenExpirationInterval,
groupRunnerTokenExpirationInterval,
projectRunnerTokenExpirationInterval,
} = el.dataset;
return new Vue({
el,
render(h) {
return h(ExpirationIntervals, {
props: {
instanceRunnerExpirationInterval: parseInterval(instanceRunnerTokenExpirationInterval),
groupRunnerExpirationInterval: parseInterval(groupRunnerTokenExpirationInterval),
projectRunnerExpirationInterval: parseInterval(projectRunnerTokenExpirationInterval),
},
});
},
});
};
export default initRunnerTokenExpirationIntervals;

View file

@ -0,0 +1,141 @@
<script>
import { GlAlert, GlButton, GlModal, GlModalDirective, GlSprintf } from '@gitlab/ui';
import { __, s__ } from '~/locale';
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import csrf from '~/lib/utils/csrf';
import TopicSelect from './topic_select.vue';
export default {
components: {
GlAlert,
GlButton,
GlModal,
GlSprintf,
TopicSelect,
},
directives: {
GlModal: GlModalDirective,
},
inject: ['path'],
data() {
return {
sourceTopic: {},
targetTopic: {},
};
},
computed: {
sourceTopicId() {
return getIdFromGraphQLId(this.sourceTopic?.id);
},
targetTopicId() {
return getIdFromGraphQLId(this.targetTopic?.id);
},
validSelectedTopics() {
return (
Object.keys(this.sourceTopic).length &&
Object.keys(this.targetTopic).length &&
this.sourceTopic !== this.targetTopic
);
},
actionPrimary() {
return {
text: __('Merge'),
attributes: {
variant: 'danger',
disabled: !this.validSelectedTopics,
},
};
},
},
methods: {
selectSourceTopic(topic) {
this.sourceTopic = topic;
},
selectTargetTopic(topic) {
this.targetTopic = topic;
},
mergeTopics() {
this.$refs.mergeForm.submit();
},
},
i18n: {
title: s__('MergeTopics|Merge topics'),
body: s__(
'MergeTopics|Move all assigned projects from the source topic to the target topic and remove the source topic.',
),
sourceTopic: s__('MergeTopics|Source topic'),
targetTopic: s__('MergeTopics|Target topic'),
warningTitle: s__('MergeTopics|Merging topics will cause the following:'),
warningBody: s__('MergeTopics|This action cannot be undone.'),
warningRemoveTopic: s__('MergeTopics|%{sourceTopic} will be removed'),
warningMoveProjects: s__('MergeTopics|All assigned projects will be moved to %{targetTopic}'),
},
modal: {
id: 'merge-topics',
actionSecondary: {
text: __('Cancel'),
attributes: {
variant: 'default',
},
},
},
csrf,
};
</script>
<template>
<div class="gl-mr-3">
<gl-button v-gl-modal="$options.modal.id" category="secondary">{{
$options.i18n.title
}}</gl-button>
<gl-modal
:title="$options.i18n.title"
:action-primary="actionPrimary"
:action-secondary="$options.modal.actionSecondary"
:modal-id="$options.modal.id"
size="sm"
@primary="mergeTopics"
>
<p>{{ $options.i18n.body }}</p>
<topic-select
:selected-topic="sourceTopic"
:label-text="$options.i18n.sourceTopic"
@click="selectSourceTopic"
/>
<topic-select
:selected-topic="targetTopic"
:label-text="$options.i18n.targetTopic"
@click="selectTargetTopic"
/>
<gl-alert
v-if="validSelectedTopics"
:title="$options.i18n.warningTitle"
:dismissible="false"
variant="danger"
>
<ul>
<li>
<gl-sprintf :message="$options.i18n.warningRemoveTopic">
<template #sourceTopic>
<strong>{{ sourceTopic.name }}</strong>
</template>
</gl-sprintf>
</li>
<li>
<gl-sprintf :message="$options.i18n.warningMoveProjects">
<template #targetTopic>
<strong>{{ targetTopic.name }}</strong>
</template>
</gl-sprintf>
</li>
</ul>
{{ $options.i18n.warningBody }}
</gl-alert>
<form ref="mergeForm" method="post" :action="path">
<input type="hidden" name="_method" value="post" />
<input type="hidden" name="authenticity_token" :value="$options.csrf.token" />
<input type="hidden" name="source_topic_id" :value="sourceTopicId" />
<input type="hidden" name="target_topic_id" :value="targetTopicId" />
</form>
</gl-modal>
</div>
</template>

View file

@ -0,0 +1,106 @@
<script>
import {
GlAvatarLabeled,
GlDropdown,
GlDropdownItem,
GlDropdownText,
GlSearchBoxByType,
} from '@gitlab/ui';
import { s__ } from '~/locale';
import { AVATAR_SHAPE_OPTION_RECT } from '~/vue_shared/constants';
import searchProjectTopics from '~/graphql_shared/queries/project_topics_search.query.graphql';
export default {
components: {
GlAvatarLabeled,
GlDropdown,
GlDropdownItem,
GlDropdownText,
GlSearchBoxByType,
},
props: {
selectedTopic: {
type: Object,
required: false,
default: () => ({}),
},
labelText: {
type: String,
required: false,
default: null,
},
},
apollo: {
topics: {
query: searchProjectTopics,
variables() {
return {
search: this.search,
};
},
update(data) {
return data.topics?.nodes || [];
},
debounce: 250,
},
},
data() {
return {
topics: [],
search: '',
};
},
computed: {
loading() {
return this.$apollo.queries.topics.loading;
},
isResultEmpty() {
return this.topics.length === 0;
},
dropdownText() {
if (Object.keys(this.selectedTopic).length) {
return this.selectedTopic.name;
}
return this.$options.i18n.dropdownText;
},
},
methods: {
selectTopic(topic) {
this.$emit('click', topic);
},
},
i18n: {
dropdownText: s__('TopicSelect|Select a topic'),
searchPlaceholder: s__('TopicSelect|Search topics'),
emptySearchResult: s__('TopicSelect|No matching results'),
},
AVATAR_SHAPE_OPTION_RECT,
};
</script>
<template>
<div>
<label v-if="labelText">{{ labelText }}</label>
<gl-dropdown block :text="dropdownText">
<gl-search-box-by-type
v-model="search"
:is-loading="loading"
:placeholder="$options.i18n.searchPlaceholder"
/>
<gl-dropdown-item v-for="topic in topics" :key="topic.id" @click="selectTopic(topic)">
<gl-avatar-labeled
:label="topic.title"
:sub-label="topic.name"
:src="topic.avatarUrl"
:entity-name="topic.name"
:size="32"
:shape="$options.AVATAR_SHAPE_OPTION_RECT"
/>
</gl-dropdown-item>
<gl-dropdown-text v-if="isResultEmpty && !loading">
<span class="gl-text-gray-500">{{ $options.i18n.emptySearchResult }}</span>
</gl-dropdown-text>
</gl-dropdown>
</div>
</template>

View file

@ -1,7 +1,20 @@
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createDefaultClient from '~/lib/graphql';
import showToast from '~/vue_shared/plugins/global_toast';
import RemoveAvatar from './components/remove_avatar.vue';
import MergeTopics from './components/merge_topics.vue';
export default () => {
const toasts = document.querySelectorAll('.js-toast-message');
toasts.forEach((toast) => showToast(toast.dataset.message));
Vue.use(VueApollo);
const apolloProvider = new VueApollo({
defaultClient: createDefaultClient(),
});
export const initRemoveAvatar = () => {
const el = document.querySelector('.js-remove-topic-avatar');
if (!el) {
@ -21,3 +34,20 @@ export default () => {
},
});
};
export const initMergeTopics = () => {
const el = document.querySelector('.js-merge-topics');
if (!el) return false;
const { path } = el.dataset;
return new Vue({
el,
apolloProvider,
provide: { path },
render(createElement) {
return createElement(MergeTopics);
},
});
};

View file

@ -109,7 +109,7 @@ export default {
v-for="template in templates"
:key="template.key"
data-qa-selector="incident_templates_item"
:is-check-item="true"
is-check-item
:is-checked="isTemplateSelected(template.key)"
@click="selectIssueTemplate(template.key)"
>

View file

@ -1,13 +1,10 @@
<script>
import { GlDaterangePicker, GlSprintf } from '@gitlab/ui';
import { getDayDifference } from '~/lib/utils/datetime_utility';
import { __, sprintf } from '~/locale';
import { OFFSET_DATE_BY_ONE } from '../constants';
import { GlDaterangePicker } from '@gitlab/ui';
import { n__, __, sprintf } from '~/locale';
export default {
components: {
GlDaterangePicker,
GlSprintf,
},
props: {
show: {
@ -69,9 +66,10 @@ export default {
this.$emit('change', { startDate, endDate });
},
},
numberOfDays() {
const dayDifference = getDayDifference(this.startDate, this.endDate);
return this.includeSelectedDate ? dayDifference + OFFSET_DATE_BY_ONE : dayDifference;
},
methods: {
numberOfDays(daysSelected) {
return n__('1 day selected', '%d days selected', daysSelected);
},
},
};
@ -83,7 +81,7 @@ export default {
>
<gl-daterange-picker
v-model="dateRange"
class="d-flex flex-column flex-lg-row"
class="gl-display-flex gl-flex-direction-column gl-lg-flex-direction-row"
:default-start-date="startDate"
:default-end-date="endDate"
:default-min-date="minDate"
@ -93,12 +91,12 @@ export default {
:tooltip="maxDateRangeTooltip"
theme="animate-picker"
start-picker-class="js-daterange-picker-from gl-display-flex gl-flex-direction-column gl-lg-flex-direction-row gl-lg-align-items-center gl-lg-mr-3 gl-mb-2 gl-lg-mb-0"
end-picker-class="js-daterange-picker-to d-flex flex-column flex-lg-row align-items-lg-center gl-mb-2 gl-lg-mb-0"
end-picker-class="js-daterange-picker-to gl-display-flex gl-flex-direction-column gl-lg-flex-direction-row gl-lg-align-items-center gl-mb-2 gl-lg-mb-0"
label-class="gl-mb-2 gl-lg-mb-0"
>
<gl-sprintf :message="n__('1 day selected', '%d days selected', numberOfDays)">
<template #numberOfDays>{{ numberOfDays }}</template>
</gl-sprintf>
<template #default="{ daysSelected }">
{{ numberOfDays(daysSelected) }}
</template>
</gl-daterange-picker>
</div>
</template>

View file

@ -1,8 +1,7 @@
import { masks } from 'dateformat';
import { masks } from '~/lib/dateformat';
import { s__ } from '~/locale';
export const DATE_RANGE_LIMIT = 180;
export const OFFSET_DATE_BY_ONE = 1;
export const PROJECTS_PER_PAGE = 50;
const { isoDate, mediumDate } = masks;

View file

@ -1,5 +1,5 @@
import dateFormat from 'dateformat';
import { hideFlash } from '~/flash';
import dateFormat from '~/lib/dateformat';
import { slugify } from '~/lib/utils/text_utility';
import { urlQueryToFilter } from '~/vue_shared/components/filtered_search_bar/filtered_search_utils';
import { dateFormats } from './constants';

View file

@ -1,5 +1,5 @@
import { masks } from 'dateformat';
import { get } from 'lodash';
import { masks } from '~/lib/dateformat';
import { formatDate } from '~/lib/utils/datetime_utility';
const { isoDate } = masks;

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