diff --git a/.eslintrc.yml b/.eslintrc.yml index af2f1d8893..659ed2a001 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -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/**/*' diff --git a/.gitignore b/.gitignore index 0bd718f254..234593b944 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 882ae337c6..9c6b84d393 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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" diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 6019fe636a..03fcfc4dd5 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -2,6 +2,24 @@ # project here: https://gitlab.com/gitlab-org/gitlab/-/project_members # As described in https://docs.gitlab.com/ee/user/project/code_owners.html +* @gitlab-org/maintainers/rails-backend @gitlab-org/maintainers/frontend @gitlab-org/maintainers/database @gl-quality/qe-maintainers @gitlab-org/delivery @gitlab-org/maintainers/cicd-templates @kwiebers @nolith @jacobvosmaer-gitlab + +CODEOWNERS @clefelhocz1 @timzallmann @cdu1 @wayne @dsatcher @sgoldstein @jeromezng @stanhu @susantacker @dianalogan @kpaizee @sselhorn +docs/CODEOWNERS @clefelhocz1 @timzallmann @cdu1 @wayne @dsatcher @sgoldstein @jeromezng @stanhu @susantacker @dianalogan @kpaizee @sselhorn +.gitlab/CODEOWNERS @clefelhocz1 @timzallmann @cdu1 @wayne @dsatcher @sgoldstein @jeromezng @stanhu @susantacker @dianalogan @kpaizee @sselhorn + +## Allows release tooling to update the Gitaly Version +GITALY_SERVER_VERSION @project_278964_bot6 @gitlab-org/maintainers/rails-backend @gitlab-org/delivery + +## Files that are excluded from required approval +/.gitlab/issue_templates/*.md +/.gitlab/merge_request_templates/*.md +/doc/*.md +/doc/**/*.md +/doc/**/*.png +/data/deprecations/*.yml +/data/removals/*.yml + ^[Backend] *.rb @gitlab-org/maintainers/rails-backend *.rake @gitlab-org/maintainers/rails-backend @@ -34,7 +52,6 @@ /.gitlab/ci/docs.gitlab-ci.yml @gl-quality/eng-prod @gl-docsteam /.gitlab/ci/releases.gitlab-ci.yml @gl-quality/eng-prod @gitlab-org/delivery /.gitlab/ci/reports.gitlab-ci.yml @gitlab-com/gl-security/appsec @gl-quality/eng-prod -/.gitlab/CODEOWNERS @gl-quality/eng-prod Dangerfile @gl-quality/eng-prod /danger/ @gl-quality/eng-prod /tooling/danger/ @gl-quality/eng-prod @@ -57,11 +74,89 @@ Dangerfile @gl-quality/eng-prod /ee/lib/ee/gitlab/auth/ldap/ @dblessing @mkozono /lib/gitlab/auth/ldap/ @dblessing @mkozono +^[Verify] +/app/**/ci/ @gitlab-org/maintainers/cicd-verify +/app/controllers/admin/jobs_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/admin/runner_projects_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/admin/runners_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/artifacts_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/build_artifacts_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/builds_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/jobs_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/runner_setup_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/pipeline_schedules_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/pipelines_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/pipelines_settings_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/runner_projects_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/runners_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/triggers_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/usage_quotas_controller.rb @gitlab-org/maintainers/cicd-verify +/app/controllers/projects/variables_controller.rb @gitlab-org/maintainers/cicd-verify +/app/models/commit_status.rb @gitlab-org/maintainers/cicd-verify +/app/models/external_pull_request.rb @gitlab-org/maintainers/cicd-verify +/app/models/generic_commit_status.rb @gitlab-org/maintainers/cicd-verify +/app/models/namespace_ci_cd_setting.rb @gitlab-org/maintainers/cicd-verify +/app/models/project_ci_cd_setting.rb @gitlab-org/maintainers/cicd-verify +/app/presenters/commit_status_presenter.rb @gitlab-org/maintainers/cicd-verify +/app/presenters/generic_commit_status_presenter.rb @gitlab-org/maintainers/cicd-verify +/app/views/projects/artifacts/ @gitlab-org/maintainers/cicd-verify +/app/views/projects/generic_commit_statuses/ @gitlab-org/maintainers/cicd-verify +/app/views/projects/jobs/ @gitlab-org/maintainers/cicd-verify +/app/views/projects/pipeline_schedules/ @gitlab-org/maintainers/cicd-verify +/app/views/projects/pipelines/ @gitlab-org/maintainers/cicd-verify +/app/views/projects/triggers/ @gitlab-org/maintainers/cicd-verify +/app/workers/build_hooks_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/build_queue_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/build_success_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/ci_platform_metrics_update_cron_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/create_pipeline_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/expire_build_artifacts_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/pipeline_hooks_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/pipeline_metrics_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/pipeline_notification_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/pipeline_process_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/pipeline_schedule_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/run_pipeline_schedule_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/stuck_ci_jobs_worker.rb @gitlab-org/maintainers/cicd-verify +/app/workers/update_external_pull_requests_worker.rb @gitlab-org/maintainers/cicd-verify +/lib/**/ci/ @gitlab-org/maintainers/cicd-verify +/lib/api/commit_statuses.rb @gitlab-org/maintainers/cicd-verify +/ee/app/**/ci/ @gitlab-org/maintainers/cicd-verify +/ee/app/**/merge_trains/ @gitlab-org/maintainers/cicd-verify +/ee/app/models/merge_train.rb @gitlab-org/maintainers/cicd-verify +/ee/app/finders/merge_trains_finder.rb @gitlab-org/maintainers/cicd-verify +/ee/app/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service.rb @gitlab-org/maintainers/cicd-verify +/ee/app/services/auto_merge/merge_train_service.rb @gitlab-org/maintainers/cicd-verify +/ee/app/services/system_notes/merge_train_service.rb @gitlab-org/maintainers/cicd-verify +/ee/app/controllers/ee/admin/runners_controller.rb @gitlab-org/maintainers/cicd-verify +/ee/app/controllers/ee/projects/pipelines_controller.rb @gitlab-org/maintainers/cicd-verify +/ee/app/controllers/projects/pipelines/ @gitlab-org/maintainers/cicd-verify +/ee/app/controllers/projects/subscriptions_controller.rb @gitlab-org/maintainers/cicd-verify +/ee/app/models/merge_train.rb @gitlab-org/maintainers/cicd-verify +/ee/app/helpers/ee/projects/pipeline_helper.rb @gitlab-org/maintainers/cicd-verify +/ee/app/views/ci_minutes_usage_mailer/ @gitlab-org/maintainers/cicd-verify +/ee/app/views/projects/pipelines/ @gitlab-org/maintainers/cicd-verify +/ee/app/views/projects/settings/ci_cd/ @gitlab-org/maintainers/cicd-verify +/ee/app/workers/clear_shared_runners_minutes_worker.rb @gitlab-org/maintainers/cicd-verify +/ee/lib/**/ci/ @gitlab-org/maintainers/cicd-verify +/ee/lib/ee/api/entities/merge_train.rb @gitlab-org/maintainers/cicd-verify +/**/javascripts/jobs/ @pburdette @jivanvl +/**/javascripts/pipelines/ @pburdette @f_caplette @jivanvl @mfluharty @bsandlin @mgandres +/app/assets/javascripts/pipeline_new/ @pburdette @f_caplette @jivanvl @mfluharty @bsandlin @mgandres +/app/assets/javascripts/ci_lint/ @f_caplette @bsandlin @mgandres +/app/assets/javascripts/ci_variable_list/ @pburdette @f_caplette @jivanvl @mfluharty @bsandlin @mgandres +/app/assets/javascripts/pipeline_schedules/ @pburdette @jivanvl +/app/assets/javascripts/pipeline_editor/ @f_caplette @bsandlin @mgandres +/ee/app/assets/javascripts/ci_minutes_usage/ @pburdette @jivanvl +/ee/app/assets/javascripts/usage_quotas/ci_minutes_usage/ @pburdette @jivanvl +/ee/app/assets/javascripts/usage_quotas/pipelines/ @pburdette @jivanvl +/ee/app/assets/javascripts/reports/ @mfluharty + ^[Templates] /lib/gitlab/ci/templates/ @gitlab-org/maintainers/cicd-templates /lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @DylanGriffith @mayra-cabrera @tkuah /lib/gitlab/ci/templates/Security/ @gonzoyumo @twoodham @sethgitlab @thiagocsf -/lib/gitlab/ci/templates/Security/Container-Scanning.*.yml @gitlab-org/protect/container-security-backend +/lib/gitlab/ci/templates/Security/Container-Scanning.*.yml @gitlab-org/govern/security-policies-backend ^[Project Alias] /ee/app/models/project_alias.rb @patrickbajao @@ -70,18 +165,18 @@ Dangerfile @gl-quality/eng-prod # Secure & Threat Management ownership delineation # https://about.gitlab.com/handbook/engineering/development/threat-management/delineate-secure-threat-management.html#technical-boundaries ^[Threat Insights] -/app/finders/security/ @gitlab-org/secure/threat-insights-backend-team -/app/models/vulnerability.rb @gitlab-org/secure/threat-insights-backend-team -/ee/app/finders/security/ @gitlab-org/secure/threat-insights-backend-team -/ee/app/models/security/ @gitlab-org/secure/threat-insights-backend-team -/ee/app/models/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/app/policies/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/app/policies/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team -/ee/app/presenters/projects/security/ @gitlab-org/secure/threat-insights-backend-team -/ee/lib/api/vulnerabilit*.rb @gitlab-org/secure/threat-insights-backend-team -/ee/spec/policies/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/spec/policies/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team -/ee/spec/presenters/projects/security/ @gitlab-org/secure/threat-insights-backend-team +/app/finders/security/ @gitlab-org/govern/threat-insights-backend-team +/app/models/vulnerability.rb @gitlab-org/govern/threat-insights-backend-team +/ee/app/finders/security/ @gitlab-org/govern/threat-insights-backend-team +/ee/app/models/security/ @gitlab-org/govern/threat-insights-backend-team +/ee/app/models/vulnerabilities/ @gitlab-org/govern/threat-insights-backend-team +/ee/app/policies/vulnerabilities/ @gitlab-org/govern/threat-insights-backend-team +/ee/app/policies/vulnerability*.rb @gitlab-org/govern/threat-insights-backend-team +/ee/app/presenters/projects/security/ @gitlab-org/govern/threat-insights-backend-team +/ee/lib/api/vulnerabilit*.rb @gitlab-org/govern/threat-insights-backend-team +/ee/spec/policies/vulnerabilities/ @gitlab-org/govern/threat-insights-backend-team +/ee/spec/policies/vulnerability*.rb @gitlab-org/govern/threat-insights-backend-team +/ee/spec/presenters/projects/security/ @gitlab-org/govern/threat-insights-backend-team ^[Secure] /ee/lib/gitlab/ci/parsers/license_compliance/ @gitlab-org/secure/composition-analysis-be @@ -93,23 +188,23 @@ Dangerfile @gl-quality/eng-prod /ee/app/services/app_sec/dast/ @gitlab-org/secure/dynamic-analysis-be ^[Container Security] -/ee/app/views/projects/threat_monitoring/** @gitlab-org/protect/container-security-frontend -/ee/app/views/projects/security/policies/** @gitlab-org/protect/container-security-frontend -/ee/spec/views/projects/security/policies/** @gitlab-org/protect/container-security-frontend -/ee/app/assets/javascripts/pages/projects/threat_monitoring/** @gitlab-org/protect/container-security-frontend -/ee/app/assets/javascripts/threat_monitoring/** @gitlab-org/protect/container-security-frontend -/ee/spec/frontend/threat_monitoring/** @gitlab-org/protect/container-security-frontend +/ee/app/views/projects/threat_monitoring/** @gitlab-org/govern/security-policies-frontend +/ee/app/views/projects/security/policies/** @gitlab-org/govern/security-policies-frontend +/ee/spec/views/projects/security/policies/** @gitlab-org/govern/security-policies-frontend +/ee/app/assets/javascripts/pages/projects/threat_monitoring/** @gitlab-org/govern/security-policies-frontend +/ee/app/assets/javascripts/threat_monitoring/** @gitlab-org/govern/security-policies-frontend +/ee/spec/frontend/threat_monitoring/** @gitlab-org/govern/security-policies-frontend -/ee/app/controllers/projects/threat_monitoring_controller.rb @gitlab-org/protect/container-security-backend -/ee/spec/controllers/projects/threat_monitoring_controller_spec.rb @gitlab-org/protect/container-security-backend -/ee/app/controllers/projects/security/policies_controller.rb @gitlab-org/protect/container-security-backend -/ee/spec/requests/projects/security/policies_controller_spec.rb @gitlab-org/protect/container-security-backend -/ee/app/models/security/orchestration_policy_configuration.rb @gitlab-org/protect/container-security-backend -/ee/spec/models/security/orchestration_policy_configuration_spec.rb @gitlab-org/protect/container-security-backend -/app/models/clusters/applications/cilium.rb @gitlab-org/protect/container-security-backend -/spec/models/clusters/applications/cilium_spec.rb @gitlab-org/protect/container-security-backend -/ee/app/services/security/orchestration/** @gitlab-org/protect/container-security-backend -/ee/spec/services/security/orchestration/** @gitlab-org/protect/container-security-backend +/ee/app/controllers/projects/threat_monitoring_controller.rb @gitlab-org/govern/security-policies-backend +/ee/spec/controllers/projects/threat_monitoring_controller_spec.rb @gitlab-org/govern/container-security-backend +/ee/app/controllers/projects/security/policies_controller.rb @gitlab-org/govern/security-policies-backend +/ee/spec/requests/projects/security/policies_controller_spec.rb @gitlab-org/govern/security-policies-backend +/ee/app/models/security/orchestration_policy_configuration.rb @gitlab-org/govern/security-policies-backend +/ee/spec/models/security/orchestration_policy_configuration_spec.rb @gitlab-org/govern/security-policies-backend +/app/models/clusters/applications/cilium.rb @gitlab-org/govern/security-policies-backend +/spec/models/clusters/applications/cilium_spec.rb @gitlab-org/govern/security-policies-backend +/ee/app/services/security/orchestration/** @gitlab-org/govern/security-policies-backend +/ee/spec/services/security/orchestration/** @gitlab-org/govern/security-policies-backend ^[Code Owners] /ee/lib/gitlab/code_owners.rb @reprazent @kerrizor @garyh @@ -156,18 +251,56 @@ Dangerfile @gl-quality/eng-prod ^[Growth Experiments] /app/experiments/ @gitlab-org/growth/experiment-devs +/spec/experiments/ @gitlab-org/growth/experiment-devs /app/models/experiment.rb @gitlab-org/growth/experiment-devs +/spec/models/experiment.rb @gitlab-org/growth/experiment-devs /app/models/experiment_subject.rb @gitlab-org/growth/experiment-devs +/spec/models/experiment_subject.rb @gitlab-org/growth/experiment-devs /app/models/experiment_user.rb @gitlab-org/growth/experiment-devs +/spec/models/experiment_user.rb @gitlab-org/growth/experiment-devs /app/workers/experiments/ @gitlab-org/growth/experiment-devs +/spec/workers/experiments/ @gitlab-org/growth/experiment-devs +/config/initializers/gitlab_experiment.rb @gitlab-org/growth/experiment-devs /config/feature_flags/experiment/ @gitlab-org/growth/experiment-devs /ee/config/feature_flags/experiment/ @gitlab-org/growth/experiment-devs /ee/lib/api/experiments.rb @gitlab-org/growth/experiment-devs -/ee/lib/ee/api/entities/experiment.rb @gitlab-org/growth/experiment-devs -/lib/gitlab/experimentation/ @gitlab-org/growth/experiment-devs -/lib/gitlab/experimentation.rb @gitlab-org/growth/experiment-devs -/lib/gitlab/experimentation_logger.rb @gitlab-org/growth/experiment-devs /ee/spec/requests/api/experiments_spec.rb @gitlab-org/growth/experiment-devs +/ee/lib/ee/api/entities/experiment.rb @gitlab-org/growth/experiment-devs +/ee/spec/lib/ee/api/entities/experiment_spec.rb @gitlab-org/growth/experiment-devs +/lib/gitlab/experimentation/ @gitlab-org/growth/experiment-devs +/spec/lib/gitlab/experimentation/ @gitlab-org/growth/experiment-devs +/lib/gitlab/experimentation.rb @gitlab-org/growth/experiment-devs +/spec/lib/gitlab/experimentation_spec.rb @gitlab-org/growth/experiment-devs +/lib/gitlab/experimentation_logger.rb @gitlab-org/growth/experiment-devs + +^[Growth] +/ee/app/workers/onboarding/ @gitlab-org/growth/engineers +/ee/spec/workers/onboarding/ @gitlab-org/growth/engineers +/app/models/onboarding/ @gitlab-org/growth/engineers +/spec/models/onboarding/ @gitlab-org/growth/engineers +/app/services/onboarding/ @gitlab-org/growth/engineers +/spec/services/onboarding/ @gitlab-org/growth/engineers +/ee/app/controllers/registrations/ @gitlab-org/growth/engineers +/ee/app/components/namespaces/free_user_cap/ @gitlab-org/growth/engineers +/ee/spec/components/namespaces/free_user_cap/ @gitlab-org/growth/engineers +/ee/app/models/namespaces/free_user_cap/ @gitlab-org/growth/engineers +/ee/spec/models/namespaces/free_user_cap/ @gitlab-org/growth/engineers +/app/services/users/in_product_marketing_email_records.rb @gitlab-org/growth/engineers +/spec/services/users/in_product_marketing_email_records_spec.rb @gitlab-org/growth/engineers +/app/workers/namespaces/in_product_marketing_emails_worker.rb @gitlab-org/growth/engineers +/spec/workers/namespaces/in_product_marketing_emails_worker_spec.rb @gitlab-org/growth/engineers +/ee/app/workers/ee/namespaces/in_product_marketing_emails_worker.rb @gitlab-org/growth/engineers +/ee/spec/workers/ee/namespaces/in_product_marketing_emails_worker_spec.rb @gitlab-org/growth/engineers +/app/models/users/in_product_marketing_email.rb @gitlab-org/growth/engineers +/spec/models/users/in_product_marketing_email_spec.rb @gitlab-org/growth/engineers +/app/services/namespaces/in_product_marketing_emails_service.rb @gitlab-org/growth/engineers +/spec/services/namespaces/in_product_marketing_emails_service_spec.rb @gitlab-org/growth/engineers +/ee/app/services/ee/namespaces/in_product_marketing_emails_service.rb @gitlab-org/growth/engineers +/ee/spec/services/namespaces/in_product_marketing_emails_service_spec.rb @gitlab-org/growth/engineers +/app/workers/projects/record_target_platforms_worker.rb @gitlab-org/growth/engineers +/spec/workers/projects/record_target_platforms_worker_spec.rb @gitlab-org/growth/engineers +/ee/app/controllers/groups/feature_discovery_moments_controller.rb @gitlab-org/growth/engineers +/ee/spec/requests/groups/feature_discovery_moments_spec.rb @gitlab-org/growth/engineers ^[Legal] /config/dependency_decisions.yml @gitlab-org/legal-reviewers @@ -200,10 +333,10 @@ ee/lib/ee/gitlab/checks/** @proglottis @toon @zj-gitlab lib/gitlab/checks/** @proglottis @toon @zj-gitlab ^[Documentation Directories] -.markdownlint.yml @marcel.amirault @eread @aqualls @dianalogan -/doc/.markdownlint @marcel.amirault @eread @aqualls @dianalogan +.markdownlint.yml @marcel.amirault @eread @aqualls @dianalogan @kpaizee /doc/ @gl-docsteam -/doc/.vale/ @marcel.amirault @eread @aqualls @dianalogan +/doc/.markdownlint/ @marcel.amirault @eread @aqualls @dianalogan @kpaizee +/doc/.vale/ @marcel.amirault @eread @aqualls @dianalogan @kpaizee ^[Documentation Pages] /doc/administration/application_settings_cache.md @sselhorn @@ -212,8 +345,9 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/administration/audit_reports.md @eread /doc/administration/auditor_users.md @eread /doc/administration/auth/ @eread +/doc/administration/auth/ldap/ @eread /doc/administration/cicd.md @marcel.amirault -/doc/administration/clusters/kas.md @sselhorn +/doc/administration/clusters/ @phillipwells /doc/administration/compliance.md @eread /doc/administration/configure.md @axil /doc/administration/consul.md @axil @@ -224,74 +358,81 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/administration/feature_flags.md @axil /doc/administration/file_hooks.md @aqualls /doc/administration/geo/ @axil +/doc/administration/geo/disaster_recovery/ @axil +/doc/administration/geo/disaster_recovery/runbooks/ @axil +/doc/administration/geo/replication/ @axil +/doc/administration/geo/secondary_proxy/ @axil +/doc/administration/geo/setup/ @axil /doc/administration/git_protocol.md @aqualls /doc/administration/gitaly/ @eread /doc/administration/housekeeping.md @axil +/doc/administration/inactive_project_deletion.md @eread /doc/administration/incoming_email.md @msedlakjakubowski /doc/administration/index.md @axil /doc/administration/instance_limits.md @axil -/doc/administration/instance_review.md @kpaizee +/doc/administration/instance_review.md @phillipwells /doc/administration/integration/kroki.md @msedlakjakubowski -/doc/administration/integration/mailgun.md @kpaizee +/doc/administration/integration/mailgun.md @msedlakjakubowski /doc/administration/integration/plantuml.md @aqualls -/doc/administration/integration/terminal.md @kpaizee +/doc/administration/integration/terminal.md @ashrafkhamis /doc/administration/invalidate_markdown_cache.md @msedlakjakubowski /doc/administration/issue_closing_pattern.md @aqualls /doc/administration/job_artifacts.md @marcel.amirault /doc/administration/job_logs.md @sselhorn -/doc/administration/lfs/index.md @aqualls +/doc/administration/lfs/ @aqualls /doc/administration/libravatar.md @axil /doc/administration/load_balancer.md @axil /doc/administration/logs/index.md @msedlakjakubowski -/doc/administration/maintenance_mode/index.md @axil +/doc/administration/logs/log_parsing.md @axil +/doc/administration/logs/tracing_correlation_id.md @axil +/doc/administration/maintenance_mode/ @axil /doc/administration/merge_request_diffs.md @aqualls /doc/administration/monitoring/ @msedlakjakubowski +/doc/administration/monitoring/gitlab_self_monitoring_project/ @msedlakjakubowski +/doc/administration/monitoring/ip_allowlist.md @sselhorn +/doc/administration/monitoring/performance/ @msedlakjakubowski +/doc/administration/monitoring/prometheus/ @msedlakjakubowski /doc/administration/monitoring/prometheus/index.md @axil +/doc/administration/monitoring/prometheus/web_exporter.md @sselhorn /doc/administration/nfs.md @axil /doc/administration/object_storage.md @axil /doc/administration/operations/ @axil -/doc/administration/operations/moving_repositories.md @eread /doc/administration/operations/fast_ssh_key_lookup.md @aqualls -/doc/administration/operations/sidekiq_memory_killer.md @sselhorn +/doc/administration/operations/moving_repositories.md @eread /doc/administration/package_information/ @axil /doc/administration/packages/ @claytoncornell -/doc/administration/pages/index.md @aqualls -/doc/administration/pages/source.md @aqualls +/doc/administration/pages/ @aqualls /doc/administration/polling.md @axil /doc/administration/postgresql/ @aqualls -/doc/administration/pseudonymizer.md @axil /doc/administration/raketasks/ @axil /doc/administration/raketasks/ldap.md @eread /doc/administration/raketasks/praefect.md @eread /doc/administration/read_only_gitlab.md @axil /doc/administration/redis/ @axil /doc/administration/reference_architectures/ @axil -/doc/administration/reply_by_email_postfix_setup.md @axil /doc/administration/reply_by_email.md @msedlakjakubowski +/doc/administration/reply_by_email_postfix_setup.md @axil /doc/administration/repository_checks.md @eread /doc/administration/repository_storage_paths.md @eread /doc/administration/repository_storage_types.md @eread /doc/administration/restart_gitlab.md @axil /doc/administration/server_hooks.md @eread -/doc/administration/sidekiq_health_check.md @axil -/doc/administration/sidekiq.md @axil +/doc/administration/sidekiq/ @axil /doc/administration/smime_signing_email.md @axil -/doc/administration/snippets/index.md @aqualls +/doc/administration/snippets/ @aqualls /doc/administration/static_objects_external_storage.md @aqualls -/doc/administration/system_hooks.md @kpaizee -/doc/administration/terraform_state.md @sselhorn +/doc/administration/system_hooks.md @ashrafkhamis +/doc/administration/terraform_state.md @phillipwells /doc/administration/timezone.md @axil /doc/administration/troubleshooting/ @axil -/doc/administration/troubleshooting/elasticsearch.md @sselhorn /doc/administration/troubleshooting/postgresql.md @aqualls /doc/administration/uploads.md @axil /doc/administration/user_settings.md @eread -/doc/administration/whats-new.md @kpaizee -/doc/administration/wikis/index.md @aqualls +/doc/administration/wikis/ @aqualls /doc/api/access_requests.md @eread /doc/api/admin_sidekiq_queues.md @axil /doc/api/alert_management_alerts.md @msedlakjakubowski -/doc/api/api_resources.md @kpaizee +/doc/api/api_resources.md @ashrafkhamis /doc/api/appearance.md @eread /doc/api/applications.md @eread /doc/api/audit_events.md @eread @@ -299,41 +440,40 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/award_emoji.md @msedlakjakubowski /doc/api/boards.md @msedlakjakubowski /doc/api/branches.md @aqualls -/doc/api/broadcast_messages.md @kpaizee +/doc/api/broadcast_messages.md @phillipwells /doc/api/bulk_imports.md @eread -/doc/api/cluster_agents.md @sselhorn +/doc/api/cluster_agents.md @phillipwells /doc/api/commits.md @aqualls /doc/api/container_registry.md @claytoncornell -/doc/api/custom_attributes.md @kpaizee +/doc/api/custom_attributes.md @ashrafkhamis /doc/api/dependencies.md @rdickenson /doc/api/dependency_proxy.md @claytoncornell /doc/api/deploy_keys.md @rdickenson /doc/api/deploy_tokens.md @rdickenson /doc/api/deployments.md @rdickenson /doc/api/discussions.md @aqualls -/doc/api/dora/metrics.md @fneill -/doc/api/dora4_project_analytics.md @fneill +/doc/api/dora/ @fneill /doc/api/environments.md @rdickenson /doc/api/epic_issues.md @msedlakjakubowski /doc/api/epic_links.md @msedlakjakubowski /doc/api/epics.md @msedlakjakubowski /doc/api/error_tracking.md @msedlakjakubowski /doc/api/events.md @eread -/doc/api/experiments.md @kpaizee +/doc/api/experiments.md @phillipwells /doc/api/feature_flag_specs.md @rdickenson /doc/api/feature_flag_user_lists.md @rdickenson /doc/api/feature_flags.md @rdickenson /doc/api/features.md @rdickenson /doc/api/freeze_periods.md @rdickenson /doc/api/geo_nodes.md @axil -/doc/api/graphql/ @kpaizee +/doc/api/graphql/ @ashrafkhamis /doc/api/graphql/custom_emoji.md @msedlakjakubowski /doc/api/graphql/sample_issue_boards.md @msedlakjakubowski /doc/api/group_access_tokens.md @eread /doc/api/group_activity_analytics.md @fneill /doc/api/group_badges.md @fneill /doc/api/group_boards.md @msedlakjakubowski -/doc/api/group_clusters.md @sselhorn +/doc/api/group_clusters.md @phillipwells /doc/api/group_import_export.md @eread /doc/api/group_iterations.md @msedlakjakubowski /doc/api/group_labels.md @msedlakjakubowski @@ -346,29 +486,30 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/group_wikis.md @aqualls /doc/api/groups.md @fneill /doc/api/import.md @eread -/doc/api/index.md @kpaizee -/doc/api/instance_clusters.md @sselhorn +/doc/api/index.md @ashrafkhamis +/doc/api/instance_clusters.md @phillipwells /doc/api/instance_level_ci_variables.md @marcel.amirault -/doc/api/integrations.md @kpaizee -/doc/api/invitations.md @kpaizee +/doc/api/integrations.md @ashrafkhamis +/doc/api/invitations.md @phillipwells /doc/api/issue_links.md @msedlakjakubowski -/doc/api/issues_statistics.md @msedlakjakubowski /doc/api/issues.md @msedlakjakubowski +/doc/api/issues_statistics.md @msedlakjakubowski /doc/api/iterations.md @msedlakjakubowski /doc/api/job_artifacts.md @marcel.amirault /doc/api/jobs.md @marcel.amirault /doc/api/keys.md @aqualls /doc/api/labels.md @msedlakjakubowski -/doc/api/license.md @kpaizee +/doc/api/license.md @fneill /doc/api/linked_epics.md @msedlakjakubowski /doc/api/lint.md @marcel.amirault -/doc/api/managed_licenses.md @kpaizee -/doc/api/markdown.md @aqualls +/doc/api/managed_licenses.md @fneill +/doc/api/markdown.md @msedlakjakubowski /doc/api/members.md @eread /doc/api/merge_request_approvals.md @aqualls /doc/api/merge_request_context_commits.md @aqualls /doc/api/merge_requests.md @aqualls /doc/api/merge_trains.md @marcel.amirault +/doc/api/metadata.md @ashrafkhamis /doc/api/metrics_dashboard_annotations.md @msedlakjakubowski /doc/api/metrics_user_starred_dashboards.md @msedlakjakubowski /doc/api/milestones.md @msedlakjakubowski @@ -376,11 +517,11 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/notes.md @msedlakjakubowski /doc/api/notification_settings.md @msedlakjakubowski /doc/api/oauth2.md @eread -/doc/api/openapi/openapi_interactive.md @kpaizee +/doc/api/openapi/ @ashrafkhamis /doc/api/packages.md @claytoncornell /doc/api/packages/ @claytoncornell -/doc/api/pages_domains.md @aqualls /doc/api/pages.md @aqualls +/doc/api/pages_domains.md @aqualls /doc/api/personal_access_tokens.md @eread /doc/api/pipeline_schedules.md @marcel.amirault /doc/api/pipeline_triggers.md @marcel.amirault @@ -389,7 +530,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/project_access_tokens.md @eread /doc/api/project_aliases.md @aqualls /doc/api/project_badges.md @aqualls -/doc/api/project_clusters.md @sselhorn +/doc/api/project_clusters.md @phillipwells /doc/api/project_import_export.md @aqualls /doc/api/project_level_variables.md @marcel.amirault /doc/api/project_relations_export.md @eread @@ -402,8 +543,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/protected_branches.md @aqualls /doc/api/protected_environments.md @rdickenson /doc/api/protected_tags.md @aqualls -/doc/api/releases/index.md @rdickenson -/doc/api/releases/links.md @rdickenson +/doc/api/releases/ @rdickenson /doc/api/remote_mirrors.md @aqualls /doc/api/repositories.md @aqualls /doc/api/repository_files.md @aqualls @@ -425,7 +565,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/statistics.md @eread /doc/api/status_checks.md @eread /doc/api/suggestions.md @aqualls -/doc/api/system_hooks.md @kpaizee +/doc/api/system_hooks.md @ashrafkhamis /doc/api/tags.md @aqualls /doc/api/templates/dockerfiles.md @aqualls /doc/api/templates/gitignores.md @aqualls @@ -435,202 +575,244 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/topics.md @fneill /doc/api/usage_data.md @claytoncornell /doc/api/users.md @eread -/doc/api/version.md @kpaizee +/doc/api/version.md @ashrafkhamis /doc/api/visual_review_discussions.md @marcel.amirault /doc/api/vulnerabilities.md @claytoncornell /doc/api/vulnerability_exports.md @claytoncornell /doc/api/vulnerability_findings.md @claytoncornell /doc/api/wikis.md @aqualls -/doc/architecture/blueprints/container_registry_metadata_database/index.md @claytoncornell +/doc/architecture/blueprints/container_registry_metadata_database/ @claytoncornell /doc/architecture/blueprints/database/scalability/patterns/ @aqualls -/doc/architecture/blueprints/gitlab_to_kubernetes_communication/index.md @sselhorn -/doc/ci/caching/index.md @marcel.amirault -/doc/ci/chatops/index.md @sselhorn +/doc/architecture/blueprints/database_scaling/ @aqualls +/doc/architecture/blueprints/gitlab_to_kubernetes_communication/ @phillipwells +/doc/ci/ @marcel.amirault +/doc/ci/caching/ @marcel.amirault +/doc/ci/chatops/ @phillipwells /doc/ci/ci_cd_for_external_repos/ @marcel.amirault -/doc/ci/cloud_deployment/ecs/quick_start_guide.md @rdickenson -/doc/ci/cloud_deployment/index.md @rdickenson +/doc/ci/cloud_deployment/ @rdickenson +/doc/ci/cloud_deployment/ecs/ @rdickenson /doc/ci/cloud_services/ @marcel.amirault -/doc/ci/directed_acyclic_graph/index.md @marcel.amirault +/doc/ci/cloud_services/aws/ @marcel.amirault +/doc/ci/cloud_services/azure/ @marcel.amirault +/doc/ci/cloud_services/google_cloud/ @marcel.amirault +/doc/ci/directed_acyclic_graph/ @marcel.amirault /doc/ci/docker/index.md @marcel.amirault /doc/ci/docker/using_docker_build.md @marcel.amirault /doc/ci/docker/using_docker_images.md @sselhorn /doc/ci/docker/using_kaniko.md @marcel.amirault -/doc/ci/enable_or_disable_ci.md @marcel.amirault /doc/ci/environments/ @rdickenson -/doc/ci/examples/authenticating-with-hashicorp-vault/index.md @marcel.amirault -/doc/ci/examples/deployment/composer-npm-deploy.md @rdickenson -/doc/ci/examples/deployment/index.md @rdickenson -/doc/ci/examples/end_to_end_testing_webdriverio/index.md @marcel.amirault +/doc/ci/examples/authenticating-with-hashicorp-vault/ @marcel.amirault +/doc/ci/examples/deployment/ @rdickenson +/doc/ci/examples/end_to_end_testing_webdriverio/ @marcel.amirault /doc/ci/examples/index.md @marcel.amirault -/doc/ci/examples/laravel_with_gitlab_and_envoy/index.md @marcel.amirault +/doc/ci/examples/laravel_with_gitlab_and_envoy/ @marcel.amirault /doc/ci/examples/php.md @marcel.amirault /doc/ci/examples/semantic-release.md @claytoncornell -/doc/ci/git_submodules.md @marcel.amirault -/doc/ci/index.md @marcel.amirault -/doc/ci/interactive_web_terminal/index.md @sselhorn -/doc/ci/introduction/index.md @marcel.amirault -/doc/ci/jobs/ci_job_token.md @marcel.amirault -/doc/ci/jobs/index.md @marcel.amirault -/doc/ci/jobs/job_control.md @marcel.amirault -/doc/ci/large_repositories/index.md @sselhorn -/doc/ci/lint.md @marcel.amirault -/doc/ci/metrics_reports.md @marcel.amirault -/doc/ci/migration/circleci.md @marcel.amirault -/doc/ci/migration/jenkins.md @marcel.amirault -/doc/ci/pipeline_editor/index.md @marcel.amirault +/doc/ci/interactive_web_terminal/ @sselhorn +/doc/ci/introduction/ @marcel.amirault +/doc/ci/jobs/ @marcel.amirault +/doc/ci/large_repositories/ @sselhorn +/doc/ci/migration/ @marcel.amirault +/doc/ci/pipeline_editor/ @marcel.amirault /doc/ci/pipelines/ @marcel.amirault -/doc/ci/quick_start/index.md @marcel.amirault -/doc/ci/resource_groups/index.md @rdickenson -/doc/ci/review_apps/index.md @marcel.amirault +/doc/ci/quick_start/ @marcel.amirault +/doc/ci/resource_groups/ @rdickenson +/doc/ci/review_apps/ @marcel.amirault /doc/ci/runners/ @sselhorn -/doc/ci/secrets/index.md @marcel.amirault -/doc/ci/secure_files/index.md @marcel.amirault +/doc/ci/runners/saas/ @sselhorn +/doc/ci/runners/saas/macos/ @sselhorn +/doc/ci/secrets/ @marcel.amirault +/doc/ci/secure_files/ @marcel.amirault /doc/ci/services/ @sselhorn -/doc/ci/ssh_keys/index.md @marcel.amirault -/doc/ci/test_cases/index.md @msedlakjakubowski -/doc/ci/triggers/index.md @marcel.amirault -/doc/ci/troubleshooting.md @marcel.amirault -/doc/ci/unit_test_reports.md @marcel.amirault +/doc/ci/ssh_keys/ @marcel.amirault +/doc/ci/test_cases/ @msedlakjakubowski +/doc/ci/testing/ @marcel.amirault +/doc/ci/testing/code_quality.md @rdickenson +/doc/ci/triggers/ @marcel.amirault /doc/ci/variables/ @marcel.amirault /doc/ci/yaml/ @marcel.amirault /doc/development/application_limits.md @axil /doc/development/approval_rules.md @aqualls -/doc/development/audit_event_guide/index.md @eread -/doc/development/auto_devops.md @sselhorn +/doc/development/audit_event_guide/ @eread +/doc/development/auto_devops.md @phillipwells +/doc/development/backend/ @sselhorn /doc/development/backend/create_source_code_be/ @aqualls -/doc/development/backend/ruby_style_guide.md @sselhorn /doc/development/build_test_package.md @axil /doc/development/bulk_import.md @eread /doc/development/cached_queries.md @sselhorn /doc/development/cascading_settings.md @eread -/doc/development/chatops_on_gitlabcom.md @sselhorn -/doc/development/cicd/cicd_reference_documentation_guide.md @marcel.amirault -/doc/development/cicd/index.md @marcel.amirault -/doc/development/cicd/schema.md @marcel.amirault -/doc/development/cicd/templates.md @marcel.amirault -/doc/development/code_intelligence/index.md @aqualls +/doc/development/chatops_on_gitlabcom.md @phillipwells +/doc/development/cicd/ @marcel.amirault +/doc/development/code_intelligence/ @aqualls /doc/development/contributing/ @sselhorn -/doc/development/contributing/merge_request_workflow.md @aqualls -/doc/development/database_review.md @aqualls /doc/development/database/ @aqualls +/doc/development/database/filtering_by_label.md @msedlakjakubowski +/doc/development/database/multiple_databases.md @sselhorn +/doc/development/database_review.md @aqualls /doc/development/developing_with_solargraph.md @aqualls +/doc/development/development_processes.md @sselhorn /doc/development/diffs.md @aqualls /doc/development/distributed_tracing.md @msedlakjakubowski /doc/development/documentation/ @sselhorn -/doc/development/documentation/index.md @dianalogan -/doc/development/documentation/redirects.md @dianalogan -/doc/development/documentation/review_apps.md @dianalogan -/doc/development/documentation/testing.md @dianalogan -/doc/development/elasticsearch.md @sselhorn -/doc/development/experiment_guide/gitlab_experiment.md @kpaizee -/doc/development/experiment_guide/index.md @kpaizee +/doc/development/documentation/styleguide/ @sselhorn +/doc/development/documentation/topic_types/ @sselhorn +/doc/development/elasticsearch.md @ashrafkhamis +/doc/development/experiment_guide/ @phillipwells /doc/development/export_csv.md @eread /doc/development/fe_guide/content_editor.md @aqualls /doc/development/fe_guide/dark_mode.md @sselhorn /doc/development/fe_guide/graphql.md @sselhorn +/doc/development/fe_guide/merge_request_widget_extensions.md @aqualls /doc/development/fe_guide/source_editor.md @aqualls -/doc/development/feature_categorization/index.md @sselhorn -/doc/development/feature_flags/controls.md @sselhorn -/doc/development/feature_flags/index.md @sselhorn -/doc/development/filtering_by_label.md @msedlakjakubowski +/doc/development/fe_guide/view_component.md @rdickenson +/doc/development/feature_categorization/ @sselhorn +/doc/development/feature_development.md @sselhorn +/doc/development/feature_flags/ @sselhorn +/doc/development/fips_compliance.md @aqualls /doc/development/geo.md @axil -/doc/development/geo/framework.md @axil +/doc/development/geo/ @axil /doc/development/git_object_deduplication.md @eread /doc/development/gitaly.md @eread -/doc/development/gitlab_flavored_markdown/index.md @aqualls -/doc/development/gitlab_flavored_markdown/specification_guide/index.md @aqualls -/doc/development/graphql_guide/ @kpaizee +/doc/development/gitlab_flavored_markdown/ @aqualls +/doc/development/gitlab_flavored_markdown/specification_guide/ @aqualls /doc/development/graphql_guide/batchloader.md @aqualls -/doc/development/hash_indexes.md @aqualls +/doc/development/graphql_guide/graphql_pro.md @ashrafkhamis +/doc/development/graphql_guide/index.md @ashrafkhamis +/doc/development/graphql_guide/monitoring.md @ashrafkhamis +/doc/development/graphql_guide/pagination.md @ashrafkhamis /doc/development/i18n/ @eread /doc/development/image_scaling.md @sselhorn /doc/development/import_export.md @eread /doc/development/index.md @sselhorn -/doc/development/integrations/ @kpaizee -/doc/development/integrations/codesandbox.md @sselhorn -/doc/development/integrations/secure_partner_integration.md @rdickenson +/doc/development/integrations/ @ashrafkhamis /doc/development/integrations/secure.md @claytoncornell +/doc/development/integrations/secure_partner_integration.md @rdickenson /doc/development/internal_api/ @aqualls /doc/development/internal_users.md @sselhorn /doc/development/issuable-like-models.md @msedlakjakubowski /doc/development/issue_types.md @msedlakjakubowski -/doc/development/kubernetes.md @sselhorn +/doc/development/kubernetes.md @phillipwells /doc/development/lfs.md @aqualls -/doc/development/ee_features.md @fneill /doc/development/logging.md @msedlakjakubowski /doc/development/maintenance_mode.md @axil +/doc/development/merge_request_concepts/ @aqualls /doc/development/omnibus.md @axil /doc/development/packages/ @claytoncornell +/doc/development/pages/ @aqualls /doc/development/permissions.md @eread /doc/development/policies.md @eread -/doc/development/product_qualified_lead_guide/index.md @kpaizee +/doc/development/product_qualified_lead_guide/ @phillipwells /doc/development/project_templates.md @fneill /doc/development/prometheus_metrics.md @msedlakjakubowski /doc/development/real_time.md @msedlakjakubowski +/doc/development/sec/ @rdickenson /doc/development/secure_coding_guidelines.md @sselhorn /doc/development/service_ping/ @claytoncornell /doc/development/snowplow/ @claytoncornell /doc/development/spam_protection_and_captcha/ @eread /doc/development/sql.md @aqualls -/doc/development/testing_guide/best_practices.md @sselhorn -/doc/development/testing_guide/end_to_end/best_practices.md @sselhorn +/doc/development/testing_guide/ @sselhorn +/doc/development/testing_guide/contract/ @sselhorn +/doc/development/testing_guide/end_to_end/ @sselhorn /doc/development/value_stream_analytics.md @fneill -/doc/development/value_stream_analytics/value_stream_analytics_aggregated_backend.md @fneill +/doc/development/value_stream_analytics/ @fneill /doc/development/wikis.md @aqualls -/doc/development/work_items_widgets.md @msedlakjakubowski /doc/development/work_items.md @msedlakjakubowski +/doc/development/work_items_widgets.md @msedlakjakubowski /doc/development/workhorse/ @aqualls -/doc/development/workspace/index.md @sselhorn -/doc/downgrade_ee_to_ce/index.md @axil +/doc/development/workspace/ @sselhorn +/doc/downgrade_ee_to_ce/ @axil +/doc/drawers/ @ashrafkhamis /doc/gitlab-basics/ @aqualls /doc/install/ @axil -/doc/integration/ @kpaizee -/doc/integration/advanced_search/ @sselhorn -/doc/integration/elasticsearch.md @sselhorn +/doc/install/aws/ @axil +/doc/install/azure/ @axil +/doc/install/cloud_native/ @axil +/doc/install/google_cloud_platform/ @axil +/doc/install/openshift_and_gitlab/ @axil +/doc/integration/advanced_search/ @ashrafkhamis +/doc/integration/akismet.md @ashrafkhamis +/doc/integration/alicloud.md @eread +/doc/integration/arkose.md @phillipwells +/doc/integration/auth0.md @eread +/doc/integration/azure.md @eread +/doc/integration/bitbucket.md @eread +/doc/integration/cas.md @eread +/doc/integration/datadog.md @ashrafkhamis +/doc/integration/ding_talk.md @eread +/doc/integration/external-issue-tracker.md @ashrafkhamis +/doc/integration/facebook.md @eread +/doc/integration/github.md @eread +/doc/integration/gitlab.md @eread /doc/integration/gitpod.md @aqualls +/doc/integration/gmail_action_buttons_for_gitlab.md @ashrafkhamis +/doc/integration/google.md @eread +/doc/integration/index.md @ashrafkhamis +/doc/integration/jenkins.md @ashrafkhamis +/doc/integration/jira/ @ashrafkhamis /doc/integration/kerberos.md @eread -/doc/integration/mattermost/index.md @axil +/doc/integration/mattermost/ @axil +/doc/integration/oauth2_generic.md @eread /doc/integration/oauth_provider.md @eread +/doc/integration/omniauth.md @eread +/doc/integration/openid_connect_provider.md @eread +/doc/integration/recaptcha.md @ashrafkhamis +/doc/integration/salesforce.md @eread /doc/integration/saml.md @eread -/doc/integration/security_partners/index.md @rdickenson +/doc/integration/security_partners/ @rdickenson +/doc/integration/slash_commands.md @ashrafkhamis /doc/integration/sourcegraph.md @aqualls -/doc/integration/vault.md @sselhorn -/doc/operations/ @msedlakjakubowski +/doc/integration/trello_power_up.md @ashrafkhamis +/doc/integration/twitter.md @eread +/doc/integration/vault.md @phillipwells +/doc/operations/error_tracking.md msedlakjakubowski /doc/operations/feature_flags.md @rdickenson +/doc/operations/incident_management/ @msedlakjakubowski +/doc/operations/index.md @msedlakjakubowski +/doc/operations/metrics/ @msedlakjakubowski +/doc/operations/metrics/dashboards/ @msedlakjakubowski /doc/operations/product_analytics.md @claytoncornell -/doc/policy/alpha-beta-support.md @axil -/doc/policy/maintenance.md @axil @gitlab-org/delivery +/doc/operations/tracing.md @msedlakjakubowski +/doc/policy/ @axil /doc/raketasks/ @axil /doc/raketasks/generate_sample_prometheus_data.md @msedlakjakubowski /doc/raketasks/migrate_snippets.md @aqualls /doc/raketasks/spdx.md @rdickenson /doc/raketasks/x509_signatures.md @aqualls /doc/security/ @eread -/doc/subscriptions/ @sselhorn -/doc/topics/authentication/index.md @eread -/doc/topics/autodevops/ @sselhorn +/doc/subscriptions/ @fneill +/doc/subscriptions/gitlab_com/ @fneill +/doc/subscriptions/gitlab_dedicated/ @axil +/doc/subscriptions/self_managed/ @fneill +/doc/topics/authentication/ @eread +/doc/topics/autodevops/ @phillipwells +/doc/topics/autodevops/cloud_deployments/ @phillipwells /doc/topics/git/ @aqualls +/doc/topics/git/how_to_install_git/ @aqualls +/doc/topics/git/lfs/ @aqualls +/doc/topics/git/numerous_undo_possibilities_in_git/ @aqualls /doc/topics/gitlab_flow.md @aqualls -/doc/topics/offline/index.md @axil -/doc/topics/offline/quick_start_guide.md @axil +/doc/topics/offline/ @axil /doc/topics/plan_and_track.md @msedlakjakubowski /doc/tutorials/ @kpaizee /doc/update/ @axil /doc/update/mysql_to_postgresql.md @aqualls +/doc/update/package/ @axil /doc/update/upgrading_postgresql_using_slony.md @aqualls /doc/user/admin_area/analytics/ @fneill -/doc/user/admin_area/broadcast_messages.md @kpaizee +/doc/user/admin_area/broadcast_messages.md @phillipwells /doc/user/admin_area/credentials_inventory.md @eread /doc/user/admin_area/custom_project_templates.md @eread /doc/user/admin_area/diff_limits.md @aqualls /doc/user/admin_area/geo_sites.md @axil /doc/user/admin_area/labels.md @msedlakjakubowski -/doc/user/admin_area/license_file.md @sselhorn -/doc/user/admin_area/license.md @sselhorn +/doc/user/admin_area/license.md @fneill +/doc/user/admin_area/license_file.md @fneill /doc/user/admin_area/merge_requests_approvals.md @aqualls /doc/user/admin_area/moderate_users.md @eread /doc/user/admin_area/monitoring/background_migrations.md @aqualls /doc/user/admin_area/monitoring/health_check.md @msedlakjakubowski +/doc/user/admin_area/reporting/git_abuse_rate_limit.md @phillipwells /doc/user/admin_area/reporting/spamcheck.md @axil /doc/user/admin_area/review_abuse_reports.md @eread /doc/user/admin_area/settings/account_and_limit_settings.md @aqualls @@ -642,89 +824,120 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/admin_area/settings/git_lfs_rate_limits.md @aqualls /doc/user/admin_area/settings/gitaly_timeouts.md @eread /doc/user/admin_area/settings/import_export_rate_limits.md @eread +/doc/user/admin_area/settings/incident_management_rate_limits.md @msedlakjakubowski /doc/user/admin_area/settings/index.md @aqualls /doc/user/admin_area/settings/instance_template_repository.md @aqualls /doc/user/admin_area/settings/package_registry_rate_limits.md @claytoncornell -/doc/user/admin_area/settings/project_integration_management.md @kpaizee +/doc/user/admin_area/settings/project_integration_management.md @ashrafkhamis /doc/user/admin_area/settings/push_event_activities_limit.md @aqualls /doc/user/admin_area/settings/rate_limit_on_issues_creation.md @msedlakjakubowski /doc/user/admin_area/settings/rate_limit_on_notes_creation.md @msedlakjakubowski +/doc/user/admin_area/settings/rate_limit_on_pipelines_creation.md @marcel.amirault +/doc/user/admin_area/settings/rate_limit_on_users_api.md @eread /doc/user/admin_area/settings/third_party_offers.md @fneill /doc/user/admin_area/settings/usage_statistics.md @claytoncornell /doc/user/admin_area/settings/visibility_and_access_controls.md @aqualls -/doc/user/analytics/ @fneill /doc/user/analytics/ci_cd_analytics.md @rdickenson -/doc/user/application_security/ @rdickenson -/doc/user/application_security/cluster_image_scanning/index.md @claytoncornell -/doc/user/application_security/container_scanning/index.md @claytoncornell +/doc/user/analytics/ @fneill +/doc/user/application_security/api_fuzzing/ @rdickenson +/doc/user/application_security/configuration/ @rdickenson +/doc/user/application_security/container_scanning/ @claytoncornell +/doc/user/application_security/coverage_fuzzing/ @rdickenson /doc/user/application_security/cve_id_request.md @claytoncornell +/doc/user/application_security/dast/ @rdickenson +/doc/user/application_security/dast/checks/ @rdickenson +/doc/user/application_security/dast_api/ @rdickenson +/doc/user/application_security/dependency_list/ @rdickenson +/doc/user/application_security/dependency_scanning/ @rdickenson +/doc/user/application_security/generate_test_vulnerabilities/ @claytoncornell +/doc/user/application_security/iac_scanning/ @rdickenson +/doc/user/application_security/index.md @rdickenson +/doc/user/application_security/offline_deployments/ @rdickenson /doc/user/application_security/policies/ @claytoncornell -/doc/user/application_security/security_dashboard/index.md @claytoncornell -/doc/user/application_security/vulnerabilities/index.md @claytoncornell -/doc/user/application_security/vulnerabilities/severities.md @claytoncornell -/doc/user/application_security/vulnerability_report/index.md @claytoncornell +/doc/user/application_security/sast/ @rdickenson +/doc/user/application_security/secret_detection/ @rdickenson +/doc/user/application_security/security_dashboard/ @claytoncornell +/doc/user/application_security/terminology/ @rdickenson +/doc/user/application_security/vulnerabilities/ @claytoncornell +/doc/user/application_security/vulnerability_report/ @claytoncornell /doc/user/asciidoc.md @aqualls /doc/user/award_emojis.md @msedlakjakubowski -/doc/user/clusters/ @sselhorn -/doc/user/compliance/compliance_report/index.md @eread -/doc/user/compliance/index.md @eread -/doc/user/compliance/license_compliance/index.md @rdickenson -/doc/user/crm/index.md @msedlakjakubowski -/doc/user/discussions/index.md @aqualls +/doc/user/clusters/ @phillipwells +/doc/user/clusters/agent/ @phillipwells +/doc/user/clusters/agent/gitops/ @phillipwells +/doc/user/clusters/agent/install/ @phillipwells +/doc/user/clusters/create/ @phillipwells +/doc/user/compliance/ @eread +/doc/user/compliance/compliance_report/ @eread +/doc/user/compliance/license_compliance/ @rdickenson +/doc/user/crm/ @msedlakjakubowski +/doc/user/discussions/ @aqualls /doc/user/feature_flags.md @sselhorn -/doc/user/group/clusters/index.md @sselhorn -/doc/user/group/contribution_analytics/index.md @fneill +/doc/user/free_user_limit.md @phillipwells +/doc/user/group/access_and_permissions.md @fneill +/doc/user/group/clusters/ @phillipwells +/doc/user/group/contribution_analytics/ @fneill /doc/user/group/custom_project_templates.md @eread -/doc/user/group/devops_adoption/index.md @fneill -/doc/user/group/epics/epic_boards.md @msedlakjakubowski -/doc/user/group/epics/index.md @msedlakjakubowski -/doc/user/group/epics/linked_epics.md @msedlakjakubowski -/doc/user/group/epics/manage_epics.md @msedlakjakubowski -/doc/user/group/import/index.md @eread +/doc/user/group/devops_adoption/ @fneill +/doc/user/group/epics/ @msedlakjakubowski +/doc/user/group/import/ @eread /doc/user/group/index.md @fneill -/doc/user/group/insights/index.md @fneill -/doc/user/group/issues_analytics/index.md @msedlakjakubowski -/doc/user/group/iterations/index.md @msedlakjakubowski -/doc/user/group/planning_hierarchy/index.md @msedlakjakubowski -/doc/user/group/repositories_analytics/index.md @marcel.amirault -/doc/user/group/roadmap/index.md @msedlakjakubowski -/doc/user/group/saml_sso/group_managed_accounts.md @eread -/doc/user/group/saml_sso/index.md @eread -/doc/user/group/saml_sso/scim_setup.md @eread -/doc/user/group/saml_sso/example_saml_config.md @eread -/doc/user/group/settings/group_access_tokens.md @eread -/doc/user/group/settings/import_export.md @eread -/doc/user/group/subgroups/index.md @fneill -/doc/user/group/value_stream_analytics/index.md @fneill -/doc/user/infrastructure/clusters/ @sselhorn -/doc/user/infrastructure/clusters/manage/management_project_applications/apparmor.md @claytoncornell -/doc/user/infrastructure/clusters/manage/management_project_applications/cilium.md @claytoncornell -/doc/user/infrastructure/clusters/manage/management_project_applications/elasticstack.md @msedlakjakubowski -/doc/user/infrastructure/clusters/manage/management_project_applications/falco.md @claytoncornell -/doc/user/infrastructure/clusters/manage/management_project_applications/fluentd.md @claytoncornell -/doc/user/infrastructure/clusters/manage/management_project_applications/prometheus.md @msedlakjakubowski +/doc/user/group/insights/ @fneill +/doc/user/group/issues_analytics/ @msedlakjakubowski +/doc/user/group/iterations/ @msedlakjakubowski +/doc/user/group/manage.md @fneill +/doc/user/group/planning_hierarchy/ @msedlakjakubowski +/doc/user/group/repositories_analytics/ @marcel.amirault +/doc/user/group/roadmap/ @msedlakjakubowski +/doc/user/group/saml_sso/ @eread +/doc/user/group/settings/ @eread +/doc/user/group/subgroups/ @fneill +/doc/user/group/value_stream_analytics/ @fneill +/doc/user/infrastructure/ @phillipwells +/doc/user/infrastructure/clusters/ @phillipwells +/doc/user/infrastructure/clusters/connect/ @phillipwells +/doc/user/infrastructure/clusters/deploy/ @phillipwells +/doc/user/infrastructure/clusters/manage/ @phillipwells +/doc/user/infrastructure/clusters/manage/management_project_applications/certmanager.md @phillipwells +/doc/user/infrastructure/clusters/manage/management_project_applications/ingress.md @phillipwells /doc/user/infrastructure/clusters/manage/management_project_applications/runner.md @sselhorn -/doc/user/infrastructure/clusters/manage/management_project_applications/sentry.md @msedlakjakubowski -/doc/user/infrastructure/clusters/manage/management_project_applications/vault.md @sselhorn -/doc/user/infrastructure/iac/ @sselhorn -/doc/user/infrastructure/index.md @sselhorn +/doc/user/infrastructure/clusters/manage/management_project_applications/vault.md @phillipwells +/doc/user/infrastructure/iac/ @phillipwells /doc/user/markdown.md @aqualls +/doc/user/namespace/ @fneill /doc/user/packages/ @claytoncornell -/doc/user/packages/infrastructure_registry/index.md @sselhorn -/doc/user/packages/terraform_module_registry/index.md @sselhorn +/doc/user/packages/composer_repository/ @claytoncornell +/doc/user/packages/conan_repository/ @claytoncornell +/doc/user/packages/container_registry/ @claytoncornell +/doc/user/packages/debian_repository/ @claytoncornell +/doc/user/packages/dependency_proxy/ @claytoncornell +/doc/user/packages/generic_packages/ @claytoncornell +/doc/user/packages/go_proxy/ @claytoncornell +/doc/user/packages/helm_repository/ @claytoncornell +/doc/user/packages/infrastructure_registry/ @phillipwells +/doc/user/packages/maven_repository/ @claytoncornell +/doc/user/packages/npm_registry/ @claytoncornell +/doc/user/packages/nuget_repository/ @claytoncornell +/doc/user/packages/package_registry/ @claytoncornell +/doc/user/packages/pypi_repository/ @claytoncornell +/doc/user/packages/rubygems_registry/ @claytoncornell +/doc/user/packages/terraform_module_registry/ @phillipwells +/doc/user/packages/workflows/ @claytoncornell /doc/user/permissions.md @eread -/doc/user/profile/ @eread +/doc/user/profile/account/ @eread +/doc/user/profile/index.md @eread /doc/user/profile/notifications.md @msedlakjakubowski +/doc/user/profile/personal_access_tokens.md @eread +/doc/user/profile/unknown_sign_in_notification.md @eread /doc/user/project/autocomplete_characters.md @aqualls /doc/user/project/badges.md @aqualls -/doc/user/project/clusters/ @sselhorn -/doc/user/project/clusters/kubernetes_pod_logs.md @msedlakjakubowski -/doc/user/project/clusters/protect/ @claytoncornell +/doc/user/project/clusters/ @phillipwells +/doc/user/project/clusters/runbooks/ @phillipwells /doc/user/project/code_intelligence.md @aqualls /doc/user/project/code_owners.md @aqualls /doc/user/project/deploy_boards.md @rdickenson -/doc/user/project/deploy_keys/index.md @rdickenson -/doc/user/project/deploy_tokens/index.md @rdickenson +/doc/user/project/deploy_keys/ @rdickenson +/doc/user/project/deploy_tokens/ @rdickenson /doc/user/project/description_templates.md @msedlakjakubowski /doc/user/project/file_lock.md @aqualls /doc/user/project/git_attributes.md @aqualls @@ -732,58 +945,50 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/project/import/ @eread /doc/user/project/import/jira.md @msedlakjakubowski /doc/user/project/index.md @fneill -/doc/user/project/integrations/ @kpaizee -/doc/user/project/integrations/prometheus_library/ @msedlakjakubowski +/doc/user/project/integrations/ @ashrafkhamis /doc/user/project/integrations/prometheus.md @msedlakjakubowski +/doc/user/project/integrations/prometheus_library/ @msedlakjakubowski /doc/user/project/issue_board.md @msedlakjakubowski /doc/user/project/issues/ @msedlakjakubowski /doc/user/project/issues/csv_import.md @eread -/doc/user/project/labels.md @msedlakjakubowski -/doc/user/project/members/index.md @fneill -/doc/user/project/members/share_project_with_groups.md @fneill +/doc/user/project/members/ @fneill /doc/user/project/merge_requests/ @aqualls -/doc/user/project/merge_requests/accessibility_testing.md @marcel.amirault -/doc/user/project/merge_requests/browser_performance_testing.md @marcel.amirault -/doc/user/project/merge_requests/code_quality.md @rdickenson +/doc/user/project/merge_requests/approvals/ @aqualls /doc/user/project/merge_requests/csv_export.md @eread -/doc/user/project/merge_requests/fail_fast_testing.md @marcel.amirault -/doc/user/project/merge_requests/load_performance_testing.md @marcel.amirault /doc/user/project/merge_requests/status_checks.md @eread -/doc/user/project/merge_requests/test_coverage_visualization.md @marcel.amirault -/doc/user/project/merge_requests/testing_and_reports_in_merge_requests.md @marcel.amirault -/doc/user/project/milestones/burndown_and_burnup_charts.md @msedlakjakubowski -/doc/user/project/milestones/index.md @msedlakjakubowski +/doc/user/project/milestones/ @msedlakjakubowski /doc/user/project/pages/ @aqualls +/doc/user/project/pages/custom_domains_ssl_tls_certification/ @aqualls +/doc/user/project/pages/getting_started/ @aqualls /doc/user/project/protected_branches.md @aqualls /doc/user/project/protected_tags.md @aqualls /doc/user/project/push_options.md @aqualls /doc/user/project/quick_actions.md @msedlakjakubowski -/doc/user/project/releases/index.md @rdickenson -/doc/user/project/releases/release_cli.md @rdickenson +/doc/user/project/releases/ @rdickenson /doc/user/project/repository/ @aqualls +/doc/user/project/repository/branches/ @aqualls +/doc/user/project/repository/managing_large_repositories.md @axil /doc/user/project/repository/reducing_the_repo_size_using_git.md @eread -/doc/user/project/requirements/index.md @msedlakjakubowski +/doc/user/project/requirements/ @msedlakjakubowski /doc/user/project/service_desk.md @msedlakjakubowski /doc/user/project/settings/import_export.md @eread /doc/user/project/settings/index.md @fneill /doc/user/project/settings/project_access_tokens.md @eread /doc/user/project/time_tracking.md @msedlakjakubowski -/doc/user/project/web_ide/index.md @aqualls -/doc/user/project/wiki/group.md @aqualls -/doc/user/project/wiki/index.md @aqualls +/doc/user/project/web_ide/ @aqualls +/doc/user/project/wiki/ @aqualls /doc/user/project/working_with_projects.md @fneill /doc/user/public_access.md @fneill /doc/user/reserved_names.md @fneill -/doc/user/search/advanced_search.md @sselhorn -/doc/user/search/global_search/advanced_search_syntax.md @sselhorn -/doc/user/search/index.md @sselhorn +/doc/user/search/ @ashrafkhamis +/doc/user/search/global_search/ @ashrafkhamis /doc/user/shortcuts.md @aqualls /doc/user/snippets.md @aqualls /doc/user/ssh.md @eread /doc/user/tasks.md @msedlakjakubowski /doc/user/todos.md @msedlakjakubowski -/doc/user/usage_quotas.md @sselhorn -/doc/user/workspace/index.md @fneill +/doc/user/usage_quotas.md @fneill +/doc/user/workspace/ @fneill [Authentication and Authorization] /app/assets/javascripts/access_tokens/ @gitlab-org/manage/authentication-and-authorization/approvers @@ -853,6 +1058,14 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /app/models/token_with_iv.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/models/webauthn_registration.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/policies/personal_access_token_policy.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/group_access_token_entity.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/group_access_token_serializer.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/impersonation_access_token_entity.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/impersonation_access_token_serializer.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/personal_access_token_entity.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/personal_access_token_serializer.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/project_access_token_entity.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/serializers/project_access_token_serializer.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/services/access_token_validation_service.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/services/auth/ @gitlab-org/manage/authentication-and-authorization/approvers /app/services/authorized_project_update/ @gitlab-org/manage/authentication-and-authorization/approvers @@ -863,8 +1076,11 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /app/services/todos/destroy/unauthorized_features_service.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/services/users/authorized_build_service.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/services/users/authorized_create_service.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/services/users/email_verification/generate_token_service.rb @gitlab-org/manage/authentication-and-authorization/approvers +/app/services/users/email_verification/validate_token_service.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/services/users/refresh_authorized_projects_service.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/services/webauthn/ @gitlab-org/manage/authentication-and-authorization/approvers +/app/validators/json_schemas/build_metadata_id_tokens.json @gitlab-org/manage/authentication-and-authorization/approvers /app/validators/json_schemas/cluster_agent_authorization_configuration.json @gitlab-org/manage/authentication-and-authorization/approvers /app/views/admin/application_settings/_external_authorization_service_form.html.haml @gitlab-org/manage/authentication-and-authorization/approvers /app/views/admin/impersonation_tokens/ @gitlab-org/manage/authentication-and-authorization/approvers @@ -909,20 +1125,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /app/workers/authorized_project_update/ @gitlab-org/manage/authentication-and-authorization/approvers /app/workers/authorized_projects_worker.rb @gitlab-org/manage/authentication-and-authorization/approvers /app/workers/personal_access_tokens/ @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/access_token_pagination.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/application_settings_tokens_optional_encryption.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/enforce_auth_checks_on_uploads.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/forti_authenticator.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/forti_token_cloud.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/groups_tokens_optional_encryption.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/pbkdf2_password_encryption.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/pbkdf2_password_encryption_write.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/projects_tokens_optional_encryption.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/skip_group_share_unlink_auth_refresh.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/specialized_worker_for_group_lock_update_auth_recalculation.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/update_oauth_registration_flow.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/development/webauthn.yml @gitlab-org/manage/authentication-and-authorization/approvers -/config/feature_flags/ops/block_password_auth_for_saml_users.yml @gitlab-org/manage/authentication-and-authorization/approvers /config/initializers/01_secret_token.rb @gitlab-org/manage/authentication-and-authorization/approvers /config/initializers/devise_dynamic_password_length_validation.rb @gitlab-org/manage/authentication-and-authorization/approvers /config/initializers/devise_password_length.rb.example @gitlab-org/manage/authentication-and-authorization/approvers @@ -936,6 +1138,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /ee/app/assets/javascripts/access_tokens/ @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/assets/javascripts/audit_events/components/tokens/ @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/assets/javascripts/audit_events/token_utils.js @gitlab-org/manage/authentication-and-authorization/approvers +/ee/app/assets/javascripts/batch_comments/ @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/assets/javascripts/groups/settings/components/ @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/assets/javascripts/pages/admin/application_settings/general/components/ @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/assets/javascripts/pages/groups/omniauth_callbacks/ @gitlab-org/manage/authentication-and-authorization/approvers @@ -957,7 +1160,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /ee/app/controllers/groups/omniauth_callbacks_controller.rb @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/controllers/groups/scim_oauth_controller.rb @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/controllers/oauth/ @gitlab-org/manage/authentication-and-authorization/approvers -/ee/app/controllers/omniauth_kerberos_spnego_controller.rb @gitlab-org/manage/authentication-and-authorization/approvers +/ee/app/controllers/omniauth_kerberos_controller.rb @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/finders/auth/ @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/helpers/ee/access_tokens_helper.rb @gitlab-org/manage/authentication-and-authorization/approvers /ee/app/helpers/ee/auth_helper.rb @gitlab-org/manage/authentication-and-authorization/approvers @@ -1023,6 +1226,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /lib/gitlab/background_migration/update_users_where_two_factor_auth_required_from_group.rb @gitlab-org/manage/authentication-and-authorization/approvers /lib/gitlab/chat_name_token.rb @gitlab-org/manage/authentication-and-authorization/approvers /lib/gitlab/ci/pipeline/expression/token.rb @gitlab-org/manage/authentication-and-authorization/approvers +/lib/gitlab/cleanup/unused_personal_access_tokens.rb @gitlab-org/manage/authentication-and-authorization/approvers /lib/gitlab/external_authorization/ @gitlab-org/manage/authentication-and-authorization/approvers /lib/gitlab/external_authorization.rb @gitlab-org/manage/authentication-and-authorization/approvers /lib/gitlab/grape_logging/loggers/token_logger.rb @gitlab-org/manage/authentication-and-authorization/approvers @@ -1040,6 +1244,13 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /lib/tasks/gitlab/password.rake @gitlab-org/manage/authentication-and-authorization/approvers /lib/tasks/tokens.rake @gitlab-org/manage/authentication-and-authorization/approvers +[Manage::Workspace] +lib/api/entities/basic_project_details.rb @gitlab-org/manage/manage-workspace/backend-approvers +lib/api/entities/project_with_access.rb @gitlab-org/manage/manage-workspace/backend-approvers +lib/api/entities/project_identity.rb @gitlab-org/manage/manage-workspace/backend-approvers +lib/api/entities/project.rb @gitlab-org/manage/manage-workspace/backend-approvers +ee/lib/ee/api/entities/project.rb @gitlab-org/manage/manage-workspace/backend-approvers + [Compliance] /ee/app/services/audit_events/build_service.rb @gitlab-org/manage/compliance /ee/spec/services/audit_events/custom_audit_event_service_spec.rb @gitlab-org/manage/compliance @@ -1047,21 +1258,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /app/services/audit_event_service.rb @gitlab-org/manage/compliance /app/services/concerns/audit_event_save_type.rb @gitlab-org/manage/compliance /app/views/profiles/audit_log.html.haml @gitlab-org/manage/compliance -/data/deprecations/14-3-repository-push-audit-events.yml @gitlab-org/manage/compliance -/data/removals/15_0/removal_manage_repository_push_audit_event.yml @gitlab-org/manage/compliance -/db/docs/audit_events.yml @gitlab-org/manage/compliance -/db/docs/audit_events_external_audit_event_destinations.yml @gitlab-org/manage/compliance -/db/docs/audit_events_streaming_headers.yml @gitlab-org/manage/compliance -/db/migrate/20210819185500_create_external_audit_event_destinations_table.rb @gitlab-org/manage/compliance -/db/migrate/20220524141800_create_audit_events_streaming_headers.rb @gitlab-org/manage/compliance -/db/post_migrate/20210331105335_drop_non_partitioned_audit_events.rb @gitlab-org/manage/compliance -/db/post_migrate/20220119094503_populate_audit_event_streaming_verification_token.rb @gitlab-org/manage/compliance -/doc/administration/audit_event_streaming.md @gitlab-org/manage/compliance -/doc/administration/audit_events.md @gitlab-org/manage/compliance -/doc/administration/audit_reports.md @gitlab-org/manage/compliance -/doc/administration/auditor_users.md @gitlab-org/manage/compliance -/doc/api/audit_events.md @gitlab-org/manage/compliance -/doc/api/graphql/audit_report.md @gitlab-org/manage/compliance /ee/app/assets/javascripts/audit_events/components/audit_events_app.vue @gitlab-org/manage/compliance /ee/app/assets/javascripts/audit_events/components/audit_events_export_button.vue @gitlab-org/manage/compliance /ee/app/assets/javascripts/audit_events/components/audit_events_filter.vue @gitlab-org/manage/compliance @@ -1119,58 +1315,5 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /ee/lib/ee/api/entities/audit_event.rb @gitlab-org/manage/compliance /ee/lib/ee/audit/ @gitlab-org/manage/compliance /ee/lib/ee/gitlab/audit/ @gitlab-org/manage/compliance -/ee/spec/controllers/admin/audit_log_reports_controller_spec.rb @gitlab-org/manage/compliance -/ee/spec/controllers/admin/audit_logs_controller_spec.rb @gitlab-org/manage/compliance -/ee/spec/controllers/groups/audit_events_controller_spec.rb @gitlab-org/manage/compliance -/ee/spec/controllers/projects/audit_events_controller_spec.rb @gitlab-org/manage/compliance -/ee/spec/factories/audit_events/external_audit_event_destinations.rb @gitlab-org/manage/compliance -/ee/spec/features/admin/admin_audit_logs_spec.rb @gitlab-org/manage/compliance -/ee/spec/features/groups/audit_events_spec.rb @gitlab-org/manage/compliance -/ee/spec/features/projects/audit_events_spec.rb @gitlab-org/manage/compliance -/ee/spec/finders/audit_event_finder_spec.rb @gitlab-org/manage/compliance -/ee/spec/fixtures/api/schemas/public_api/v4/audit_event.json @gitlab-org/manage/compliance -/ee/spec/fixtures/api/schemas/public_api/v4/audit_events.json @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/__snapshots__/ @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/audit_events_app_spec.js @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/audit_events_export_button_spec.js @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/audit_events_filter_spec.js @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/audit_events_logs_spec.js @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/audit_events_stream_spec.js @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/audit_events_table_spec.js @gitlab-org/manage/compliance -/ee/spec/frontend/audit_events/components/tokens/shared/ @gitlab-org/manage/compliance -/ee/spec/graphql/types/audit_events/exterrnal_audit_event_destination_type_spec.rb @gitlab-org/manage/compliance -/ee/spec/helpers/audit_events_helper_spec.rb @gitlab-org/manage/compliance -/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb @gitlab-org/manage/compliance -/ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb @gitlab-org/manage/compliance -/ee/spec/lib/audit/group_push_rules_changes_auditor_spec.rb @gitlab-org/manage/compliance -/ee/spec/lib/ee/audit/ @gitlab-org/manage/compliance -/ee/spec/lib/gitlab/audit/auditor_spec.rb @gitlab-org/manage/compliance -/ee/spec/models/audit_events/external_audit_event_destination_spec.rb @gitlab-org/manage/compliance -/ee/spec/models/concerns/auditable_spec.rb @gitlab-org/manage/compliance -/ee/spec/models/ee/audit_event_spec.rb @gitlab-org/manage/compliance -/ee/spec/presenters/audit_event_presenter_spec.rb @gitlab-org/manage/compliance -/ee/spec/requests/admin/audit_events_spec.rb @gitlab-org/manage/compliance -/ee/spec/requests/api/audit_events_spec.rb @gitlab-org/manage/compliance -/ee/spec/requests/api/graphql/group/external_audit_event_destinations_spec.rb @gitlab-org/manage/compliance -/ee/spec/requests/groups/audit_events_spec.rb @gitlab-org/manage/compliance -/ee/spec/requests/projects/audit_events_spec.rb @gitlab-org/manage/compliance -/ee/spec/serializers/audit_event_entity_spec.rb @gitlab-org/manage/compliance -/ee/spec/serializers/audit_event_serializer_spec.rb @gitlab-org/manage/compliance -/ee/spec/services/audit_event_service_spec.rb @gitlab-org/manage/compliance -/ee/spec/support/shared_contexts/audit_event_not_licensed_shared_context.rb @gitlab-org/manage/compliance -/ee/spec/support/shared_contexts/audit_event_queue_shared_context.rb @gitlab-org/manage/compliance -/ee/spec/support/shared_examples/audit/ @gitlab-org/manage/compliance -/ee/spec/support/shared_examples/features/audit_events_filter_shared_examples.rb @gitlab-org/manage/compliance -/ee/spec/support/shared_examples/services/audit_event_logging_shared_examples.rb @gitlab-org/manage/compliance -/ee/spec/workers/audit_events/audit_event_streaming_worker_spec.rb @gitlab-org/manage/compliance /lib/gitlab/audit/auditor.rb @gitlab-org/manage/compliance /lib/gitlab/audit_json_logger.rb @gitlab-org/manage/compliance -/spec/factories/audit_events.rb @gitlab-org/manage/compliance -/spec/lib/gitlab/audit/auditor_spec.rb @gitlab-org/manage/compliance -/spec/migrations/populate_audit_event_streaming_verification_token_spec.rb @gitlab-org/manage/compliance -/spec/models/audit_event_spec.rb @gitlab-org/manage/compliance -/spec/services/audit_event_service_spec.rb @gitlab-org/manage/compliance -/spec/services/concerns/audit_event_save_type_spec.rb @gitlab-org/manage/compliance -/spec/support/shared_examples/sends_git_audit_streaming_event_shared_examples.rb @gitlab-org/manage/compliance -/spec/views/profiles/audit_log.html.haml_spec.rb @gitlab-org/manage/compliance -/vendor/project_templates/hipaa_audit_protocol.tar.gz @gitlab-org/manage/compliance diff --git a/.gitlab/agents/review-apps/config.yaml b/.gitlab/agents/review-apps/config.yaml new file mode 100644 index 0000000000..945b3a18d3 --- /dev/null +++ b/.gitlab/agents/review-apps/config.yaml @@ -0,0 +1 @@ +# This empty file is used for agent-based integration with Kubernetes diff --git a/.gitlab/ci/_skip.yml b/.gitlab/ci/_skip.yml new file mode 100644 index 0000000000..27a3ff5b83 --- /dev/null +++ b/.gitlab/ci/_skip.yml @@ -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 diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml index 3b360d66b7..1b041c9af3 100644 --- a/.gitlab/ci/build-images.gitlab-ci.yml +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 3af156e9bd..7e15717118 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -44,7 +44,7 @@ docs-lint markdown: - .default-retry - .docs:rules:docs-lint # When updating the image version here, update it in /scripts/lint-doc.sh too. - image: ${REGISTRY_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: diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 1d0218f4bd..3bd65b565e 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -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: diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 9c92b11d4f..7bdca62b68 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -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" diff --git a/.gitlab/ci/notify.gitlab-ci.yml b/.gitlab/ci/notify.gitlab-ci.yml index a8c156c7db..95318d5ce0 100644 --- a/.gitlab/ci/notify.gitlab-ci.yml +++ b/.gitlab/ci/notify.gitlab-ci.yml @@ -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}" # mentions the `@release-managers` group - scripts/slack ${NOTIFY_CHANNEL} " ☠️ 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" diff --git a/.gitlab/ci/package-and-test/main.gitlab-ci.yml b/.gitlab/ci/package-and-test/main.gitlab-ci.yml new file mode 100644 index 0000000000..d96da7744a --- /dev/null +++ b/.gitlab/ci/package-and-test/main.gitlab-ci.yml @@ -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] diff --git a/.gitlab/ci/package-and-test/rules.gitlab-ci.yml b/.gitlab/ci/package-and-test/rules.gitlab-ci.yml new file mode 100644 index 0000000000..d866dec1cd --- /dev/null +++ b/.gitlab/ci/package-and-test/rules.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/package-and-test/variables.gitlab-ci.yml b/.gitlab/ci/package-and-test/variables.gitlab-ci.yml new file mode 100644 index 0000000000..324092c80f --- /dev/null +++ b/.gitlab/ci/package-and-test/variables.gitlab-ci.yml @@ -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: "" diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index a71aac4225..c5a182b055 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 50c86313d2..0f524f0318 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -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: diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml index 37ccecc056..e28ffc8281 100644 --- a/.gitlab/ci/review-apps/main.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml @@ -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=$( 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=$( environment_url.txt + - *base-before_script + script: + - date + - create_sample_projects + .review-stop-base: extends: .review-workflow-base environment: diff --git a/.gitlab/ci/review-apps/qa.gitlab-ci.yml b/.gitlab/ci/review-apps/qa.gitlab-ci.yml index 631fe7fef3..21e6a8e42f 100644 --- a/.gitlab/ci/review-apps/qa.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/qa.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/review-apps/rules.gitlab-ci.yml b/.gitlab/ci/review-apps/rules.gitlab-ci.yml new file mode 100644 index 0000000000..56d3731bb5 --- /dev/null +++ b/.gitlab/ci/review-apps/rules.gitlab-ci.yml @@ -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/ diff --git a/.gitlab/ci/review-apps/skip-qa.gitlab-ci.yml b/.gitlab/ci/review-apps/skip-qa.gitlab-ci.yml deleted file mode 100644 index 1305673a4d..0000000000 --- a/.gitlab/ci/review-apps/skip-qa.gitlab-ci.yml +++ /dev/null @@ -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" diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 4f51409d6a..46e6282939 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -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: diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index fcb853a7bd..9dc2f5eff2 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -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: diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index 17113b1245..4f3111de2b 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/static-analysis.gitlab-ci.yml b/.gitlab/ci/static-analysis.gitlab-ci.yml index b4efd9e49b..e845e7eb88 100644 --- a/.gitlab/ci/static-analysis.gitlab-ci.yml +++ b/.gitlab/ci/static-analysis.gitlab-ci.yml @@ -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. diff --git a/.gitlab/ci/vendored-gems.gitlab-ci.yml b/.gitlab/ci/vendored-gems.gitlab-ci.yml index 4408a6e462..577bd37ca9 100644 --- a/.gitlab/ci/vendored-gems.gitlab-ci.yml +++ b/.gitlab/ci/vendored-gems.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml index ade2f65441..efd37b2247 100644 --- a/.gitlab/ci/workhorse.gitlab-ci.yml +++ b/.gitlab/ci/workhorse.gitlab-ci.yml @@ -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 diff --git a/.gitlab/issue_templates/Audit Event Proposal.md b/.gitlab/issue_templates/Audit Event Proposal.md index af32845bd9..09b0a6761b 100644 --- a/.gitlab/issue_templates/Audit Event Proposal.md +++ b/.gitlab/issue_templates/Audit Event Proposal.md @@ -1,4 +1,5 @@ + ## Audit need @@ -8,6 +9,11 @@ +### Streaming-only event or normal event? + + + /label ~"Category:Audit Events" /label ~"type::feature" /label ~"group::compliance" diff --git a/.gitlab/issue_templates/Deprecations.md b/.gitlab/issue_templates/Deprecations.md index 3dfed1a1fc..76c66a3a89 100644 --- a/.gitlab/issue_templates/Deprecations.md +++ b/.gitlab/issue_templates/Deprecations.md @@ -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: diff --git a/.gitlab/issue_templates/Doc_cleanup.md b/.gitlab/issue_templates/Doc_cleanup.md index 58a51e1580..79cf2662b0 100644 --- a/.gitlab/issue_templates/Doc_cleanup.md +++ b/.gitlab/issue_templates/Doc_cleanup.md @@ -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 diff --git a/.gitlab/issue_templates/Service Ping reporting and monitoring.md b/.gitlab/issue_templates/Service Ping reporting and monitoring.md index 9a30f71e42..baa384a8aa 100644 --- a/.gitlab/issue_templates/Service Ping reporting and monitoring.md +++ b/.gitlab/issue_templates/Service Ping reporting and monitoring.md @@ -27,7 +27,7 @@ Broken metrics issues are marked with the ~"broken metric" label. 1. Note which bastion host machine was assigned. For example: `@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 Control+a followed by Control+d 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 diff --git a/.gitlab/merge_request_templates/Deprecations.md b/.gitlab/merge_request_templates/Deprecations.md index fc803152ef..dcd5d79e0d 100644 --- a/.gitlab/merge_request_templates/Deprecations.md +++ b/.gitlab/merge_request_templates/Deprecations.md @@ -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 diff --git a/.gitlab/merge_request_templates/Quarantine End to End Test.md b/.gitlab/merge_request_templates/Quarantine End to End Test.md index a8d2378eee..c088fde857 100644 --- a/.gitlab/merge_request_templates/Quarantine End to End Test.md +++ b/.gitlab/merge_request_templates/Quarantine End to End Test.md @@ -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. diff --git a/.gitlab/merge_request_templates/Removals.md b/.gitlab/merge_request_templates/Removals.md index 0b7f1efe00..4801af2a12 100644 --- a/.gitlab/merge_request_templates/Removals.md +++ b/.gitlab/merge_request_templates/Removals.md @@ -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 diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md index f43bddaa46..14130ca42c 100644 --- a/.gitlab/merge_request_templates/Security Release.md +++ b/.gitlab/merge_request_templates/Security Release.md @@ -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 diff --git a/.gitlab/secret-detection-ruleset.toml b/.gitlab/secret-detection-ruleset.toml new file mode 100644 index 0000000000..5fcde57cad --- /dev/null +++ b/.gitlab/secret-detection-ruleset.toml @@ -0,0 +1,6 @@ +[secrets] + [[secrets.ruleset]] + disable = true + [secrets.ruleset.identifier] + type = "gitleaks_rule_id" + value = "Password in URL" diff --git a/.markdownlint.yml b/.markdownlint.yml index a5f7489081..2ad24e5f75 100644 --- a/.markdownlint.yml +++ b/.markdownlint.yml @@ -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", diff --git a/.rubocop.yml b/.rubocop.yml index 8ddd5087bb..7fe3fc35b6 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -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 diff --git a/.rubocop_todo/cop/user_admin.yml b/.rubocop_todo/cop/user_admin.yml index c9eed57e74..653865e3d4 100644 --- a/.rubocop_todo/cop/user_admin.yml +++ b/.rubocop_todo/cop/user_admin.yml @@ -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 diff --git a/.rubocop_todo/database/multiple_databases.yml b/.rubocop_todo/database/multiple_databases.yml index 07d8ce12fa..86db4e0c91 100644 --- a/.rubocop_todo/database/multiple_databases.yml +++ b/.rubocop_todo/database/multiple_databases.yml @@ -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' diff --git a/.rubocop_todo/gitlab/feature_available_usage.yml b/.rubocop_todo/gitlab/feature_available_usage.yml index 92aad8b990..0daacdfe2b 100644 --- a/.rubocop_todo/gitlab/feature_available_usage.yml +++ b/.rubocop_todo/gitlab/feature_available_usage.yml @@ -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 diff --git a/.rubocop_todo/gitlab/namespaced_class.yml b/.rubocop_todo/gitlab/namespaced_class.yml index b79402ce5b..230ef95915 100644 --- a/.rubocop_todo/gitlab/namespaced_class.yml +++ b/.rubocop_todo/gitlab/namespaced_class.yml @@ -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' diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml index 1977bedd14..bd4cd38615 100644 --- a/.rubocop_todo/layout/argument_alignment.yml +++ b/.rubocop_todo/layout/argument_alignment.yml @@ -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' diff --git a/.rubocop_todo/layout/first_array_element_indentation.yml b/.rubocop_todo/layout/first_array_element_indentation.yml index 84e367e051..5207d49304 100644 --- a/.rubocop_todo/layout/first_array_element_indentation.yml +++ b/.rubocop_todo/layout/first_array_element_indentation.yml @@ -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' diff --git a/.rubocop_todo/layout/hash_alignment.yml b/.rubocop_todo/layout/hash_alignment.yml index 4a98bcea70..62d877624a 100644 --- a/.rubocop_todo/layout/hash_alignment.yml +++ b/.rubocop_todo/layout/hash_alignment.yml @@ -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' diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 80c0f98655..01c83d7ac5 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -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' diff --git a/.rubocop_todo/layout/space_in_lambda_literal.yml b/.rubocop_todo/layout/space_in_lambda_literal.yml index c88fdf5a3b..9359939514 100644 --- a/.rubocop_todo/layout/space_in_lambda_literal.yml +++ b/.rubocop_todo/layout/space_in_lambda_literal.yml @@ -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' diff --git a/.rubocop_todo/layout/space_inside_block_braces.yml b/.rubocop_todo/layout/space_inside_block_braces.yml deleted file mode 100644 index 4fdc308eaa..0000000000 --- a/.rubocop_todo/layout/space_inside_block_braces.yml +++ /dev/null @@ -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' diff --git a/.rubocop_todo/migration/background_migration_base_class.yml b/.rubocop_todo/migration/background_migration_base_class.yml index 495b4a51e5..9e42e85cce 100644 --- a/.rubocop_todo/migration/background_migration_base_class.yml +++ b/.rubocop_todo/migration/background_migration_base_class.yml @@ -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' diff --git a/.rubocop_todo/rails/application_controller.yml b/.rubocop_todo/rails/application_controller.yml deleted file mode 100644 index d53fd3411d..0000000000 --- a/.rubocop_todo/rails/application_controller.yml +++ /dev/null @@ -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' diff --git a/.rubocop_todo/rails/helper_instance_variable.yml b/.rubocop_todo/rails/helper_instance_variable.yml index 006e66ed0b..f43ca39f47 100644 --- a/.rubocop_todo/rails/helper_instance_variable.yml +++ b/.rubocop_todo/rails/helper_instance_variable.yml @@ -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' diff --git a/.rubocop_todo/rails/index_with.yml b/.rubocop_todo/rails/index_with.yml index 09339d3fd5..d8ccbd97f7 100644 --- a/.rubocop_todo/rails/index_with.yml +++ b/.rubocop_todo/rails/index_with.yml @@ -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' diff --git a/.rubocop_todo/rails/squished_sql_heredocs.yml b/.rubocop_todo/rails/squished_sql_heredocs.yml index 3696f66189..9dcb989f57 100644 --- a/.rubocop_todo/rails/squished_sql_heredocs.yml +++ b/.rubocop_todo/rails/squished_sql_heredocs.yml @@ -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' diff --git a/.rubocop_todo/rails/where_exists.yml b/.rubocop_todo/rails/where_exists.yml index 00ff82d137..7772254972 100644 --- a/.rubocop_todo/rails/where_exists.yml +++ b/.rubocop_todo/rails/where_exists.yml @@ -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' diff --git a/.rubocop_todo/rspec/any_instance_of.yml b/.rubocop_todo/rspec/any_instance_of.yml index 2cc2478e53..e7855e84b2 100644 --- a/.rubocop_todo/rspec/any_instance_of.yml +++ b/.rubocop_todo/rspec/any_instance_of.yml @@ -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 diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index 163533621a..97480a0e0b 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -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' diff --git a/.rubocop_todo/rspec/described_class.yml b/.rubocop_todo/rspec/described_class.yml new file mode 100644 index 0000000000..8304704985 --- /dev/null +++ b/.rubocop_todo/rspec/described_class.yml @@ -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' diff --git a/.rubocop_todo/rspec/empty_line_after_example_group.yml b/.rubocop_todo/rspec/empty_line_after_example_group.yml new file mode 100644 index 0000000000..80d60ee181 --- /dev/null +++ b/.rubocop_todo/rspec/empty_line_after_example_group.yml @@ -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' diff --git a/.rubocop_todo/rspec/expect_change.yml b/.rubocop_todo/rspec/expect_change.yml index 0306662688..f896251587 100644 --- a/.rubocop_todo/rspec/expect_change.yml +++ b/.rubocop_todo/rspec/expect_change.yml @@ -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' diff --git a/.rubocop_todo/rspec/expect_in_hook.yml b/.rubocop_todo/rspec/expect_in_hook.yml index d138ea806f..1551f2dc63 100644 --- a/.rubocop_todo/rspec/expect_in_hook.yml +++ b/.rubocop_todo/rspec/expect_in_hook.yml @@ -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' diff --git a/.rubocop_todo/rspec/missing_example_group_argument.yml b/.rubocop_todo/rspec/missing_example_group_argument.yml new file mode 100644 index 0000000000..1506c9536a --- /dev/null +++ b/.rubocop_todo/rspec/missing_example_group_argument.yml @@ -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' diff --git a/.rubocop_todo/rspec/predicate_matcher.yml b/.rubocop_todo/rspec/predicate_matcher.yml index 7b31ca3622..f3cfe93191 100644 --- a/.rubocop_todo/rspec/predicate_matcher.yml +++ b/.rubocop_todo/rspec/predicate_matcher.yml @@ -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' diff --git a/.rubocop_todo/rspec/shared_examples.yml b/.rubocop_todo/rspec/shared_examples.yml new file mode 100644 index 0000000000..612692bdb5 --- /dev/null +++ b/.rubocop_todo/rspec/shared_examples.yml @@ -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' diff --git a/.rubocop_todo/rspec/verified_doubles.yml b/.rubocop_todo/rspec/verified_doubles.yml index 70b54d5bc7..a225dbf21a 100644 --- a/.rubocop_todo/rspec/verified_doubles.yml +++ b/.rubocop_todo/rspec/verified_doubles.yml @@ -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 diff --git a/.rubocop_todo/style/bare_percent_literals.yml b/.rubocop_todo/style/bare_percent_literals.yml index 104ead817d..1a155e3cca 100644 --- a/.rubocop_todo/style/bare_percent_literals.yml +++ b/.rubocop_todo/style/bare_percent_literals.yml @@ -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' diff --git a/.rubocop_todo/style/class_and_module_children.yml b/.rubocop_todo/style/class_and_module_children.yml index e0747f232a..2674902c7e 100644 --- a/.rubocop_todo/style/class_and_module_children.yml +++ b/.rubocop_todo/style/class_and_module_children.yml @@ -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' diff --git a/.rubocop_todo/style/empty_else.yml b/.rubocop_todo/style/empty_else.yml index f211d022dc..07e42692f6 100644 --- a/.rubocop_todo/style/empty_else.yml +++ b/.rubocop_todo/style/empty_else.yml @@ -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' diff --git a/.rubocop_todo/style/float_division.yml b/.rubocop_todo/style/float_division.yml new file mode 100644 index 0000000000..7fd0cda469 --- /dev/null +++ b/.rubocop_todo/style/float_division.yml @@ -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' diff --git a/.rubocop_todo/style/format_string.yml b/.rubocop_todo/style/format_string.yml index bb95d8f7fe..66c368a7a5 100644 --- a/.rubocop_todo/style/format_string.yml +++ b/.rubocop_todo/style/format_string.yml @@ -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' diff --git a/.rubocop_todo/style/hash_as_last_array_item.yml b/.rubocop_todo/style/hash_as_last_array_item.yml index 384d2dc5fc..aa22e9ed82 100644 --- a/.rubocop_todo/style/hash_as_last_array_item.yml +++ b/.rubocop_todo/style/hash_as_last_array_item.yml @@ -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' diff --git a/.rubocop_todo/style/if_unless_modifier.yml b/.rubocop_todo/style/if_unless_modifier.yml index a58f71aee8..cc21860d46 100644 --- a/.rubocop_todo/style/if_unless_modifier.yml +++ b/.rubocop_todo/style/if_unless_modifier.yml @@ -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' diff --git a/.rubocop_todo/style/lambda.yml b/.rubocop_todo/style/lambda.yml index 5b898417d9..f733af601e 100644 --- a/.rubocop_todo/style/lambda.yml +++ b/.rubocop_todo/style/lambda.yml @@ -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' diff --git a/.rubocop_todo/style/next.yml b/.rubocop_todo/style/next.yml index 4106cba955..9570bd7b03 100644 --- a/.rubocop_todo/style/next.yml +++ b/.rubocop_todo/style/next.yml @@ -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' diff --git a/.rubocop_todo/style/percent_literal_delimiters.yml b/.rubocop_todo/style/percent_literal_delimiters.yml index ae019079a8..9989ae3f8b 100644 --- a/.rubocop_todo/style/percent_literal_delimiters.yml +++ b/.rubocop_todo/style/percent_literal_delimiters.yml @@ -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' diff --git a/.rubocop_todo/style/redundant_self.yml b/.rubocop_todo/style/redundant_self.yml index 65f2ea327d..8c688dc89c 100644 --- a/.rubocop_todo/style/redundant_self.yml +++ b/.rubocop_todo/style/redundant_self.yml @@ -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' diff --git a/.rubocop_todo/style/string_concatenation.yml b/.rubocop_todo/style/string_concatenation.yml index 32ea84fbfc..315ce3701a 100644 --- a/.rubocop_todo/style/string_concatenation.yml +++ b/.rubocop_todo/style/string_concatenation.yml @@ -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' diff --git a/.rubocop_todo/style/symbol_proc.yml b/.rubocop_todo/style/symbol_proc.yml index 75aab7c611..bfb3867b12 100644 --- a/.rubocop_todo/style/symbol_proc.yml +++ b/.rubocop_todo/style/symbol_proc.yml @@ -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' diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d59a3e7e9..d5faca300b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 3cad8b789c..baec1bc73e 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -15.3.4 \ No newline at end of file +15.4.2 \ No newline at end of file diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index cb2b00e4f7..b502146930 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -3.0.1 +3.0.2 diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index 5ff58dbcd6..c915b5db73 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -15.3.0 +15.4.0 diff --git a/Gemfile b/Gemfile index c8eca55525..6631a88937 100644 --- a/Gemfile +++ b/Gemfile @@ -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' diff --git a/Gemfile.checksum b/Gemfile.checksum new file mode 100644 index 0000000000..542a8d25fb --- /dev/null +++ b/Gemfile.checksum @@ -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"} +] diff --git a/Gemfile.lock b/Gemfile.lock index 218a66d8f7..9074b48c56 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/VERSION b/VERSION index 3cad8b789c..baec1bc73e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -15.3.4 \ No newline at end of file +15.4.2 \ No newline at end of file diff --git a/app/assets/javascripts/access_tokens/components/access_token_table_app.vue b/app/assets/javascripts/access_tokens/components/access_token_table_app.vue index 59f0e0dd17..461b2dad47 100644 --- a/app/assets/javascripts/access_tokens/components/access_token_table_app.vue +++ b/app/assets/javascripts/access_tokens/components/access_token_table_app.vue @@ -140,6 +140,7 @@ export default { diff --git a/app/assets/javascripts/access_tokens/components/new_access_token_app.vue b/app/assets/javascripts/access_tokens/components/new_access_token_app.vue index e111ae91e5..6b52bd8465 100644 --- a/app/assets/javascripts/access_tokens/components/new_access_token_app.vue +++ b/app/assets/javascripts/access_tokens/components/new_access_token_app.vue @@ -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; + }); }, }, }; diff --git a/app/assets/javascripts/access_tokens/index.js b/app/assets/javascripts/access_tokens/index.js index 9801aa08e2..f0c1b41515 100644 --- a/app/assets/javascripts/access_tokens/index.js +++ b/app/assets/javascripts/access_tokens/index.js @@ -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, }, }); }, diff --git a/app/assets/javascripts/admin/application_settings/runner_token_expiration/components/expiration_interval_description.vue b/app/assets/javascripts/admin/application_settings/runner_token_expiration/components/expiration_interval_description.vue new file mode 100644 index 0000000000..2f74b44625 --- /dev/null +++ b/app/assets/javascripts/admin/application_settings/runner_token_expiration/components/expiration_interval_description.vue @@ -0,0 +1,52 @@ + + diff --git a/app/assets/javascripts/admin/application_settings/runner_token_expiration/components/expiration_intervals.vue b/app/assets/javascripts/admin/application_settings/runner_token_expiration/components/expiration_intervals.vue new file mode 100644 index 0000000000..371a26d266 --- /dev/null +++ b/app/assets/javascripts/admin/application_settings/runner_token_expiration/components/expiration_intervals.vue @@ -0,0 +1,123 @@ + + diff --git a/app/assets/javascripts/admin/application_settings/runner_token_expiration/index.js b/app/assets/javascripts/admin/application_settings/runner_token_expiration/index.js new file mode 100644 index 0000000000..79d7ff0451 --- /dev/null +++ b/app/assets/javascripts/admin/application_settings/runner_token_expiration/index.js @@ -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; diff --git a/app/assets/javascripts/admin/topics/components/merge_topics.vue b/app/assets/javascripts/admin/topics/components/merge_topics.vue new file mode 100644 index 0000000000..921b762bbe --- /dev/null +++ b/app/assets/javascripts/admin/topics/components/merge_topics.vue @@ -0,0 +1,141 @@ + + diff --git a/app/assets/javascripts/admin/topics/components/topic_select.vue b/app/assets/javascripts/admin/topics/components/topic_select.vue new file mode 100644 index 0000000000..8bf5be1afd --- /dev/null +++ b/app/assets/javascripts/admin/topics/components/topic_select.vue @@ -0,0 +1,106 @@ + + + diff --git a/app/assets/javascripts/admin/topics/index.js b/app/assets/javascripts/admin/topics/index.js index 09e9b20f22..d81690e8f4 100644 --- a/app/assets/javascripts/admin/topics/index.js +++ b/app/assets/javascripts/admin/topics/index.js @@ -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); + }, + }); +}; diff --git a/app/assets/javascripts/alerts_settings/components/alerts_form.vue b/app/assets/javascripts/alerts_settings/components/alerts_form.vue index 696e7f359d..388d925196 100644 --- a/app/assets/javascripts/alerts_settings/components/alerts_form.vue +++ b/app/assets/javascripts/alerts_settings/components/alerts_form.vue @@ -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)" > diff --git a/app/assets/javascripts/analytics/shared/components/daterange.vue b/app/assets/javascripts/analytics/shared/components/daterange.vue index 7df66d1b2b..92ccac5905 100644 --- a/app/assets/javascripts/analytics/shared/components/daterange.vue +++ b/app/assets/javascripts/analytics/shared/components/daterange.vue @@ -1,13 +1,10 @@ + + diff --git a/app/assets/javascripts/boards/components/board_column.vue b/app/assets/javascripts/boards/components/board_column.vue index bcf5b12b20..8fc76c02e1 100644 --- a/app/assets/javascripts/boards/components/board_column.vue +++ b/app/assets/javascripts/boards/components/board_column.vue @@ -76,7 +76,7 @@ export default {
diff --git a/app/assets/javascripts/boards/components/board_content.vue b/app/assets/javascripts/boards/components/board_content.vue index 8868b9b2f3..d99afa8455 100644 --- a/app/assets/javascripts/boards/components/board_content.vue +++ b/app/assets/javascripts/boards/components/board_content.vue @@ -75,7 +75,7 @@ export default { v-if="!isSwimlanesOn" ref="list" v-bind="draggableOptions" - class="boards-list gl-w-full gl-py-5 gl-pr-3 gl-white-space-nowrap" + class="boards-list gl-w-full gl-py-5 gl-pr-3 gl-white-space-nowrap gl-overflow-x-scroll" @end="moveList" >
-
  • +
  • @@ -324,7 +326,7 @@ export default { @{{ listAssignee }} @@ -345,7 +347,7 @@ export default { v-if="isSwimlanesHeader && list.collapsed" ref="collapsedInfo" aria-hidden="true" - class="board-header-collapsed-info-icon gl-cursor-pointer gl-text-gray-500" + class="board-header-collapsed-info-icon gl-cursor-pointer gl-text-secondary gl-hover-text-gray-900" > @@ -369,14 +371,14 @@ export default {
    - + diff --git a/app/assets/javascripts/boards/components/board_new_item.vue b/app/assets/javascripts/boards/components/board_new_item.vue index 600917683c..084b7519d1 100644 --- a/app/assets/javascripts/boards/components/board_new_item.vue +++ b/app/assets/javascripts/boards/components/board_new_item.vue @@ -69,7 +69,7 @@ export default {