summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-12-22 18:07:08 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-12-22 18:07:08 +0000
commitb486760a6332905cd2ac94b3fade5cbc6a55d21e (patch)
tree0f1206f20aa3f1d49ddfee1418538c1777ef0957
parentaaf158bcb57386a043d8cb7dc491a2f306a4ac13 (diff)
downloadgitlab-ce-b486760a6332905cd2ac94b3fade5cbc6a55d21e.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab/merge_request_templates/New Version of gitlab-styles.md4
-rw-r--r--.rubocop_todo/layout/array_alignment.yml365
-rw-r--r--.rubocop_todo/layout/first_argument_indentation.yml26
-rw-r--r--.rubocop_todo/layout/first_array_element_indentation.yml90
-rw-r--r--.rubocop_todo/layout/first_hash_element_indentation.yml479
-rw-r--r--.rubocop_todo/layout/hash_alignment.yml2
-rw-r--r--.rubocop_todo/layout/line_continuation_leading_space.yml75
-rw-r--r--.rubocop_todo/layout/line_continuation_spacing.yml224
-rw-r--r--.rubocop_todo/layout/line_end_string_concatenation_indentation.yml358
-rw-r--r--.rubocop_todo/layout/parameter_alignment.yml20
-rw-r--r--.rubocop_todo/lint/ambiguous_regexp_literal.yml95
-rw-r--r--.rubocop_todo/performance/concurrent_monotonic_time.yml6
-rw-r--r--.rubocop_todo/performance/flat_map.yml38
-rw-r--r--.rubocop_todo/performance/map_compact.yml148
-rw-r--r--.rubocop_todo/performance/redundant_equality_comparison_block.yml23
-rw-r--r--.rubocop_todo/performance/redundant_split_regexp_argument.yml8
-rw-r--r--.rubocop_todo/performance/string_identifier_argument.yml39
-rw-r--r--GITLAB_METRICS_EXPORTER_VERSION2
-rw-r--r--Gemfile4
-rw-r--r--Gemfile.checksum8
-rw-r--r--Gemfile.lock10
-rw-r--r--app/assets/javascripts/issues/show/components/description.vue22
-rw-r--r--app/assets/javascripts/lib/mermaid.js18
-rw-r--r--app/assets/javascripts/notes/components/noteable_note.vue12
-rw-r--r--app/assets/javascripts/notes/stores/actions.js8
-rw-r--r--app/assets/javascripts/vue_shared/components/notes/system_note.vue17
-rw-r--r--app/assets/javascripts/work_items/components/notes/system_note.vue17
-rw-r--r--app/controllers/admin/dashboard_controller.rb1
-rw-r--r--app/helpers/admin/components_helper.rb15
-rw-r--r--app/models/commit.rb10
-rw-r--r--app/services/git/branch_hooks_service.rb9
-rw-r--r--app/services/issues/base_service.rb2
-rw-r--r--app/services/issues/create_service.rb13
-rw-r--r--app/views/admin/dashboard/index.html.haml9
-rw-r--r--app/views/ci/group_variables/_index.html.haml2
-rw-r--r--app/views/layouts/nav/sidebar/_admin.html.haml25
-rw-r--r--app/views/projects/commit/_signature_badge.html.haml2
-rw-r--r--config/feature_flags/development/github_import_gists.yml (renamed from config/feature_flags/development/ssh_commit_signatures.yml)12
-rw-r--r--config/initializers/doorkeeper.rb14
-rw-r--r--config/webpack.vendor.config.js3
-rw-r--r--data/whats_new/202212200001_15_07.yml142
-rw-r--r--doc/administration/geo/replication/datatypes.md4
-rw-r--r--doc/api/import.md6
-rw-r--r--doc/api/metadata.md3
-rw-r--r--doc/development/rake_tasks.md4
-rw-r--r--doc/subscriptions/bronze_starter.md4
-rw-r--r--doc/user/application_security/sast/index.md1
-rw-r--r--doc/user/project/issues/managing_issues.md7
-rw-r--r--doc/user/project/members/index.md3
-rw-r--r--doc/user/project/merge_requests/getting_started.md4
-rw-r--r--doc/user/project/merge_requests/img/filter_approved_by_merge_requests_v14_6.pngbin8326 -> 0 bytes
-rw-r--r--doc/user/project/merge_requests/img/filter_approver_merge_requests_v14_6.pngbin7841 -> 0 bytes
-rw-r--r--doc/user/project/merge_requests/index.md56
-rw-r--r--doc/user/project/merge_requests/methods/index.md6
-rw-r--r--doc/user/project/quick_actions.md2
-rw-r--r--doc/user/project/repository/ssh_signed_commits/index.md8
-rw-r--r--lib/api/import_github.rb2
-rw-r--r--lib/gitlab/memory/reporter.rb30
-rw-r--r--lib/gitlab/quick_actions/issue_actions.rb17
-rw-r--r--lib/gitlab/redis/multi_store.rb36
-rw-r--r--lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder.rb81
-rw-r--r--lib/gitlab/seeders/ci/runner/runner_fleet_seeder.rb25
-rw-r--r--lib/tasks/gitlab/seed/runner_fleet.rake4
-rw-r--r--locale/gitlab.pot3
-rw-r--r--metrics_server/metrics_server.rb2
-rw-r--r--package.json5
-rw-r--r--spec/frontend/work_items/components/notes/system_note_spec.js1
-rw-r--r--spec/helpers/admin/components_helper_spec.rb30
-rw-r--r--spec/lib/gitlab/memory/reporter_spec.rb85
-rw-r--r--spec/lib/gitlab/redis/multi_store_spec.rb249
-rw-r--r--spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb1
-rw-r--r--spec/metrics_server/metrics_server_spec.rb2
-rw-r--r--spec/models/commit_spec.rb14
-rw-r--r--spec/models/oauth_access_token_spec.rb18
-rw-r--r--spec/requests/api/commits_spec.rb12
-rw-r--r--spec/requests/api/import_github_spec.rb74
-rw-r--r--spec/requests/rack_attack_global_spec.rb10
-rw-r--r--spec/support/shared_examples/quick_actions/issue/promote_to_incident_quick_action_shared_examples.rb28
-rw-r--r--spec/tasks/gitlab/seed/runner_fleet_rake_spec.rb1
-rw-r--r--spec/views/admin/dashboard/index.html.haml_spec.rb10
-rw-r--r--spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb9
-rw-r--r--vendor/gems/bundler-checksum/README.md2
-rwxr-xr-xvendor/gems/bundler-checksum/bin/bundler-checksum4
-rw-r--r--vendor/gems/bundler-checksum/bundler-checksum.gemspec4
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler-checksum.rb2
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler/checksum/version.rb8
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler_checksum.rb (renamed from vendor/gems/bundler-checksum/lib/bundler/checksum.rb)54
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler_checksum/command.rb (renamed from vendor/gems/bundler-checksum/lib/bundler/checksum/command.rb)2
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb (renamed from vendor/gems/bundler-checksum/lib/bundler/checksum/command/helper.rb)2
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler_checksum/command/init.rb (renamed from vendor/gems/bundler-checksum/lib/bundler/checksum/command/init.rb)6
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler_checksum/command/verify.rb (renamed from vendor/gems/bundler-checksum/lib/bundler/checksum/command/verify.rb)4
-rw-r--r--vendor/gems/bundler-checksum/lib/bundler_checksum/version.rb6
-rw-r--r--vendor/gems/bundler-checksum/test/project_with_checksum_lock/Gemfile2
-rw-r--r--yarn.lock180
94 files changed, 2518 insertions, 992 deletions
diff --git a/.gitlab/merge_request_templates/New Version of gitlab-styles.md b/.gitlab/merge_request_templates/New Version of gitlab-styles.md
index 22062616900..5e7f2319650 100644
--- a/.gitlab/merge_request_templates/New Version of gitlab-styles.md
+++ b/.gitlab/merge_request_templates/New Version of gitlab-styles.md
@@ -33,9 +33,7 @@ This MR can be reused to upgrade `gitlab-styles` in this project after a new ver
- [ ] (Optional) Regenerate TODOs for new/changed cop rules
- [ ] Make sure CI passes :green_heart:
- [ ] Let the MR being reviewed again and merged
- - [ ] Make sure CI passes :green_heart:
- - [ ] Let the MR being reviewed again and merged
- - [ ] (Optional) Refine this [MR template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/merge_request_templates/New%20Version%20of%20gitlab-styles.md).
+ - [ ] (Optional) Refine this [MR template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/merge_request_templates/New%20Version%20of%20gitlab-styles.md).
## MR acceptance checklist
diff --git a/.rubocop_todo/layout/array_alignment.yml b/.rubocop_todo/layout/array_alignment.yml
new file mode 100644
index 00000000000..deaaa1da8a9
--- /dev/null
+++ b/.rubocop_todo/layout/array_alignment.yml
@@ -0,0 +1,365 @@
+---
+# Cop supports --autocorrect.
+Layout/ArrayAlignment:
+ Details: grace period
+ Exclude:
+ - 'app/controllers/admin/application_settings_controller.rb'
+ - 'app/controllers/admin/broadcast_messages_controller.rb'
+ - 'app/controllers/admin/plan_limits_controller.rb'
+ - 'app/controllers/concerns/observability/content_security_policy.rb'
+ - 'app/controllers/profiles_controller.rb'
+ - 'app/controllers/projects/feature_flags_controller.rb'
+ - 'app/controllers/projects/labels_controller.rb'
+ - 'app/controllers/projects/protected_branches_controller.rb'
+ - 'app/controllers/projects/settings/ci_cd_controller.rb'
+ - 'app/controllers/projects_controller.rb'
+ - 'app/controllers/users_controller.rb'
+ - 'app/finders/user_groups_counter.rb'
+ - 'app/graphql/resolvers/concerns/issues/sort_arguments.rb'
+ - 'app/graphql/types/permission_types/merge_request.rb'
+ - 'app/helpers/merge_requests_helper.rb'
+ - 'app/helpers/namespaces_helper.rb'
+ - 'app/helpers/search_helper.rb'
+ - 'app/helpers/submodule_helper.rb'
+ - 'app/models/ci/bridge.rb'
+ - 'app/models/ci/build.rb'
+ - 'app/models/concerns/ci/partitionable/switch.rb'
+ - 'app/models/container_repository.rb'
+ - 'app/models/deploy_token.rb'
+ - 'app/models/dev_ops_report/metric.rb'
+ - 'app/models/group.rb'
+ - 'app/models/integration.rb'
+ - 'app/models/integrations/hangouts_chat.rb'
+ - 'app/models/integrations/microsoft_teams.rb'
+ - 'app/models/integrations/pumble.rb'
+ - 'app/models/integrations/unify_circuit.rb'
+ - 'app/models/integrations/webex_teams.rb'
+ - 'app/models/issue.rb'
+ - 'app/models/repository.rb'
+ - 'app/models/snippet_repository.rb'
+ - 'app/models/user.rb'
+ - 'app/models/wiki.rb'
+ - 'app/services/ci/create_pipeline_service.rb'
+ - 'app/services/commits/create_service.rb'
+ - 'app/services/labels/transfer_service.rb'
+ - 'app/services/namespaces/package_settings/update_service.rb'
+ - 'app/services/packages/rpm/parse_package_service.rb'
+ - 'app/services/projects/participants_service.rb'
+ - 'app/services/web_hook_service.rb'
+ - 'config/application.rb'
+ - 'config/initializers/0_marginalia.rb'
+ - 'config/initializers/direct_upload_support.rb'
+ - 'db/post_migrate/20220728134255_update_index_vulnerabilities_common_finder.rb'
+ - 'ee/app/controllers/admin/push_rules_controller.rb'
+ - 'ee/app/controllers/ee/admin/application_settings_controller.rb'
+ - 'ee/app/controllers/ee/projects/merge_requests_controller.rb'
+ - 'ee/app/controllers/groups/protected_branches_controller.rb'
+ - 'ee/app/controllers/groups/push_rules_controller.rb'
+ - 'ee/app/controllers/projects/push_rules_controller.rb'
+ - 'ee/app/finders/autocomplete/project_invited_groups_finder.rb'
+ - 'ee/app/finders/ee/issues_finder/params.rb'
+ - 'ee/app/finders/geo/project_registry_finder.rb'
+ - 'ee/app/graphql/ee/resolvers/project_pipelines_resolver.rb'
+ - 'ee/app/helpers/ee/routing/projects_helper.rb'
+ - 'ee/app/models/concerns/geo/verification_state.rb'
+ - 'ee/app/models/dast_site_profile.rb'
+ - 'ee/app/models/dora/base_metric.rb'
+ - 'ee/app/models/ee/application_setting.rb'
+ - 'ee/app/models/ee/epic.rb'
+ - 'ee/app/models/geo/event_log.rb'
+ - 'ee/app/models/gitlab_subscription_history.rb'
+ - 'ee/app/models/ip_restriction.rb'
+ - 'ee/app/models/license.rb'
+ - 'ee/app/models/protected_environment.rb'
+ - 'ee/app/models/security/finding.rb'
+ - 'ee/app/services/ee/users/authorized_build_service.rb'
+ - 'ee/app/services/jira/requests/issues/list_service.rb'
+ - 'ee/app/services/protected_environments/base_service.rb'
+ - 'ee/app/services/security/security_orchestration_policies/create_pipeline_service.rb'
+ - 'ee/app/services/vulnerabilities/create_service_base.rb'
+ - 'ee/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary.rb'
+ - 'ee/lib/gitlab/usage/metrics/instrumentations/license_metric.rb'
+ - 'ee/spec/controllers/admin/licenses/usage_exports_controller_spec.rb'
+ - 'ee/spec/factories/dependencies.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/namespaces/billed_users_finder_spec.rb'
+ - 'ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb'
+ - 'ee/spec/frontend/fixtures/search.rb'
+ - 'ee/spec/graphql/resolvers/analytics/contribution_analytics/contributions_resolver_spec.rb'
+ - 'ee/spec/graphql/types/dast_scanner_profile_type_spec.rb'
+ - 'ee/spec/graphql/types/dast_site_profile_type_spec.rb'
+ - 'ee/spec/graphql/types/permission_types/epic_spec.rb'
+ - 'ee/spec/graphql/types/permission_types/vulnerability_spec.rb'
+ - 'ee/spec/graphql/types/pipeline_security_report_finding_type_spec.rb'
+ - 'ee/spec/graphql/types/requirements_management/requirement_type_spec.rb'
+ - 'ee/spec/graphql/types/vulnerability_type_spec.rb'
+ - 'ee/spec/helpers/billing_plans_helper_spec.rb'
+ - 'ee/spec/helpers/boards_helper_spec.rb'
+ - 'ee/spec/helpers/ee/application_settings_helper_spec.rb'
+ - 'ee/spec/helpers/ee/environments_helper_spec.rb'
+ - 'ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/project_changes_auditor_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/update_vulnerability_occurrences_location_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
+ - 'ee/spec/lib/gitlab/auth/ldap/person_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/config/security_orchestration_policies/processor_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/reports/dependency_list/report_spec.rb'
+ - 'ee/spec/lib/gitlab/graphql/loaders/oncall_participant_loader_spec.rb'
+ - 'ee/spec/lib/gitlab/search/index_curator_spec.rb'
+ - 'ee/spec/lib/gitlab/visibility_level_spec.rb'
+ - 'ee/spec/lib/incident_management/oncall_shift_generator_spec.rb'
+ - 'ee/spec/models/analytics/cycle_analytics/group_value_stream_spec.rb'
+ - 'ee/spec/models/dora/base_metric_spec.rb'
+ - 'ee/spec/models/dora/daily_metrics_spec.rb'
+ - 'ee/spec/models/ee/group_spec.rb'
+ - 'ee/spec/models/ee/protected_ref_access_spec.rb'
+ - 'ee/spec/models/issue_spec.rb'
+ - 'ee/spec/models/project_spec.rb'
+ - 'ee/spec/models/repository_spec.rb'
+ - 'ee/spec/models/security/orchestration_policy_rule_schedule_spec.rb'
+ - 'ee/spec/models/security/scan_spec.rb'
+ - 'ee/spec/policies/group_policy_spec.rb'
+ - 'ee/spec/policies/project_policy_spec.rb'
+ - 'ee/spec/requests/api/dora/metrics_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_ancestors_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_children_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/releases/update_spec.rb'
+ - 'ee/spec/requests/api/ldap_group_links_spec.rb'
+ - 'ee/spec/requests/api/license_spec.rb'
+ - 'ee/spec/requests/api/members_spec.rb'
+ - 'ee/spec/requests/api/saml_group_links_spec.rb'
+ - 'ee/spec/serializers/dashboard_environment_entity_spec.rb'
+ - 'ee/spec/serializers/user_analytics_entity_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/ee/auto_merge_service_spec.rb'
+ - 'ee/spec/services/ee/boards/issues/list_service_spec.rb'
+ - 'ee/spec/services/epic_issues/create_service_spec.rb'
+ - 'ee/spec/services/epics/epic_links/create_service_spec.rb'
+ - 'ee/spec/services/groups/seat_usage_export_service_spec.rb'
+ - 'ee/spec/services/incident_management/issuable_resource_links/zoom_link_service_spec.rb'
+ - 'ee/spec/services/security/dependency_list_service_spec.rb'
+ - 'ee/spec/services/security/ingestion/tasks/update_vulnerability_uuids_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/create_pipeline_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/scan_pipeline_service_spec.rb'
+ - 'ee/spec/services/security/token_revocation_service_spec.rb'
+ - 'ee/spec/support/helpers/vulnerability_exports_helpers.rb'
+ - 'ee/spec/support/shared_examples/finders/epics/findable_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/policies/requirement_policy_shared_examples.rb'
+ - 'lib/api/api_guard.rb'
+ - 'lib/api/ci/runner.rb'
+ - 'lib/api/ci/runners.rb'
+ - 'lib/api/internal/base.rb'
+ - 'lib/api/statistics.rb'
+ - 'lib/gitlab/alert_management/payload/prometheus.rb'
+ - 'lib/gitlab/bitbucket_import/importer.rb'
+ - 'lib/gitlab/chat/command.rb'
+ - 'lib/gitlab/checks/single_change_access.rb'
+ - 'lib/gitlab/ci/config/entry/default.rb'
+ - 'lib/gitlab/ci/config/entry/job.rb'
+ - 'lib/gitlab/ci/config/entry/processable.rb'
+ - 'lib/gitlab/ci/config/entry/reports.rb'
+ - 'lib/gitlab/ci/config/entry/root.rb'
+ - 'lib/gitlab/ci/config/external/processor.rb'
+ - 'lib/gitlab/ci/status/bridge/factory.rb'
+ - 'lib/gitlab/ci/status/build/factory.rb'
+ - 'lib/gitlab/ci/status/stage/factory.rb'
+ - 'lib/gitlab/cleanup/project_upload_file_finder.rb'
+ - 'lib/gitlab/conflict/file_collection.rb'
+ - 'lib/gitlab/content_security_policy/config_loader.rb'
+ - 'lib/gitlab/database/background_migration/batched_job.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/email/receiver.rb'
+ - 'lib/gitlab/etag_caching/router/rails.rb'
+ - 'lib/gitlab/git/diff.rb'
+ - 'lib/gitlab/import_export/importer.rb'
+ - 'lib/gitlab/instrumentation/redis.rb'
+ - 'lib/gitlab/lograge/custom_options.rb'
+ - 'lib/gitlab/metrics/global_search_slis.rb'
+ - 'lib/gitlab/metrics/requests_rack_middleware.rb'
+ - 'lib/gitlab/metrics/samplers/threads_sampler.rb'
+ - 'lib/gitlab/object_hierarchy.rb'
+ - 'lib/gitlab/project_authorizations.rb'
+ - 'lib/gitlab/rack_attack/instrumented_cache_store.rb'
+ - 'lib/gitlab/reference_extractor.rb'
+ - 'lib/gitlab/sidekiq_middleware/size_limiter/validator.rb'
+ - 'lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb'
+ - 'lib/gitlab/visibility_level.rb'
+ - 'lib/kramdown/parser/atlassian_document_format.rb'
+ - 'lib/tasks/cache.rake'
+ - 'qa/qa/specs/features/browser_ui/3_create/pages/new_static_page_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_2_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/13_secure/enable_scanning_from_configuration_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/13_secure/license_compliance_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/1_manage/group/group_ldap_sync_spec.rb'
+ - 'qa/spec/specs/runner_spec.rb'
+ - 'rubocop/cop/gitlab/rspec/avoid_setup.rb'
+ - 'rubocop/cop/graphql/authorize_types.rb'
+ - 'spec/controllers/import/bulk_imports_controller_spec.rb'
+ - 'spec/controllers/projects/pipeline_schedules_controller_spec.rb'
+ - 'spec/factories/ci/builds.rb'
+ - 'spec/features/groups_spec.rb'
+ - 'spec/features/issuables/sorting_list_spec.rb'
+ - 'spec/features/oauth_login_spec.rb'
+ - 'spec/features/uploads/user_uploads_file_to_note_spec.rb'
+ - 'spec/finders/ci/pipelines_finder_spec.rb'
+ - 'spec/finders/ci/runners_finder_spec.rb'
+ - 'spec/finders/groups/accepting_project_transfers_finder_spec.rb'
+ - 'spec/finders/groups_finder_spec.rb'
+ - 'spec/finders/snippets_finder_spec.rb'
+ - 'spec/graphql/gitlab_schema_spec.rb'
+ - 'spec/graphql/mutations/commits/create_spec.rb'
+ - 'spec/graphql/resolvers/ci/all_jobs_resolver_spec.rb'
+ - 'spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_issues_resolver_spec.rb'
+ - 'spec/graphql/types/blob_viewer_type_spec.rb'
+ - 'spec/graphql/types/boards/board_issue_input_type_spec.rb'
+ - 'spec/graphql/types/commit_signatures/verification_status_enum_spec.rb'
+ - 'spec/graphql/types/container_repository_details_type_spec.rb'
+ - 'spec/graphql/types/container_repository_type_spec.rb'
+ - 'spec/graphql/types/issuable_sort_enum_spec.rb'
+ - 'spec/graphql/types/issue_type_spec.rb'
+ - 'spec/graphql/types/project_type_spec.rb'
+ - 'spec/graphql/types/snippet_type_spec.rb'
+ - 'spec/graphql/types/snippets/blob_type_spec.rb'
+ - 'spec/graphql/types/snippets/blob_viewer_type_spec.rb'
+ - 'spec/helpers/blame_helper_spec.rb'
+ - 'spec/helpers/ci/pipelines_helper_spec.rb'
+ - 'spec/helpers/labels_helper_spec.rb'
+ - 'spec/helpers/releases_helper_spec.rb'
+ - 'spec/lib/banzai/filter/color_filter_spec.rb'
+ - 'spec/lib/banzai/reference_parser/design_parser_spec.rb'
+ - 'spec/lib/container_registry/path_spec.rb'
+ - 'spec/lib/gitlab/auth/saml/user_spec.rb'
+ - 'spec/lib/gitlab/background_migration/delete_orphaned_operational_vulnerabilities_spec.rb'
+ - 'spec/lib/gitlab/background_migration/job_coordinator_spec.rb'
+ - 'spec/lib/gitlab/backtrace_cleaner_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/bridge_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/default_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/id_token_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/job_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/ports_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/root_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/services_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/file/remote_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/mapper/location_expander_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/mapper/matcher_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/mapper_spec.rb'
+ - 'spec/lib/gitlab/ci/config_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/security/common_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/build/associations_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/duration_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/preloader_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/seed/build_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb'
+ - 'spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb'
+ - 'spec/lib/gitlab/ci/secure_files/mobile_provision_spec.rb'
+ - 'spec/lib/gitlab/ci/secure_files/x509_name_spec.rb'
+ - 'spec/lib/gitlab/ci/status/bridge/factory_spec.rb'
+ - 'spec/lib/gitlab/ci/status/build/factory_spec.rb'
+ - 'spec/lib/gitlab/ci/variables/builder_spec.rb'
+ - 'spec/lib/gitlab/ci/variables/collection_spec.rb'
+ - 'spec/lib/gitlab/ci/variables/helpers_spec.rb'
+ - 'spec/lib/gitlab/ci/yaml_processor_spec.rb'
+ - 'spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb'
+ - 'spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb'
+ - 'spec/lib/gitlab/database/load_balancing/sticking_spec.rb'
+ - 'spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb'
+ - 'spec/lib/gitlab/diff/highlight_cache_spec.rb'
+ - 'spec/lib/gitlab/diff/inline_diff_spec.rb'
+ - 'spec/lib/gitlab/diff/lines_unfolder_spec.rb'
+ - 'spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb'
+ - 'spec/lib/gitlab/git/push_spec.rb'
+ - 'spec/lib/gitlab/git_access_spec.rb'
+ - 'spec/lib/gitlab/github_import/parallel_scheduling_spec.rb'
+ - 'spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb'
+ - 'spec/lib/gitlab/i18n/po_linter_spec.rb'
+ - 'spec/lib/gitlab/import_export/attributes_finder_spec.rb'
+ - 'spec/lib/gitlab/import_export/members_mapper_spec.rb'
+ - 'spec/lib/gitlab/issuable_sorter_spec.rb'
+ - 'spec/lib/gitlab/kroki_spec.rb'
+ - 'spec/lib/gitlab/language_detection_spec.rb'
+ - 'spec/lib/gitlab/markup_helper_spec.rb'
+ - 'spec/lib/gitlab/pagination/keyset/in_operator_optimization/query_builder_spec.rb'
+ - 'spec/lib/gitlab/patch/prependable_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb'
+ - 'spec/lib/gitlab/reference_extractor_spec.rb'
+ - 'spec/lib/gitlab/serializer/ci/variables_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_config/worker_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb'
+ - 'spec/lib/gitlab/ssh_public_key_spec.rb'
+ - 'spec/lib/gitlab/usage_data/topology_spec.rb'
+ - 'spec/lib/gitlab/utils/merge_hash_spec.rb'
+ - 'spec/lib/gitlab/visibility_level_spec.rb'
+ - 'spec/models/application_setting_spec.rb'
+ - 'spec/models/ci/bridge_spec.rb'
+ - 'spec/models/ci/build_spec.rb'
+ - 'spec/models/ci/group_spec.rb'
+ - 'spec/models/ci/pipeline_spec.rb'
+ - 'spec/models/ci/processable_spec.rb'
+ - 'spec/models/commit_status_spec.rb'
+ - 'spec/models/concerns/ci/has_status_spec.rb'
+ - 'spec/models/concerns/issuable_spec.rb'
+ - 'spec/models/design_management/version_spec.rb'
+ - 'spec/models/discussion_spec.rb'
+ - 'spec/models/external_pull_request_spec.rb'
+ - 'spec/models/group_group_link_spec.rb'
+ - 'spec/models/incident_management/timeline_event_tag_spec.rb'
+ - 'spec/models/integrations/irker_spec.rb'
+ - 'spec/models/issue_spec.rb'
+ - 'spec/models/namespace/package_setting_spec.rb'
+ - 'spec/models/operations/feature_flags/strategy_spec.rb'
+ - 'spec/models/operations/feature_flags/user_list_spec.rb'
+ - 'spec/models/project_group_link_spec.rb'
+ - 'spec/models/repository_spec.rb'
+ - 'spec/models/snippet_repository_spec.rb'
+ - 'spec/models/user_preference_spec.rb'
+ - 'spec/models/user_spec.rb'
+ - 'spec/models/web_ide_terminal_spec.rb'
+ - 'spec/policies/merge_request_policy_spec.rb'
+ - 'spec/policies/project_policy_spec.rb'
+ - 'spec/requests/api/ci/runner/jobs_request_post_spec.rb'
+ - 'spec/requests/api/graphql/group_query_spec.rb'
+ - 'spec/requests/api/graphql/jobs_query_spec.rb'
+ - 'spec/requests/api/graphql/project/languages_spec.rb'
+ - 'spec/requests/api/projects_spec.rb'
+ - 'spec/requests/api/releases_spec.rb'
+ - 'spec/requests/api/settings_spec.rb'
+ - 'spec/requests/api/snippets_spec.rb'
+ - 'spec/serializers/fork_namespace_entity_spec.rb'
+ - 'spec/serializers/group_child_entity_spec.rb'
+ - 'spec/services/auto_merge_service_spec.rb'
+ - 'spec/services/ci/create_pipeline_service_spec.rb'
+ - 'spec/services/ci/enqueue_job_service_spec.rb'
+ - 'spec/services/ci/job_artifacts/destroy_batch_service_spec.rb'
+ - 'spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb'
+ - 'spec/services/ci/play_build_service_spec.rb'
+ - 'spec/services/feature_flags/create_service_spec.rb'
+ - 'spec/services/issues/referenced_merge_requests_service_spec.rb'
+ - 'spec/services/merge_requests/conflicts/resolve_service_spec.rb'
+ - 'spec/services/projects/detect_repository_languages_service_spec.rb'
+ - 'spec/services/security/merge_reports_service_spec.rb'
+ - 'spec/services/spam/spam_verdict_service_spec.rb'
+ - 'spec/support/helpers/kubernetes_helpers.rb'
+ - 'spec/support/helpers/login_helpers.rb'
+ - 'spec/support/shared_contexts/features/integrations/integrations_shared_context.rb'
+ - 'spec/support/shared_examples/lib/email/email_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/wikis_api_examples.rb'
+ - 'spec/support/shared_examples/models/label_note_shared_examples.rb'
+ - 'spec/support/shared_examples/models/mentionable_shared_examples.rb'
+ - 'spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb'
diff --git a/.rubocop_todo/layout/first_argument_indentation.yml b/.rubocop_todo/layout/first_argument_indentation.yml
new file mode 100644
index 00000000000..fb364356a97
--- /dev/null
+++ b/.rubocop_todo/layout/first_argument_indentation.yml
@@ -0,0 +1,26 @@
+---
+# Cop supports --autocorrect.
+Layout/FirstArgumentIndentation:
+ Details: grace period
+ Exclude:
+ - 'app/models/customer_relations/contact.rb'
+ - 'app/models/cycle_analytics/project_level_stage_adapter.rb'
+ - 'app/models/users/user_follow_user.rb'
+ - 'ee/lib/ee/gitlab/scim/group/deprovisioning_service.rb'
+ - 'ee/spec/controllers/groups/omniauth_callbacks_controller_spec.rb'
+ - 'ee/spec/controllers/registrations/company_controller_spec.rb'
+ - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb'
+ - 'ee/spec/services/audit_events/protected_branch_audit_event_service_spec.rb'
+ - 'ee/spec/services/security/report_summary_service_spec.rb'
+ - 'spec/components/previews/pajamas/alert_component_preview.rb'
+ - 'spec/components/previews/pajamas/banner_component_preview.rb'
+ - 'spec/components/previews/pajamas/button_component_preview.rb'
+ - 'spec/controllers/import/bitbucket_controller_spec.rb'
+ - 'spec/lib/gitlab/application_rate_limiter_spec.rb'
+ - 'spec/lib/gitlab/database/loose_foreign_keys_spec.rb'
+ - 'spec/lib/gitlab/import_export/shared_spec.rb'
+ - 'spec/models/loose_foreign_keys/deleted_record_spec.rb'
+ - 'spec/requests/api/graphql/ci/jobs_spec.rb'
+ - 'spec/services/protected_branches/api_service_spec.rb'
+ - 'spec/support/shared_examples/features/search/redacted_search_results_shared_examples.rb'
+ - 'spec/support/shared_examples/quick_actions/issuable/max_issuable_examples.rb'
diff --git a/.rubocop_todo/layout/first_array_element_indentation.yml b/.rubocop_todo/layout/first_array_element_indentation.yml
new file mode 100644
index 00000000000..d108792ac08
--- /dev/null
+++ b/.rubocop_todo/layout/first_array_element_indentation.yml
@@ -0,0 +1,90 @@
+---
+# Cop supports --autocorrect.
+Layout/FirstArrayElementIndentation:
+ Details: grace period
+ Exclude:
+ - 'app/controllers/admin/broadcast_messages_controller.rb'
+ - 'app/controllers/admin/plan_limits_controller.rb'
+ - 'app/finders/user_groups_counter.rb'
+ - 'app/helpers/search_helper.rb'
+ - 'app/models/container_repository.rb'
+ - 'app/models/group.rb'
+ - 'app/models/integration.rb'
+ - 'app/models/user.rb'
+ - 'app/services/labels/transfer_service.rb'
+ - 'ee/app/finders/autocomplete/project_invited_groups_finder.rb'
+ - 'ee/app/finders/geo/project_registry_finder.rb'
+ - 'ee/app/models/ee/application_setting.rb'
+ - 'ee/app/models/protected_environment.rb'
+ - 'ee/app/services/vulnerabilities/create_service_base.rb'
+ - 'ee/lib/ee/api/helpers/award_emoji.rb'
+ - 'ee/spec/controllers/admin/licenses/usage_exports_controller_spec.rb'
+ - 'ee/spec/controllers/projects/merge_requests_controller_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/namespaces/billed_users_finder_spec.rb'
+ - 'ee/spec/frontend/fixtures/dast_profiles.rb'
+ - 'ee/spec/frontend/fixtures/search.rb'
+ - 'ee/spec/graphql/resolvers/analytics/contribution_analytics/contributions_resolver_spec.rb'
+ - 'ee/spec/graphql/types/dast_scanner_profile_type_spec.rb'
+ - 'ee/spec/graphql/types/dast_site_profile_type_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/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/models/analytics/cycle_analytics/group_value_stream_spec.rb'
+ - 'ee/spec/models/ee/group_spec.rb'
+ - 'ee/spec/models/security/orchestration_policy_configuration_spec.rb'
+ - 'ee/spec/models/security/orchestration_policy_rule_schedule_spec.rb'
+ - 'ee/spec/policies/project_policy_spec.rb'
+ - 'ee/spec/requests/api/graphql/analytics/contribution_analytics/contributions_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/releases/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/merge_requests_spec.rb'
+ - 'ee/spec/requests/api/ldap_group_links_spec.rb'
+ - 'ee/spec/requests/api/members_spec.rb'
+ - 'ee/spec/requests/api/saml_group_links_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/groups/seat_usage_export_service_spec.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/object_hierarchy.rb'
+ - 'lib/gitlab/project_authorizations.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/praefect_dataloss_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_project_level_spec.rb'
+ - 'qa/qa/specs/features/ee/api/9_data_stores/elasticsearch/index_tests/main_index/blob_index_spec.rb'
+ - 'qa/qa/specs/features/ee/api/9_data_stores/elasticsearch/nightly_elasticsearch_test_spec.rb'
+ - 'spec/controllers/projects/pipelines_controller_spec.rb'
+ - 'spec/finders/groups/accepting_project_transfers_finder_spec.rb'
+ - 'spec/graphql/mutations/commits/create_spec.rb'
+ - 'spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb'
+ - 'spec/graphql/types/commit_signatures/verification_status_enum_spec.rb'
+ - 'spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb'
+ - 'spec/lib/gitlab/background_migration/delete_orphaned_operational_vulnerabilities_spec.rb'
+ - 'spec/lib/gitlab/backtrace_cleaner_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/id_token_spec.rb'
+ - 'spec/lib/gitlab/ci/secure_files/x509_name_spec.rb'
+ - 'spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb'
+ - 'spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb'
+ - 'spec/lib/gitlab/diff/inline_diff_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/diff_notes_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/notes_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/parallel_scheduling_spec.rb'
+ - 'spec/lib/gitlab/pagination/keyset/in_operator_optimization/query_builder_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb'
+ - 'spec/lib/gitlab/usage_data/topology_spec.rb'
+ - 'spec/models/group_group_link_spec.rb'
+ - 'spec/models/project_group_link_spec.rb'
+ - 'spec/models/user_preference_spec.rb'
+ - 'spec/services/issues/referenced_merge_requests_service_spec.rb'
+ - 'spec/services/security/merge_reports_service_spec.rb'
diff --git a/.rubocop_todo/layout/first_hash_element_indentation.yml b/.rubocop_todo/layout/first_hash_element_indentation.yml
index e1ac4ccb650..a4b520add75 100644
--- a/.rubocop_todo/layout/first_hash_element_indentation.yml
+++ b/.rubocop_todo/layout/first_hash_element_indentation.yml
@@ -1,292 +1,159 @@
---
# Cop supports --autocorrect.
Layout/FirstHashElementIndentation:
+ Details: grace period
Exclude:
- - 'app/helpers/avatars_helper.rb'
- - 'app/helpers/breadcrumbs_helper.rb'
- - 'app/helpers/broadcast_messages_helper.rb'
+ - 'app/controllers/admin/system_info_controller.rb'
+ - 'app/controllers/concerns/milestone_actions.rb'
+ - 'app/controllers/concerns/render_service_results.rb'
+ - 'app/controllers/concerns/sourcegraph_decorator.rb'
+ - 'app/controllers/projects/badges_controller.rb'
+ - 'app/controllers/projects/merge_requests_controller.rb'
+ - 'app/controllers/repositories/lfs_locks_api_controller.rb'
+ - 'app/experiments/concerns/project_commit_count.rb'
+ - 'app/graphql/mutations/notes/create/diff_note.rb'
+ - 'app/graphql/mutations/notes/create/image_diff_note.rb'
+ - 'app/graphql/mutations/notes/create/note.rb'
+ - 'app/graphql/resolvers/ci/runner_projects_resolver.rb'
+ - 'app/graphql/resolvers/group_packages_resolver.rb'
- 'app/helpers/commits_helper.rb'
- - 'app/helpers/environments_helper.rb'
- - 'app/helpers/keyset_helper.rb'
- - 'app/helpers/listbox_helper.rb'
- - 'app/helpers/page_layout_helper.rb'
- 'app/helpers/projects/project_members_helper.rb'
- 'app/helpers/search_helper.rb'
- - 'app/helpers/sorting_helper.rb'
- 'app/helpers/ssh_keys_helper.rb'
- 'app/helpers/tags_helper.rb'
- - 'app/helpers/tree_helper.rb'
- - 'app/helpers/users_helper.rb'
- - 'app/mailers/emails/issues.rb'
- - 'app/mailers/emails/merge_requests.rb'
- 'app/models/application_setting.rb'
- - 'app/models/ci/build.rb'
- 'app/models/ci/build_metadata.rb'
- - 'app/models/ci/runner.rb'
- 'app/models/clusters/applications/crossplane.rb'
- - 'app/models/clusters/platforms/kubernetes.rb'
- - 'app/models/concerns/cross_database_modification.rb'
- - 'app/models/concerns/featurable.rb'
- 'app/models/concerns/has_wiki_page_slug_attributes.rb'
- - 'app/models/concerns/integrations/enable_ssl_verification.rb'
- 'app/models/concerns/subscribable.rb'
- 'app/models/concerns/taskable.rb'
- 'app/models/diff_note.rb'
- - 'app/models/integrations/jira.rb'
- - 'app/models/jira_connect_installation.rb'
+ - 'app/models/merge_request.rb'
- 'app/models/milestone.rb'
- - 'app/models/note.rb'
- 'app/models/operations/feature_flags/strategy.rb'
- 'app/models/project.rb'
- - 'app/models/wiki.rb'
- 'app/presenters/ci/build_metadata_presenter.rb'
- - 'app/presenters/packages/helm/index_presenter.rb'
- - 'app/serializers/cluster_serializer.rb'
- 'app/serializers/detailed_status_entity.rb'
- - 'app/services/award_emojis/base_service.rb'
- - 'app/services/ci/runners/reconcile_existing_runner_versions_service.rb'
- - 'app/services/google_cloud/create_service_accounts_service.rb'
- - 'app/services/members/create_service.rb'
- - 'app/services/notification_service.rb'
- - 'app/services/packages/composer/create_package_service.rb'
- - 'app/services/pages/delete_service.rb'
- - 'app/services/projects/after_rename_service.rb'
- - 'app/services/projects/create_service.rb'
- - 'app/services/projects/destroy_service.rb'
- - 'app/services/projects/transfer_service.rb'
- - 'app/services/projects/update_pages_service.rb'
- - 'app/services/projects/update_service.rb'
- - 'app/services/resource_events/change_milestone_service.rb'
+ - 'app/services/audit_events/build_service.rb'
- 'app/services/spam/ham_service.rb'
- - 'app/services/timelogs/base_service.rb'
- - 'app/validators/addressable_url_validator.rb'
- - 'app/workers/concerns/cluster_cleanup_methods.rb'
+ - 'app/services/work_items/widgets/milestone_service/base_service.rb'
+ - 'app/validators/bytesize_validator.rb'
- 'ee/app/components/namespaces/free_user_cap/enforcement_alert_component.rb'
- - 'ee/app/components/namespaces/free_user_cap/notification_alert_component.rb'
- - 'ee/app/controllers/groups/analytics/tasks_by_type_controller.rb'
- 'ee/app/graphql/mutations/boards/epic_lists/destroy.rb'
- 'ee/app/graphql/mutations/boards/epics/create.rb'
- 'ee/app/graphql/mutations/iterations/cadences/update.rb'
- 'ee/app/graphql/mutations/iterations/create.rb'
- 'ee/app/graphql/mutations/iterations/update.rb'
- - 'ee/app/graphql/mutations/projects/set_compliance_framework.rb'
- - 'ee/app/graphql/mutations/security_policy/commit_scan_execution_policy.rb'
- - 'ee/app/helpers/ee/application_settings_helper.rb'
- - 'ee/app/helpers/ee/ci/jobs_helper.rb'
- 'ee/app/helpers/ee/geo_helper.rb'
- 'ee/app/helpers/ee/groups/group_members_helper.rb'
- - 'ee/app/helpers/ee/namespaces_helper.rb'
- - 'ee/app/helpers/ee/projects_helper.rb'
- - 'ee/app/helpers/ee/sidebars_helper.rb'
- - 'ee/app/helpers/ee/tree_helper.rb'
+ - 'ee/app/helpers/ee/trial_helper.rb'
- 'ee/app/helpers/incident_management/escalation_policy_helper.rb'
- - 'ee/app/helpers/paid_feature_callout_helper.rb'
- - 'ee/app/helpers/projects/on_demand_scans_helper.rb'
- - 'ee/app/helpers/projects/security/dast_profiles_helper.rb'
- - 'ee/app/mailers/ee/emails/issues.rb'
- 'ee/app/models/ee/list.rb'
- - 'ee/app/serializers/ee/environment_serializer.rb'
- 'ee/app/services/app_sec/dast/profiles/update_service.rb'
- - 'ee/app/services/app_sec/dast/site_profiles/update_service.rb'
- - 'ee/app/services/ee/auth/container_registry_authentication_service.rb'
- - 'ee/app/services/ee/ci/register_job_service.rb'
- - 'ee/app/services/ee/issues/export_csv_service.rb'
- 'ee/app/services/elastic/cluster_reindexing_service.rb'
- 'ee/app/services/gitlab_subscriptions/plan_upgrade_service.rb'
- - 'ee/app/services/incident_management/issuable_resource_links/base_service.rb'
- - 'ee/app/services/jira/requests/issues/list_service.rb'
+ - 'ee/app/services/iterations/create_service.rb'
+ - 'ee/app/services/registrations/base_namespace_create_service.rb'
+ - 'ee/app/services/resource_events/change_iteration_service.rb'
- 'ee/app/services/security/token_revocation_service.rb'
- 'ee/app/services/timebox_report_service.rb'
- - 'ee/app/workers/elastic_delete_project_worker.rb'
- - 'ee/app/workers/groups/create_event_worker.rb'
- - 'ee/lib/api/epic_links.rb'
- - 'ee/lib/ee/api/geo.rb'
- 'ee/lib/ee/container_registry/client.rb'
- - 'ee/lib/ee/gitlab/application_rate_limiter.rb'
- 'ee/lib/ee/gitlab/ci/parsers.rb'
- 'ee/lib/ee/gitlab/usage_data.rb'
- 'ee/lib/elastic/latest/application_class_proxy.rb'
- 'ee/lib/elastic/latest/issue_class_proxy.rb'
- - 'ee/lib/gitlab/geo/project_log_helpers.rb'
+ - 'ee/lib/gitlab/analytics/type_of_work/tasks_by_type.rb'
+ - 'ee/lib/gitlab/ci/parsers/security/formatters/dependency_list.rb'
- 'ee/lib/gitlab/graphql/aggregations/epics/lazy_epic_aggregate.rb'
- - 'ee/lib/gitlab/status_page/storage/s3_multipart_upload.rb'
- 'ee/spec/controllers/admin/application_settings_controller_spec.rb'
- 'ee/spec/controllers/ee/projects/jobs_controller_spec.rb'
- 'ee/spec/controllers/ee/projects/variables_controller_spec.rb'
- - 'ee/spec/controllers/groups/analytics/cycle_analytics/summary_controller_spec.rb'
- 'ee/spec/controllers/groups/epic_boards_controller_spec.rb'
- 'ee/spec/controllers/groups/issues_controller_spec.rb'
- - 'ee/spec/controllers/projects/feature_flag_issues_controller_spec.rb'
- 'ee/spec/controllers/projects/integrations/jira/issues_controller_spec.rb'
- - 'ee/spec/controllers/projects/licenses_controller_spec.rb'
+ - 'ee/spec/controllers/projects/repositories_controller_spec.rb'
- 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb'
- 'ee/spec/controllers/projects_controller_spec.rb'
- - 'ee/spec/controllers/security/projects_controller_spec.rb'
- - 'ee/spec/elastic/migrate/20220119120500_populate_commit_permissions_in_main_index_spec.rb'
+ - 'ee/spec/elastic/migrate/20220118150500_delete_orphaned_commits_spec.rb'
+ - 'ee/spec/elastic/migrate/migration_shared_examples.rb'
- 'ee/spec/factories/dependencies.rb'
- 'ee/spec/factories/licenses.rb'
- 'ee/spec/finders/epics_finder_spec.rb'
- - 'ee/spec/frontend/fixtures/dast_profiles.rb'
- - 'ee/spec/frontend/fixtures/on_demand_dast_scans.rb'
+ - 'ee/spec/finders/namespaces/free_user_cap/users_finder_spec.rb'
+ - 'ee/spec/frontend/fixtures/oncall_schedule.rb'
- 'ee/spec/frontend/fixtures/search.rb'
- - 'ee/spec/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create_spec.rb'
+ - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/destroy_spec.rb'
+ - 'ee/spec/graphql/types/asset_type_spec.rb'
- 'ee/spec/graphql/types/vulnerability_request_response_header_type_spec.rb'
- - 'ee/spec/helpers/ee/access_tokens_helper_spec.rb'
- - 'ee/spec/helpers/ee/groups_helper_spec.rb'
- - 'ee/spec/helpers/ee/labels_helper_spec.rb'
- - 'ee/spec/helpers/ee/namespaces_helper_spec.rb'
- - 'ee/spec/helpers/ee/projects/pipeline_helper_spec.rb'
- - 'ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb'
- - 'ee/spec/helpers/ee/projects/security/sast_configuration_helper_spec.rb'
- - 'ee/spec/helpers/ee/security_orchestration_helper_spec.rb'
- - 'ee/spec/helpers/groups/sso_helper_spec.rb'
- - 'ee/spec/helpers/nav/new_dropdown_helper_spec.rb'
- - 'ee/spec/helpers/projects_helper_spec.rb'
- - 'ee/spec/helpers/search_helper_spec.rb'
- - 'ee/spec/helpers/security_helper_spec.rb'
- - 'ee/spec/helpers/trial_registrations/reassurances_helper_spec.rb'
+ - 'ee/spec/graphql/types/vulnerability_request_type_spec.rb'
+ - 'ee/spec/graphql/types/vulnerability_response_type_spec.rb'
+ - 'ee/spec/helpers/billing_plans_helper_spec.rb'
+ - 'ee/spec/helpers/groups/security_features_helper_spec.rb'
+ - 'ee/spec/helpers/projects/security/discover_helper_spec.rb'
+ - 'ee/spec/initializers/fog_google_https_private_urls_spec.rb'
+ - 'ee/spec/lib/audit/compliance_framework_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/project_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/project_ci_cd_setting_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/project_setting_changes_auditor_spec.rb'
- 'ee/spec/lib/container_registry/client_spec.rb'
- - 'ee/spec/lib/ee/backup/repositories_spec.rb'
- - 'ee/spec/lib/ee/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
+ - 'ee/spec/lib/ee/api/entities/experiment_spec.rb'
- 'ee/spec/lib/ee/gitlab/auth/ldap/access_levels_spec.rb'
- - 'ee/spec/lib/ee/gitlab/ci/config/entry/bridge_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/backfill_project_statistics_storage_size_without_uploads_size_spec.rb'
- 'ee/spec/lib/ee/gitlab/ci/parsers/security/common_spec.rb'
- - 'ee/spec/lib/ee/gitlab/elastic/helper_spec.rb'
- - 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
- - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
- - 'ee/spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb'
- - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary_spec.rb'
- - 'ee/spec/lib/gitlab/analytics/type_of_work/tasks_by_type_spec.rb'
- - 'ee/spec/lib/gitlab/auth/group_saml/membership_updater_spec.rb'
- - 'ee/spec/lib/gitlab/auth/saml/membership_updater_spec.rb'
- 'ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb'
- - 'ee/spec/lib/gitlab/ci/config/entry/job_spec.rb'
- 'ee/spec/lib/gitlab/ci/parsers/security/dast_spec.rb'
- 'ee/spec/lib/gitlab/ci/reports/coverage_fuzzing/report_spec.rb'
- - 'ee/spec/lib/gitlab/ci/reports/security/finding_spec.rb'
- - 'ee/spec/lib/gitlab/ci/yaml_processor_spec.rb'
- - 'ee/spec/lib/gitlab/contribution_analytics/data_collector_spec.rb'
- - 'ee/spec/lib/gitlab/elastic/indexer_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_cursor/lease_spec.rb'
- 'ee/spec/lib/gitlab/graphql/aggregations/epics/lazy_epic_aggregate_spec.rb'
- 'ee/spec/lib/gitlab/subscription_portal/clients/graphql_spec.rb'
- - 'ee/spec/lib/gitlab/web_ide/config/entry/schemas_spec.rb'
- - 'ee/spec/lib/system_check/app/search_check_spec.rb'
- 'ee/spec/mailers/credentials_inventory_mailer_spec.rb'
- 'ee/spec/mailers/emails/requirements_spec.rb'
- - 'ee/spec/models/analytics/cycle_analytics/project_stage_spec.rb'
- - 'ee/spec/models/concerns/elastic/application_versioned_search_spec.rb'
- - 'ee/spec/models/concerns/elastic/merge_request_spec.rb'
- - 'ee/spec/models/concerns/elastic/milestone_spec.rb'
- - 'ee/spec/models/concerns/elastic/snippet_spec.rb'
- - 'ee/spec/models/security/finding_spec.rb'
+ - 'ee/spec/models/concerns/elastic/issue_spec.rb'
+ - 'ee/spec/models/concerns/elastic/note_spec.rb'
- 'ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb'
- - 'ee/spec/requests/api/experiments_spec.rb'
- - 'ee/spec/requests/api/geo_spec.rb'
- - 'ee/spec/requests/api/graphql/app_sec/fuzzing/api/ci_configuration_type_spec.rb'
- - 'ee/spec/requests/api/graphql/app_sec/fuzzing/coverage/corpus_type_spec.rb'
- - 'ee/spec/requests/api/graphql/ci/minutes/usage_spec.rb'
- - 'ee/spec/requests/api/graphql/milestone_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/gitlab_subscriptions/activate_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/timelogs/create_spec.rb'
- - 'ee/spec/requests/api/internal/base_spec.rb'
- 'ee/spec/requests/api/internal/upcoming_reconciliations_spec.rb'
- - 'ee/spec/requests/api/members_spec.rb'
- 'ee/spec/requests/api/merge_requests_spec.rb'
+ - 'ee/spec/requests/ee/projects/deploy_tokens_controller_spec.rb'
- 'ee/spec/requests/groups/group_members_controller_spec.rb'
- - 'ee/spec/requests/projects/issue_feature_flags_controller_spec.rb'
- - 'ee/spec/serializers/issues/linked_issue_feature_flag_entity_spec.rb'
- - 'ee/spec/serializers/license_entity_spec.rb'
- - 'ee/spec/serializers/linked_feature_flag_issue_entity_spec.rb'
- - 'ee/spec/serializers/security/vulnerability_report_data_entity_spec.rb'
- - 'ee/spec/services/analytics/cycle_analytics/consistency_check_service_spec.rb'
- - 'ee/spec/services/analytics/cycle_analytics/data_loader_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/profile_schedules/audit/update_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/profiles/audit/update_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/profiles/create_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/profiles/destroy_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/profiles/update_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/scanner_profiles/create_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/scanner_profiles/destroy_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/site_profiles/audit/update_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/site_profiles/create_service_spec.rb'
- - 'ee/spec/services/app_sec/dast/site_profiles/destroy_service_spec.rb'
- - 'ee/spec/services/app_sec/fuzzing/api/ci_configuration_create_service_spec.rb'
- - 'ee/spec/services/app_sec/fuzzing/coverage/corpuses/create_service_spec.rb'
- - 'ee/spec/services/approval_rules/create_service_spec.rb'
- - 'ee/spec/services/approval_rules/update_service_spec.rb'
- - 'ee/spec/services/audit_event_service_spec.rb'
- - 'ee/spec/services/ci/create_pipeline_service_spec.rb'
+ - 'ee/spec/services/approval_rules/project_rule_destroy_service_spec.rb'
+ - 'ee/spec/services/deploy_keys/create_service_spec.rb'
- 'ee/spec/services/ee/alert_management/http_integrations/create_service_spec.rb'
- 'ee/spec/services/ee/alert_management/http_integrations/update_service_spec.rb'
- - 'ee/spec/services/ee/merge_requests/create_pipeline_service_spec.rb'
- - 'ee/spec/services/ee/post_receive_service_spec.rb'
+ - 'ee/spec/services/ee/projects/deploy_tokens/create_service_spec.rb'
+ - 'ee/spec/services/ee/projects/deploy_tokens/destroy_service_spec.rb'
+ - 'ee/spec/services/ee/projects/unlink_fork_service_spec.rb'
- 'ee/spec/services/external_status_checks/create_service_spec.rb'
- - 'ee/spec/services/geo/node_status_request_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/check_future_renewal_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/create_trial_or_lead_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/plan_upgrade_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/preview_billable_user_change_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/reconciliations/calculate_seat_count_data_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/reconciliations/check_seat_usage_alerts_eligibility_service_spec.rb'
+ - 'ee/spec/services/external_status_checks/destroy_service_spec.rb'
- 'ee/spec/services/groups/create_service_spec.rb'
- 'ee/spec/services/groups/destroy_service_spec.rb'
- 'ee/spec/services/iterations/create_service_spec.rb'
- 'ee/spec/services/projects/create_service_spec.rb'
+ - 'ee/spec/services/projects/disable_deploy_key_service_spec.rb'
+ - 'ee/spec/services/projects/enable_deploy_key_service_spec.rb'
- 'ee/spec/services/projects/group_links/create_service_spec.rb'
- 'ee/spec/services/projects/group_links/destroy_service_spec.rb'
- 'ee/spec/services/projects/transfer_service_spec.rb'
- - 'ee/spec/services/security/report_summary_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/create_pipeline_service_spec.rb'
- 'ee/spec/services/security/token_revocation_service_spec.rb'
- 'ee/spec/services/security/track_scan_service_spec.rb'
- 'ee/spec/services/timebox_report_service_spec.rb'
- - 'ee/spec/services/users/abuse/git_abuse/namespace_throttle_service_spec.rb'
- - 'ee/spec/support/helpers/ee/login_helpers.rb'
- - 'ee/spec/support/shared_contexts/fixtures/analytics_shared_context.rb'
- - 'ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/shared_stage_shared_examples.rb'
- - 'ee/spec/support/shared_examples/controllers/namespace_storage_limit_alert_shared_examples.rb'
- - 'ee/spec/tasks/gitlab/elastic_rake_spec.rb'
- - 'ee/spec/workers/analytics/cycle_analytics/consistency_worker_spec.rb'
- - 'ee/spec/workers/ci/runners/stale_group_runners_prune_cron_worker_spec.rb'
- - 'ee/spec/workers/gitlab_subscriptions/notify_seats_exceeded_worker_spec.rb'
- - 'lib/api/admin/instance_clusters.rb'
- - 'lib/api/group_clusters.rb'
- - 'lib/api/project_clusters.rb'
- - 'lib/atlassian/jira_connect/client.rb'
- - 'lib/banzai/filter/commit_trailers_filter.rb'
- 'lib/banzai/filter/playable_link_filter.rb'
- - 'lib/banzai/reference_parser/user_parser.rb'
- - 'lib/gitlab/analytics/cycle_analytics/aggregated/records_fetcher.rb'
- - 'lib/gitlab/analytics/cycle_analytics/records_fetcher.rb'
+ - 'lib/gitlab/application_rate_limiter.rb'
- 'lib/gitlab/asciidoc.rb'
- 'lib/gitlab/asciidoc/include_processor.rb'
- 'lib/gitlab/auth/otp/strategies/forti_token_cloud.rb'
- 'lib/gitlab/ci/config/entry/processable.rb'
- - 'lib/gitlab/database/query_analyzers/gitlab_schemas_metrics.rb'
- - 'lib/gitlab/database/query_analyzers/prevent_cross_database_modification.rb'
- - 'lib/gitlab/github_import/importer/diff_note_importer.rb'
- - 'lib/gitlab/github_import/importer/pull_request_merged_by_importer.rb'
- - 'lib/gitlab/gitlab_import/client.rb'
- - 'lib/gitlab/graphql/query_analyzers/ast/logger_analyzer.rb'
+ - 'lib/gitlab/database/migrations/observers/query_details.rb'
+ - 'lib/gitlab/database/migrations/observers/transaction_duration.rb'
- 'lib/gitlab/hook_data/issue_builder.rb'
- 'lib/gitlab/hook_data/release_builder.rb'
- - 'lib/gitlab/kubernetes.rb'
- - 'lib/gitlab/kubernetes/namespace.rb'
- - 'lib/gitlab/kubernetes/rollout_instances.rb'
- - 'lib/gitlab/legacy_github_import/client.rb'
- - 'lib/gitlab/push_options.rb'
- 'lib/gitlab/quick_actions/issuable_actions.rb'
- - 'lib/gitlab/usage_data_counters/track_unique_events.rb'
- - 'lib/object_storage/direct_upload.rb'
- - 'lib/tasks/tanuki_emoji.rake'
- - 'qa/qa/ee/resource/board/board_list/project/assignee_board_list.rb'
- - 'qa/qa/ee/resource/board/board_list/project/milestone_board_list.rb'
- 'qa/qa/resource/snippet.rb'
+ - 'qa/qa/specs/features/api/1_manage/migration/gitlab_migration_release_spec.rb'
- 'qa/qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb'
- 'qa/qa/specs/features/api/5_package/container_registry_spec.rb'
- - 'qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb'
- 'qa/qa/specs/features/browser_ui/5_package/container_registry/container_registry_omnibus_spec.rb'
- 'qa/qa/specs/features/browser_ui/5_package/container_registry/container_registry_spec.rb'
@@ -299,17 +166,10 @@ Layout/FirstHashElementIndentation:
- 'qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb'
- 'qa/qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/4_verify/new_discussion_not_dropping_merge_trains_mr_spec.rb'
- - 'spec/components/diffs/stats_component_spec.rb'
- - 'spec/components/pajamas/component_spec.rb'
- - 'spec/config/object_store_settings_spec.rb'
- - 'spec/config/smime_signature_settings_spec.rb'
- - 'spec/controllers/application_controller_spec.rb'
- - 'spec/controllers/concerns/import_url_params_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb'
+ - 'qa/spec/support/formatters/test_metrics_formatter_spec.rb'
- 'spec/controllers/concerns/issuable_collections_spec.rb'
- 'spec/controllers/groups/group_members_controller_spec.rb'
- - 'spec/controllers/groups/packages_controller_spec.rb'
- - 'spec/controllers/groups/registry/repositories_controller_spec.rb'
- - 'spec/controllers/import/available_namespaces_controller_spec.rb'
- 'spec/controllers/import/manifest_controller_spec.rb'
- 'spec/controllers/projects/boards_controller_spec.rb'
- 'spec/controllers/projects/branches_controller_spec.rb'
@@ -318,260 +178,105 @@ Layout/FirstHashElementIndentation:
- 'spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb'
- 'spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb'
- 'spec/controllers/projects/environments_controller_spec.rb'
- - 'spec/controllers/projects/feature_flags_controller_spec.rb'
- - 'spec/controllers/projects/grafana_api_controller_spec.rb'
- 'spec/controllers/projects/issues_controller_spec.rb'
- 'spec/controllers/projects/jobs_controller_spec.rb'
- 'spec/controllers/projects/merge_requests/creations_controller_spec.rb'
- - 'spec/controllers/projects/merge_requests/drafts_controller_spec.rb'
- - 'spec/controllers/projects/merge_requests_controller_spec.rb'
- 'spec/controllers/projects/milestones_controller_spec.rb'
- 'spec/controllers/projects/notes_controller_spec.rb'
- - 'spec/controllers/projects/packages/packages_controller_spec.rb'
- - 'spec/controllers/projects/pipeline_schedules_controller_spec.rb'
- 'spec/controllers/projects/pipelines_controller_spec.rb'
- 'spec/controllers/projects/project_members_controller_spec.rb'
- 'spec/controllers/projects/registry/repositories_controller_spec.rb'
- 'spec/controllers/projects/registry/tags_controller_spec.rb'
+ - 'spec/controllers/projects/tags_controller_spec.rb'
- 'spec/controllers/projects/web_ide_terminals_controller_spec.rb'
- 'spec/controllers/projects_controller_spec.rb'
- 'spec/factories/ci/builds.rb'
- 'spec/factories/packages/debian/file_metadatum.rb'
- - 'spec/features/gitlab_experiments_spec.rb'
- 'spec/frontend/fixtures/autocomplete_sources.rb'
- - 'spec/frontend/fixtures/blob.rb'
- - 'spec/frontend/fixtures/jobs.rb'
- - 'spec/frontend/fixtures/runner.rb'
- - 'spec/graphql/mutations/release_asset_links/create_spec.rb'
- - 'spec/graphql/resolvers/concerns/caching_array_resolver_spec.rb'
- - 'spec/graphql/resolvers/crm/organizations_resolver_spec.rb'
- 'spec/graphql/types/ci/detailed_status_type_spec.rb'
- - 'spec/helpers/access_tokens_helper_spec.rb'
- - 'spec/helpers/admin/application_settings/settings_helper_spec.rb'
- - 'spec/helpers/admin/deploy_key_helper_spec.rb'
- - 'spec/helpers/analytics/cycle_analytics_helper_spec.rb'
- - 'spec/helpers/ci/builds_helper_spec.rb'
- - 'spec/helpers/ci/jobs_helper_spec.rb'
- - 'spec/helpers/ci/pipeline_editor_helper_spec.rb'
- - 'spec/helpers/deploy_tokens_helper_spec.rb'
- - 'spec/helpers/groups/settings_helper_spec.rb'
- - 'spec/helpers/groups_helper_spec.rb'
- - 'spec/helpers/issuables_helper_spec.rb'
- - 'spec/helpers/namespaces_helper_spec.rb'
- - 'spec/helpers/page_layout_helper_spec.rb'
- - 'spec/helpers/projects/cluster_agents_helper_spec.rb'
- - 'spec/helpers/projects/pipeline_helper_spec.rb'
- - 'spec/helpers/releases_helper_spec.rb'
+ - 'spec/helpers/groups/observability_helper_spec.rb'
+ - 'spec/helpers/learn_gitlab_helper_spec.rb'
+ - 'spec/helpers/projects/pages_helper_spec.rb'
- 'spec/helpers/routing/pseudonymization_helper_spec.rb'
- - 'spec/helpers/search_helper_spec.rb'
- - 'spec/helpers/sorting_helper_spec.rb'
- - 'spec/initializers/direct_upload_support_spec.rb'
- - 'spec/lib/api/entities/bulk_imports/export_status_spec.rb'
- - 'spec/lib/api/entities/design_management/design_spec.rb'
- - 'spec/lib/api/entities/merge_request_approvals_spec.rb'
+ - 'spec/initializers/rack_multipart_patch_spec.rb'
- 'spec/lib/api/entities/personal_access_token_spec.rb'
- - 'spec/lib/atlassian/jira_connect/client_spec.rb'
- - 'spec/lib/backup/database_spec.rb'
- - 'spec/lib/backup/repositories_spec.rb'
- - 'spec/lib/banzai/filter/audio_link_filter_spec.rb'
- - 'spec/lib/banzai/filter/repository_link_filter_spec.rb'
- - 'spec/lib/banzai/filter/video_link_filter_spec.rb'
- 'spec/lib/bulk_imports/common/pipelines/milestones_pipeline_spec.rb'
- - 'spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb'
- - 'spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb'
- 'spec/lib/bulk_imports/groups/stage_spec.rb'
- - 'spec/lib/bulk_imports/groups/transformers/group_attributes_transformer_spec.rb'
- 'spec/lib/bulk_imports/projects/pipelines/container_expiration_policy_pipeline_spec.rb'
- 'spec/lib/bulk_imports/projects/pipelines/project_feature_pipeline_spec.rb'
- 'spec/lib/container_registry/client_spec.rb'
- - 'spec/lib/feature/definition_spec.rb'
- - 'spec/lib/gitlab/alert_management/payload/base_spec.rb'
- - 'spec/lib/gitlab/analytics/cycle_analytics/aggregated/records_fetcher_spec.rb'
- - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
- - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb'
- - 'spec/lib/gitlab/api_authentication/builder_spec.rb'
+ - 'spec/lib/gitlab/application_rate_limiter_spec.rb'
- 'spec/lib/gitlab/asciidoc_spec.rb'
- - 'spec/lib/gitlab/auth/ldap/config_spec.rb'
- - 'spec/lib/gitlab/auth/o_auth/user_spec.rb'
- - 'spec/lib/gitlab/auth/request_authenticator_spec.rb'
- - 'spec/lib/gitlab/background_migration/fix_vulnerability_occurrences_with_hashes_as_raw_metadata_spec.rb'
- 'spec/lib/gitlab/background_migration/migrate_u2f_webauthn_spec.rb'
- 'spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb'
- 'spec/lib/gitlab/bitbucket_import/importer_spec.rb'
- - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb'
- - 'spec/lib/gitlab/changes_list_spec.rb'
- - 'spec/lib/gitlab/checks/changes_access_spec.rb'
- - 'spec/lib/gitlab/ci/build/cache_spec.rb'
- - 'spec/lib/gitlab/ci/build/step_spec.rb'
- - 'spec/lib/gitlab/ci/config/entry/bridge_spec.rb'
- - 'spec/lib/gitlab/ci/config/entry/product/variables_spec.rb'
- - 'spec/lib/gitlab/ci/config/yaml/tags/resolver_spec.rb'
- 'spec/lib/gitlab/ci/config_spec.rb'
- 'spec/lib/gitlab/ci/parsers/codequality/code_climate_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/coverage/sax_document_spec.rb'
- 'spec/lib/gitlab/ci/parsers/security/common_spec.rb'
- 'spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb'
- 'spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb'
- - 'spec/lib/gitlab/ci/reports/coverage_report_spec.rb'
- - 'spec/lib/gitlab/ci/reports/security/identifier_spec.rb'
- - 'spec/lib/gitlab/ci/reports/security/scanner_spec.rb'
- - 'spec/lib/gitlab/ci/reports/terraform_reports_spec.rb'
- 'spec/lib/gitlab/ci/yaml_processor_spec.rb'
- 'spec/lib/gitlab/config_checker/puma_rugged_checker_spec.rb'
- 'spec/lib/gitlab/data_builder/build_spec.rb'
- 'spec/lib/gitlab/data_builder/issuable_spec.rb'
- 'spec/lib/gitlab/data_builder/pipeline_spec.rb'
- - 'spec/lib/gitlab/database/load_balancing/setup_spec.rb'
- 'spec/lib/gitlab/database/migration_helpers_spec.rb'
- - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb'
- - 'spec/lib/gitlab/database_spec.rb'
- - 'spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb'
- - 'spec/lib/gitlab/error_tracking_spec.rb'
- 'spec/lib/gitlab/git/conflict/file_spec.rb'
- - 'spec/lib/gitlab/git/hook_env_spec.rb'
- - 'spec/lib/gitlab/git/repository_spec.rb'
- - 'spec/lib/gitlab/gitaly_client/operation_service_spec.rb'
- - 'spec/lib/gitlab/gitaly_client_spec.rb'
- - 'spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb'
- - 'spec/lib/gitlab/github_import/logger_spec.rb'
- - 'spec/lib/gitlab/github_import/object_counter_spec.rb'
- - 'spec/lib/gitlab/gpg_spec.rb'
- - 'spec/lib/gitlab/graphql/query_analyzers/ast/logger_analyzer_spec.rb'
- - 'spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb'
- - 'spec/lib/gitlab/graphql/tracers/timer_tracer_spec.rb'
- - 'spec/lib/gitlab/http_spec.rb'
- - 'spec/lib/gitlab/i18n_spec.rb'
- - 'spec/lib/gitlab/import/logger_spec.rb'
+ - 'spec/lib/gitlab/git/gitmodules_parser_spec.rb'
- 'spec/lib/gitlab/import_export/attributes_finder_spec.rb'
- 'spec/lib/gitlab/import_export/members_mapper_spec.rb'
- 'spec/lib/gitlab/instrumentation_helper_spec.rb'
- - 'spec/lib/gitlab/kubernetes/kubeconfig/template_spec.rb'
- - 'spec/lib/gitlab/kubernetes/rollout_instances_spec.rb'
- - 'spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb'
- - 'spec/lib/gitlab/metrics/dashboard/importers/prometheus_metrics_spec.rb'
- 'spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb'
- - 'spec/lib/gitlab/middleware/multipart/handler_spec.rb'
- - 'spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_columns_spec.rb'
- 'spec/lib/gitlab/phabricator_import/conduit/user_spec.rb'
- - 'spec/lib/gitlab/prometheus_client_spec.rb'
- - 'spec/lib/gitlab/push_options_spec.rb'
- - 'spec/lib/gitlab/submodule_links_spec.rb'
- - 'spec/lib/gitlab/usage_data/topology_spec.rb'
- - 'spec/lib/gitlab/utils_spec.rb'
- - 'spec/lib/gitlab/web_ide/config/entry/global_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb'
+ - 'spec/lib/gitlab/workhorse_spec.rb'
- 'spec/lib/mattermost/team_spec.rb'
- - 'spec/lib/microsoft_teams/activity_spec.rb'
- - 'spec/lib/peek/views/memory_spec.rb'
+ - 'spec/lib/peek/views/redis_detailed_spec.rb'
- 'spec/mailers/emails/merge_requests_spec.rb'
- - 'spec/models/active_session_spec.rb'
- - 'spec/models/analytics/cycle_analytics/aggregation_spec.rb'
- - 'spec/models/ci/pipeline_spec.rb'
- - 'spec/models/ci_platform_metric_spec.rb'
- - 'spec/models/clusters/applications/prometheus_spec.rb'
- - 'spec/models/event_spec.rb'
- - 'spec/models/gpg_key_spec.rb'
- - 'spec/models/instance_configuration_spec.rb'
- - 'spec/models/integrations/base_chat_notification_spec.rb'
- - 'spec/models/integrations/chat_message/deployment_message_spec.rb'
- - 'spec/models/integrations/chat_message/issue_message_spec.rb'
+ - 'spec/models/ci/build_spec.rb'
- 'spec/models/integrations/chat_message/merge_message_spec.rb'
- - 'spec/models/integrations/chat_message/note_message_spec.rb'
- - 'spec/models/integrations/chat_message/pipeline_message_spec.rb'
- - 'spec/models/integrations/chat_message/push_message_spec.rb'
- - 'spec/models/integrations/chat_message/wiki_page_message_spec.rb'
- - 'spec/models/integrations/prometheus_spec.rb'
- - 'spec/models/loose_foreign_keys/modification_tracker_spec.rb'
- - 'spec/models/merge_request_diff_commit_spec.rb'
- - 'spec/models/note_spec.rb'
- - 'spec/models/remote_mirror_spec.rb'
+ - 'spec/models/pages/lookup_path_spec.rb'
+ - 'spec/requests/api/ci/pipelines_spec.rb'
- 'spec/requests/api/ci/runner/runners_post_spec.rb'
- 'spec/requests/api/commit_statuses_spec.rb'
- - 'spec/requests/api/feature_flags_spec.rb'
- - 'spec/requests/api/feature_flags_user_lists_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/group/milestones_spec.rb'
- 'spec/requests/api/graphql/metrics/dashboard/annotations_spec.rb'
- - 'spec/requests/api/graphql/mutations/timelogs/create_spec.rb'
- - 'spec/requests/api/graphql/project/cluster_agents_spec.rb'
- - 'spec/requests/api/graphql/project/release_spec.rb'
- - 'spec/requests/api/graphql/project_query_spec.rb'
- - 'spec/requests/api/internal/base_spec.rb'
- - 'spec/requests/api/merge_requests_spec.rb'
- - 'spec/requests/api/project_import_spec.rb'
- - 'spec/requests/api/project_snapshots_spec.rb'
- - 'spec/requests/api/projects_spec.rb'
+ - 'spec/requests/api/graphql/project/fork_details_spec.rb'
+ - 'spec/requests/api/ml/mlflow_spec.rb'
- 'spec/requests/api/releases_spec.rb'
- - 'spec/requests/api/repositories_spec.rb'
- - 'spec/requests/api/settings_spec.rb'
- 'spec/requests/api/task_completion_status_spec.rb'
- - 'spec/requests/api/unleash_spec.rb'
- - 'spec/requests/git_http_spec.rb'
- 'spec/requests/groups/email_campaigns_controller_spec.rb'
- - 'spec/requests/jira_authorizations_spec.rb'
- - 'spec/requests/jira_connect/installations_controller_spec.rb'
- - 'spec/requests/lfs_http_spec.rb'
- - 'spec/serializers/blob_entity_spec.rb'
- - 'spec/serializers/integrations/harbor_serializers/artifact_entity_spec.rb'
- - 'spec/serializers/integrations/harbor_serializers/repository_entity_spec.rb'
- - 'spec/serializers/integrations/harbor_serializers/tag_entity_spec.rb'
- - 'spec/services/bulk_imports/create_pipeline_trackers_service_spec.rb'
- - 'spec/services/ci/create_pipeline_service/custom_yaml_tags_spec.rb'
- - 'spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb'
- - 'spec/services/ci/create_pipeline_service_spec.rb'
- - 'spec/services/ci/find_exposed_artifacts_service_spec.rb'
- - 'spec/services/ci/play_manual_stage_service_spec.rb'
- - 'spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb'
- - 'spec/services/clusters/agents/create_service_spec.rb'
- - 'spec/services/clusters/aws/authorize_role_service_spec.rb'
+ - 'spec/requests/projects/merge_requests/creations_spec.rb'
+ - 'spec/requests/pwa_controller_spec.rb'
+ - 'spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb'
+ - 'spec/rubocop/cop/usage_data/histogram_with_large_table_spec.rb'
+ - 'spec/rubocop/cop/usage_data/instrumentation_superclass_spec.rb'
+ - 'spec/rubocop/cop/usage_data/large_table_spec.rb'
+ - 'spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb'
+ - 'spec/services/ci/register_job_service_spec.rb'
- 'spec/services/clusters/update_service_spec.rb'
- - 'spec/services/commits/tag_service_spec.rb'
- - 'spec/services/database/consistency_check_service_spec.rb'
- - 'spec/services/git/branch_push_service_spec.rb'
- - 'spec/services/google_cloud/create_cloudsql_instance_service_spec.rb'
- - 'spec/services/import/fogbugz_service_spec.rb'
+ - 'spec/services/google_cloud/get_cloudsql_instances_service_spec.rb'
- 'spec/services/import/github_service_spec.rb'
- - 'spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_spec.rb'
- - 'spec/services/markdown_content_rewriter_service_spec.rb'
- - 'spec/services/merge_requests/build_service_spec.rb'
- - 'spec/services/merge_requests/create_service_spec.rb'
- - 'spec/services/merge_requests/get_urls_service_spec.rb'
- - 'spec/services/merge_requests/refresh_service_spec.rb'
- - 'spec/services/merge_requests/update_service_spec.rb'
- 'spec/services/metrics/dashboard/transient_embed_service_spec.rb'
- 'spec/services/notes/render_service_spec.rb'
- 'spec/services/packages/debian/parse_debian822_service_spec.rb'
- 'spec/services/projects/container_repository/delete_tags_service_spec.rb'
- 'spec/services/projects/create_from_template_service_spec.rb'
- - 'spec/services/projects/lfs_pointers/lfs_download_service_spec.rb'
- - 'spec/services/projects/operations/update_service_spec.rb'
- - 'spec/services/projects/update_service_spec.rb'
+ - 'spec/services/quick_actions/interpret_service_spec.rb'
- 'spec/services/service_ping/submit_service_ping_service_spec.rb'
- - 'spec/services/snippets/count_service_spec.rb'
- 'spec/sidekiq_cluster/sidekiq_cluster_spec.rb'
- - 'spec/support/atlassian/jira_connect/schemata.rb'
+ - 'spec/spam/concerns/has_spam_action_response_fields_spec.rb'
- 'spec/support/helpers/kubernetes_helpers.rb'
- - 'spec/support/helpers/login_helpers.rb'
- - 'spec/support/helpers/prometheus_helpers.rb'
- - 'spec/support/helpers/stub_object_storage.rb'
- 'spec/support/helpers/wiki_helpers.rb'
- 'spec/support/migrations_helpers/namespaces_helper.rb'
- 'spec/support/migrations_helpers/vulnerabilities_findings_helper.rb'
- - 'spec/support/shared_contexts/fixtures/analytics_shared_context.rb'
- 'spec/support/shared_contexts/lib/container_registry/client_shared_context.rb'
- - 'spec/support/shared_examples/graphql/spam_protection_shared_examples.rb'
- 'spec/support/shared_examples/harbor/artifacts_controller_shared_examples.rb'
- 'spec/support/shared_examples/harbor/repositories_controller_shared_examples.rb'
- 'spec/support/shared_examples/harbor/tags_controller_shared_examples.rb'
- - 'spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb'
- 'spec/support/shared_examples/models/clusters/prometheus_client_shared.rb'
- - 'spec/support/shared_examples/models/cycle_analytics_stage_shared_examples.rb'
- - 'spec/support/shared_examples/requests/rack_attack_shared_examples.rb'
- - 'spec/support_specs/graphql/arguments_spec.rb'
- - 'spec/support_specs/graphql/field_selection_spec.rb'
- - 'spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb'
+ - 'spec/support/shared_examples/requests/api/npm_packages_shared_examples.rb'
+ - 'spec/tasks/gitlab/backup_rake_spec.rb'
- 'spec/tooling/lib/tooling/kubernetes_client_spec.rb'
- - 'spec/views/projects/issues/_issue.html.haml_spec.rb'
- - 'spec/workers/ci/runners/reconcile_existing_runner_versions_cron_worker_spec.rb'
- - 'spec/workers/concerns/gitlab/github_import/object_importer_spec.rb'
+ - 'spec/views/layouts/_head.html.haml_spec.rb'
diff --git a/.rubocop_todo/layout/hash_alignment.yml b/.rubocop_todo/layout/hash_alignment.yml
index 7aa46e3fd05..f58e3fe0d60 100644
--- a/.rubocop_todo/layout/hash_alignment.yml
+++ b/.rubocop_todo/layout/hash_alignment.yml
@@ -1,6 +1,6 @@
---
# Cop supports --autocorrect.
Layout/HashAlignment:
+ Details: grace period
Exclude:
- 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
- - 'spec/serializers/environment_serializer_spec.rb'
diff --git a/.rubocop_todo/layout/line_continuation_leading_space.yml b/.rubocop_todo/layout/line_continuation_leading_space.yml
new file mode 100644
index 00000000000..14ab2e15857
--- /dev/null
+++ b/.rubocop_todo/layout/line_continuation_leading_space.yml
@@ -0,0 +1,75 @@
+---
+Layout/LineContinuationLeadingSpace:
+ Details: grace period
+ Exclude:
+ - 'app/graphql/resolvers/issues/base_resolver.rb'
+ - 'app/graphql/resolvers/work_items/types_resolver.rb'
+ - 'app/graphql/types/query_type.rb'
+ - 'app/helpers/application_settings_helper.rb'
+ - 'app/helpers/preferences_helper.rb'
+ - 'app/models/environment.rb'
+ - 'app/services/projects/container_repository/destroy_service.rb'
+ - 'config/initializers_before_autoloader/003_gc_compact.rb'
+ - 'ee/app/graphql/ee/mutations/issues/create.rb'
+ - 'ee/app/graphql/ee/types/merge_request_type.rb'
+ - 'ee/app/graphql/mutations/requirements_management/export_requirements.rb'
+ - 'ee/app/models/ci/minutes/notification.rb'
+ - 'ee/app/models/ee/group_group_link.rb'
+ - 'ee/app/models/ee/project_group_link.rb'
+ - 'ee/app/models/protected_environment.rb'
+ - 'ee/app/services/system_notes/epics_service.rb'
+ - 'ee/lib/ee/gitlab/ci/pipeline/quota/size.rb'
+ - 'ee/lib/ee/gitlab/git_access.rb'
+ - 'ee/lib/slack/block_kit/app_home_opened.rb'
+ - 'ee/lib/tasks/gitlab/geo.rake'
+ - 'ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb'
+ - 'ee/spec/features/gitlab_subscriptions/seat_count_alert_spec.rb'
+ - 'ee/spec/features/groups/members/manage_groups_spec.rb'
+ - 'ee/spec/features/pending_group_memberships_spec.rb'
+ - 'ee/spec/features/projects/members/manage_groups_spec.rb'
+ - 'ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/parsers/security/validators/schema_validator_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/size_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/size_spec.rb'
+ - 'ee/spec/lib/gitlab/git_access_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_environments_approval_required_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_deployment_approvals_metric_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/protected_environment_approval_rules_required_approvals_average_metric_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/protected_environments_required_approvals_average_metric_spec.rb'
+ - 'lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations.rb'
+ - 'lib/gitlab/ci/parsers/security/validators/schema_validator.rb'
+ - 'lib/gitlab/database/load_balancing/sidekiq_server_middleware.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/index_helpers.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb'
+ - 'lib/gitlab/github_import/importer/events/changed_reviewer.rb'
+ - 'lib/gitlab/import_export/project/import_task.rb'
+ - 'lib/gitlab/reference_counter.rb'
+ - 'lib/gitlab/tracking/standard_context.rb'
+ - 'qa/qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb'
+ - 'rubocop/cop/graphql/descriptions.rb'
+ - 'rubocop/cop/migration/add_columns_to_wide_tables.rb'
+ - 'rubocop/cop/migration/background_migrations.rb'
+ - 'rubocop/cop/migration/update_column_in_batches.rb'
+ - 'scripts/lib/glfm/parse_examples.rb'
+ - 'scripts/qa/testcases-check'
+ - 'spec/features/groups/show_spec.rb'
+ - 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
+ - 'spec/lib/gitlab/ci/ansi2html_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/sbom/validators/cyclonedx_schema_validator_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/validate_query_spec.rb'
+ - 'spec/lib/gitlab/reference_counter_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_direct_installations_count_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_proxy_installations_count_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb'
+ - 'spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb'
+ - 'spec/models/integrations/chat_message/pipeline_message_spec.rb'
+ - 'spec/services/feature_flags/update_service_spec.rb'
+ - 'spec/services/issues/build_service_spec.rb'
+ - 'spec/support/matchers/have_gitlab_http_status.rb'
+ - 'spec/support/shared_examples/features/sidebar_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/email/email_shared_examples.rb'
diff --git a/.rubocop_todo/layout/line_continuation_spacing.yml b/.rubocop_todo/layout/line_continuation_spacing.yml
new file mode 100644
index 00000000000..248922d7397
--- /dev/null
+++ b/.rubocop_todo/layout/line_continuation_spacing.yml
@@ -0,0 +1,224 @@
+---
+# Cop supports --autocorrect.
+Layout/LineContinuationSpacing:
+ Details: grace period
+ Exclude:
+ - 'app/controllers/concerns/controller_with_cross_project_access_check.rb'
+ - 'app/controllers/concerns/verifies_with_email.rb'
+ - 'app/controllers/projects/google_cloud/databases_controller.rb'
+ - 'app/graphql/gitlab_schema.rb'
+ - 'app/graphql/mutations/boards/issues/issue_move_list.rb'
+ - 'app/graphql/types/environment_type.rb'
+ - 'app/helpers/application_settings_helper.rb'
+ - 'app/helpers/projects_helper.rb'
+ - 'app/helpers/tags_helper.rb'
+ - 'app/helpers/tree_helper.rb'
+ - 'app/models/concerns/spammable.rb'
+ - 'app/models/environment.rb'
+ - 'app/models/integrations/base_third_party_wiki.rb'
+ - 'app/models/integrations/teamcity.rb'
+ - 'app/models/members/member_role.rb'
+ - 'app/models/work_items/parent_link.rb'
+ - 'app/services/feature_flags/update_service.rb'
+ - 'app/services/issues/build_service.rb'
+ - 'app/services/merge_requests/merge_service.rb'
+ - 'app/services/uploads/destroy_service.rb'
+ - 'app/services/users/email_verification/validate_token_service.rb'
+ - 'config/initializers_before_autoloader/003_gc_compact.rb'
+ - 'ee/app/components/namespaces/storage/pre_enforcement_alert_component.rb'
+ - 'ee/app/components/namespaces/storage/user_pre_enforcement_alert_component.rb'
+ - 'ee/app/controllers/ee/ldap/omniauth_callbacks_controller.rb'
+ - 'ee/app/controllers/users/identity_verification_controller.rb'
+ - 'ee/app/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create.rb'
+ - 'ee/app/graphql/mutations/requirements_management/export_requirements.rb'
+ - 'ee/app/graphql/mutations/security_policy/assign_security_policy_project.rb'
+ - 'ee/app/graphql/resolvers/security_orchestration/scan_execution_policy_resolver.rb'
+ - 'ee/app/graphql/resolvers/vulnerabilities_resolver.rb'
+ - 'ee/app/graphql/resolvers/vulnerability_severities_count_resolver.rb'
+ - 'ee/app/graphql/types/geo/geo_node_type.rb'
+ - 'ee/app/graphql/types/requirements_management/requirement_type.rb'
+ - 'ee/app/helpers/push_rules_helper.rb'
+ - 'ee/app/models/ee/epic.rb'
+ - 'ee/app/models/ee/group_group_link.rb'
+ - 'ee/app/models/ee/project_group_link.rb'
+ - 'ee/app/models/ee/vulnerability.rb'
+ - 'ee/app/models/incident_management/oncall_shift.rb'
+ - 'ee/app/services/audit_events/protected_branch_audit_event_service.rb'
+ - 'ee/app/services/boards/epic_lists/destroy_service.rb'
+ - 'ee/app/services/epics/epic_links/create_service.rb'
+ - 'ee/app/services/group_saml/saml_group_links/create_service.rb'
+ - 'ee/app/services/phone_verification/telesign_client/base_service.rb'
+ - 'ee/app/services/phone_verification/telesign_client/risk_score_service.rb'
+ - 'ee/app/services/phone_verification/users/send_verification_code_service.rb'
+ - 'ee/app/services/phone_verification/users/verify_code_service.rb'
+ - 'ee/lib/api/experiments.rb'
+ - 'ee/lib/api/ldap_group_links.rb'
+ - 'ee/lib/api/vulnerability_findings.rb'
+ - 'ee/lib/ee/gitlab/auth/ldap/access.rb'
+ - 'ee/lib/ee/gitlab/ci/pipeline/quota/activity.rb'
+ - 'ee/lib/ee/gitlab/ci/pipeline/quota/size.rb'
+ - 'ee/lib/ee/gitlab/git_access.rb'
+ - 'ee/lib/tasks/gitlab/geo.rake'
+ - 'ee/spec/components/namespaces/free_user_cap/usage_quota_trial_alert_component_spec.rb'
+ - 'ee/spec/controllers/groups/group_members_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/configuration_controller_spec.rb'
+ - 'ee/spec/features/admin/admin_emails_spec.rb'
+ - 'ee/spec/features/admin/licenses/admin_adds_license_spec.rb'
+ - 'ee/spec/features/groups/group_overview_spec.rb'
+ - 'ee/spec/features/groups/members/manage_groups_spec.rb'
+ - 'ee/spec/features/groups_spec.rb'
+ - 'ee/spec/features/projects/members/manage_groups_spec.rb'
+ - 'ee/spec/features/protected_branches_spec.rb'
+ - 'ee/spec/features/protected_tags_spec.rb'
+ - 'ee/spec/features/registrations/email_confirmation_spec.rb'
+ - 'ee/spec/features/users/identity_verification_spec.rb'
+ - 'ee/spec/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create_spec.rb'
+ - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/audit_events/streaming/headers/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb'
+ - 'ee/spec/helpers/ee/labels_helper_spec.rb'
+ - 'ee/spec/helpers/push_rules_helper_spec.rb'
+ - 'ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/parsers/security/validators/schema_validator_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/size_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/size_spec.rb'
+ - 'ee/spec/lib/gitlab/git_access_spec.rb'
+ - 'ee/spec/mailers/ee/emails/identity_verification_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/epics/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/epics/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/promote_to_epic_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/set_epic_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/set_weight_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/initialize_product_analytics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/set_compliance_framework_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/quality_management/test_cases/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/requirements_management/create_requirement_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security/finding/create_issue_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/users/abuse/namespace_bans/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/create_external_issue_link_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/destroy_external_issue_link_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/finding_dismiss_spec.rb'
+ - 'ee/spec/requests/users/identity_verification_controller_spec.rb'
+ - 'ee/spec/services/boards/epic_lists/destroy_service_spec.rb'
+ - 'ee/spec/services/epic_issues/create_service_spec.rb'
+ - 'ee/spec/services/epics/epic_links/create_service_spec.rb'
+ - 'ee/spec/services/phone_verification/telesign_client/risk_score_service_spec.rb'
+ - 'ee/spec/services/phone_verification/telesign_client/send_verification_code_service_spec.rb'
+ - 'ee/spec/services/phone_verification/users/send_verification_code_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/ci_configuration_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/legacy_ci_configuration_service_spec.rb'
+ - 'ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb'
+ - 'ee/spec/workers/ee/issuable_export_csv_worker_spec.rb'
+ - 'lib/api/dependency_proxy.rb'
+ - 'lib/api/error_tracking/client_keys.rb'
+ - 'lib/api/error_tracking/project_settings.rb'
+ - 'lib/api/go_proxy.rb'
+ - 'lib/api/groups.rb'
+ - 'lib/api/issue_links.rb'
+ - 'lib/api/metrics/dashboard/annotations.rb'
+ - 'lib/api/ml/mlflow.rb'
+ - 'lib/gitlab/auth/user_access_denied_reason.rb'
+ - 'lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations.rb'
+ - 'lib/gitlab/checks/tag_check.rb'
+ - 'lib/gitlab/ci/parsers/security/validators/schema_validator.rb'
+ - 'lib/gitlab/config_checker/puma_rugged_checker.rb'
+ - 'lib/gitlab/database/background_migration/batched_migration_runner.rb'
+ - 'lib/gitlab/database/load_balancing/sidekiq_server_middleware.rb'
+ - 'lib/gitlab/database/migration_helpers.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers.rb'
+ - 'lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb'
+ - 'lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces.rb'
+ - 'lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects.rb'
+ - 'lib/gitlab/database/shared_model.rb'
+ - 'lib/gitlab/i18n/po_linter.rb'
+ - 'qa/qa/specs/features/ee/api/9_data_stores/elasticsearch/nightly_elasticsearch_test_spec.rb'
+ - 'qa/qa/support/matchers/eventually_matcher.rb'
+ - 'qa/qa/support/page_error_checker.rb'
+ - 'qa/qa/tools/test_resources_handler.rb'
+ - 'qa/spec/resource/user_spec.rb'
+ - 'qa/spec/support/page_error_checker_spec.rb'
+ - 'rubocop/cop/graphql/authorize_types.rb'
+ - 'rubocop/cop/graphql/descriptions.rb'
+ - 'rubocop/cop/graphql/graphql_name_position.rb'
+ - 'rubocop/cop/migration/background_migrations.rb'
+ - 'rubocop/cop/performance/ar_exists_and_present_blank.rb'
+ - 'rubocop/cop/redis_queue_usage.rb'
+ - 'scripts/create-pipeline-failure-incident.rb'
+ - 'scripts/generate-failed-pipeline-slack-message.rb'
+ - 'scripts/qa/testcases-check'
+ - 'spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb'
+ - 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
+ - 'spec/features/projects/files/user_browses_files_spec.rb'
+ - 'spec/features/projects/files/user_creates_directory_spec.rb'
+ - 'spec/features/projects/files/user_creates_files_spec.rb'
+ - 'spec/features/projects/files/user_deletes_files_spec.rb'
+ - 'spec/features/projects/files/user_edits_files_spec.rb'
+ - 'spec/features/projects/files/user_replaces_files_spec.rb'
+ - 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
+ - 'spec/features/u2f_spec.rb'
+ - 'spec/features/users/email_verification_on_login_spec.rb'
+ - 'spec/features/users/login_spec.rb'
+ - 'spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb'
+ - 'spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb'
+ - 'spec/lib/gitlab/ci/trace/stream_spec.rb'
+ - 'spec/lib/gitlab/closing_issue_extractor_spec.rb'
+ - 'spec/lib/gitlab/config_checker/puma_rugged_checker_spec.rb'
+ - 'spec/lib/gitlab/database/background_migration/batched_migration_runner_spec.rb'
+ - 'spec/lib/gitlab/git_access_spec.rb'
+ - 'spec/lib/gitlab/github_import/markdown_text_spec.rb'
+ - 'spec/lib/gitlab/github_import/representation/issue_event_spec.rb'
+ - 'spec/lib/gitlab/metrics/dashboard/stages/metric_endpoint_inserter_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_direct_installations_count_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_proxy_installations_count_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb'
+ - 'spec/lib/gitlab/utils/gzip_spec.rb'
+ - 'spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb'
+ - 'spec/mailers/emails/identity_verification_spec.rb'
+ - 'spec/models/diff_note_spec.rb'
+ - 'spec/models/integrations/base_third_party_wiki_spec.rb'
+ - 'spec/models/integrations/chat_message/merge_message_spec.rb'
+ - 'spec/models/integrations/chat_message/push_message_spec.rb'
+ - 'spec/models/integrations/chat_message/wiki_page_message_spec.rb'
+ - 'spec/models/member_spec.rb'
+ - 'spec/models/members/member_role_spec.rb'
+ - 'spec/models/operations/feature_flags_client_spec.rb'
+ - 'spec/models/project_spec.rb'
+ - 'spec/requests/api/graphql/mutations/clusters/agent_tokens/agent_tokens/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/clusters/agents/delete_spec.rb'
+ - 'spec/requests/api/graphql/mutations/uploads/delete_spec.rb'
+ - 'spec/requests/api/group_labels_spec.rb'
+ - 'spec/requests/api/groups_spec.rb'
+ - 'spec/requests/api/labels_spec.rb'
+ - 'spec/requests/api/projects_spec.rb'
+ - 'spec/requests/api/users_spec.rb'
+ - 'spec/requests/verifies_with_email_spec.rb'
+ - 'spec/services/feature_flags/update_service_spec.rb'
+ - 'spec/services/issues/build_service_spec.rb'
+ - 'spec/services/merge_requests/merge_service_spec.rb'
+ - 'spec/services/snippets/create_service_spec.rb'
+ - 'spec/services/uploads/destroy_service_spec.rb'
+ - 'spec/services/users/email_verification/validate_token_service_spec.rb'
+ - 'spec/services/users/migrate_records_to_ghost_user_service_spec.rb'
+ - 'spec/support/helpers/redis_without_keys.rb'
+ - 'spec/support/shared_examples/features/project_upload_files_shared_examples.rb'
+ - 'spec/support/shared_examples/harbor/artifacts_controller_shared_examples.rb'
+ - 'spec/support/shared_examples/harbor/tags_controller_shared_examples.rb'
+ - 'spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/diff_discussions_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/discussions_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/graphql/mutations/subscription_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/notes_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/resolvable_discussions_shared_examples.rb'
+ - 'spec/uploaders/file_mover_spec.rb'
+ - 'spec/views/devise/shared/_signup_box.html.haml_spec.rb'
+ - 'spec/views/projects/issues/show.html.haml_spec.rb'
+ - 'spec/views/projects/pages/show.html.haml_spec.rb'
diff --git a/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml b/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml
new file mode 100644
index 00000000000..b774d92d4ee
--- /dev/null
+++ b/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml
@@ -0,0 +1,358 @@
+---
+# Cop supports --autocorrect.
+Layout/LineEndStringConcatenationIndentation:
+ Details: grace period
+ Exclude:
+ - 'app/controllers/admin/application_settings_controller.rb'
+ - 'app/controllers/concerns/verifies_with_email.rb'
+ - 'app/finders/snippets_finder.rb'
+ - 'app/graphql/mutations/ci/project_ci_cd_settings_update.rb'
+ - 'app/graphql/mutations/ci/runner/bulk_delete.rb'
+ - 'app/graphql/mutations/environments/canary_ingress/update.rb'
+ - 'app/graphql/resolvers/ci/runner_projects_resolver.rb'
+ - 'app/graphql/resolvers/projects_resolver.rb'
+ - 'app/graphql/types/ci/ci_cd_setting_type.rb'
+ - 'app/graphql/types/ci/config/include_type.rb'
+ - 'app/graphql/types/ci/runner_membership_filter_enum.rb'
+ - 'app/graphql/types/ci/runner_status_enum.rb'
+ - 'app/graphql/types/issue_type.rb'
+ - 'app/graphql/types/user_interface.rb'
+ - 'app/helpers/application_settings_helper.rb'
+ - 'app/helpers/members_helper.rb'
+ - 'app/helpers/preferences_helper.rb'
+ - 'app/helpers/projects/project_members_helper.rb'
+ - 'app/helpers/projects_helper.rb'
+ - 'app/mailers/emails/projects.rb'
+ - 'app/models/application_setting.rb'
+ - 'app/models/concerns/bulk_insert_safe.rb'
+ - 'app/models/concerns/spammable.rb'
+ - 'app/models/environment.rb'
+ - 'app/models/integrations/pivotaltracker.rb'
+ - 'app/models/members/member_role.rb'
+ - 'app/models/merge_request_diff_commit.rb'
+ - 'app/models/postgresql/replication_slot.rb'
+ - 'app/presenters/packages/npm/package_presenter.rb'
+ - 'app/services/commits/change_service.rb'
+ - 'app/services/concerns/ci/job_token_scope/edit_scope_validations.rb'
+ - 'app/services/feature_flags/update_service.rb'
+ - 'app/services/projects/after_rename_service.rb'
+ - 'app/services/projects/container_repository/destroy_service.rb'
+ - 'app/services/repositories/changelog_service.rb'
+ - 'app/services/users/email_verification/validate_token_service.rb'
+ - 'app/workers/run_pipeline_schedule_worker.rb'
+ - 'config/initializers/validate_database_config.rb'
+ - 'config/initializers/wikicloth_disable_lua_patch.rb'
+ - 'config/initializers/wikicloth_redos_patch.rb'
+ - 'config/initializers/wikicloth_ruby_3_patch.rb'
+ - 'config/initializers_before_autoloader/003_gc_compact.rb'
+ - 'danger/ci_templates/Dangerfile'
+ - 'danger/database/Dangerfile'
+ - 'db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb'
+ - 'db/post_migrate/20220425121410_add_temporary_index_for_backfill_integrations_enable_ssl_verification.rb'
+ - 'db/post_migrate/20220525131624_drop_temporary_index_for_backfill_integrations_enable_ssl_verification.rb'
+ - 'db/post_migrate/20220920081631_prepare_ci_builds_metadata_for_partitioning_primary_key.rb'
+ - 'ee/app/components/namespaces/free_user_cap/usage_quota_alert_component.rb'
+ - 'ee/app/controllers/admin/licenses_controller.rb'
+ - 'ee/app/controllers/concerns/insights_actions.rb'
+ - 'ee/app/controllers/ee/ldap/omniauth_callbacks_controller.rb'
+ - 'ee/app/controllers/users/identity_verification_controller.rb'
+ - 'ee/app/finders/geo/framework_registry_finder.rb'
+ - 'ee/app/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create.rb'
+ - 'ee/app/graphql/mutations/dast_scanner_profiles/create.rb'
+ - 'ee/app/graphql/mutations/issues/set_epic.rb'
+ - 'ee/app/graphql/mutations/issues/set_escalation_policy.rb'
+ - 'ee/app/graphql/mutations/issues/set_weight.rb'
+ - 'ee/app/graphql/mutations/requirements_management/export_requirements.rb'
+ - 'ee/app/graphql/mutations/security_policy/assign_security_policy_project.rb'
+ - 'ee/app/graphql/resolvers/analytics/contribution_analytics/contributions_resolver.rb'
+ - 'ee/app/graphql/resolvers/security_orchestration/scan_execution_policy_resolver.rb'
+ - 'ee/app/graphql/types/pipeline_security_report_finding_type.rb'
+ - 'ee/app/helpers/push_rules_helper.rb'
+ - 'ee/app/models/app_sec/fuzzing/api/ci_configuration.rb'
+ - 'ee/app/models/ci/minutes/notification.rb'
+ - 'ee/app/models/ee/group_group_link.rb'
+ - 'ee/app/models/ee/namespace/storage/notification.rb'
+ - 'ee/app/models/ee/vulnerability.rb'
+ - 'ee/app/services/boards/epic_lists/destroy_service.rb'
+ - 'ee/app/services/ee/admin/set_feature_flag_service.rb'
+ - 'ee/app/services/ee/auth/container_registry_authentication_service.rb'
+ - 'ee/app/services/ee/issues/move_service.rb'
+ - 'ee/app/services/ee/resource_access_tokens/revoke_service.rb'
+ - 'ee/app/services/merge_trains/create_pipeline_service.rb'
+ - 'ee/app/services/system_notes/epics_service.rb'
+ - 'ee/app/workers/concerns/elastic/migration_obsolete.rb'
+ - 'ee/elastic/migrate/20220613120500_migrate_commits_to_separate_index.rb'
+ - 'ee/lib/api/experiments.rb'
+ - 'ee/lib/api/ldap_group_links.rb'
+ - 'ee/lib/ee/gitlab/auth/ldap/access.rb'
+ - 'ee/lib/ee/gitlab/ci/pipeline/quota/size.rb'
+ - 'ee/lib/ee/gitlab/git_access.rb'
+ - 'ee/lib/ee/gitlab/namespace_storage_size_error_message.rb'
+ - 'ee/lib/gitlab/manual_quarterly_co_term_banner.rb'
+ - 'ee/lib/slack/block_kit/app_home_opened.rb'
+ - 'ee/lib/tasks/gitlab/geo.rake'
+ - 'ee/spec/components/namespaces/free_user_cap/enforcement_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/enforcement_at_limit_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/non_owner_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/notification_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/usage_quota_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/usage_quota_trial_alert_component_spec.rb'
+ - 'ee/spec/controllers/admin/licenses_controller_spec.rb'
+ - 'ee/spec/controllers/groups/group_members_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/configuration_controller_spec.rb'
+ - 'ee/spec/features/admin/admin_emails_spec.rb'
+ - 'ee/spec/features/admin/licenses/admin_adds_license_spec.rb'
+ - 'ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb'
+ - 'ee/spec/features/groups/group_overview_spec.rb'
+ - 'ee/spec/features/groups/members/manage_groups_spec.rb'
+ - 'ee/spec/features/groups_spec.rb'
+ - 'ee/spec/features/pending_group_memberships_spec.rb'
+ - 'ee/spec/features/projects/members/manage_groups_spec.rb'
+ - 'ee/spec/features/registrations/email_confirmation_spec.rb'
+ - 'ee/spec/features/users/identity_verification_spec.rb'
+ - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/audit_events/streaming/headers/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/boards/lists/update_limit_metrics_spec.rb'
+ - 'ee/spec/helpers/ee/labels_helper_spec.rb'
+ - 'ee/spec/helpers/push_rules_helper_spec.rb'
+ - 'ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/parsers/security/validators/schema_validator_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/size_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/namespace_storage_size_error_message_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/size_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/api_security_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/api_security_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/container_scanning_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/dast_api_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/dast_api_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/dast_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/dependency_scanning_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/license_scanning_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/sast_iac_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/secret_detection_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/manual_quarterly_co_term_banner_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_deployment_approvals_metric_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/protected_environment_approval_rules_required_approvals_average_metric_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/protected_environments_required_approvals_average_metric_spec.rb'
+ - 'ee/spec/mailers/ee/emails/identity_verification_spec.rb'
+ - 'ee/spec/requests/api/analytics/product_analytics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/lists/update_limit_metrics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/update_epic_user_preferences_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security/finding/create_issue_spec.rb'
+ - 'ee/spec/requests/users/identity_verification_controller_spec.rb'
+ - 'ee/spec/services/boards/epic_lists/destroy_service_spec.rb'
+ - 'ee/spec/services/ee/auth/container_registry_authentication_service_spec.rb'
+ - 'ee/spec/services/ee/resource_events/merge_into_notes_service_spec.rb'
+ - 'ee/spec/services/epics/epic_links/create_service_spec.rb'
+ - 'ee/spec/services/geo/container_repository_sync_spec.rb'
+ - 'ee/spec/services/merge_trains/create_pipeline_service_spec.rb'
+ - 'ee/spec/services/users/abuse/git_abuse/application_throttle_service_spec.rb'
+ - 'ee/spec/support/shared_examples/finders/geo/framework_registry_finder_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/models/license_shared_examples.rb'
+ - 'ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb'
+ - 'ee/spec/views/groups/billings/index.html.haml_spec.rb'
+ - 'ee/spec/workers/ee/issuable_export_csv_worker_spec.rb'
+ - 'lib/api/ci/runners.rb'
+ - 'lib/api/dependency_proxy.rb'
+ - 'lib/api/error_tracking/client_keys.rb'
+ - 'lib/api/error_tracking/project_settings.rb'
+ - 'lib/api/go_proxy.rb'
+ - 'lib/api/helpers/pagination_strategies.rb'
+ - 'lib/api/issue_links.rb'
+ - 'lib/api/metrics/dashboard/annotations.rb'
+ - 'lib/backup/manager.rb'
+ - 'lib/banzai/filter/spaced_link_filter.rb'
+ - 'lib/feature/definition.rb'
+ - 'lib/gitlab/audit/type/definition.rb'
+ - 'lib/gitlab/auth.rb'
+ - 'lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations.rb'
+ - 'lib/gitlab/changelog/config.rb'
+ - 'lib/gitlab/checks/tag_check.rb'
+ - 'lib/gitlab/ci/parsers/security/validators/schema_validator.rb'
+ - 'lib/gitlab/ci/pipeline/chain/populate.rb'
+ - 'lib/gitlab/ci/pipeline/seed/build.rb'
+ - 'lib/gitlab/config_checker/puma_rugged_checker.rb'
+ - 'lib/gitlab/database/load_balancing/sidekiq_server_middleware.rb'
+ - 'lib/gitlab/database/migration_helpers.rb'
+ - 'lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb'
+ - 'lib/gitlab/database/migrations/background_migration_helpers.rb'
+ - 'lib/gitlab/database/migrations/batched_background_migration_helpers.rb'
+ - 'lib/gitlab/database/partitioning/partition_manager.rb'
+ - 'lib/gitlab/database/partitioning/sliding_list_strategy.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/index_helpers.rb'
+ - 'lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb'
+ - 'lib/gitlab/database/query_analyzers/prevent_cross_database_modification.rb'
+ - 'lib/gitlab/database/schema_helpers.rb'
+ - 'lib/gitlab/database/shared_model.rb'
+ - 'lib/gitlab/github_import/importer/events/changed_reviewer.rb'
+ - 'lib/gitlab/graphql/authorize/authorize_resource.rb'
+ - 'lib/gitlab/i18n/po_linter.rb'
+ - 'lib/gitlab/import_export/project/import_task.rb'
+ - 'lib/gitlab/path_regex.rb'
+ - 'lib/gitlab/reference_counter.rb'
+ - 'lib/gitlab/regex.rb'
+ - 'lib/gitlab/seeders/ci/runner/runner_fleet_seeder.rb'
+ - 'lib/gitlab/slash_commands/presenters/run.rb'
+ - 'lib/gitlab/tracking/standard_context.rb'
+ - 'lib/tasks/gitlab/db/validate_config.rake'
+ - 'lib/tasks/gitlab/storage.rake'
+ - 'qa/qa/ee/page/project/settings/services/jira.rb'
+ - 'qa/qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb'
+ - 'qa/qa/support/matchers/eventually_matcher.rb'
+ - 'qa/qa/support/system_logs/kibana.rb'
+ - 'qa/qa/tools/revoke_user_personal_access_tokens.rb'
+ - 'qa/spec/support/page_error_checker_spec.rb'
+ - 'qa/spec/support/system_logs/kibana_spec.rb'
+ - 'rubocop/cop/active_record_association_reload.rb'
+ - 'rubocop/cop/api/grape_array_missing_coerce.rb'
+ - 'rubocop/cop/avoid_becomes.rb'
+ - 'rubocop/cop/avoid_keyword_arguments_in_sidekiq_workers.rb'
+ - 'rubocop/cop/database/establish_connection.rb'
+ - 'rubocop/cop/destroy_all.rb'
+ - 'rubocop/cop/gitlab/avoid_feature_get.rb'
+ - 'rubocop/cop/gitlab/change_timezone.rb'
+ - 'rubocop/cop/gitlab/keys_first_and_values_first.rb'
+ - 'rubocop/cop/gitlab/rails_logger.rb'
+ - 'rubocop/cop/gitlab/rspec/avoid_setup.rb'
+ - 'rubocop/cop/graphql/descriptions.rb'
+ - 'rubocop/cop/graphql/resolver_type.rb'
+ - 'rubocop/cop/group_public_or_visible_to_user.rb'
+ - 'rubocop/cop/ignored_columns.rb'
+ - 'rubocop/cop/inject_enterprise_edition_module.rb'
+ - 'rubocop/cop/migration/add_concurrent_index.rb'
+ - 'rubocop/cop/migration/add_limit_to_text_columns.rb'
+ - 'rubocop/cop/migration/create_table_with_foreign_keys.rb'
+ - 'rubocop/cop/migration/prevent_strings.rb'
+ - 'rubocop/cop/migration/remove_concurrent_index.rb'
+ - 'rubocop/cop/migration/update_column_in_batches.rb'
+ - 'rubocop/cop/migration/with_lock_retries_with_change.rb'
+ - 'rubocop/cop/performance/active_record_subtransaction_methods.rb'
+ - 'rubocop/cop/performance/active_record_subtransactions.rb'
+ - 'rubocop/cop/performance/ar_count_each.rb'
+ - 'rubocop/cop/performance/ar_exists_and_present_blank.rb'
+ - 'rubocop/cop/performance/readlines_each.rb'
+ - 'rubocop/cop/project_path_helper.rb'
+ - 'rubocop/cop/redis_queue_usage.rb'
+ - 'rubocop/cop/rspec/factory_bot/inline_association.rb'
+ - 'rubocop/cop/rspec/factory_bot/strategy_in_callback.rb'
+ - 'rubocop/cop/rspec/have_gitlab_http_status.rb'
+ - 'rubocop/cop/sidekiq_api_usage.rb'
+ - 'rubocop/cop/user_admin.rb'
+ - 'scripts/create-pipeline-failure-incident.rb'
+ - 'scripts/generate-failed-pipeline-slack-message.rb'
+ - 'scripts/lib/glfm/parse_examples.rb'
+ - 'scripts/lib/glfm/update_example_snapshots.rb'
+ - 'scripts/lib/glfm/update_specification.rb'
+ - 'scripts/lib/glfm/verify_all_generated_files_are_up_to_date.rb'
+ - 'scripts/packages/automated_cleanup.rb'
+ - 'spec/contracts/provider_specs/helpers/provider/contract_source_helper_spec.rb'
+ - 'spec/controllers/graphql_controller_spec.rb'
+ - 'spec/controllers/projects/deploy_keys_controller_spec.rb'
+ - 'spec/features/groups/show_spec.rb'
+ - 'spec/features/projects/files/user_browses_files_spec.rb'
+ - 'spec/features/projects/files/user_creates_directory_spec.rb'
+ - 'spec/features/projects/files/user_creates_files_spec.rb'
+ - 'spec/features/projects/files/user_deletes_files_spec.rb'
+ - 'spec/features/projects/files/user_replaces_files_spec.rb'
+ - 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
+ - 'spec/features/projects/pipelines/pipeline_spec.rb'
+ - 'spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb'
+ - 'spec/helpers/markup_helper_spec.rb'
+ - 'spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb'
+ - 'spec/lib/banzai/filter/truncate_visible_filter_spec.rb'
+ - 'spec/lib/gitlab/background_migration/batched_migration_job_spec.rb'
+ - 'spec/lib/gitlab/ci/ansi2html_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/sbom/validators/cyclonedx_schema_validator_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb'
+ - 'spec/lib/gitlab/ci/status/bridge/factory_spec.rb'
+ - 'spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb'
+ - 'spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb'
+ - 'spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb'
+ - 'spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb'
+ - 'spec/lib/gitlab/ci/templates/npm_spec.rb'
+ - 'spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb'
+ - 'spec/lib/gitlab/database/background_migration/batched_migration_runner_spec.rb'
+ - 'spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb'
+ - 'spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb'
+ - 'spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
+ - 'spec/lib/gitlab/github_import/markdown_text_spec.rb'
+ - 'spec/lib/gitlab/github_import/representation/issue_event_spec.rb'
+ - 'spec/lib/gitlab/insecure_key_fingerprint_spec.rb'
+ - 'spec/lib/gitlab/metrics/dashboard/stages/metric_endpoint_inserter_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/validate_query_spec.rb'
+ - 'spec/lib/gitlab/redis/multi_store_spec.rb'
+ - 'spec/lib/gitlab/reference_counter_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_direct_installations_count_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_proxy_installations_count_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb'
+ - 'spec/lib/gitlab/utils/gzip_spec.rb'
+ - 'spec/mailers/emails/identity_verification_spec.rb'
+ - 'spec/mailers/emails/projects_spec.rb'
+ - 'spec/models/active_session_spec.rb'
+ - 'spec/models/integrations/chat_message/note_message_spec.rb'
+ - 'spec/models/integrations/chat_message/pipeline_message_spec.rb'
+ - 'spec/models/integrations/chat_message/push_message_spec.rb'
+ - 'spec/models/integrations/chat_message/wiki_page_message_spec.rb'
+ - 'spec/models/member_spec.rb'
+ - 'spec/models/members/member_role_spec.rb'
+ - 'spec/models/operations/feature_flags_client_spec.rb'
+ - 'spec/models/ssh_host_key_spec.rb'
+ - 'spec/presenters/ci/pipeline_presenter_spec.rb'
+ - 'spec/presenters/deploy_key_presenter_spec.rb'
+ - 'spec/presenters/key_presenter_spec.rb'
+ - 'spec/presenters/releases/link_presenter_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_schedule_delete_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_schedule_play_spec.rb'
+ - 'spec/requests/api/graphql/mutations/clusters/agents/delete_spec.rb'
+ - 'spec/requests/api/releases_spec.rb'
+ - 'spec/requests/api/users_spec.rb'
+ - 'spec/requests/self_monitoring_project_spec.rb'
+ - 'spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb'
+ - 'spec/rubocop/cop/group_public_or_visible_to_user_spec.rb'
+ - 'spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb'
+ - 'spec/scripts/lib/glfm/update_example_snapshots_spec.rb'
+ - 'spec/serializers/pipeline_serializer_spec.rb'
+ - 'spec/services/alert_management/alerts/update_service_spec.rb'
+ - 'spec/services/ci/create_downstream_pipeline_service_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/rules_spec.rb'
+ - 'spec/services/ci/create_pipeline_service_spec.rb'
+ - 'spec/services/ci/job_artifacts/delete_service_spec.rb'
+ - 'spec/services/preview_markdown_service_spec.rb'
+ - 'spec/services/prometheus/proxy_variable_substitution_service_spec.rb'
+ - 'spec/services/snippets/create_service_spec.rb'
+ - 'spec/services/users/email_verification/validate_token_service_spec.rb'
+ - 'spec/services/work_items/parent_links/create_service_spec.rb'
+ - 'spec/support/before_all_adapter.rb'
+ - 'spec/support/helpers/database/multiple_databases_helpers.rb'
+ - 'spec/support/helpers/redis_without_keys.rb'
+ - 'spec/support/matchers/have_gitlab_http_status.rb'
+ - 'spec/support/memory_instrumentation_helper.rb'
+ - 'spec/support/shared_examples/features/project_upload_files_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/email/email_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/notes_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/self_monitoring_shared_examples.rb'
+ - 'spec/tooling/lib/tooling/kubernetes_client_spec.rb'
+ - 'spec/uploaders/file_mover_spec.rb'
+ - 'spec/views/devise/shared/_signup_box.html.haml_spec.rb'
+ - 'spec/views/projects/pages/show.html.haml_spec.rb'
+ - 'spec/workers/integrations/irker_worker_spec.rb'
diff --git a/.rubocop_todo/layout/parameter_alignment.yml b/.rubocop_todo/layout/parameter_alignment.yml
new file mode 100644
index 00000000000..3942132a1b2
--- /dev/null
+++ b/.rubocop_todo/layout/parameter_alignment.yml
@@ -0,0 +1,20 @@
+---
+# Cop supports --autocorrect.
+Layout/ParameterAlignment:
+ Details: grace period
+ Exclude:
+ - 'ee/spec/lib/ee/gitlab/background_migration/drop_invalid_remediations_spec.rb'
+ - 'lib/gitlab/cross_project_access.rb'
+ - 'lib/gitlab/data_builder/push.rb'
+ - 'spec/lib/gitlab/background_migration/drop_invalid_vulnerabilities_spec.rb'
+ - 'spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb'
+ - 'spec/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings_spec.rb'
+ - 'spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb'
+ - 'spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb'
+ - 'spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb'
+ - 'spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb'
+ - 'spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb'
+ - 'spec/support/helpers/content_security_policy_helpers.rb'
+ - 'spec/support/helpers/migrations_helpers/vulnerabilities_helper.rb'
+ - 'spec/support/helpers/repo_helpers.rb'
+ - 'spec/support/helpers/stub_object_storage.rb'
diff --git a/.rubocop_todo/lint/ambiguous_regexp_literal.yml b/.rubocop_todo/lint/ambiguous_regexp_literal.yml
new file mode 100644
index 00000000000..c3236776be2
--- /dev/null
+++ b/.rubocop_todo/lint/ambiguous_regexp_literal.yml
@@ -0,0 +1,95 @@
+---
+# Cop supports --autocorrect.
+Lint/AmbiguousRegexpLiteral:
+ Details: grace period
+ Exclude:
+ - 'ee/lib/ee/gitlab/auth/ldap/group.rb'
+ - 'ee/spec/controllers/groups/sso_controller_spec.rb'
+ - 'ee/spec/controllers/projects/mirrors_controller_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/status/build/manual_spec.rb'
+ - 'ee/spec/lib/gitlab/insights/executors/dora_executor_spec.rb'
+ - 'ee/spec/lib/gitlab/web_ide/config/entry/schema_spec.rb'
+ - 'ee/spec/lib/gitlab/web_ide/config/entry/schemas_spec.rb'
+ - 'ee/spec/mailers/ee/emails/profile_spec.rb'
+ - 'ee/spec/models/push_rule_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/destroy_spec.rb'
+ - 'ee/spec/serializers/pipeline_serializer_spec.rb'
+ - 'ee/spec/services/analytics/cycle_analytics/aggregator_service_spec.rb'
+ - 'ee/spec/services/ee/members/create_service_spec.rb'
+ - 'ee/spec/services/group_saml/saml_group_links/create_service_spec.rb'
+ - 'ee/spec/views/admin/dashboard/index.html.haml_spec.rb'
+ - 'ee/spec/views/admin/users/_credit_card_info.html.haml_spec.rb'
+ - 'ee/spec/views/admin/users/show.html.haml_spec.rb'
+ - 'ee/spec/views/shared/_clone_panel.html.haml_spec.rb'
+ - 'lib/api/features.rb'
+ - 'qa/spec/page/element_spec.rb'
+ - 'spec/components/pajamas/avatar_component_spec.rb'
+ - 'spec/features/atom/users_spec.rb'
+ - 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
+ - 'spec/features/issues/user_creates_issue_spec.rb'
+ - 'spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb'
+ - 'spec/helpers/labels_helper_spec.rb'
+ - 'spec/helpers/users_helper_spec.rb'
+ - 'spec/helpers/visibility_level_helper_spec.rb'
+ - 'spec/initializers/direct_upload_support_spec.rb'
+ - 'spec/initializers/validate_database_config_spec.rb'
+ - 'spec/lib/banzai/filter/references/label_reference_filter_spec.rb'
+ - 'spec/lib/feature_spec.rb'
+ - 'spec/lib/gitlab/auth/user_access_denied_reason_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/bridge_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/image_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/imageable_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/job_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/key_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/policy_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/ports_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/processable_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/root_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/service_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/trigger_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/create_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb'
+ - 'spec/lib/gitlab/ci/status/build/manual_spec.rb'
+ - 'spec/lib/gitlab/composer/version_index_spec.rb'
+ - 'spec/lib/gitlab/config/entry/validator_spec.rb'
+ - 'spec/lib/gitlab/config/entry/validators_spec.rb'
+ - 'spec/lib/gitlab/database/migration_helpers/restrict_gitlab_schema_spec.rb'
+ - 'spec/lib/gitlab/database/migration_helpers/v2_spec.rb'
+ - 'spec/lib/gitlab/database/migration_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/partitioning_spec.rb'
+ - 'spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb'
+ - 'spec/lib/gitlab/gitaly_client/with_feature_flag_actors_spec.rb'
+ - 'spec/lib/gitlab/kubernetes/helm/v2/base_command_spec.rb'
+ - 'spec/lib/gitlab/kubernetes/helm/v3/base_command_spec.rb'
+ - 'spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb'
+ - 'spec/lib/gitlab/pagination/keyset/in_operator_optimization/query_builder_spec.rb'
+ - 'spec/lib/gitlab/pagination/keyset/iterator_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb'
+ - 'spec/lib/gitlab/utils/strong_memoize_spec.rb'
+ - 'spec/lib/gitlab/web_ide/config/entry/global_spec.rb'
+ - 'spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb'
+ - 'spec/lib/object_storage/direct_upload_spec.rb'
+ - 'spec/mailers/devise_mailer_spec.rb'
+ - 'spec/mailers/emails/profile_spec.rb'
+ - 'spec/models/concerns/as_cte_spec.rb'
+ - 'spec/models/concerns/sortable_spec.rb'
+ - 'spec/models/concerns/spammable_spec.rb'
+ - 'spec/models/group_spec.rb'
+ - 'spec/requests/api/deployments_spec.rb'
+ - 'spec/requests/api/graphql/gitlab_schema_spec.rb'
+ - 'spec/requests/api/helpers_spec.rb'
+ - 'spec/scripts/lib/glfm/update_specification_spec.rb'
+ - 'spec/serializers/commit_entity_spec.rb'
+ - 'spec/services/loose_foreign_keys/cleaner_service_spec.rb'
+ - 'spec/services/snippets/repository_validation_service_spec.rb'
+ - 'spec/services/system_notes/merge_requests_service_spec.rb'
+ - 'spec/support/shared_examples/features/content_editor_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb'
+ - 'spec/support_specs/database/multiple_databases_helpers_spec.rb'
+ - 'spec/tasks/gitlab/gitaly_rake_spec.rb'
+ - 'spec/tasks/gitlab/workhorse_rake_spec.rb'
+ - 'spec/views/devise/sessions/new.html.haml_spec.rb'
diff --git a/.rubocop_todo/performance/concurrent_monotonic_time.yml b/.rubocop_todo/performance/concurrent_monotonic_time.yml
new file mode 100644
index 00000000000..0e55eaf4a18
--- /dev/null
+++ b/.rubocop_todo/performance/concurrent_monotonic_time.yml
@@ -0,0 +1,6 @@
+---
+# Cop supports --autocorrect.
+Performance/ConcurrentMonotonicTime:
+ Details: grace period
+ Exclude:
+ - 'lib/gitlab/database/connection_timer.rb'
diff --git a/.rubocop_todo/performance/flat_map.yml b/.rubocop_todo/performance/flat_map.yml
new file mode 100644
index 00000000000..32dce1bf317
--- /dev/null
+++ b/.rubocop_todo/performance/flat_map.yml
@@ -0,0 +1,38 @@
+---
+# Cop supports --autocorrect.
+Performance/FlatMap:
+ Details: grace period
+ Exclude:
+ - 'app/presenters/packages/nuget/service_index_presenter.rb'
+ - 'app/services/projects/apple_target_platform_detector_service.rb'
+ - 'ee/app/models/burndown.rb'
+ - 'ee/app/models/geo_node_status.rb'
+ - 'ee/app/serializers/dashboard_environments_serializer.rb'
+ - 'ee/app/services/elastic/process_bookkeeping_service.rb'
+ - 'ee/lib/elastic/latest/issue_class_proxy.rb'
+ - 'ee/spec/lib/elastic/latest/user_class_proxy_spec.rb'
+ - 'ee/spec/models/analytics/issues_analytics_spec.rb'
+ - 'ee/spec/requests/api/members_spec.rb'
+ - 'ee/spec/support/helpers/license_scanning_report_helpers.rb'
+ - 'ee/spec/support/shared_examples/finders/security/findings_finder_shared_examples.rb'
+ - 'lib/gitlab/ci/pipeline/chain/create_deployments.rb'
+ - 'lib/gitlab/ci/pipeline/chain/ensure_environments.rb'
+ - 'lib/gitlab/ci/pipeline/chain/ensure_resource_groups.rb'
+ - 'lib/gitlab/database/query_analyzers/prevent_cross_database_modification.rb'
+ - 'lib/gitlab/diff/file_collection/base.rb'
+ - 'lib/gitlab/instrumentation/redis_cluster_validator.rb'
+ - 'lib/gitlab/testing/request_inspector_middleware.rb'
+ - 'lib/gitlab/usage_data_counters/hll_redis_counter.rb'
+ - 'qa/qa/resource/base.rb'
+ - 'qa/qa/tools/ci/non_empty_suites.rb'
+ - 'spec/controllers/projects/issues_controller_spec.rb'
+ - 'spec/lib/bulk_imports/groups/stage_spec.rb'
+ - 'spec/lib/bulk_imports/projects/stage_spec.rb'
+ - 'spec/lib/gitlab/ci/parsers/test/junit_spec.rb'
+ - 'spec/models/ci/pipeline_spec.rb'
+ - 'spec/requests/api/graphql/ci/pipelines_spec.rb'
+ - 'spec/requests/api/projects_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb'
+ - 'spec/services/git/process_ref_changes_service_spec.rb'
+ - 'spec/support/shared_examples/models/with_debian_distributions_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/graphql/issue_list_shared_examples.rb'
diff --git a/.rubocop_todo/performance/map_compact.yml b/.rubocop_todo/performance/map_compact.yml
new file mode 100644
index 00000000000..57ebe251798
--- /dev/null
+++ b/.rubocop_todo/performance/map_compact.yml
@@ -0,0 +1,148 @@
+---
+# Cop supports --autocorrect.
+Performance/MapCompact:
+ Details: grace period
+ Exclude:
+ - 'app/graphql/resolvers/concerns/resolves_ids.rb'
+ - 'app/graphql/resolvers/todos_resolver.rb'
+ - 'app/helpers/issuables_description_templates_helper.rb'
+ - 'app/helpers/notifications_helper.rb'
+ - 'app/models/ci/build_dependencies.rb'
+ - 'app/models/ci/pipeline.rb'
+ - 'app/models/ci/runner.rb'
+ - 'app/models/ci_platform_metric.rb'
+ - 'app/models/concerns/mentionable/reference_regexes.rb'
+ - 'app/models/concerns/pg_full_text_searchable.rb'
+ - 'app/models/container_repository.rb'
+ - 'app/models/design_management/design_at_version.rb'
+ - 'app/models/design_management/version.rb'
+ - 'app/models/environment.rb'
+ - 'app/models/environment_status.rb'
+ - 'app/models/instance_configuration.rb'
+ - 'app/models/integrations/chat_message/pipeline_message.rb'
+ - 'app/models/repository.rb'
+ - 'app/models/resource_label_event.rb'
+ - 'app/models/snippet_repository.rb'
+ - 'app/models/web_ide_terminal.rb'
+ - 'app/presenters/packages/conan/package_presenter.rb'
+ - 'app/presenters/packages/nuget/packages_metadata_presenter.rb'
+ - 'app/presenters/packages/nuget/search_results_presenter.rb'
+ - 'app/serializers/analytics/cycle_analytics/event_entity.rb'
+ - 'app/services/auth/container_registry_authentication_service.rb'
+ - 'app/services/events/render_service.rb'
+ - 'app/services/feature_flags/update_service.rb'
+ - 'app/services/git/base_hooks_service.rb'
+ - 'app/services/google_cloud/fetch_google_ip_list_service.rb'
+ - 'app/services/jira_import/start_import_service.rb'
+ - 'app/services/jira_import/users_mapper_service.rb'
+ - 'app/services/labels/available_labels_service.rb'
+ - 'app/services/merge_requests/get_urls_service.rb'
+ - 'app/services/merge_requests/pushed_branches_service.rb'
+ - 'app/services/merge_requests/update_service.rb'
+ - 'app/services/packages/maven/find_or_create_package_service.rb'
+ - 'app/services/projects/container_repository/third_party/delete_tags_service.rb'
+ - 'app/services/projects/update_statistics_service.rb'
+ - 'app/services/quick_actions/interpret_service.rb'
+ - 'app/services/repositories/changelog_service.rb'
+ - 'app/services/todos/allowed_target_filter_service.rb'
+ - 'config/initializers/trusted_proxies.rb'
+ - 'config/initializers/wikicloth_redos_patch.rb'
+ - 'ee/app/finders/security/findings_finder.rb'
+ - 'ee/app/graphql/ee/types/issue_connection_type.rb'
+ - 'ee/app/models/app_sec/fuzzing/api/ci_configuration.rb'
+ - 'ee/app/models/burndown.rb'
+ - 'ee/app/models/concerns/ee/project_security_scanners_information.rb'
+ - 'ee/app/models/concerns/elastic/application_versioned_search.rb'
+ - 'ee/app/models/gitlab_subscriptions/features.rb'
+ - 'ee/app/models/sca/license_compliance.rb'
+ - 'ee/app/services/app_sec/dast/profiles/create_associations_service.rb'
+ - 'ee/app/services/app_sec/dast/scan_configs/fetch_service.rb'
+ - 'ee/app/services/epic_issues/create_service.rb'
+ - 'ee/app/services/members/activate_service.rb'
+ - 'ee/app/services/security/override_uuids_service.rb'
+ - 'ee/app/services/security/store_scan_service.rb'
+ - 'ee/app/services/upcoming_reconciliations/update_service.rb'
+ - 'ee/app/services/vulnerabilities/findings/find_or_create_from_security_finding_service.rb'
+ - 'ee/app/workers/geo/scheduler/scheduler_worker.rb'
+ - 'ee/db/fixtures/development/30_customizable_cycle_analytics.rb'
+ - 'ee/lib/ee/api/entities/experiment.rb'
+ - 'ee/lib/ee/banzai/filter/references/iteration_reference_filter.rb'
+ - 'ee/lib/ee/gitlab/auth/ldap/person.rb'
+ - 'ee/lib/ee/gitlab/background_migration/populate_latest_pipeline_ids.rb'
+ - 'ee/lib/ee/gitlab/background_migration/recalculate_vulnerability_finding_signatures_for_findings.rb'
+ - 'ee/lib/elastic/latest/repository_instance_proxy.rb'
+ - 'ee/lib/gitlab/alert_management/alert_payload_field_extractor.rb'
+ - 'ee/lib/gitlab/ci/parsers/security/dast.rb'
+ - 'ee/lib/gitlab/ci/reports/license_scanning/report.rb'
+ - 'ee/lib/gitlab/ci/reports/metrics/reports_comparer.rb'
+ - 'ee/lib/gitlab/search/aggregation_parser.rb'
+ - 'ee/spec/models/analytics/issues_analytics_spec.rb'
+ - 'ee/spec/models/member_spec.rb'
+ - 'ee/spec/requests/api/audit_events_spec.rb'
+ - 'ee/spec/requests/api/search_spec.rb'
+ - 'haml_lint/linter/no_plain_nodes.rb'
+ - 'lib/api/entities/feature.rb'
+ - 'lib/api/entities/project.rb'
+ - 'lib/api/helpers/common_helpers.rb'
+ - 'lib/atlassian/jira_connect/client.rb'
+ - 'lib/atlassian/jira_connect/serializers/feature_flag_entity.rb'
+ - 'lib/banzai/filter/image_link_filter.rb'
+ - 'lib/banzai/filter/references/design_reference_filter.rb'
+ - 'lib/banzai/filter/references/label_reference_filter.rb'
+ - 'lib/banzai/filter/references/milestone_reference_filter.rb'
+ - 'lib/banzai/reference_parser/issuable_parser.rb'
+ - 'lib/error_tracking/sentry_client/pagination_parser.rb'
+ - 'lib/gitaly/server.rb'
+ - 'lib/gitlab/analytics/cycle_analytics/aggregated/records_fetcher.rb'
+ - 'lib/gitlab/analytics/usage_trends/workers_argument_builder.rb'
+ - 'lib/gitlab/auth/ip_rate_limiter.rb'
+ - 'lib/gitlab/background_migration/backfill_project_repositories.rb'
+ - 'lib/gitlab/changes_list.rb'
+ - 'lib/gitlab/checks/changes_access.rb'
+ - 'lib/gitlab/ci/parsers/security/common.rb'
+ - 'lib/gitlab/ci/reports/security/aggregated_report.rb'
+ - 'lib/gitlab/ci/reports/security/finding.rb'
+ - 'lib/gitlab/ci/reports/test_suite_summary.rb'
+ - 'lib/gitlab/config/entry/validators.rb'
+ - 'lib/gitlab/database/load_balancing/service_discovery.rb'
+ - 'lib/gitlab/database/obsolete_ignored_columns.rb'
+ - 'lib/gitlab/email/receiver.rb'
+ - 'lib/gitlab/git/commit.rb'
+ - 'lib/gitlab/git/conflict/file.rb'
+ - 'lib/gitlab/git/rugged_impl/commit.rb'
+ - 'lib/gitlab/github_import/importer/pull_requests/review_request_importer.rb'
+ - 'lib/gitlab/issuable/clone/copy_resource_events_service.rb'
+ - 'lib/gitlab/issues/rebalancing/state.rb'
+ - 'lib/gitlab/jira_import/metadata_collector.rb'
+ - 'lib/gitlab/json_cache.rb'
+ - 'lib/gitlab/language_detection.rb'
+ - 'lib/gitlab/legacy_github_import/importer.rb'
+ - 'lib/gitlab/private_commit_email.rb'
+ - 'lib/gitlab/sql/pattern.rb'
+ - 'lib/gitlab/url_blocker.rb'
+ - 'lib/gitlab/verify/batch_verifier.rb'
+ - 'qa/qa/page/component/issuable/sidebar.rb'
+ - 'qa/qa/specs/features/api/1_manage/migration/gitlab_migration_large_project_spec.rb'
+ - 'qa/qa/support/formatters/test_metrics_formatter.rb'
+ - 'qa/qa/tools/ci/ff_changes.rb'
+ - 'scripts/lint_templates_bash.rb'
+ - 'spec/controllers/every_controller_spec.rb'
+ - 'spec/controllers/projects/merge_requests/conflicts_controller_spec.rb'
+ - 'spec/lib/api/every_api_endpoint_spec.rb'
+ - 'spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb'
+ - 'spec/lib/gitlab/conflict/file_spec.rb'
+ - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
+ - 'spec/lib/gitlab/import_export/references_configuration_spec.rb'
+ - 'spec/models/deployment_spec.rb'
+ - 'spec/models/network/graph_spec.rb'
+ - 'spec/models/repository_spec.rb'
+ - 'spec/requests/api/commits_spec.rb'
+ - 'spec/requests/api/groups_spec.rb'
+ - 'spec/requests/lfs_http_spec.rb'
+ - 'spec/serializers/diff_file_entity_spec.rb'
+ - 'spec/services/projects/container_repository/third_party/cleanup_tags_service_spec.rb'
+ - 'spec/support/helpers/dns_helpers.rb'
+ - 'spec/support/helpers/graphql_helpers.rb'
+ - 'spec/support/shared_examples/features/navbar_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/gitlab/config/inheritable_shared_examples.rb'
+ - 'spec/support/shared_examples/models/label_note_shared_examples.rb'
diff --git a/.rubocop_todo/performance/redundant_equality_comparison_block.yml b/.rubocop_todo/performance/redundant_equality_comparison_block.yml
new file mode 100644
index 00000000000..44da9710249
--- /dev/null
+++ b/.rubocop_todo/performance/redundant_equality_comparison_block.yml
@@ -0,0 +1,23 @@
+---
+# Cop supports --autocorrect.
+Performance/RedundantEqualityComparisonBlock:
+ Details: grace period
+ Exclude:
+ - 'app/graphql/types/work_item_id_type.rb'
+ - 'app/models/concerns/group_descendant.rb'
+ - 'app/models/concerns/id_in_ordered.rb'
+ - 'app/models/todo.rb'
+ - 'app/validators/feature_flag_strategies_validator.rb'
+ - 'ee/app/helpers/ee/dashboard_helper.rb'
+ - 'ee/lib/compliance_management/merge_request_approval_settings/resolver.rb'
+ - 'ee/lib/elastic/latest/user_instance_proxy.rb'
+ - 'ee/lib/gitlab/geo/geo_node_status_check.rb'
+ - 'ee/spec/lib/ee/sidebars/projects/panel_spec.rb'
+ - 'lib/gitlab/ci/config/yaml/tags/reference.rb'
+ - 'lib/gitlab/config/entry/validators.rb'
+ - 'lib/gitlab/i18n/translation_entry.rb'
+ - 'lib/gitlab/push_options.rb'
+ - 'lib/gitlab/utils/delegator_override.rb'
+ - 'lib/gitlab/view/presenter/base.rb'
+ - 'spec/lib/object_storage/direct_upload_spec.rb'
+ - 'spec/support/import_export/project_tree_expectations.rb'
diff --git a/.rubocop_todo/performance/redundant_split_regexp_argument.yml b/.rubocop_todo/performance/redundant_split_regexp_argument.yml
new file mode 100644
index 00000000000..0c0e12480d5
--- /dev/null
+++ b/.rubocop_todo/performance/redundant_split_regexp_argument.yml
@@ -0,0 +1,8 @@
+---
+# Cop supports --autocorrect.
+Performance/RedundantSplitRegexpArgument:
+ Details: grace period
+ Exclude:
+ - 'lib/file_size_validator.rb'
+ - 'lib/gitlab/git/raw_diff_change.rb'
+ - 'lib/kramdown/converter/commonmark.rb'
diff --git a/.rubocop_todo/performance/string_identifier_argument.yml b/.rubocop_todo/performance/string_identifier_argument.yml
new file mode 100644
index 00000000000..cf9b1fe5cf7
--- /dev/null
+++ b/.rubocop_todo/performance/string_identifier_argument.yml
@@ -0,0 +1,39 @@
+---
+# Cop supports --autocorrect.
+Performance/StringIdentifierArgument:
+ Details: grace period
+ Exclude:
+ - 'ee/lib/gitlab/ingestion/bulk_insertable_task.rb'
+ - 'ee/spec/lib/audit/base_changes_auditor_spec.rb'
+ - 'ee/spec/lib/gitlab/rack_attack_spec.rb'
+ - 'ee/spec/lib/gitlab/status_page/storage/s3_client_spec.rb'
+ - 'ee/spec/presenters/ci/minutes/usage_presenter_spec.rb'
+ - 'ee/spec/serializers/test_reports_comparer_entity_spec.rb'
+ - 'ee/spec/serializers/test_reports_comparer_serializer_spec.rb'
+ - 'ee/spec/serializers/test_suite_comparer_entity_spec.rb'
+ - 'lib/gitlab/background_migration/batched_migration_job.rb'
+ - 'lib/gitlab/background_migration/fix_projects_without_prometheus_service.rb'
+ - 'lib/gitlab/git_access.rb'
+ - 'lib/gitlab/graphql/deprecations_base.rb'
+ - 'lib/gitlab/net_http_adapter.rb'
+ - 'lib/gitlab/sidekiq_config/cli_methods.rb'
+ - 'lib/gitlab/usage/metrics/instrumentations/base_metric.rb'
+ - 'metrics_server/settings_overrides.rb'
+ - 'qa/qa/resource/project.rb'
+ - 'qa/qa/vendor/jenkins/job.rb'
+ - 'sidekiq_cluster/cli.rb'
+ - 'spec/factories/wiki_pages.rb'
+ - 'spec/helpers/projects_helper_spec.rb'
+ - 'spec/lib/api/helpers/packages_helpers_spec.rb'
+ - 'spec/lib/banzai/filter/references/reference_filter_spec.rb'
+ - 'spec/lib/gitlab/background_migration/batched_migration_job_spec.rb'
+ - 'spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb'
+ - 'spec/lib/gitlab/database/partitioning_spec.rb'
+ - 'spec/lib/gitlab/http_spec.rb'
+ - 'spec/lib/gitlab/rack_attack_spec.rb'
+ - 'spec/lib/gitlab/submodule_links_spec.rb'
+ - 'spec/lib/gitlab/tracking_spec.rb'
+ - 'spec/lib/gitlab/utils/lazy_attributes_spec.rb'
+ - 'spec/services/merge_requests/refresh_service_spec.rb'
+ - 'spec/support/shared_examples/models/concerns/integrations/reset_secret_fields_shared_examples.rb'
+ - 'spec/support/shared_examples/quick_actions/issuable/close_quick_action_shared_examples.rb'
diff --git a/GITLAB_METRICS_EXPORTER_VERSION b/GITLAB_METRICS_EXPORTER_VERSION
index 6d47f7a2be5..e0c3287cb8c 100644
--- a/GITLAB_METRICS_EXPORTER_VERSION
+++ b/GITLAB_METRICS_EXPORTER_VERSION
@@ -1 +1 @@
-f2d7e32cb5e3d8886a2bac5da2703b31f6a38d88
+65bbfa0b62518691961de096e4a27d7c76307b7c
diff --git a/Gemfile b/Gemfile
index 417dc56637d..51f2004a4bb 100644
--- a/Gemfile
+++ b/Gemfile
@@ -5,7 +5,7 @@ source 'https://rubygems.org'
if ENV['BUNDLER_CHECKSUM_VERIFICATION_OPT_IN'] # this verification is still experimental
$LOAD_PATH.unshift(File.expand_path("vendor/gems/bundler-checksum/lib", __dir__))
require 'bundler-checksum'
- Bundler::Checksum.patch!
+ BundlerChecksum.patch!
end
gem 'bundler-checksum', '~> 0.1.0', path: 'vendor/gems/bundler-checksum', require: false
@@ -395,7 +395,7 @@ group :development, :test do
gem 'spring', '~> 4.1.0'
gem 'spring-commands-rspec', '~> 1.0.4'
- gem 'gitlab-styles', '~> 9.1.0', require: false
+ gem 'gitlab-styles', '~> 9.2.0', require: false
gem 'haml_lint', '~> 0.40.0', require: false
gem 'bundler-audit', '~> 0.7.0.1', require: false
diff --git a/Gemfile.checksum b/Gemfile.checksum
index aa288566a45..1a42f26ffcd 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -210,7 +210,7 @@
{"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.9.0","platform":"ruby","checksum":"54041aec059f20c8e6dfce394e1b60e0c0a9c7cef32da912a58abbd333e13897"},
-{"name":"gitlab-styles","version":"9.1.0","platform":"ruby","checksum":"46fd4e9f7fc74b0dfdb0bd7aa2f5796fb4d5b01e5886d7779726f8b53a3c02b2"},
+{"name":"gitlab-styles","version":"9.2.0","platform":"ruby","checksum":"7106e7fb2de01f0c4a8d074ccff5c1f37502eab98cc51c8b5dd72a081785cea4"},
{"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"},
@@ -505,9 +505,9 @@
{"name":"rubocop-ast","version":"1.23.0","platform":"ruby","checksum":"fe4bafaa0a6ccf400849fb720f9dd2428b07b00fcdeeec33a8f1146e0c1e38e2"},
{"name":"rubocop-gitlab-security","version":"0.1.1","platform":"ruby","checksum":"96f6ed727847a5876ddfc89ee0399438a1aef7934db773c7efce907e2720006c"},
{"name":"rubocop-graphql","version":"0.18.0","platform":"ruby","checksum":"f1c43999fb9ef0e32b30e2ce2fa0ddb1f3a6215c85baf3fdf9753a0bb96bc998"},
-{"name":"rubocop-performance","version":"1.15.0","platform":"ruby","checksum":"8cd8ff22c567dfacf0292963c05f26c503638d0805a109e8c1f2a2a7955006c0"},
-{"name":"rubocop-rails","version":"2.17.2","platform":"ruby","checksum":"d14008d3a082f05300ff5f6cc21f8217f226ce0c1fc67e01b66bb5131f8f5b14"},
-{"name":"rubocop-rspec","version":"2.15.0","platform":"ruby","checksum":"a476c7671bbeabc9706068be0aa0443a559db6d2b84bfdc582fe65f64b1d455e"},
+{"name":"rubocop-performance","version":"1.15.1","platform":"ruby","checksum":"8d4f1839e7043364269d15b8191eadda29a4bb937ec29e74fdb074511d048d02"},
+{"name":"rubocop-rails","version":"2.17.3","platform":"ruby","checksum":"7d857aa339577c9e0e156cc3f5b68b63efc429eba39863cbd8a496c7f80e65af"},
+{"name":"rubocop-rspec","version":"2.16.0","platform":"ruby","checksum":"b33c5f048182bdb43885958f4115865d49438694fffac98b5406f70302e7ece6"},
{"name":"ruby-fogbugz","version":"0.3.0","platform":"ruby","checksum":"5e04cde474648f498a71cf1e1a7ab42c66b953862fbe224f793ec0a7a1d5f657"},
{"name":"ruby-magic","version":"0.5.4","platform":"ruby","checksum":"2c17b185130d10a83791f63a40baa358c4b138af37da3f4dab53690121c421d5"},
{"name":"ruby-progressbar","version":"1.11.0","platform":"ruby","checksum":"cc127db3866dc414ffccbf92928a241e585b3aa2b758a5563e74a6ee0f57d50a"},
diff --git a/Gemfile.lock b/Gemfile.lock
index cfc1503b44a..361b3f952c1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -598,7 +598,7 @@ GEM
gitlab-sidekiq-fetcher (0.9.0)
json (>= 2.5)
sidekiq (~> 6.1)
- gitlab-styles (9.1.0)
+ gitlab-styles (9.2.0)
rubocop (~> 1.38.0)
rubocop-gitlab-security (~> 0.1.1)
rubocop-graphql (~> 0.14)
@@ -1274,14 +1274,14 @@ GEM
rubocop (>= 0.51)
rubocop-graphql (0.18.0)
rubocop (>= 0.87, < 2)
- rubocop-performance (1.15.0)
+ rubocop-performance (1.15.1)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
- rubocop-rails (2.17.2)
+ rubocop-rails (2.17.3)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
- rubocop-rspec (2.15.0)
+ rubocop-rspec (2.16.0)
rubocop (~> 1.33)
ruby-fogbugz (0.3.0)
crack (~> 0.4)
@@ -1672,7 +1672,7 @@ DEPENDENCIES
gitlab-net-dns (~> 0.9.1)
gitlab-omniauth-openid-connect (~> 0.10.0)
gitlab-sidekiq-fetcher (= 0.9.0)
- gitlab-styles (~> 9.1.0)
+ gitlab-styles (~> 9.2.0)
gitlab_chronic_duration (~> 0.10.6.2)
gitlab_omniauth-ldap (~> 2.2.0)
gon (~> 6.4.0)
diff --git a/app/assets/javascripts/issues/show/components/description.vue b/app/assets/javascripts/issues/show/components/description.vue
index 8202dec5f02..78e729b97da 100644
--- a/app/assets/javascripts/issues/show/components/description.vue
+++ b/app/assets/javascripts/issues/show/components/description.vue
@@ -1,5 +1,6 @@
<script>
import { GlToast, GlTooltip, GlModalDirective } from '@gitlab/ui';
+import $ from 'jquery';
import Sortable from 'sortablejs';
import Vue from 'vue';
import SafeHtml from '~/vue_shared/directives/safe_html';
@@ -300,19 +301,20 @@ export default {
updateTaskStatusText() {
const taskRegexMatches = this.taskStatus.match(/(\d+) of ((?!0)\d+)/);
- const tasks = document.querySelector('.issuable-meta #task_status');
- const tasksShort = document.querySelector('.issuable-meta #task_status_short');
-
- if (!tasks || !tasksShort) return;
+ const $issuableHeader = $('.issuable-meta');
+ const $tasks = $('#task_status', $issuableHeader);
+ const $tasksShort = $('#task_status_short', $issuableHeader);
if (taskRegexMatches) {
- tasks.textContent = this.taskStatus;
- tasksShort.textContent = `${taskRegexMatches[1]}/${taskRegexMatches[2]} checklist item${
- taskRegexMatches[2] > 1 ? 's' : ''
- }`;
+ $tasks.text(this.taskStatus);
+ $tasksShort.text(
+ `${taskRegexMatches[1]}/${taskRegexMatches[2]} checklist item${
+ taskRegexMatches[2] > 1 ? 's' : ''
+ }`,
+ );
} else {
- tasks.textContent = '';
- tasksShort.textContent = '';
+ $tasks.text('');
+ $tasksShort.text('');
}
},
renderTaskActions() {
diff --git a/app/assets/javascripts/lib/mermaid.js b/app/assets/javascripts/lib/mermaid.js
index a119a33b0d7..c72561ce69d 100644
--- a/app/assets/javascripts/lib/mermaid.js
+++ b/app/assets/javascripts/lib/mermaid.js
@@ -1,5 +1,4 @@
import mermaid from 'mermaid';
-import mindmap from '@mermaid-js/mermaid-mindmap';
import { getParameterByName } from '~/lib/utils/url_utility';
const setIframeRenderedSize = (h, w) => {
@@ -13,10 +12,11 @@ const drawDiagram = (source) => {
// eslint-disable-next-line no-unsanitized/property
element.innerHTML = svgCode;
- const { width, height } = element.firstElementChild.viewBox.baseVal;
+ const height = parseInt(element.firstElementChild.getAttribute('height'), 10);
+ const width = parseInt(element.firstElementChild.style.maxWidth, 10);
setIframeRenderedSize(height, width);
};
- mermaid.mermaidAPI.renderAsync('mermaid', source, insertSvg);
+ mermaid.mermaidAPI.render('mermaid', source, insertSvg);
};
const darkModeEnabled = () => getParameterByName('darkMode') === 'true';
@@ -56,13 +56,7 @@ const addListener = () => {
false,
);
};
-mermaid
- .registerExternalDiagrams([mindmap])
- .then(() => {
- addListener();
- initMermaid();
- })
- .catch((error) => {
- throw error;
- });
+
+addListener();
+initMermaid();
export default {};
diff --git a/app/assets/javascripts/notes/components/noteable_note.vue b/app/assets/javascripts/notes/components/noteable_note.vue
index c3e87c3678f..826e7e5a3d0 100644
--- a/app/assets/javascripts/notes/components/noteable_note.vue
+++ b/app/assets/javascripts/notes/components/noteable_note.vue
@@ -1,12 +1,12 @@
<script>
import { GlSprintf, GlAvatarLink, GlAvatar } from '@gitlab/ui';
+import $ from 'jquery';
import { escape, isEmpty } from 'lodash';
import { mapGetters, mapActions } from 'vuex';
import SafeHtml from '~/vue_shared/directives/safe_html';
import { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';
import { INLINE_DIFF_LINES_KEY } from '~/diffs/constants';
import { createAlert } from '~/flash';
-import { isInViewport, scrollToElement } from '~/lib/utils/common_utils';
import { HTTP_STATUS_GONE } from '~/lib/utils/http_status';
import { ignoreWhilePending } from '~/lib/utils/ignore_while_pending';
import { truncateSha } from '~/lib/utils/text_utility';
@@ -223,14 +223,14 @@ export default {
if (noteId === this.note.id) {
this.isEditing = true;
this.setSelectedCommentPositionHover();
- this.scrollToNoteIfNeeded(this.$el);
+ this.scrollToNoteIfNeeded($(this.$el));
}
});
},
mounted() {
if (this.isTarget && this.shouldScrollToNote) {
- this.scrollToNoteIfNeeded(this.$el);
+ this.scrollToNoteIfNeeded($(this.$el));
}
},
@@ -240,15 +240,11 @@ export default {
'removeNote',
'updateNote',
'toggleResolveNote',
+ 'scrollToNoteIfNeeded',
'updateAssignees',
'setSelectedCommentPositionHover',
'updateDiscussionPosition',
]),
- scrollToNoteIfNeeded(el) {
- if (!isInViewport(el)) {
- scrollToElement(el);
- }
- },
editHandler() {
this.isEditing = true;
this.setSelectedCommentPositionHover();
diff --git a/app/assets/javascripts/notes/stores/actions.js b/app/assets/javascripts/notes/stores/actions.js
index a527936063a..d290a8ccb84 100644
--- a/app/assets/javascripts/notes/stores/actions.js
+++ b/app/assets/javascripts/notes/stores/actions.js
@@ -11,7 +11,7 @@ import { confidentialWidget } from '~/sidebar/components/confidential/sidebar_co
import updateIssueLockMutation from '~/sidebar/queries/update_issue_lock.mutation.graphql';
import updateMergeRequestLockMutation from '~/sidebar/queries/update_merge_request_lock.mutation.graphql';
import loadAwardsHandler from '~/awards_handler';
-import { isInMRPage } from '~/lib/utils/common_utils';
+import { isInViewport, scrollToElement, isInMRPage } from '~/lib/utils/common_utils';
import Poll from '~/lib/utils/poll';
import { create } from '~/lib/utils/recurrence';
import { mergeUrlParams } from '~/lib/utils/url_utility';
@@ -681,6 +681,12 @@ export const toggleAwardRequest = ({ dispatch }, data) => {
});
};
+export const scrollToNoteIfNeeded = (context, el) => {
+ if (!isInViewport(el[0])) {
+ scrollToElement(el);
+ }
+};
+
export const fetchDiscussionDiffLines = ({ commit }, discussion) =>
axios.get(discussion.truncated_diff_lines_path).then(({ data }) => {
commit(types.SET_DISCUSSION_DIFF_LINES, {
diff --git a/app/assets/javascripts/vue_shared/components/notes/system_note.vue b/app/assets/javascripts/vue_shared/components/notes/system_note.vue
index 1254bb297c2..1cbbdf0deb0 100644
--- a/app/assets/javascripts/vue_shared/components/notes/system_note.vue
+++ b/app/assets/javascripts/vue_shared/components/notes/system_note.vue
@@ -17,6 +17,7 @@
* />
*/
import { GlButton, GlSkeletonLoader, GlTooltipDirective, GlIcon } from '@gitlab/ui';
+import $ from 'jquery';
import { mapGetters, mapActions, mapState } from 'vuex';
import SafeHtml from '~/vue_shared/directives/safe_html';
import descriptionVersionHistoryMixin from 'ee_else_ce/notes/mixins/description_version_history';
@@ -76,18 +77,12 @@ export default {
toggleIcon() {
return this.expanded ? 'chevron-up' : 'chevron-down';
},
- noteElement() {
- const node = document.createElement('template');
- // eslint-disable-next-line no-unsanitized/method
- node.insertAdjacentHTML('afterbegin', this.note.note_html);
- return node;
- },
- unwrappedNoteHtml() {
- return this.noteElement.children[0].innerHTML;
+ // following 2 methods taken from code in `collapseLongCommitList` of notes.js:
+ actionTextHtml() {
+ return $(this.note.note_html).unwrap().html();
},
hasMoreCommits() {
- const elements = this.noteElement.querySelectorAll('ul > *') || [];
- return elements.length > MAX_VISIBLE_COMMIT_LIST_COUNT;
+ return $(this.note.note_html).filter('ul').children().length > MAX_VISIBLE_COMMIT_LIST_COUNT;
},
descriptionVersion() {
return this.descriptionVersions[this.note.description_version_id];
@@ -135,7 +130,7 @@ export default {
:note-id="note.id"
:is-system-note="true"
>
- <span ref="gfm-content" v-safe-html="unwrappedNoteHtml"></span>
+ <span ref="gfm-content" v-safe-html="actionTextHtml"></span>
<template
v-if="canSeeDescriptionVersion || note.outdated_line_change_path"
#extra-controls
diff --git a/app/assets/javascripts/work_items/components/notes/system_note.vue b/app/assets/javascripts/work_items/components/notes/system_note.vue
index 1eece0af31e..92a2fcaf1df 100644
--- a/app/assets/javascripts/work_items/components/notes/system_note.vue
+++ b/app/assets/javascripts/work_items/components/notes/system_note.vue
@@ -16,6 +16,7 @@
* />
*/
import { GlButton, GlSkeletonLoader, GlTooltipDirective, GlIcon } from '@gitlab/ui';
+import $ from 'jquery';
import { renderGFM } from '~/behaviors/markdown/render_gfm';
import SafeHtml from '~/vue_shared/directives/safe_html';
import descriptionVersionHistoryMixin from 'ee_else_ce/notes/mixins/description_version_history';
@@ -76,18 +77,12 @@ export default {
toggleIcon() {
return this.expanded ? 'chevron-up' : 'chevron-down';
},
- noteElement() {
- const node = document.createElement('template');
- // eslint-disable-next-line no-unsanitized/method
- node.insertAdjacentHTML('afterbegin', this.note.note_html);
- return node;
- },
- unwrappedNoteHtml() {
- return this.noteElement.children[0].innerHTML;
+ // following 2 methods taken from code in `collapseLongCommitList` of notes.js:
+ actionTextHtml() {
+ return $(this.note.bodyHtml).unwrap().html();
},
hasMoreCommits() {
- const elements = this.noteElement.querySelectorAll('ul > *') || [];
- return elements.length > MAX_VISIBLE_COMMIT_LIST_COUNT;
+ return $(this.note.bodyHtml).filter('ul').children().length > MAX_VISIBLE_COMMIT_LIST_COUNT;
},
descriptionVersion() {
return this.descriptionVersions[this.note.description_version_id];
@@ -137,7 +132,7 @@ export default {
:note-id="note.id"
:is-system-note="true"
>
- <span ref="gfm-content" v-safe-html="unwrappedNoteHtml"></span>
+ <span ref="gfm-content" v-safe-html="actionTextHtml"></span>
<template
v-if="canSeeDescriptionVersion || note.outdated_line_change_path"
#extra-controls
diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb
index 37dde065e70..dab0f3e870a 100644
--- a/app/controllers/admin/dashboard_controller.rb
+++ b/app/controllers/admin/dashboard_controller.rb
@@ -2,6 +2,7 @@
class Admin::DashboardController < Admin::ApplicationController
include CountHelper
+ helper Admin::ComponentsHelper
COUNTED_ITEMS = [Project, User, Group].freeze
diff --git a/app/helpers/admin/components_helper.rb b/app/helpers/admin/components_helper.rb
new file mode 100644
index 00000000000..577c12a0184
--- /dev/null
+++ b/app/helpers/admin/components_helper.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Admin
+ module ComponentsHelper
+ def database_versions
+ Gitlab::Database.database_base_models.transform_values do |base_model|
+ reflection = ::Gitlab::Database::Reflection.new(base_model)
+ {
+ adapter_name: reflection.human_adapter_name,
+ version: reflection.version
+ }
+ end.symbolize_keys
+ end
+ end
+end
diff --git a/app/models/commit.rb b/app/models/commit.rb
index 5175842e5de..37791b6875d 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -359,10 +359,6 @@ class Commit
end
def has_signature?
- if signature_type == :SSH && !ssh_signatures_enabled?
- return false
- end
-
signature_type && signature_type != :NONE
end
@@ -382,10 +378,6 @@ class Commit
@signature_type ||= raw_signature_type || :NONE
end
- def ssh_signatures_enabled?
- Feature.enabled?(:ssh_commit_signatures, project)
- end
-
def signature
strong_memoize(:signature) do
case signature_type
@@ -394,7 +386,7 @@ class Commit
when :X509
Gitlab::X509::Commit.new(self).signature
when :SSH
- Gitlab::Ssh::Commit.new(self).signature if ssh_signatures_enabled?
+ Gitlab::Ssh::Commit.new(self).signature
else
nil
end
diff --git a/app/services/git/branch_hooks_service.rb b/app/services/git/branch_hooks_service.rb
index 71dd9501648..6087efce9fd 100644
--- a/app/services/git/branch_hooks_service.rb
+++ b/app/services/git/branch_hooks_service.rb
@@ -165,14 +165,11 @@ module Git
end
def signature_types
- types = [
+ [
::CommitSignatures::GpgSignature,
- ::CommitSignatures::X509CommitSignature
+ ::CommitSignatures::X509CommitSignature,
+ ::CommitSignatures::SshSignature
]
-
- types.push(::CommitSignatures::SshSignature) if Feature.enabled?(:ssh_commit_signatures, project)
-
- types
end
def unsigned_commit_shas(commits)
diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb
index 10407e99715..46f343ccbdd 100644
--- a/app/services/issues/base_service.rb
+++ b/app/services/issues/base_service.rb
@@ -117,7 +117,7 @@ module Issues
override :allowed_create_params
def allowed_create_params(params)
- super(params).except(:issue_type, :work_item_type_id, :work_item_type)
+ super(params).except(:work_item_type_id, :work_item_type)
end
end
end
diff --git a/app/services/issues/create_service.rb b/app/services/issues/create_service.rb
index afad8d0c6bf..f6a1db2dcaa 100644
--- a/app/services/issues/create_service.rb
+++ b/app/services/issues/create_service.rb
@@ -24,6 +24,9 @@ module Issues
return error(_('Operation not allowed'), 403) unless @current_user.can?(authorization_action, @project)
@issue = @build_service.execute
+ # issue_type is set in BuildService, so we can delete it from params, in later phase
+ # it can be set also from quick actions - in that case work_item_id is synced later again
+ params.delete(:issue_type)
handle_move_between_ids(@issue)
@@ -68,6 +71,7 @@ module Issues
handle_escalation_status_change(issue)
create_timeline_event(issue)
try_to_associate_contacts(issue)
+ change_additional_attributes(issue)
super
end
@@ -127,6 +131,15 @@ module Issues
set_crm_contacts(issue, contacts)
end
+
+ override :change_additional_attributes
+ def change_additional_attributes(issue)
+ super
+
+ # issue_type can be still set through quick actions, in that case
+ # we have to make sure to re-sync work_item_type with it
+ issue.work_item_type_id = find_work_item_type_id(params[:issue_type]) if params[:issue_type]
+ end
end
end
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index 27ae7d523b9..8afddd99451 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -164,10 +164,11 @@
= _('Rails')
%span.float-right
#{Rails::VERSION::STRING}
- %p
- = ApplicationRecord.database.human_adapter_name
- %span.float-right
- = ApplicationRecord.database.version
+ - database_versions.each do |database_name, database|
+ %p
+ #{database[:adapter_name]} (#{database_name})
+ %span.float-right
+ = database[:version]
%p
= _('Redis')
%span.float-right
diff --git a/app/views/ci/group_variables/_index.html.haml b/app/views/ci/group_variables/_index.html.haml
index eb49a9a0261..c8c970f3c2f 100644
--- a/app/views/ci/group_variables/_index.html.haml
+++ b/app/views/ci/group_variables/_index.html.haml
@@ -1,4 +1,4 @@
-- variables = @project.group.self_and_ancestors.map(&:variables).flatten
+- variables = @project.group.self_and_ancestors.flat_map(&:variables)
.ci-variable-table
%table.gl-table.gl-w-full.gl-table-layout-fixed
diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml
index 717175e8eb3..7ff3cf162f5 100644
--- a/app/views/layouts/nav/sidebar/_admin.html.haml
+++ b/app/views/layouts/nav/sidebar/_admin.html.haml
@@ -7,14 +7,14 @@
%span.sidebar-context-title
= _('Admin Area')
%ul.sidebar-top-level-items{ data: { qa_selector: 'admin_overview_submenu_content' } }
- = nav_link(controller: %w[dashboard admin admin/projects users groups admin/topics jobs runners gitaly_servers cohorts], html_options: {class: 'home'}) do
+ = nav_link(controller: %w[dashboard admin admin/projects users groups admin/topics jobs gitaly_servers cohorts], html_options: {class: 'home'}) do
= link_to admin_root_path, class: 'has-sub-items' do
.nav-icon-container
= sprite_icon('overview')
%span.nav-item-name
= _('Overview')
%ul.sidebar-sub-level-items
- = nav_link(controller: %w[dashboard admin admin/projects users groups jobs runners gitaly_servers cohorts], html_options: { class: "fly-out-top-item" }) do
+ = nav_link(controller: %w[dashboard admin admin/projects users groups jobs gitaly_servers cohorts], html_options: { class: "fly-out-top-item" }) do
= link_to admin_root_path do
%strong.fly-out-top-item-name
= _('Overview')
@@ -43,15 +43,28 @@
= link_to admin_jobs_path, title: _('Jobs') do
%span
= _('Jobs')
- = nav_link path: ['runners#index', 'runners#show'] do
- = link_to admin_runners_path, title: _('Runners') do
- %span
- = _('Runners')
= nav_link(controller: :gitaly_servers) do
= link_to admin_gitaly_servers_path, title: 'Gitaly Servers' do
%span
= _('Gitaly Servers')
+ = nav_link(controller: :runners) do
+ = link_to admin_runners_path, class: 'has-sub-items' do
+ .nav-icon-container
+ = sprite_icon('rocket')
+ %span.nav-item-name
+ = _('CI/CD')
+ %ul.sidebar-sub-level-items
+ = nav_link(controller: :runners, html_options: { class: "fly-out-top-item" }) do
+ = link_to admin_runners_path do
+ %strong.fly-out-top-item-name
+ = _('CI/CD')
+ %li.divider.fly-out-top-item
+ = nav_link(controller: :runners) do
+ = link_to admin_runners_path, title: _('Runners') do
+ %span
+ = _('Runners')
+
= nav_link(controller: admin_analytics_nav_links) do
= link_to admin_dev_ops_reports_path, data: { qa_selector: 'admin_analytics_link' }, class: 'has-sub-items' do
.nav-icon-container
diff --git a/app/views/projects/commit/_signature_badge.html.haml b/app/views/projects/commit/_signature_badge.html.haml
index ad6b524c01b..8a48845a55d 100644
--- a/app/views/projects/commit/_signature_badge.html.haml
+++ b/app/views/projects/commit/_signature_badge.html.haml
@@ -24,7 +24,7 @@
= render partial: "projects/commit/x509/certificate_details", locals: { signature: signature }
= link_to(_('Learn more about X.509 signed commits'), help_page_path('user/project/repository/x509_signed_commits/index.md'), class: 'gl-link gl-display-block')
- - elsif ::Feature.enabled?(:ssh_commit_signatures, signature.project) && signature.ssh?
+ - elsif signature.ssh?
= _('SSH key fingerprint:')
%span.gl-font-monospace= signature.key&.fingerprint_sha256 || _('Unknown')
diff --git a/config/feature_flags/development/ssh_commit_signatures.yml b/config/feature_flags/development/github_import_gists.yml
index a056ba1a2ba..8e6e5825362 100644
--- a/config/feature_flags/development/ssh_commit_signatures.yml
+++ b/config/feature_flags/development/github_import_gists.yml
@@ -1,8 +1,8 @@
---
-name: ssh_commit_signatures
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97248
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/350301
-milestone: '15.7'
+name: github_import_gists
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107651
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/386579
+milestone: '15.8'
type: development
-group: group::source code
-default_enabled: true
+group: group::import
+default_enabled: false
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index 918b2767c4d..d24c5431f53 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -121,3 +121,17 @@ Doorkeeper.configure do
# We might want to disable this in the future, see https://gitlab.com/gitlab-org/gitlab/-/issues/323615
skip_client_authentication_for_password_grant true
end
+
+module Doorkeeper
+ class AccessToken
+ # Doorkeeper OAuth Token refresh uses expires_in of refresh token for new token
+ # https://github.com/doorkeeper-gem/doorkeeper/pull/1366
+ # This override ensures that tokens with expires_in: nil do not create new
+ # tokens with expires_in: nil during refresh flow.
+ # Can be removed after https://gitlab.com/gitlab-org/gitlab/-/issues/386094 is
+ # closed
+ def expires_in
+ super || 2.hours
+ end
+ end
+end
diff --git a/config/webpack.vendor.config.js b/config/webpack.vendor.config.js
index 7648c865797..1300bf16e56 100644
--- a/config/webpack.vendor.config.js
+++ b/config/webpack.vendor.config.js
@@ -34,8 +34,7 @@ module.exports = {
'pikaday',
'@gitlab/at.js',
'jed',
- 'mermaid/dist/mermaid.esm.mjs',
- '@mermaid-js/mermaid-mindmap/dist/mermaid-mindmap.esm.mjs',
+ 'mermaid',
'katex',
'three',
'select2',
diff --git a/data/whats_new/202212200001_15_07.yml b/data/whats_new/202212200001_15_07.yml
new file mode 100644
index 00000000000..ac192218d3e
--- /dev/null
+++ b/data/whats_new/202212200001_15_07.yml
@@ -0,0 +1,142 @@
+- name: "Introducing the GitLab CLI"
+ description: | # Do not modify this line, instead modify the lines below.
+ The command line is one of the most important tools in a software engineer's toolkit and the majority of their process and work revolve around tools available there. They customize their CLI with styles and extend it through applications to ensure maximum efficiency while performing tasks. The CLI is the backbone of scripts and workflows developers depend on to complete their work.
+
+ To support more developers where they're already working, we've adopted the open source project `glab`, which will form the foundation of GitLab's native CLI experience. The GitLab CLI brings GitLab together with Git and your code, with no application or tab switching required.
+
+ You can read about our adoption of `glab`, our partnership with 1Password, and how to contribute to the project in our [blog post](/blog/2022/12/07/introducing-the-gitlab-cli/).
+
+ A special thank you to [Clement Sam](https://gitlab.com/profclems) for creating `glab` and trusting us with its future.
+ stage: create
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/integration/glab/
+ image_url: https://about.gitlab.com/images/15_7/create-code-review-gitlab-cli-released.gif
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Browser-based DAST general availability"
+ description: | # Do not modify this line, instead modify the lines below.
+ After being available in Beta since GitLab 13.2, our proprietary browser-based DAST analyzer is now being released for general availability in GitLab 15.7.
+
+ This new analyzer has been developed completely in-house and makes use of a browser to authenticate, crawl, and scan web applications for vulnerabilities. Traditional DAST analyzers scan using a proxy-based approach to intercept requests and analyze them for vulnerabilities. Because of this, running DAST scans on applications that utilize modern JavaScript frameworks or are single page applications has been extremely difficult. Often, you do not get the full coverage of the application that you would expect. With the browser-based approach, we are able to execute JavaScript directly in the browser, as a user would, to ensure that your entire application is scanned for vulnerabilities. Using the new analyzer, we are able to cover more of the pages in an application, as well as reduce the number of false positives reported.
+
+ At this time, we will not be switching the default analyzer used in the [DAST.gitlab-ci.yml](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml) template to the browser-based analyzer, to allow users to make the switch manually and evaluate it for themselves. However, we plan to make the analyzer the default for all DAST scans at some point in the future. We encourage everyone to start to migrate to the new analyzer, so that when the default switch happens, it will not break any of your DAST scans. You can enable the browser-based analyzer by setting the `DAST_BROWSER_SCAN` to `true` in your `gitlab-ci.yml` configuration. Please note that not all legacy DAST analyzer variables will be used with this new analyzer. Any unsupported legacy DAST variables configured in your `gitlab-ci.yml` file will be ignored during the scan run.
+
+ We will continue to improve on this analyzer and have plans for many new features that the browser-based approach opens up to us. You can see our plans by looking at our [browser-based DAST epic](https://gitlab.com/groups/gitlab-org/-/epics/4248) and its issues. We would love to get feedback on this epic (or any child issues) about what is most important for you in your DAST scans.
+ stage: secure
+ self-managed: true
+ gitlab-com: false
+ available_in: [Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/user/application_security/dast/browser_based.html
+ image_url: https://about.gitlab.com/images/15_7/secure-browser-based-dast-ga.png
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Support GitOps deployments from outside the default branch"
+ description: | # Do not modify this line, instead modify the lines below.
+ In previous releases, the GitLab agent for Kubernetes was restricted to manifest files stored on your main branch. This model had known limitations. For example, you couldn't store the manifests of your next release on a release branch and test them in an ephemeral environment.
+
+ Now, you can specify a Git reference along with the manifest project configuration. Besides the main branch, you can sync your manifest files from another branch, a git tag, or a specific commit.
+ stage: configure
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/user/clusters/agent/gitops.html#gitops-configuration-reference
+ image_url: https://about.gitlab.com/images/15_7/gitops_deployments_outside.png
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Experience the Web IDE Beta and Remote Development"
+ description: | # Do not modify this line, instead modify the lines below.
+ We are thrilled to announce the availability of the Web IDE Beta, our next-generation web editor based on Visual Studio Code that delivers powerful new features, a more flexible and familiar interface, and the ability to connect directly to a Remote Development environment. Paired with a cloud runtime, the Web IDE Beta enables more advanced real-time development workflows. Take a look at just some of the new features available today!
+
+ The Web IDE Beta is so powerful we're making it the default Web IDE experience for GitLab.com, and we're eager for your feedback. The Web IDE will continue to be available while we iterate on the Beta. To stop using the Web IDE Beta, go to your [user preferences](https://gitlab.com/-/profile/preferences#web-ide) and select the **Opt out of the Web IDE Beta** checkbox.
+
+ Self-managed instances have access to the Web IDE Beta where it is behind a [feature flag](https://docs.gitlab.com/ee/user/project/web_ide_beta/) disabled by default in GitLab 15.7.
+
+ Learn more about the Web IDE Beta and what's coming next in our [recent blog post](/blog/2022/12/15/get-ready-for-new-gitlab-web-ide/).
+ stage: configure
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/user/project/web_ide_beta/
+ image_url: https://img.youtube.com/vi/q_xzzY9GT9c/hqdefault.jpg
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Sign commits with your SSH key"
+ description: | # Do not modify this line, instead modify the lines below.
+ Signing commits just got a lot simpler. Use SSH keys [to sign commits](https://docs.gitlab.com/ee/user/project/repository/ssh_signed_commits/), and provide others with confidence that a **Verified** commit was authored by you.
+
+ Previous methods for signing commits required a GPG key or an X.509 certificate, neither of which can be used to sign in to GitLab. Adding support for commit signing with SSH keys now makes it possible to reuse your authentication key pair to also sign your commits. If you already authenticate into GitLab with an SSH key, add three lines of code to your local Git configuration and all your future commits will be signed.
+
+ By default, all SSH keys currently in your profile can be used for both authentication and signing commits. To use a key for only one of the purposes, upload a new key.
+ stage: create
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/user/project/repository/ssh_signed_commits/
+ image_url: https://img.youtube.com/vi/IrK83nKi8HA/hqdefault.jpg
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Share CI/CD access to the agent within a personal namespace"
+ description: | # Do not modify this line, instead modify the lines below.
+ The GitLab agent for Kubernetes provides a more secure solution for managing your clusters with GitLab CI/CD.
+
+ You can use a single agent with multiple projects and groups by sharing access to the agent connection. In previous releases, you could not share access with personal namespaces. This release adds support for CI/CD connection sharing to personal namespaces. You can now use a single agent from any of the projects under your personal namespace.
+ stage: configure
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/user/clusters/agent/ci_cd_workflow.html#authorize-the-agent
+ image_url: https://about.gitlab.com/images/15_7/configure-allow-agent-cicd-access-sharing-within-a-personal-namesp.png
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Select predefined CI/CD variables values from a dropdown list"
+ description: | # Do not modify this line, instead modify the lines below.
+ Previously, you could [pre-fill CI/CD variables in the "Run pipeline" page](https://docs.gitlab.com/ee/ci/pipelines/index.html#prefill-variables-in-manual-pipelines), with a specific value. Unfortunately, if you had multiple options for the variable's value, you still had to manually input the option you wanted. This was an error-prone process because you could easily input an invalid value, or just mistype it.
+
+ In this release, we've added the ability to set a list of values which are surfaced in a drop-down list in the "Run pipeline" page. Now you can define the exact list of values that are valid for each CI/CD variable when running a pipeline manually, greatly simplifying your workflow when using manually-triggered pipelines.
+ stage: configure
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/ci/pipelines/index.html#prefill-variables-in-manual-pipelines
+ image_url: https://about.gitlab.com/images/15_7/prefill.png
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Self-managed support for the GitLab for Jira Cloud app"
+ description: | # Do not modify this line, instead modify the lines below.
+ For self-managed GitLab, we're excited to announce support for the [GitLab for Jira Cloud app](https://marketplace.atlassian.com/apps/1221011/gitlab-com-for-jira-cloud?tab=overview&hosting=cloud)!
+ stage: manage
+ self-managed: true
+ gitlab-com: false
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/integration/jira/connect-app.html#connect-the-gitlabcom-for-jira-cloud-app-for-self-managed-instances
+ image_url: https://about.gitlab.com/images/15_7/jira_cloud_app_proxy_for_selfmanaged_gitlab_users.png
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Retry a manual job with updated variables"
+ description: | # Do not modify this line, instead modify the lines below.
+ When running manual jobs, users can specify the extra CI/CD variables to use in the job. However, if you wanted to retry the same job, you always had to use the same variables as the first time. If you wanted to run the job with different variables, you had to run a new pipeline.
+
+ In this release, we have added the ability to specify variables every time you run a manual job, including when retrying the job. This allows for greater flexibility and convenience as you can retry a manual job as often as you like with a different set of variables in every run.
+ stage: manage
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/ci/jobs/index.html#specifying-variables-when-running-manual-jobs
+ image_url: https://img.youtube.com/vi/YTM_BYL3gXI/hqdefault.jpg
+ published_at: 2022-12-22
+ release: 15.7
+- name: "Support the `$` character in CI/CD variables"
+ description: | # Do not modify this line, instead modify the lines below.
+ Previously, using the `$` character in a CI/CD variable always indicated the start of a reference another variable, which GitLab then tried to expand. As a result, you could not have a value with a `$` as part of the string unless it was [escaped](https://docs.gitlab.com/ee/ci/variables/#use-the--character-in-variables), which can be confusing.
+
+ In this release, we are introducing a new setting for project, group, and instance CI/CD variables. You can now toggle whether or not GitLab interprets the CI/CD variable as a raw string, or treats a `$` as the start of another variable that should be expanded.
+ stage: verify
+ self-managed: true
+ gitlab-com: true
+ available_in: [Free, Premium, Ultimate]
+ documentation_link: https://docs.gitlab.com/ee/ci/variables/#expand-cicd-variables
+ image_url: https://about.gitlab.com/images/15_7/raw.png
+ published_at: 2022-12-22
+ release: 15.7
diff --git a/doc/administration/geo/replication/datatypes.md b/doc/administration/geo/replication/datatypes.md
index 022fe114a33..52cd64b8f33 100644
--- a/doc/administration/geo/replication/datatypes.md
+++ b/doc/administration/geo/replication/datatypes.md
@@ -63,6 +63,8 @@ verification methods:
| Blobs | Incident Metric Images _(object storage)_ | Geo with API/Managed (*2*) | _Not implemented_ |
| Blobs | Alert Metric Images _(file system)_ | Geo with API | SHA256 checksum |
| Blobs | Alert Metric Images _(object storage)_ | Geo with API/Managed (*2*) | _Not implemented_ |
+| Blobs | Dependency Proxy Images_(file system)_ | Geo with API | SHA256 checksum |
+| Blobs | Dependency Proxy Images _(object_storage)_ | Geo with API/managed (*2*) | _Not implemented_ |
- (*1*): Redis replication can be used as part of HA with Redis sentinel. It's not used between Geo sites.
- (*2*): Object storage replication can be performed by Geo or by your object storage provider/appliance
@@ -214,7 +216,7 @@ successfully, you must replicate their data using some other means.
|[Alert Metric Images](../../../operations/incident_management/alerts.md#metrics-tab) | **Yes** (15.5) | **Yes** (15.5) | **Yes** (15.5) | [No](object_storage.md#verification-of-files-in-object-storage) | Replication/Verification is handled via the Uploads data type. |
|[Server-side Git hooks](../../server_hooks.md) | [Not planned](https://gitlab.com/groups/gitlab-org/-/epics/1867) | No | N/A | N/A | Not planned because of current implementation complexity, low customer interest, and availability of alternatives to hooks. |
|[Elasticsearch integration](../../../integration/advanced_search/elasticsearch.md) | [Not planned](https://gitlab.com/gitlab-org/gitlab/-/issues/1186) | No | No | No | Not planned because further product discovery is required and Elasticsearch (ES) clusters can be rebuilt. Secondaries use the same ES cluster as the primary. |
-|[Dependency proxy images](../../../user/packages/dependency_proxy/index.md) | [Planned](https://gitlab.com/groups/gitlab-org/-/epics/8833) | No | No | No | Blocked by [Geo: Secondary Mimicry](https://gitlab.com/groups/gitlab-org/-/epics/1528). Replication of this cache is not needed for disaster recovery purposes because it can be recreated from external sources. |
+|[Dependency Proxy Images](../../../user/packages/dependency_proxy/index.md) | [**Yes** (15.7)](https://gitlab.com/groups/gitlab-org/-/epics/8833) | [**Yes** (15.7)](https://gitlab.com/groups/gitlab-org/-/epics/8833) | [**Yes** (15.7)](https://gitlab.com/groups/gitlab-org/-/epics/8833) | [No](object_storage.md#verification-of-files-in-object-storage) | |
|[Vulnerability Export](../../../user/application_security/vulnerability_report/index.md#export-vulnerability-details) | [Not planned](https://gitlab.com/groups/gitlab-org/-/epics/3111) | No | No | No | Not planned because they are ephemeral and sensitive information. They can be regenerated on demand. |
\* Migrated to [self-service framework](../../../development/geo/framework.md) in 15.5. See GitLab issue [#337436](https://gitlab.com/gitlab-org/gitlab/-/issues/337436) for more details.
diff --git a/doc/api/import.md b/doc/api/import.md
index 723176bdf02..057beefaf20 100644
--- a/doc/api/import.md
+++ b/doc/api/import.md
@@ -118,7 +118,11 @@ Returns the following status codes:
## Import GitHub gists into GitLab snippets
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371099) in GitLab 15.8.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371099) in GitLab 15.8 [with a flag](../administration/feature_flags.md) named `github_import_gists`. Disabled by default.
+
+FLAG:
+On self-managed GitLab, by default this feature is not available. To make it available,
+ask an administrator to [enable the feature flag](../administration/feature_flags.md) named `github_import_gists`.
You can use the GitLab API to import personal GitHub gists (with up to 10 files) into personal GitLab snippets.
GitHub gists with more than 10 files are skipped. You should manually migrate these GitHub gists.
diff --git a/doc/api/metadata.md b/doc/api/metadata.md
index c3cbae70a54..92f7177482a 100644
--- a/doc/api/metadata.md
+++ b/doc/api/metadata.md
@@ -6,7 +6,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Metadata API **(FREE)**
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/357032) in GitLab 15.2.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/357032) in GitLab 15.2.
+> - `enterprise` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/103969) in GitLab 15.6.
Retrieve metadata information for this GitLab instance.
diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md
index 2e20e66e12c..9a1650a4677 100644
--- a/doc/development/rake_tasks.md
+++ b/doc/development/rake_tasks.md
@@ -99,6 +99,7 @@ graph TD
P1121[Project 1.1.2.1<br><i>15% of jobs, sent to first 5 runners</i>]
P211[Project 2.1.1<br><i>15% of jobs, sent to first 5 runners</i>]
+ IR1[Instance runner]
P1111R1[Shared runner]
P1111R[Project 1.1.1.1 runners<br>20% total runners]
P1121R[Project 1.1.2.1 runners<br>49% total runners]
@@ -107,11 +108,14 @@ graph TD
P1111 --> P1111R1
P1111 --> G111R
+ P1111 --> IR1
P1111 --> P1111R
P1121 --> P1111R1
+ P1121 --> IR1
P1121 --> P1121R
P211 --> P1111R1
P211 --> G21R
+ P211 --> IR1
classDef groups fill:#09f6,color:#000000,stroke:#333,stroke-width:3px;
classDef projects fill:#f96a,color:#000000,stroke:#333,stroke-width:2px;
diff --git a/doc/subscriptions/bronze_starter.md b/doc/subscriptions/bronze_starter.md
index ec932f2384b..d74cea671a4 100644
--- a/doc/subscriptions/bronze_starter.md
+++ b/doc/subscriptions/bronze_starter.md
@@ -104,8 +104,8 @@ the tiers are no longer mentioned in GitLab documentation:
- [External groups](../integration/saml.md#external-groups)
- [Required groups](../integration/saml.md#required-groups)
- Search:
- - [Filtering merge requests by approvers](../user/project/merge_requests/index.md#filter-merge-requests-by-approvers)
- - [Filtering merge requests by "approved by"](../user/project/merge_requests/index.md#filter-merge-requests-by-approved-by)
+ - [Filtering merge requests](../user/project/merge_requests/index.md#filter-the-list-of-merge-requests) by approvers
+ - [Filtering merge requests](../user/project/merge_requests/index.md#filter-the-list-of-merge-requests) by "approved by"
- [Advanced Search (Elasticsearch)](../user/search/advanced_search.md)
- [Service Desk](../user/project/service_desk.md)
- [Storage usage statistics](../user/usage_quotas.md#storage-usage-statistics)
diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md
index 94719224254..aacb783beb7 100644
--- a/doc/user/application_security/sast/index.md
+++ b/doc/user/application_security/sast/index.md
@@ -105,7 +105,6 @@ Check the [SAST direction page](https://about.gitlab.com/direction/secure/static
| React | [Semgrep](https://gitlab.com/gitlab-org/security-products/analyzers/semgrep) with GitLab-managed rules | 13.10 |
| Ruby | [brakeman](https://gitlab.com/gitlab-org/security-products/analyzers/brakeman) | 13.9 |
| Ruby on Rails | [brakeman](https://gitlab.com/gitlab-org/security-products/analyzers/brakeman) | 10.3 |
-| Scala (any build system) | [Semgrep](https://gitlab.com/gitlab-org/security-products/analyzers/semgrep) with GitLab-managed rules | 15.7 |
| Scala<sup>2</sup> | [SpotBugs](https://gitlab.com/gitlab-org/security-products/analyzers/spotbugs) with the find-sec-bugs plugin | 11.0 (SBT) & 11.9 (Gradle, Maven) |
| Swift (iOS) | [MobSF (beta)](https://gitlab.com/gitlab-org/security-products/analyzers/mobsf) | 13.5 |
| TypeScript<sup>3</sup> | [ESLint security plugin](https://gitlab.com/gitlab-org/security-products/analyzers/eslint) | 11.9, [merged](https://gitlab.com/gitlab-org/gitlab/-/issues/36059) with ESLint in 13.2 |
diff --git a/doc/user/project/issues/managing_issues.md b/doc/user/project/issues/managing_issues.md
index ea90dda88f6..c33b151d92f 100644
--- a/doc/user/project/issues/managing_issues.md
+++ b/doc/user/project/issues/managing_issues.md
@@ -351,6 +351,13 @@ Alternatively, you can use the `/promote` [quick action](../quick_actions.md#iss
Read more about [promoting an issues to epics](../../group/epics/manage_epics.md#promote-an-issue-to-an-epic).
+## Promote an issue to an incident
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/296787) in GitLab 14.5.
+> - Quick actions to set issue type as incident upon creation [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/376760) in GitLab 15.8.
+
+You can use the `/promote_to_incident` [quick action](../quick_actions.md) to promote the issue to an [incident](../../../operations/incident_management/incidents.md).
+
## Add an issue to an iteration **(PREMIUM)**
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/216158) in GitLab 13.2.
diff --git a/doc/user/project/members/index.md b/doc/user/project/members/index.md
index a7627f12657..600f6d694d6 100644
--- a/doc/user/project/members/index.md
+++ b/doc/user/project/members/index.md
@@ -97,6 +97,9 @@ Each user's access is based on:
- The role they're assigned in the group.
- The maximum role you choose when you invite the group.
+If a user has a group role with fewer permissions than the maximum project role, the user keeps the permissions of their group role.
+For example, if you add a user with the Guest role to a project with a maximum role of Maintainer, the user has only the permissions of the Guest role.
+
Prerequisites:
- You must have the Maintainer or Owner role.
diff --git a/doc/user/project/merge_requests/getting_started.md b/doc/user/project/merge_requests/getting_started.md
index 427ab9606e8..dd9f09eb1e0 100644
--- a/doc/user/project/merge_requests/getting_started.md
+++ b/doc/user/project/merge_requests/getting_started.md
@@ -42,10 +42,6 @@ before concluding your work and merging the merge request.
You can watch our [GitLab Flow video](https://www.youtube.com/watch?v=InKNIvky2KE) for
a quick overview of working with merge requests.
-## How to create a merge request
-
-Learn the various ways to [create a merge request](creating_merge_requests.md).
-
## What you can do with merge requests
When you start a new merge request, you can immediately include the following
diff --git a/doc/user/project/merge_requests/img/filter_approved_by_merge_requests_v14_6.png b/doc/user/project/merge_requests/img/filter_approved_by_merge_requests_v14_6.png
deleted file mode 100644
index 8d47fdc2652..00000000000
--- a/doc/user/project/merge_requests/img/filter_approved_by_merge_requests_v14_6.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/merge_requests/img/filter_approver_merge_requests_v14_6.png b/doc/user/project/merge_requests/img/filter_approver_merge_requests_v14_6.png
deleted file mode 100644
index 58950031378..00000000000
--- a/doc/user/project/merge_requests/img/filter_approver_merge_requests_v14_6.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/merge_requests/index.md b/doc/user/project/merge_requests/index.md
index 8309b04758a..21651fd645c 100644
--- a/doc/user/project/merge_requests/index.md
+++ b/doc/user/project/merge_requests/index.md
@@ -19,6 +19,10 @@ Merge requests include:
Read more about [how to get started](getting_started.md).
+## Create a merge request
+
+Learn the various ways to [create a merge request](creating_merge_requests.md).
+
## View merge requests
You can view merge requests for your project, group, or yourself.
@@ -63,56 +67,36 @@ or:
## Filter the list of merge requests
+> - Filtering by `approved-by` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30335) in GitLab 13.0.
+> - Filtering by `reviewer` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/47605) in GitLab 13.7.
+> - Filtering by potential approvers was moved to GitLab Premium in 13.9.
+> - Filtering by `approved-by` moved to GitLab Premium in 13.9.
+
To filter the list of merge requests:
1. Above the list of merge requests, select **Search or filter results...**.
-1. In the dropdown list that appears, select the attribute you wish to filter by.
+1. From the dropdown list, select the attribute you wish to filter by. Some examples:
+ - [**By environment or deployment date**](#filter-merge-requests-by-environment-or-deployment-date).
+ - **ID**: Enter filter `#30` to return only merge request 30.
+ - User filters: Type (or select from the dropdown list) any of these filters to display a list of users:
+ - **Approved-By**, for merge requests already approved by a user. **(PREMIUM)**.
+ - **Approver**, for merge requests that this user is eligible to approve.
+ (For more information, read about [Code owners](../code_owners.md)). **(PREMIUM)**
+ - **Reviewer**, for merge requests reviewed by this user.
1. Select or type the operator to use for filtering the attribute. The following operators are
available:
- `=`: Is
- - `!=`: Is not ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18059) in GitLab 12.7)
+ - `!=`: Is not
1. Enter the text to filter the attribute by.
You can filter some attributes by **None** or **Any**.
1. Repeat this process to filter by multiple attributes. Multiple attributes are joined by a logical
`AND`.
+1. Select a **Sort direction**, either **{sort-lowest}** for descending order,
+ or **{sort-highest}** for ascending order.
GitLab displays the results on-screen, but you can also
[retrieve them as an RSS feed](../../search/index.md#retrieve-search-results-as-feed).
-### Filter merge requests by ID
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/39908) in GitLab 12.1.
-
-You can filter the **Merge Request** list to find merge requests by their ID.
-
-For example, enter filter `#30` to return only merge request 30.
-
-### Filter merge requests by approvers **(PREMIUM)**
-
-> Moved to GitLab Premium in 13.9.
-
-To filter merge requests by an individual eligible approver ([Code owner](../code_owners.md)), you can type (or select from
-the dropdown list) **Approver** and select the user.
-
-![Filter MRs by an approver](img/filter_approver_merge_requests_v14_6.png)
-
-### Filter merge requests by "approved by" **(PREMIUM)**
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30335) in GitLab 13.0.
-> - Moved to GitLab Premium in 13.9.
-
-To filter merge requests already approved by a specific individual, you can type (or select from
-the dropdown list) **Approved-By** and select the user.
-
-![Filter MRs by approved by](img/filter_approved_by_merge_requests_v14_6.png)
-
-### Filter merge requests by reviewer
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/47605) in GitLab 13.7.
-
-To filter review requested merge requests for a specific individual, you can type (or select from
-the dropdown list) **Reviewer** and select the user.
-
### Filter merge requests by environment or deployment date
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/44041) in GitLab 13.6.
diff --git a/doc/user/project/merge_requests/methods/index.md b/doc/user/project/merge_requests/methods/index.md
index 249a98f1779..b1d07a740bf 100644
--- a/doc/user/project/merge_requests/methods/index.md
+++ b/doc/user/project/merge_requests/methods/index.md
@@ -180,9 +180,9 @@ When a fast-forward merge is not possible, the user is given the option to rebas
[Rebasing in (semi-)linear merge methods](#rebasing-in-semi-linear-merge-methods).
NOTE:
-Projects using the fast-forward merge strategy can't filter merge requests
-[by deployment date](../index.md#filter-merge-requests-by-environment-or-deployment-date),
-because no merge commit is created.
+Projects that use the fast-forward merge strategy can't
+[filter merge requests](../index.md#filter-the-list-of-merge-requests)
+by deployment date, because no merge commit is created.
When you visit the merge request page with `Fast-forward merge`
method selected, you can accept it **only if a fast-forward merge is possible**.
diff --git a/doc/user/project/quick_actions.md b/doc/user/project/quick_actions.md
index a73a5329688..d12a71c9ab3 100644
--- a/doc/user/project/quick_actions.md
+++ b/doc/user/project/quick_actions.md
@@ -86,7 +86,7 @@ threads. Some quick actions might not be available to all subscription tiers.
| `/move <path/to/project>` | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No | Move this issue to another project. Be careful when moving an issue to a project with different access rules. Before moving the issue, make sure it does not contain sensitive data. |
| `/parent_epic <epic>` | **{dotted-circle}** No | **{dotted-circle}** No | **{check-circle}** Yes | Set parent epic to `<epic>`. The `<epic>` value should be in the format of `&epic`, `group&epic`, or a URL to an epic ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10556) in GitLab 12.1). |
| `/promote` | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No | Promote issue to epic. |
-| `/promote_to_incident` | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No | Promote issue to incident ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/296787) in GitLab 14.5). |
+| `/promote_to_incident` | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No | Promote issue to incident ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/296787) in GitLab 14.5). In [GitLab 15.8 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/376760), you can also use the quick action when creating a new issue. |
| `/page <policy name>` | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No | Start escalations for the incident ([introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/79977) in GitLab 14.9). |
| `/publish` | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No | Publish issue to an associated [Status Page](../../operations/incident_management/status_page.md) ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30906) in GitLab 13.0) |
| `/ready` | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No | Set the [ready status](merge_requests/drafts.md#mark-merge-requests-as-ready) ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90361) in GitLab 15.1). |
diff --git a/doc/user/project/repository/ssh_signed_commits/index.md b/doc/user/project/repository/ssh_signed_commits/index.md
index 06affa54a51..85d2ce1d480 100644
--- a/doc/user/project/repository/ssh_signed_commits/index.md
+++ b/doc/user/project/repository/ssh_signed_commits/index.md
@@ -6,12 +6,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Sign commits with SSH keys **(FREE)**
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/343879) in GitLab 15.7 [with a flag](../../../../administration/feature_flags.md) named `ssh_commit_signatures`. Enabled by default.
-
-FLAG:
-On self-managed GitLab, by default this feature is available. To hide the feature,
-ask an administrator to [disable the feature flag](../../../../administration/feature_flags.md) named `ssh_commit_signatures`.
-On GitLab.com, this feature is available.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/343879) in GitLab 15.7 [with a flag](../../../../administration/feature_flags.md) named `ssh_commit_signatures`. Enabled by default.
+> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/384202) in GitLab 15.8. Feature flag `ssh_commit_signatures` removed.
Use SSH keys to sign Git commits in the same manner as
[GPG signed commits](../gpg_signed_commits/index.md). When you sign commits
diff --git a/lib/api/import_github.rb b/lib/api/import_github.rb
index a5aa40fc40d..4dfb1f8c840 100644
--- a/lib/api/import_github.rb
+++ b/lib/api/import_github.rb
@@ -111,6 +111,8 @@ module API
requires :personal_access_token, type: String, desc: 'GitHub personal access token'
end
post 'import/github/gists' do
+ not_found! if Feature.disabled?(:github_import_gists)
+
authorize! :create_snippet
result = Import::Github::GistsImportService.new(current_user, client, access_params).execute
diff --git a/lib/gitlab/memory/reporter.rb b/lib/gitlab/memory/reporter.rb
index 710c89c6216..5effafc9f5b 100644
--- a/lib/gitlab/memory/reporter.rb
+++ b/lib/gitlab/memory/reporter.rb
@@ -3,6 +3,8 @@
module Gitlab
module Memory
class Reporter
+ COMPRESS_CMD = %w[gzip --fast].freeze
+
attr_reader :reports_path
def initialize(reports_path: nil, logger: Gitlab::AppLogger)
@@ -67,29 +69,39 @@ module Gitlab
report_file = file_name(report)
tmp_file_path = File.join(tmp_dir, report_file)
+ write_heap_dump_file(report, tmp_file_path)
+
+ File.join(@reports_path, report_file).tap do |report_file_path|
+ FileUtils.mv(tmp_file_path, report_file_path)
+ end
+ end
+
+ def write_heap_dump_file(report, path)
io_r, io_w = IO.pipe
+ err_r, err_w = IO.pipe
pid = nil
- File.open(tmp_file_path, 'wb') do |file|
+ status = nil
+ File.open(path, 'wb') do |file|
extras = {
in: io_r,
out: file,
- err: $stderr
+ err: err_w
}
- pid = Process.spawn('gzip', '--fast', **extras)
+ pid = Process.spawn(*COMPRESS_CMD, **extras)
io_r.close
+ err_w.close
report.run(io_w)
io_w.close
- Process.waitpid(pid)
+ _, status = Process.wait2(pid)
end
- File.join(@reports_path, report_file).tap do |report_file_path|
- FileUtils.mv(tmp_file_path, report_file_path)
- end
+ errors = err_r.read&.strip
+ err_r.close
+ raise StandardError, "exit #{status.exitstatus}: #{errors}" if !status&.success? && errors.present?
ensure
- [io_r, io_w].each(&:close)
-
+ [io_r, io_w, err_r, err_w].each(&:close)
# Make sure we don't leave any running processes behind.
Gitlab::ProcessManagement.signal(pid, :KILL) if pid
end
diff --git a/lib/gitlab/quick_actions/issue_actions.rb b/lib/gitlab/quick_actions/issue_actions.rb
index 14e9e66e037..f782f2802b6 100644
--- a/lib/gitlab/quick_actions/issue_actions.rb
+++ b/lib/gitlab/quick_actions/issue_actions.rb
@@ -252,23 +252,14 @@ module Gitlab
desc { _('Promote issue to incident') }
explanation { _('Promotes issue to incident') }
+ execution_message { _('Issue has been promoted to incident') }
types Issue
condition do
- quick_action_target.persisted? &&
- !quick_action_target.incident? &&
- current_user.can?(:update_issue, quick_action_target)
+ !quick_action_target.incident? &&
+ current_user.can?(:"set_#{quick_action_target.issue_type}_metadata", quick_action_target)
end
command :promote_to_incident do
- issue = ::Issues::UpdateService
- .new(project: quick_action_target.project, current_user: current_user, params: { issue_type: 'incident' })
- .execute(quick_action_target)
-
- @execution_message[:promote_to_incident] =
- if issue.incident?
- _('Issue has been promoted to incident')
- else
- _('Failed to promote issue to incident')
- end
+ @updates[:issue_type] = "incident"
end
desc { _('Add customer relation contacts') }
diff --git a/lib/gitlab/redis/multi_store.rb b/lib/gitlab/redis/multi_store.rb
index ffb9cf2b9de..a9d71e5f98f 100644
--- a/lib/gitlab/redis/multi_store.rb
+++ b/lib/gitlab/redis/multi_store.rb
@@ -26,7 +26,7 @@ module Gitlab
class MethodMissingError < StandardError
def message
- 'Method missing. Falling back to execute method on the redis secondary store.'
+ 'Method missing. Falling back to execute method on the redis default store in Rails.env.production.'
end
end
@@ -39,22 +39,40 @@ module Gitlab
SKIP_LOG_METHOD_MISSING_FOR_COMMANDS = %i(info).freeze
READ_COMMANDS = %i(
+ exists
+ exists?
get
+ hexists
+ hget
+ hgetall
+ hlen
+ hmget
+ mapped_hmget
mget
- smembers
scard
+ sismember
+ smembers
+ sscan
+ ttl
).freeze
WRITE_COMMANDS = %i(
- set
- setnx
- setex
- sadd
- srem
del
+ eval
+ expire
flushdb
+ hdel
+ hset
+ incr
+ incrby
+ mapped_hmset
rpush
- eval
+ sadd
+ set
+ setex
+ setnx
+ srem
+ unlink
).freeze
PIPELINED_COMMANDS = %i(
@@ -193,6 +211,8 @@ module Gitlab
def log_method_missing(command_name, *_args)
return if SKIP_LOG_METHOD_MISSING_FOR_COMMANDS.include?(command_name)
+ raise MethodMissingError if Rails.env.test? || Rails.env.development?
+
log_error(MethodMissingError.new, command_name)
increment_method_missing_count(command_name)
end
diff --git a/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder.rb b/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder.rb
index a0abe8bf9e4..61d9bbca16c 100644
--- a/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder.rb
+++ b/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder.rb
@@ -41,13 +41,12 @@ module Gitlab
remaining_job_count = create_pipelines_and_distribute_jobs(remaining_job_count, project_index: index, **d)
end
- if remaining_job_count > 0
- create_pipeline(
+ while remaining_job_count > 0
+ remaining_job_count -= create_pipeline(
job_count: remaining_job_count,
**@projects_to_runners[PROJECT_JOB_DISTRIBUTION.length],
- status: Random.rand(1..100) < 40 ? 'failed' : 'success'
+ status: random_pipeline_status
)
- remaining_job_count = 0
end
logger.info(
@@ -78,13 +77,12 @@ module Gitlab
pipeline_count = [1, total_jobs / pipeline_job_count].max
(1..pipeline_count).each do
- create_pipeline(
+ remaining_job_count -= create_pipeline(
job_count: pipeline_job_count,
project_id: project_id,
runner_ids: runner_ids,
- status: Random.rand(1..100) < 70 ? 'failed' : 'success'
+ status: random_pipeline_status
)
- remaining_job_count -= pipeline_job_count
end
remaining_job_count
@@ -98,10 +96,18 @@ module Gitlab
raise ArgumentError('project_id') unless project_id
sha = '00000000'
- created_at = Random.rand(PIPELINE_CREATION_RANGE_MIN_IN_MINUTES..PIPELINE_CREATION_RANGE_MAX_IN_MINUTES)
- .minutes.ago
- started_at = created_at + Random.rand(1..PIPELINE_START_RANGE_MAX_IN_MINUTES).seconds
- finished_at = started_at + Random.rand(1..PIPELINE_FINISH_RANGE_MAX_IN_MINUTES).minutes
+ if ::Ci::HasStatus::ALIVE_STATUSES.include?(status) || ::Ci::HasStatus::COMPLETED_STATUSES.include?(status)
+ created_at = Random.rand(PIPELINE_CREATION_RANGE_MIN_IN_MINUTES..PIPELINE_CREATION_RANGE_MAX_IN_MINUTES)
+ .minutes.ago
+
+ if ::Ci::HasStatus::STARTED_STATUSES.include?(status) ||
+ ::Ci::HasStatus::COMPLETED_STATUSES.include?(status)
+ started_at = created_at + Random.rand(1..PIPELINE_START_RANGE_MAX_IN_MINUTES).minutes
+ if ::Ci::HasStatus::COMPLETED_STATUSES.include?(status)
+ finished_at = started_at + Random.rand(1..PIPELINE_FINISH_RANGE_MAX_IN_MINUTES).minutes
+ end
+ end
+ end
pipeline = ::Ci::Pipeline.new(
project_id: project_id,
@@ -117,19 +123,33 @@ module Gitlab
pipeline.ensure_project_iid! # allocate an internal_id outside of pipeline creation transaction
pipeline.save!
- (1..job_count).each do |index|
- create_build(pipeline, runner_ids.sample, job_status(pipeline.status, index, job_count), index)
+ if created_at.present?
+ (1..job_count).each do |index|
+ create_build(pipeline, runner_ids.sample, job_status(pipeline.status, index, job_count), index)
+ end
end
- pipeline
+ job_count
end
def create_build(pipeline, runner_id, job_status, index)
started_at = pipeline.started_at
finished_at = pipeline.finished_at
- max_job_duration = [MAX_QUEUE_TIME_IN_SECONDS, finished_at - started_at].min
- job_started_at = started_at + Random.rand(1..max_job_duration).seconds
- job_finished_at = Random.rand(job_started_at..finished_at)
+
+ max_job_duration =
+ if finished_at
+ [MAX_QUEUE_TIME_IN_SECONDS, finished_at - started_at].min
+ else
+ Random.rand(1..5).seconds
+ end
+
+ job_created_at = pipeline.created_at
+ job_started_at = started_at + Random.rand(1..max_job_duration) if started_at
+ if finished_at
+ job_finished_at = Random.rand(job_started_at..finished_at)
+ elsif job_status == 'running'
+ job_finished_at = job_started_at + Random.rand(1..PIPELINE_FINISH_RANGE_MAX_IN_MINUTES).minutes
+ end
build_attrs = {
name: "Fake job #{index}",
@@ -139,8 +159,8 @@ module Gitlab
pipeline_id: pipeline.id,
runner_id: runner_id,
project_id: pipeline.project_id,
- created_at: started_at,
- queued_at: started_at,
+ created_at: job_created_at,
+ queued_at: job_created_at,
started_at: job_started_at,
finished_at: job_finished_at
}
@@ -149,11 +169,28 @@ module Gitlab
::Ci::Build.new(importing: true, **build_attrs).tap(&:save!)
end
+ def random_pipeline_status
+ if Random.rand(1..4) == 4
+ %w[created pending canceled running].sample
+ elsif Random.rand(1..3) == 1
+ 'success'
+ else
+ 'failed'
+ end
+ end
+
def job_status(pipeline_status, job_index, job_count)
- return 'success' if pipeline_status == 'success'
- return 'failed' if job_index == job_count # Ensure that a failed pipeline has at least 1 failed job
+ return pipeline_status if %w[created pending success].include?(pipeline_status)
+
+ # Ensure that a failed/canceled pipeline has at least 1 failed/canceled job
+ if job_index == job_count && ::Ci::HasStatus::PASSED_WITH_WARNINGS_STATUSES.include?(pipeline_status)
+ return pipeline_status
+ end
+
+ possible_statuses = %w[failed success]
+ possible_statuses << pipeline_status if %w[canceled running].include?(pipeline_status)
- Random.rand(0..1) == 0 ? 'failed' : 'success'
+ possible_statuses.sample
end
end
end
diff --git a/lib/gitlab/seeders/ci/runner/runner_fleet_seeder.rb b/lib/gitlab/seeders/ci/runner/runner_fleet_seeder.rb
index 7cc796dfd6f..5f5140dc236 100644
--- a/lib/gitlab/seeders/ci/runner/runner_fleet_seeder.rb
+++ b/lib/gitlab/seeders/ci/runner/runner_fleet_seeder.rb
@@ -102,18 +102,20 @@ module Gitlab
end
def create_runners(gp)
+ instance_runners = []
group_1_1_1_runners = []
group_2_1_runners = []
project_1_1_1_1_runners = []
project_1_1_2_1_runners = []
project_2_1_1_runners = []
+ instance_runners << create_runner(name: 'instance runner 1')
project_1_1_1_1_shared_runner_1 =
create_runner(name: 'project 1.1.1.1 shared runner 1', scope: gp[:project_1_1_1_1])
project_1_1_1_1_runners << project_1_1_1_1_shared_runner_1
project_1_1_2_1_runners << assign_runner(project_1_1_1_1_shared_runner_1, gp[:project_1_1_2_1])
project_2_1_1_runners << assign_runner(project_1_1_1_1_shared_runner_1, gp[:project_2_1_1])
- (2..@runner_count).each do
+ (3..@runner_count).each do
case Random.rand(0..100)
when 0..30
runner_name = "group 1.1.1 runner #{1 + group_1_1_1_runners.count}"
@@ -131,9 +133,11 @@ module Gitlab
end
{ # use only the first 5 runners to assign CI jobs
- project_1_1_1_1: (project_1_1_1_1_runners.map(&:id) + group_1_1_1_runners.map(&:id)).first(5),
- project_1_1_2_1: project_1_1_2_1_runners.map(&:id).first(5),
- project_2_1_1: (project_2_1_1_runners.map(&:id) + group_2_1_runners.map(&:id)).first(5)
+ project_1_1_1_1:
+ ((instance_runners + project_1_1_1_1_runners).map(&:id) + group_1_1_1_runners.map(&:id)).first(5),
+ project_1_1_2_1: (instance_runners + project_1_1_2_1_runners).map(&:id).first(5),
+ project_2_1_1:
+ ((instance_runners + project_2_1_1_runners).map(&:id) + group_2_1_runners.map(&:id)).first(5)
}
end
@@ -186,15 +190,22 @@ module Gitlab
raise RuntimeError
end
- def create_runner(scope:, name:, **args)
+ def create_runner(name:, scope: nil, **args)
name = generate_name(name)
- logger.info(message: 'Creating runner', scope: scope.class.name, name: name)
+ scope_name = scope.class.name if scope
+ logger.info(message: 'Creating runner', scope: scope_name, name: name)
executor = ::Ci::Runner::EXECUTOR_NAME_TO_TYPES.keys.sample
args.merge!(additional_runner_args(name, executor))
- response = ::Ci::Runners::RegisterRunnerService.new.execute(scope.runners_token, name: name, **args)
+ runners_token = if scope.nil?
+ Gitlab::CurrentSettings.runners_registration_token
+ else
+ scope.runners_token
+ end
+
+ response = ::Ci::Runners::RegisterRunnerService.new.execute(runners_token, name: name, **args)
runner = response.payload[:runner]
::Ci::Runners::ProcessRunnerVersionUpdateWorker.new.perform(args[:version])
diff --git a/lib/tasks/gitlab/seed/runner_fleet.rake b/lib/tasks/gitlab/seed/runner_fleet.rake
index 98f06c692b9..c0b79269c75 100644
--- a/lib/tasks/gitlab/seed/runner_fleet.rake
+++ b/lib/tasks/gitlab/seed/runner_fleet.rake
@@ -3,8 +3,8 @@
# Seed database with:
# 1. 2 root groups, one with 2 sub-groups and another with 1 sub-group
# 1. 1 project in each of the sub-groups
-# 1. 1 shared project runner, and 1 group runner in a couple of the sub-groups
-# 1. Successful and failed pipelines assigned to the first 5 runners of each group/project
+# 1. 1 instance runner, 1 shared project runner, and group/project runners in some groups/projects
+# 1. Successful and failed pipelines assigned to the first 5 available runners of each group/project
# 1. 1 pipeline on one group runner with the remaining jobs
#
# @param username - user creating subgroups (i.e. GitLab admin)
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index fe528918fe6..e498583f380 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -16905,9 +16905,6 @@ msgstr ""
msgid "Failed to move this issue because target project doesn't exist."
msgstr ""
-msgid "Failed to promote issue to incident"
-msgstr ""
-
msgid "Failed to promote label due to internal error. Please contact administrators."
msgstr ""
diff --git a/metrics_server/metrics_server.rb b/metrics_server/metrics_server.rb
index 0516d711ffb..a324b034b5e 100644
--- a/metrics_server/metrics_server.rb
+++ b/metrics_server/metrics_server.rb
@@ -45,7 +45,7 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass
env = {
'GOGC' => '10', # Set Go GC heap goal to 10% to curb memory growth.
'GME_MMAP_METRICS_DIR' => metrics_dir.to_s,
- 'GME_PROBES' => 'self,mmap',
+ 'GME_PROBES' => 'self,mmap,mmap_stats',
'GME_SERVER_HOST' => settings['address'],
'GME_SERVER_PORT' => settings['port'].to_s
}
diff --git a/package.json b/package.json
index a406a98bbb8..f5c010e0d0b 100644
--- a/package.json
+++ b/package.json
@@ -59,8 +59,7 @@
"@gitlab/svgs": "3.14.0",
"@gitlab/ui": "52.6.1",
"@gitlab/visual-review-tools": "1.7.3",
- "@gitlab/web-ide": "0.0.1-dev-20221221021927",
- "@mermaid-js/mermaid-mindmap": "^9.3.0",
+ "@gitlab/web-ide": "0.0.1-dev-20221217175648",
"@rails/actioncable": "6.1.4-7",
"@rails/ujs": "6.1.4-7",
"@sourcegraph/code-host-integration": "0.0.84",
@@ -148,7 +147,7 @@
"marked": "^4.0.18",
"mathjax": "3",
"mdurl": "^1.0.1",
- "mermaid": "^9.3.0",
+ "mermaid": "^9.1.3",
"micromatch": "^4.0.5",
"minimatch": "^3.0.4",
"monaco-editor": "^0.30.1",
diff --git a/spec/frontend/work_items/components/notes/system_note_spec.js b/spec/frontend/work_items/components/notes/system_note_spec.js
index 457d432565f..3e3b8bf65b2 100644
--- a/spec/frontend/work_items/components/notes/system_note_spec.js
+++ b/spec/frontend/work_items/components/notes/system_note_spec.js
@@ -43,7 +43,6 @@ describe('system note component', () => {
path: '/root',
},
bodyHtml: '<p dir="auto">closed</p>',
- note_html: '<p dir="auto">closed</p>',
systemNoteIconName: 'status_closed',
createdAt: '2017-08-02T10:51:58.559Z',
},
diff --git a/spec/helpers/admin/components_helper_spec.rb b/spec/helpers/admin/components_helper_spec.rb
new file mode 100644
index 00000000000..bb590d003ad
--- /dev/null
+++ b/spec/helpers/admin/components_helper_spec.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+require "spec_helper"
+
+RSpec.describe Admin::ComponentsHelper, feature_category: :database do
+ describe '#database_versions' do
+ let(:expected_version) { '12.13' }
+ let(:expected_hash) do
+ main = {
+ main: { adapter_name: 'PostgreSQL', version: expected_version }
+ }
+ main[:ci] = { adapter_name: 'PostgreSQL', version: expected_version } if Gitlab::Database.has_config?(:ci)
+ main[:geo] = { adapter_name: 'PostgreSQL', version: expected_version } if Gitlab::Database.has_config?(:geo)
+
+ main
+ end
+
+ subject { helper.database_versions }
+
+ before do
+ allow_next_instance_of(Gitlab::Database::Reflection) do |reflection|
+ allow(reflection).to receive(:version).and_return(expected_version)
+ end
+ end
+
+ it 'returns expected database data' do
+ expect(subject).to eq(expected_hash)
+ end
+ end
+end
diff --git a/spec/lib/gitlab/memory/reporter_spec.rb b/spec/lib/gitlab/memory/reporter_spec.rb
index 924397ceb4f..64ae740a5d7 100644
--- a/spec/lib/gitlab/memory/reporter_spec.rb
+++ b/spec/lib/gitlab/memory/reporter_spec.rb
@@ -26,15 +26,15 @@ RSpec.describe Gitlab::Memory::Reporter, :aggregate_failures, feature_category:
FileUtils.rm_rf(reports_path)
end
- describe '#run_report', time_travel_to: '2020-02-02 10:30:45 0000' do
+ describe '#run_report', time_travel_to: '2020-02-02 10:30:45 +0000' do
let(:report_duration_counter) { instance_double(::Prometheus::Client::Counter) }
let(:file_size) { 1_000_000 }
let(:report_file) { "#{reports_path}/fake_report.2020-02-02.10:30:45:000.worker_1.abc123.gz" }
-
- let(:input) { StringIO.new }
- let(:output) { StringIO.new }
+ let(:output) { File.read(report_file) }
before do
+ stub_const('Gitlab::Memory::Reporter::COMPRESS_CMD', %w[cat])
+
allow(SecureRandom).to receive(:uuid).and_return('abc123')
allow(Gitlab::Metrics).to receive(:counter).and_return(report_duration_counter)
@@ -44,22 +44,13 @@ RSpec.describe Gitlab::Memory::Reporter, :aggregate_failures, feature_category:
allow(File).to receive(:size).with(report_file).and_return(file_size)
allow(logger).to receive(:info)
-
- stub_gzip
end
shared_examples 'runs and stores reports' do
it 'runs the given report and returns true' do
expect(reporter.run_report(report)).to be(true)
- expect(output.string).to eq('I ran')
- end
-
- it 'closes read and write streams' do
- expect(input).to receive(:close).ordered.at_least(:once)
- expect(output).to receive(:close).ordered.at_least(:once)
-
- reporter.run_report(report)
+ expect(output).to eq('I ran')
end
it 'logs start and finish event' do
@@ -111,39 +102,47 @@ RSpec.describe Gitlab::Memory::Reporter, :aggregate_failures, feature_category:
end
context 'when an error occurs' do
- before do
- allow(report).to receive(:run).and_raise(RuntimeError.new('report failed'))
- end
+ shared_examples 'handles errors gracefully' do
+ it 'logs the error and returns false' do
+ expect(logger).to receive(:info).ordered.with(hash_including(message: 'started'))
+ expect(logger).to receive(:error).ordered.with(
+ hash_including(
+ message: 'failed', error: match(error_message)
+ ))
+
+ expect(reporter.run_report(report)).to be(false)
+ end
+
+ context 'when compression process is still running' do
+ it 'terminates the process' do
+ allow(logger).to receive(:info)
+ allow(logger).to receive(:error)
- it 'logs the error and returns false' do
- expect(logger).to receive(:info).ordered.with(hash_including(message: 'started'))
- expect(logger).to receive(:error).ordered.with(
- hash_including(
- message: 'failed', error: '#<RuntimeError: report failed>'
- ))
+ expect(Gitlab::ProcessManagement).to receive(:signal).with(an_instance_of(Integer), :KILL)
- expect(reporter.run_report(report)).to be(false)
+ reporter.run_report(report)
+ end
+ end
end
- it 'closes read and write streams' do
- allow(logger).to receive(:info)
- allow(logger).to receive(:error)
+ context 'when cause was an error being raised' do
+ let(:error_message) { 'report failed' }
- expect(input).to receive(:close).ordered.at_least(:once)
- expect(output).to receive(:close).ordered.at_least(:once)
+ before do
+ allow(report).to receive(:run).and_raise(RuntimeError.new('report failed'))
+ end
- reporter.run_report(report)
+ it_behaves_like 'handles errors gracefully'
end
- context 'when compression process is still running' do
- it 'terminates the process' do
- allow(logger).to receive(:info)
- allow(logger).to receive(:error)
+ context 'when cause was compression command failing' do
+ let(:error_message) { "StandardError: exit 1: cat:" }
- expect(Gitlab::ProcessManagement).to receive(:signal).with(an_instance_of(Integer), :KILL)
-
- reporter.run_report(report)
+ before do
+ stub_const('Gitlab::Memory::Reporter::COMPRESS_CMD', %w[cat --bad-flag])
end
+
+ it_behaves_like 'handles errors gracefully'
end
end
@@ -191,16 +190,4 @@ RSpec.describe Gitlab::Memory::Reporter, :aggregate_failures, feature_category:
it_behaves_like 'runs and stores reports'
end
end
-
- # We need to stub out the call into gzip. We do this by intercepting the write
- # end of the pipe and replacing it with a StringIO instead, which we can
- # easily inspect for contents.
- def stub_gzip
- pid = 42
- allow(IO).to receive(:pipe).and_return([input, output])
- allow(Process).to receive(:spawn).with(
- "gzip", "--fast", in: input, out: an_instance_of(File), err: an_instance_of(IO)
- ).and_return(pid)
- allow(Process).to receive(:waitpid).with(pid)
- end
end
diff --git a/spec/lib/gitlab/redis/multi_store_spec.rb b/spec/lib/gitlab/redis/multi_store_spec.rb
index 0e7eedf66b1..095031423d8 100644
--- a/spec/lib/gitlab/redis/multi_store_spec.rb
+++ b/spec/lib/gitlab/redis/multi_store_spec.rb
@@ -108,34 +108,59 @@ RSpec.describe Gitlab::Redis::MultiStore, feature_category: :redis do
end
end
+ # rubocop:disable RSpec/MultipleMemoizedHelpers
context 'with READ redis commands' do
let_it_be(:key1) { "redis:{1}:key_a" }
let_it_be(:key2) { "redis:{1}:key_b" }
let_it_be(:value1) { "redis_value1" }
let_it_be(:value2) { "redis_value2" }
let_it_be(:skey) { "redis:set:key" }
+ let_it_be(:skey2) { "redis:set:key2" }
+ let_it_be(:smemberargs) { [skey, value1] }
+ let_it_be(:hkey) { "redis:hash:key" }
+ let_it_be(:hitem1) { "item1" }
let_it_be(:keys) { [key1, key2] }
let_it_be(:values) { [value1, value2] }
let_it_be(:svalues) { [value2, value1] }
-
+ let_it_be(:hgetargs) { [hkey, hitem1] }
+ let_it_be(:hmgetval) { [value1] }
+ let_it_be(:mhmgetargs) { [hkey, hitem1] }
+ let_it_be(:hvalmapped) { { "item1" => value1 } }
+ let_it_be(:sscanargs) { [skey2, 0] }
+ let_it_be(:sscanval) { ["0", [value1]] }
+
+ # rubocop:disable Layout/LineLength
where(:case_name, :name, :args, :value, :block) do
- 'execute :get command' | :get | ref(:key1) | ref(:value1) | nil
- 'execute :mget command' | :mget | ref(:keys) | ref(:values) | nil
- 'execute :mget with block' | :mget | ref(:keys) | ref(:values) | ->(value) { value }
- 'execute :smembers command' | :smembers | ref(:skey) | ref(:svalues) | nil
- 'execute :scard command' | :scard | ref(:skey) | 2 | nil
- end
+ 'execute :get command' | :get | ref(:key1) | ref(:value1) | nil
+ 'execute :mget command' | :mget | ref(:keys) | ref(:values) | nil
+ 'execute :mget with block' | :mget | ref(:keys) | ref(:values) | ->(value) { value }
+ 'execute :smembers command' | :smembers | ref(:skey) | ref(:svalues) | nil
+ 'execute :scard command' | :scard | ref(:skey) | 2 | nil
+ 'execute :sismember command' | :sismember | ref(:smemberargs) | true | nil
+ 'execute :exists command' | :exists | ref(:key1) | 1 | nil
+ 'execute :exists? command' | :exists? | ref(:key1) | true | nil
+ 'execute :hget command' | :hget | ref(:hgetargs) | ref(:value1) | nil
+ 'execute :hlen command' | :hlen | ref(:hkey) | 1 | nil
+ 'execute :hgetall command' | :hgetall | ref(:hkey) | ref(:hvalmapped) | nil
+ 'execute :hexists command' | :hexists | ref(:hgetargs) | true | nil
+ 'execute :hmget command' | :hmget | ref(:hgetargs) | ref(:hmgetval) | nil
+ 'execute :mapped_hmget command' | :mapped_hmget | ref(:mhmgetargs) | ref(:hvalmapped) | nil
+ 'execute :sscan command' | :sscan | ref(:sscanargs) | ref(:sscanval) | nil
+ end
+ # rubocop:enable Layout/LineLength
before(:all) do
primary_store.set(key1, value1)
primary_store.set(key2, value2)
- primary_store.sadd?(skey, value1)
- primary_store.sadd?(skey, value2)
+ primary_store.sadd?(skey, [value1, value2])
+ primary_store.sadd?(skey2, [value1])
+ primary_store.hset(hkey, hitem1, value1)
secondary_store.set(key1, value1)
secondary_store.set(key2, value2)
- secondary_store.sadd?(skey, value1)
- secondary_store.sadd?(skey, value2)
+ secondary_store.sadd?(skey, [value1, value2])
+ secondary_store.sadd?(skey2, [value1])
+ secondary_store.hset(hkey, hitem1, value1)
end
RSpec.shared_examples_for 'reads correct value' do
@@ -300,6 +325,7 @@ RSpec.describe Gitlab::Redis::MultiStore, feature_category: :redis do
end
end
end
+ # rubocop:enable RSpec/MultipleMemoizedHelpers
RSpec.shared_examples_for 'verify that store contains values' do |store|
it "#{store} redis store contains correct values", :aggregate_errors do
@@ -316,9 +342,17 @@ RSpec.describe Gitlab::Redis::MultiStore, feature_category: :redis do
end
end
+ # rubocop:disable RSpec/MultipleMemoizedHelpers
context 'with WRITE redis commands' do
+ let_it_be(:ikey1) { "counter1" }
+ let_it_be(:ikey2) { "counter2" }
+ let_it_be(:iargs) { [ikey2, 3] }
+ let_it_be(:ivalue1) { "1" }
+ let_it_be(:ivalue2) { "3" }
let_it_be(:key1) { "redis:{1}:key_a" }
let_it_be(:key2) { "redis:{1}:key_b" }
+ let_it_be(:key3) { "redis:{1}:key_c" }
+ let_it_be(:key4) { "redis:{1}:key_d" }
let_it_be(:value1) { "redis_value1" }
let_it_be(:value2) { "redis_value2" }
let_it_be(:key1_value1) { [key1, value1] }
@@ -331,27 +365,50 @@ RSpec.describe Gitlab::Redis::MultiStore, feature_category: :redis do
let_it_be(:skey_value1) { [skey, [value1]] }
let_it_be(:skey_value2) { [skey, [value2]] }
let_it_be(:script) { %(redis.call("set", "#{key1}", "#{value1}")) }
-
+ let_it_be(:hkey1) { "redis:{1}:hash_a" }
+ let_it_be(:hkey2) { "redis:{1}:hash_b" }
+ let_it_be(:item) { "item" }
+ let_it_be(:hdelarg) { [hkey1, item] }
+ let_it_be(:hsetarg) { [hkey2, item, value1] }
+ let_it_be(:mhsetarg) { [hkey2, { "item" => value1 }] }
+ let_it_be(:hgetarg) { [hkey2, item] }
+ let_it_be(:expireargs) { [key3, ttl] }
+
+ # rubocop:disable Layout/LineLength
where(:case_name, :name, :args, :expected_value, :verification_name, :verification_args) do
- 'execute :set command' | :set | ref(:key1_value1) | ref(:value1) | :get | ref(:key1)
- 'execute :setnx command' | :setnx | ref(:key1_value2) | ref(:value1) | :get | ref(:key2)
- 'execute :setex command' | :setex | ref(:key1_ttl_value1) | ref(:ttl) | :ttl | ref(:key1)
- 'execute :sadd command' | :sadd | ref(:skey_value2) | ref(:svalues1) | :smembers | ref(:skey)
- 'execute :srem command' | :srem | ref(:skey_value1) | [] | :smembers | ref(:skey)
- 'execute :del command' | :del | ref(:key2) | nil | :get | ref(:key2)
- 'execute :flushdb command' | :flushdb | nil | 0 | :dbsize | nil
- 'execute :eval command' | :eval | ref(:script) | ref(:value1) | :get | ref(:key1)
- end
+ 'execute :set command' | :set | ref(:key1_value1) | ref(:value1) | :get | ref(:key1)
+ 'execute :setnx command' | :setnx | ref(:key1_value2) | ref(:value1) | :get | ref(:key2)
+ 'execute :setex command' | :setex | ref(:key1_ttl_value1) | ref(:ttl) | :ttl | ref(:key1)
+ 'execute :sadd command' | :sadd | ref(:skey_value2) | ref(:svalues1) | :smembers | ref(:skey)
+ 'execute :srem command' | :srem | ref(:skey_value1) | [] | :smembers | ref(:skey)
+ 'execute :del command' | :del | ref(:key2) | nil | :get | ref(:key2)
+ 'execute :unlink command' | :unlink | ref(:key3) | nil | :get | ref(:key3)
+ 'execute :flushdb command' | :flushdb | nil | 0 | :dbsize | nil
+ 'execute :eval command' | :eval | ref(:script) | ref(:value1) | :get | ref(:key1)
+ 'execute :incr command' | :incr | ref(:ikey1) | ref(:ivalue1) | :get | ref(:ikey1)
+ 'execute :incrby command' | :incrby | ref(:iargs) | ref(:ivalue2) | :get | ref(:ikey2)
+ 'execute :hset command' | :hset | ref(:hsetarg) | ref(:value1) | :hget | ref(:hgetarg)
+ 'execute :hdel command' | :hdel | ref(:hdelarg) | nil | :hget | ref(:hdelarg)
+ 'execute :expire command' | :expire | ref(:expireargs) | ref(:ttl) | :ttl | ref(:key3)
+ 'execute :mapped_hmset command' | :mapped_hmset | ref(:mhsetarg) | ref(:value1) | :hget | ref(:hgetarg)
+ end
+ # rubocop:enable Layout/LineLength
before do
primary_store.flushdb
secondary_store.flushdb
primary_store.set(key2, value1)
+ primary_store.set(key3, value1)
+ primary_store.set(key4, value1)
primary_store.sadd?(skey, value1)
+ primary_store.hset(hkey2, item, value1)
secondary_store.set(key2, value1)
+ secondary_store.set(key3, value1)
+ secondary_store.set(key4, value1)
secondary_store.sadd?(skey, value1)
+ secondary_store.hset(hkey2, item, value1)
end
with_them do
@@ -419,6 +476,7 @@ RSpec.describe Gitlab::Redis::MultiStore, feature_category: :redis do
end
end
end
+ # rubocop:enable RSpec/MultipleMemoizedHelpers
RSpec.shared_examples_for 'pipelined command' do |name|
let_it_be(:key1) { "redis:{1}:key_a" }
@@ -575,119 +633,116 @@ RSpec.describe Gitlab::Redis::MultiStore, feature_category: :redis do
end
let_it_be(:key) { "redis:counter" }
+ let_it_be(:item) { "item1" }
- subject { multi_store.incr(key) }
+ subject { multi_store.command }
- it 'responds to missing method' do
- expect(multi_store).to receive(:respond_to_missing?).and_call_original
-
- expect(multi_store.respond_to?(:incr)).to be(true)
+ context 'when in test environment' do
+ it 'raises error' do
+ expect { subject }.to raise_error(instance_of(Gitlab::Redis::MultiStore::MethodMissingError))
+ end
end
- it 'executes method missing' do
- expect(multi_store).to receive(:method_missing)
-
- subject
- end
+ context 'when not in test environment' do
+ before do
+ stub_rails_env('production')
+ end
- context 'when command is not in SKIP_LOG_METHOD_MISSING_FOR_COMMANDS' do
- it 'logs MethodMissingError' do
- expect(Gitlab::ErrorTracking).to receive(:log_exception).with(
- an_instance_of(Gitlab::Redis::MultiStore::MethodMissingError),
- hash_including(command_name: :incr, instance_name: instance_name)
- )
+ it 'responds to missing method' do
+ expect(multi_store).to receive(:respond_to_missing?).and_call_original
- subject
+ expect(multi_store.respond_to?(:command)).to be(true)
end
- it 'increments method missing counter' do
- expect(counter).to receive(:increment).with(command: :incr, instance_name: instance_name)
+ it 'executes method missing' do
+ expect(multi_store).to receive(:method_missing)
subject
end
- end
- context 'when command is in SKIP_LOG_METHOD_MISSING_FOR_COMMANDS' do
- subject { multi_store.info }
+ context 'when command is not in SKIP_LOG_METHOD_MISSING_FOR_COMMANDS' do
+ it 'logs MethodMissingError' do
+ expect(Gitlab::ErrorTracking).to receive(:log_exception).with(
+ an_instance_of(Gitlab::Redis::MultiStore::MethodMissingError),
+ hash_including(command_name: :command, instance_name: instance_name)
+ )
- it 'does not log MethodMissingError' do
- expect(Gitlab::ErrorTracking).not_to receive(:log_exception)
+ subject
+ end
- subject
- end
+ it 'increments method missing counter' do
+ expect(counter).to receive(:increment).with(command: :command, instance_name: instance_name)
- it 'does not increment method missing counter' do
- expect(counter).not_to receive(:increment)
+ subject
+ end
- subject
- end
- end
+ it 'fallback and executes only on the secondary store', :aggregate_errors do
+ expect(primary_store).to receive(:command).and_call_original
+ expect(secondary_store).not_to receive(:command)
- context 'with feature flag :use_primary_store_as_default_for_test_store is enabled' do
- before do
- stub_feature_flags(use_primary_store_as_default_for_test_store: true)
+ subject
+ end
end
- it 'fallback and executes only on the secondary store', :aggregate_errors do
- expect(primary_store).to receive(:incr).with(key).and_call_original
- expect(secondary_store).not_to receive(:incr)
+ context 'when command is in SKIP_LOG_METHOD_MISSING_FOR_COMMANDS' do
+ subject { multi_store.info }
- subject
- end
+ it 'does not log MethodMissingError' do
+ expect(Gitlab::ErrorTracking).not_to receive(:log_exception)
- it 'correct value is stored on the secondary store', :aggregate_errors do
- subject
+ subject
+ end
- expect(secondary_store.get(key)).to be_nil
- expect(primary_store.get(key)).to eq('1')
- end
- end
+ it 'does not increment method missing counter' do
+ expect(counter).not_to receive(:increment)
- context 'with feature flag :use_primary_store_as_default_for_test_store is disabled' do
- before do
- stub_feature_flags(use_primary_store_as_default_for_test_store: false)
+ subject
+ end
end
- it 'fallback and executes only on the secondary store', :aggregate_errors do
- expect(secondary_store).to receive(:incr).with(key).and_call_original
- expect(primary_store).not_to receive(:incr)
+ context 'with feature flag :use_primary_store_as_default_for_test_store is enabled' do
+ before do
+ stub_feature_flags(use_primary_store_as_default_for_test_store: true)
+ end
+
+ it 'fallback and executes only on the secondary store', :aggregate_errors do
+ expect(primary_store).to receive(:command).and_call_original
+ expect(secondary_store).not_to receive(:command)
- subject
+ subject
+ end
end
- it 'correct value is stored on the secondary store', :aggregate_errors do
- subject
+ context 'with feature flag :use_primary_store_as_default_for_test_store is disabled' do
+ before do
+ stub_feature_flags(use_primary_store_as_default_for_test_store: false)
+ end
- expect(primary_store.get(key)).to be_nil
- expect(secondary_store.get(key)).to eq('1')
- end
- end
+ it 'fallback and executes only on the secondary store', :aggregate_errors do
+ expect(secondary_store).to receive(:command).and_call_original
+ expect(primary_store).not_to receive(:command)
- context 'when the command is executed within pipelined block' do
- subject do
- multi_store.pipelined do |pipeline|
- pipeline.incr(key)
+ subject
end
end
- it 'is executed only 1 time on each instance', :aggregate_errors do
- expect(primary_store).to receive(:pipelined).once.and_call_original
- expect(secondary_store).to receive(:pipelined).once.and_call_original
-
- 2.times do
- expect_next_instance_of(Redis::PipelinedConnection) do |pipeline|
- expect(pipeline).to receive(:incr).with(key).once
- end
+ context 'when the command is executed within pipelined block' do
+ subject do
+ multi_store.pipelined(&:command)
end
- subject
- end
+ it 'is executed only 1 time on each instance', :aggregate_errors do
+ expect(primary_store).to receive(:pipelined).once.and_call_original
+ expect(secondary_store).to receive(:pipelined).once.and_call_original
- it "both redis stores are containing correct values", :aggregate_errors do
- subject
+ 2.times do
+ expect_next_instance_of(Redis::PipelinedConnection) do |pipeline|
+ expect(pipeline).to receive(:command).once
+ end
+ end
- expect(primary_store.get(key)).to eq('1')
- expect(secondary_store.get(key)).to eq('1')
+ subject
+ end
end
end
end
diff --git a/spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb b/spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb
index d5d623de6e4..fe52b586d49 100644
--- a/spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb
+++ b/spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb
@@ -33,6 +33,7 @@ RSpec.describe ::Gitlab::Seeders::Ci::Runner::RunnerFleetSeeder, feature_categor
it 'creates expected hierarchy', :aggregate_failures do
expect { seed }.to change { Ci::Runner.count }.by(runner_count)
+ .and change { Ci::Runner.instance_type.count }.by(1)
.and change { Project.count }.by(3)
.and change { Group.count }.by(6)
diff --git a/spec/metrics_server/metrics_server_spec.rb b/spec/metrics_server/metrics_server_spec.rb
index 58577d4d633..76ea9cd66ba 100644
--- a/spec/metrics_server/metrics_server_spec.rb
+++ b/spec/metrics_server/metrics_server_spec.rb
@@ -120,7 +120,7 @@ RSpec.describe MetricsServer, feature_category: :application_performance do # ru
{
'GOGC' => '10',
'GME_MMAP_METRICS_DIR' => metrics_dir,
- 'GME_PROBES' => 'self,mmap',
+ 'GME_PROBES' => 'self,mmap,mmap_stats',
'GME_SERVER_HOST' => 'localhost',
'GME_SERVER_PORT' => expected_port,
'GME_LOG_LEVEL' => 'quiet'
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index 4b5aabe745b..36d0e37454d 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -847,20 +847,6 @@ eos
expect(unsigned_commit.has_signature?).to be_falsey
expect(commit.has_signature?).to be_falsey
end
-
- context 'when feature flag "ssh_commit_signatures" is disabled' do
- before do
- stub_feature_flags(ssh_commit_signatures: false)
- end
-
- it 'reports no signature' do
- expect(ssh_signed_commit).not_to have_signature
- end
-
- it 'does not return signature data' do
- expect(ssh_signed_commit.signature).to be_nil
- end
- end
end
describe '#has_been_reverted?' do
diff --git a/spec/models/oauth_access_token_spec.rb b/spec/models/oauth_access_token_spec.rb
index 92e1ae8ac60..fc53d926dd6 100644
--- a/spec/models/oauth_access_token_spec.rb
+++ b/spec/models/oauth_access_token_spec.rb
@@ -53,4 +53,22 @@ RSpec.describe OauthAccessToken do
expect(described_class.matching_token_for(app_one, token.resource_owner, token.scopes)).to be_nil
end
end
+
+ describe '#expires_in' do
+ context 'when token has expires_in value set' do
+ it 'uses the expires_in value' do
+ token = OauthAccessToken.new(expires_in: 1.minute)
+
+ expect(token.expires_in).to eq 1.minute
+ end
+ end
+
+ context 'when token has nil expires_in' do
+ it 'uses default value' do
+ token = OauthAccessToken.new(expires_in: nil)
+
+ expect(token.expires_in).to eq 2.hours
+ end
+ end
+ end
end
diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb
index 5874d764b00..3932abd20cc 100644
--- a/spec/requests/api/commits_spec.rb
+++ b/spec/requests/api/commits_spec.rb
@@ -2337,18 +2337,6 @@ RSpec.describe API::Commits, feature_category: :source_code_management do
expect(json_response['commit_source']).to eq('gitaly')
end
end
-
- context 'when feature flag is disabled' do
- before do
- stub_feature_flags(ssh_commit_signatures: false)
- end
-
- it 'returns 404' do
- get api(route, current_user)
-
- expect(response).to have_gitlab_http_status(:not_found)
- end
- end
end
end
end
diff --git a/spec/requests/api/import_github_spec.rb b/spec/requests/api/import_github_spec.rb
index ccf16434ad9..89d7fe4e55a 100644
--- a/spec/requests/api/import_github_spec.rb
+++ b/spec/requests/api/import_github_spec.rb
@@ -157,54 +157,72 @@ RSpec.describe API::ImportGithub, feature_category: :importers do
let_it_be(:user) { create(:user) }
let(:params) { { personal_access_token: token } }
- context 'when gists import was started' do
+ context 'when feature github_import_gists is enabled' do
before do
- allow(Import::Github::GistsImportService)
- .to receive(:new).with(user, client, access_params)
- .and_return(double(execute: { status: :success }))
+ stub_feature_flags(github_import_gists: true)
end
- it 'returns 202' do
- post api('/import/github/gists', user), params: params
+ context 'when gists import was started' do
+ before do
+ allow(Import::Github::GistsImportService)
+ .to receive(:new).with(user, client, access_params)
+ .and_return(double(execute: { status: :success }))
+ end
+
+ it 'returns 202' do
+ post api('/import/github/gists', user), params: params
- expect(response).to have_gitlab_http_status(:accepted)
+ expect(response).to have_gitlab_http_status(:accepted)
+ end
end
- end
- context 'when gists import is in progress' do
- before do
- allow(Import::Github::GistsImportService)
- .to receive(:new).with(user, client, access_params)
- .and_return(double(execute: { status: :error, message: 'Import already in progress', http_status: :unprocessable_entity }))
+ context 'when gists import is in progress' do
+ before do
+ allow(Import::Github::GistsImportService)
+ .to receive(:new).with(user, client, access_params)
+ .and_return(double(execute: { status: :error, message: 'Import already in progress', http_status: :unprocessable_entity }))
+ end
+
+ it 'returns 422 error' do
+ post api('/import/github/gists', user), params: params
+
+ expect(response).to have_gitlab_http_status(:unprocessable_entity)
+ expect(json_response['errors']).to eq('Import already in progress')
+ end
end
- it 'returns 422 error' do
- post api('/import/github/gists', user), params: params
+ context 'when unauthenticated user' do
+ it 'returns 403 error' do
+ post api('/import/github/gists'), params: params
- expect(response).to have_gitlab_http_status(:unprocessable_entity)
- expect(json_response['errors']).to eq('Import already in progress')
+ expect(response).to have_gitlab_http_status(:unauthorized)
+ end
end
- end
- context 'when unauthenticated user' do
- it 'returns 403 error' do
- post api('/import/github/gists'), params: params
+ context 'when rate limit reached' do
+ before do
+ allow(Import::Github::GistsImportService)
+ .to receive(:new).with(user, client, access_params)
+ .and_raise(Gitlab::GithubImport::RateLimitError)
+ end
- expect(response).to have_gitlab_http_status(:unauthorized)
+ it 'returns 429 error' do
+ post api('/import/github/gists', user), params: params
+
+ expect(response).to have_gitlab_http_status(:too_many_requests)
+ end
end
end
- context 'when rate limit reached' do
+ context 'when feature github_import_gists is disabled' do
before do
- allow(Import::Github::GistsImportService)
- .to receive(:new).with(user, client, access_params)
- .and_raise(Gitlab::GithubImport::RateLimitError)
+ stub_feature_flags(github_import_gists: false)
end
- it 'returns 429 error' do
+ it 'returns 404 error' do
post api('/import/github/gists', user), params: params
- expect(response).to have_gitlab_http_status(:too_many_requests)
+ expect(response).to have_gitlab_http_status(:not_found)
end
end
end
diff --git a/spec/requests/rack_attack_global_spec.rb b/spec/requests/rack_attack_global_spec.rb
index 643a98da441..91595f7826a 100644
--- a/spec/requests/rack_attack_global_spec.rb
+++ b/spec/requests/rack_attack_global_spec.rb
@@ -143,11 +143,11 @@ feature_category: :authentication_and_authorization do
describe 'API requests authenticated with OAuth token', :api do
let(:user) { create(:user) }
let(:application) { Doorkeeper::Application.create!(name: "MyApp", redirect_uri: "https://app.com", owner: user) }
- let(:token) { Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id, scopes: "api") }
+ let(:token) { create(:oauth_access_token, application_id: application.id, resource_owner_id: user.id, scopes: "api", expires_in: period_in_seconds + 1) }
let(:other_user) { create(:user) }
let(:other_user_application) { Doorkeeper::Application.create!(name: "MyApp", redirect_uri: "https://app.com", owner: other_user) }
- let(:other_user_token) { Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: other_user.id, scopes: "api") }
+ let(:other_user_token) { create(:oauth_access_token, application_id: application.id, resource_owner_id: other_user.id, scopes: "api") }
let(:throttle_setting_prefix) { 'throttle_authenticated_api' }
let(:api_partial_url) { '/todos' }
@@ -167,8 +167,8 @@ feature_category: :authentication_and_authorization do
end
context 'with a read_api scope' do
- let(:read_token) { Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id, scopes: "read_api") }
- let(:other_user_read_token) { Doorkeeper::AccessToken.create!(application_id: other_user_application.id, resource_owner_id: other_user.id, scopes: "read_api") }
+ let(:read_token) { create(:oauth_access_token, application_id: application.id, resource_owner_id: user.id, scopes: "read_api", expires_in: period_in_seconds + 1) }
+ let(:other_user_read_token) { create(:oauth_access_token, application_id: other_user_application.id, resource_owner_id: other_user.id, scopes: "read_api") }
let(:request_args) { api_get_args_with_token_headers(api_partial_url, oauth_token_headers(read_token)) }
let(:other_user_request_args) { api_get_args_with_token_headers(api_partial_url, oauth_token_headers(other_user_read_token)) }
@@ -1202,7 +1202,7 @@ feature_category: :authentication_and_authorization do
context 'authenticated with OAuth token' do
let(:application) { Doorkeeper::Application.create!(name: "MyApp", redirect_uri: "https://app.com", owner: user) }
- let(:oauth_token) { Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id, scopes: "api") }
+ let(:oauth_token) { create(:oauth_access_token, application_id: application.id, resource_owner_id: user.id, scopes: "api", expires_in: period_in_seconds + 1) }
it 'request is authenticated by token in query string' do
expect_authenticated_request
diff --git a/spec/support/shared_examples/quick_actions/issue/promote_to_incident_quick_action_shared_examples.rb b/spec/support/shared_examples/quick_actions/issue/promote_to_incident_quick_action_shared_examples.rb
index 5167d27f8b9..3f1a98ca08e 100644
--- a/spec/support/shared_examples/quick_actions/issue/promote_to_incident_quick_action_shared_examples.rb
+++ b/spec/support/shared_examples/quick_actions/issue/promote_to_incident_quick_action_shared_examples.rb
@@ -36,5 +36,33 @@ RSpec.shared_examples 'promote_to_incident quick action' do
expect(page).to have_content('Could not apply promote_to_incident command')
end
end
+
+ context 'on issue creation' do
+ it 'promotes issue to incident' do
+ visit new_project_issue_path(project)
+ fill_in('Title', with: 'Title')
+ fill_in('Description', with: '/promote_to_incident')
+ click_button('Create issue')
+
+ wait_for_all_requests
+
+ expect(page).to have_content("Incident created just now by #{user.name}")
+ end
+
+ context 'when incident is selected for issue type' do
+ it 'promotes issue to incident' do
+ visit new_project_issue_path(project)
+ fill_in('Title', with: 'Title')
+ find('.js-issuable-type-filter-dropdown-wrap').click
+ click_link('Incident')
+ fill_in('Description', with: '/promote_to_incident')
+ click_button('Create issue')
+
+ wait_for_all_requests
+
+ expect(page).to have_content("Incident created just now by #{user.name}")
+ end
+ end
+ end
end
end
diff --git a/spec/tasks/gitlab/seed/runner_fleet_rake_spec.rb b/spec/tasks/gitlab/seed/runner_fleet_rake_spec.rb
index 11bfc703861..e0390d2aa09 100644
--- a/spec/tasks/gitlab/seed/runner_fleet_rake_spec.rb
+++ b/spec/tasks/gitlab/seed/runner_fleet_rake_spec.rb
@@ -32,6 +32,7 @@ RSpec.describe 'gitlab:seed:runner_fleet rake task', :silence_stdout, feature_ca
.to change { Group.count }.by(6)
.and change { Project.count }.by(3)
.and change { Ci::Runner.count }.by(runner_count)
+ .and change { Ci::Runner.instance_type.count }.by(1)
.and change { Ci::Build.count }.by(job_count)
expect(Group.search(registration_prefix).count).to eq 6
diff --git a/spec/views/admin/dashboard/index.html.haml_spec.rb b/spec/views/admin/dashboard/index.html.haml_spec.rb
index 337964f1354..6e9cb5e2657 100644
--- a/spec/views/admin/dashboard/index.html.haml_spec.rb
+++ b/spec/views/admin/dashboard/index.html.haml_spec.rb
@@ -51,6 +51,16 @@ RSpec.describe 'admin/dashboard/index.html.haml' do
expect(rendered).not_to have_content "Users over License"
end
+ it 'shows database versions for all database models' do
+ render
+
+ expect(rendered).to have_content /PostgreSQL \(main\).+?#{::Gitlab::Database::Reflection.new(ApplicationRecord).version}/
+
+ if Gitlab::Database.has_config?(:ci)
+ expect(rendered).to have_content /PostgreSQL \(ci\).+?#{::Gitlab::Database::Reflection.new(Ci::ApplicationRecord).version}/
+ end
+ end
+
describe 'when show_version_check? is true' do
before do
allow(view).to receive(:show_version_check?).and_return(true)
diff --git a/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb
index d4e97d96dfd..d9850078320 100644
--- a/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb
+++ b/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb
@@ -67,6 +67,15 @@ RSpec.describe 'layouts/nav/sidebar/_admin' do
it_behaves_like 'page has active sub tab', 'Topics'
end
+ context 'on CI/CD' do
+ before do
+ allow(controller).to receive(:controller_name).and_return('runners')
+ end
+
+ it_behaves_like 'page has active tab', 'CI/CD'
+ it_behaves_like 'page has active sub tab', 'Runners'
+ end
+
context 'on messages' do
before do
allow(controller).to receive(:controller_name).and_return('broadcast_messages')
diff --git a/vendor/gems/bundler-checksum/README.md b/vendor/gems/bundler-checksum/README.md
index 1420dc49b94..675c3ad2ee8 100644
--- a/vendor/gems/bundler-checksum/README.md
+++ b/vendor/gems/bundler-checksum/README.md
@@ -9,7 +9,7 @@ Add the following to your Gemfile:
```
if ENV['BUNDLER_CHECKSUM_VERIFICATION_OPT_IN'] # this verification is still experimental
require 'bundler-checksum'
- Bundler::Checksum.patch!
+ BundlerChecksum.patch!
end
```
diff --git a/vendor/gems/bundler-checksum/bin/bundler-checksum b/vendor/gems/bundler-checksum/bin/bundler-checksum
index 2d0aea827bc..0ef2748a518 100755
--- a/vendor/gems/bundler-checksum/bin/bundler-checksum
+++ b/vendor/gems/bundler-checksum/bin/bundler-checksum
@@ -1,6 +1,6 @@
#!/usr/bin/env ruby
require 'bundler-checksum'
-require 'bundler/checksum/command'
+require 'bundler_checksum/command'
-Bundler::Checksum::Command.execute(ARGV)
+BundlerChecksum::Command.execute(ARGV)
diff --git a/vendor/gems/bundler-checksum/bundler-checksum.gemspec b/vendor/gems/bundler-checksum/bundler-checksum.gemspec
index c04312480b6..b9667570549 100644
--- a/vendor/gems/bundler-checksum/bundler-checksum.gemspec
+++ b/vendor/gems/bundler-checksum/bundler-checksum.gemspec
@@ -1,10 +1,10 @@
# frozen_string_literal: true
-require_relative 'lib/bundler/checksum/version'
+require_relative 'lib/bundler_checksum/version'
Gem::Specification.new do |spec|
spec.name = 'bundler-checksum'
- spec.version = Bundler::Checksum::VERSION
+ spec.version = BundlerChecksum::VERSION
spec.authors = ['dustinmm80']
spec.email = ['dcollins@gitlab.com']
diff --git a/vendor/gems/bundler-checksum/lib/bundler-checksum.rb b/vendor/gems/bundler-checksum/lib/bundler-checksum.rb
index 600cd4f7107..c2abf1b41d6 100644
--- a/vendor/gems/bundler-checksum/lib/bundler-checksum.rb
+++ b/vendor/gems/bundler-checksum/lib/bundler-checksum.rb
@@ -1 +1 @@
-require 'bundler/checksum'
+require 'bundler_checksum'
diff --git a/vendor/gems/bundler-checksum/lib/bundler/checksum/version.rb b/vendor/gems/bundler-checksum/lib/bundler/checksum/version.rb
deleted file mode 100644
index 41e958b2db9..00000000000
--- a/vendor/gems/bundler-checksum/lib/bundler/checksum/version.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-module Bundler
- module Checksum
- # bundler-checksum version
- VERSION = '0.1.0'
- end
-end
diff --git a/vendor/gems/bundler-checksum/lib/bundler/checksum.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum.rb
index 40c42644964..b3d36521f24 100644
--- a/vendor/gems/bundler-checksum/lib/bundler/checksum.rb
+++ b/vendor/gems/bundler-checksum/lib/bundler_checksum.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'bundler'
-require 'bundler/checksum/version'
+require 'bundler_checksum/version'
require 'json'
module Bundler
@@ -27,7 +27,7 @@ module Bundler
end
def fetch_checksum_from_file(spec)
- ::Bundler::Checksum.checksum_for(spec.name, spec.version.to_s, spec.platform.to_s)
+ ::BundlerChecksum.checksum_for(spec.name, spec.version.to_s, spec.platform.to_s)
end
# Modified from
@@ -74,37 +74,35 @@ module Bundler
end
end
-module Bundler
- module Checksum
- class << self
- def checksum_file
- @checksum_file ||= File.join(File.dirname(Bundler.default_gemfile), 'Gemfile.checksum')
- end
-
- def checksums_from_file
- @checksums_from_file ||= JSON.parse(File.open(checksum_file).read, symbolize_names: true)
- rescue JSON::ParserError => e
- raise "Invalid checksum file: #{e.message}"
- end
+module BundlerChecksum
+ class << self
+ def checksum_file
+ @checksum_file ||= File.join(File.dirname(Bundler.default_gemfile), 'Gemfile.checksum')
+ end
- def checksum_for(gem_name, gem_version, gem_platform)
- item = checksums_from_file.detect do |item|
- item[:name] == gem_name &&
- item[:platform] == gem_platform &&
- item[:version] == gem_version
- end
+ def checksums_from_file
+ @checksums_from_file ||= JSON.parse(File.open(checksum_file).read, symbolize_names: true)
+ rescue JSON::ParserError => e
+ raise "Invalid checksum file: #{e.message}"
+ end
- item&.fetch(:checksum)
+ def checksum_for(gem_name, gem_version, gem_platform)
+ item = checksums_from_file.detect do |item|
+ item[:name] == gem_name &&
+ item[:platform] == gem_platform &&
+ item[:version] == gem_version
end
- def patch!
- return if defined?(@patched) && @patched
- @patched = true
+ item&.fetch(:checksum)
+ end
- Bundler.ui.info "Patching bundler with bundler-checksum..."
- require 'bundler/rubygems_gem_installer'
- ::Bundler::RubyGemsGemInstaller.prepend(Bundler::Patches::RubyGemsInstallerPatch)
- end
+ def patch!
+ return if defined?(@patched) && @patched
+ @patched = true
+
+ Bundler.ui.info "Patching bundler with bundler-checksum..."
+ require 'bundler/rubygems_gem_installer'
+ ::Bundler::RubyGemsGemInstaller.prepend(Bundler::Patches::RubyGemsInstallerPatch)
end
end
end
diff --git a/vendor/gems/bundler-checksum/lib/bundler/checksum/command.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum/command.rb
index 438f41f6e69..c6c71431538 100644
--- a/vendor/gems/bundler-checksum/lib/bundler/checksum/command.rb
+++ b/vendor/gems/bundler-checksum/lib/bundler_checksum/command.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module Bundler::Checksum
+module BundlerChecksum
module Command
autoload :Init, File.expand_path("command/init", __dir__)
autoload :Verify, File.expand_path("command/verify", __dir__)
diff --git a/vendor/gems/bundler-checksum/lib/bundler/checksum/command/helper.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb
index fa06bfe3da4..515f5926106 100644
--- a/vendor/gems/bundler-checksum/lib/bundler/checksum/command/helper.rb
+++ b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/helper.rb
@@ -3,7 +3,7 @@
require 'json'
require 'net/http'
-module Bundler::Checksum::Command
+module BundlerChecksum::Command
module Helper
extend self
diff --git a/vendor/gems/bundler-checksum/lib/bundler/checksum/command/init.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/init.rb
index 47a9b676f1d..1d8db7d78fa 100644
--- a/vendor/gems/bundler-checksum/lib/bundler/checksum/command/init.rb
+++ b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/init.rb
@@ -2,7 +2,7 @@
require 'openssl'
-module Bundler::Checksum::Command
+module BundlerChecksum::Command
module Init
extend self
@@ -65,14 +65,14 @@ module Bundler::Checksum::Command
def previous_checksums
@previous_checksums ||=
if File.exist?(checksum_file)
- ::Bundler::Checksum.checksums_from_file
+ ::BundlerChecksum.checksums_from_file
else
[]
end
end
def checksum_file
- ::Bundler::Checksum.checksum_file
+ ::BundlerChecksum.checksum_file
end
def lockfile
diff --git a/vendor/gems/bundler-checksum/lib/bundler/checksum/command/verify.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/verify.rb
index ba2eea6ea0c..e6a52ded42c 100644
--- a/vendor/gems/bundler-checksum/lib/bundler/checksum/command/verify.rb
+++ b/vendor/gems/bundler-checksum/lib/bundler_checksum/command/verify.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module Bundler::Checksum::Command
+module BundlerChecksum::Command
module Verify
extend self
@@ -27,7 +27,7 @@ module Bundler::Checksum::Command
private
def local_checksums
- ::Bundler::Checksum.checksums_from_file
+ ::BundlerChecksum.checksums_from_file
end
def validate_gem_checksum(gem_name, gem_version, gem_platform, local_checksum)
diff --git a/vendor/gems/bundler-checksum/lib/bundler_checksum/version.rb b/vendor/gems/bundler-checksum/lib/bundler_checksum/version.rb
new file mode 100644
index 00000000000..367a9e49a47
--- /dev/null
+++ b/vendor/gems/bundler-checksum/lib/bundler_checksum/version.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+module BundlerChecksum
+ # bundler-checksum version
+ VERSION = '0.1.0'
+end
diff --git a/vendor/gems/bundler-checksum/test/project_with_checksum_lock/Gemfile b/vendor/gems/bundler-checksum/test/project_with_checksum_lock/Gemfile
index 238bd09669f..503cf4587fa 100644
--- a/vendor/gems/bundler-checksum/test/project_with_checksum_lock/Gemfile
+++ b/vendor/gems/bundler-checksum/test/project_with_checksum_lock/Gemfile
@@ -5,7 +5,7 @@ source 'https://rubygems.org'
if ENV['BUNDLER_CHECKSUM_VERIFICATION_OPT_IN'] # this verification is still experimental
$:.unshift(File.expand_path('../../lib', __dir__))
require 'bundler-checksum'
- Bundler::Checksum.patch!
+ BundlerChecksum.patch!
end
gem 'rails', '~> 6.1.6.1'
diff --git a/yarn.lock b/yarn.lock
index ad8898365f0..0184cfbdfc8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1155,10 +1155,10 @@
resolved "https://registry.yarnpkg.com/@gitlab/visual-review-tools/-/visual-review-tools-1.7.3.tgz#9ea641146436da388ffbad25d7f2abe0df52c235"
integrity sha512-NMV++7Ew1FSBDN1xiZaauU9tfeSfgDHcOLpn+8bGpP+O5orUPm2Eu66R5eC5gkjBPaXosNAxNWtriee+aFk4+g==
-"@gitlab/web-ide@0.0.1-dev-20221221021927":
- version "0.0.1-dev-20221221021927"
- resolved "https://registry.yarnpkg.com/@gitlab/web-ide/-/web-ide-0.0.1-dev-20221221021927.tgz#76dfdda3be1e285b2d9627b3598d6b4bc0b49e58"
- integrity sha512-oa0utK+FDnWj5N/vocJg+nuiPkdYGKfVSoRqLT77P2yNKETeRzjf6F265T1RlbvPmZgHXpc4ZCE58bJmXt4pJA==
+"@gitlab/web-ide@0.0.1-dev-20221217175648":
+ version "0.0.1-dev-20221217175648"
+ resolved "https://registry.yarnpkg.com/@gitlab/web-ide/-/web-ide-0.0.1-dev-20221217175648.tgz#1042fa5a4facfef191aa8df8d8ac3b386c8d1334"
+ integrity sha512-njFkUVpIxyNJFSTY82RH5RzyndqyUkortLY87xKcfF0DeQttAOOfcD5jyyktp9ddRorj/ksWT2vNZ+qjEKwlIg==
"@graphql-eslint/eslint-plugin@3.12.0":
version "3.12.0"
@@ -1627,19 +1627,6 @@
resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0"
integrity sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==
-"@mermaid-js/mermaid-mindmap@^9.3.0":
- version "9.3.0"
- resolved "https://registry.yarnpkg.com/@mermaid-js/mermaid-mindmap/-/mermaid-mindmap-9.3.0.tgz#cfe10329198a0f37e27eef1dcc4a1cf21f187e2b"
- integrity sha512-IhtYSVBBRYviH1Ehu8gk69pMDF8DSRqXBRDMWrEfHoaMruHeaP2DXA3PBnuwsMaCdPQhlUUcy/7DBLAEIXvCAw==
- dependencies:
- "@braintree/sanitize-url" "^6.0.0"
- cytoscape "^3.23.0"
- cytoscape-cose-bilkent "^4.1.0"
- cytoscape-fcose "^2.1.0"
- d3 "^7.0.0"
- khroma "^2.0.0"
- non-layered-tidy-tree-layout "^2.0.2"
-
"@miragejs/pretender-node-polyfill@^0.1.0":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@miragejs/pretender-node-polyfill/-/pretender-node-polyfill-0.1.2.tgz#d26b6b7483fb70cd62189d05c95d2f67153e43f2"
@@ -4020,20 +4007,6 @@ core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
-cose-base@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a"
- integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==
- dependencies:
- layout-base "^1.0.0"
-
-cose-base@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.1.0.tgz#89b2d4a59d7bd0cde3138a4689825f3e8a5abd6a"
- integrity sha512-HTMm07dhxq1dIPGWwpiVrIk9n+DH7KYmqWA786mLe8jDS+1ZjGtJGIIsJVKoseZXS6/FxiUWCJ2B7XzqUCuhPw==
- dependencies:
- layout-base "^2.0.0"
-
cosmiconfig-toml-loader@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz#0681383651cceff918177debe9084c0d3769509b"
@@ -4272,37 +4245,15 @@ cyclist@~0.2.2:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
-cytoscape-cose-bilkent@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b"
- integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==
- dependencies:
- cose-base "^1.0.0"
-
-cytoscape-fcose@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.1.0.tgz#04c3093776ea6b71787009de641607db7d4edf55"
- integrity sha512-Q3apPl66jf8/2sMsrCjNP247nbDkyIPjA9g5iPMMWNLZgP3/mn9aryF7EFY/oRPEpv7bKJ4jYmCoU5r5/qAc1Q==
- dependencies:
- cose-base "^2.0.0"
-
-cytoscape@^3.23.0:
- version "3.23.0"
- resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.23.0.tgz#054ee05a6d0aa3b4f139382bbf2f4e5226df3c6d"
- integrity sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==
- dependencies:
- heap "^0.2.6"
- lodash "^4.17.21"
-
d3-array@1, "d3-array@1 - 2", d3-array@^1.1.1, d3-array@^1.2.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
-"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.1.tgz#39331ea706f5709417d31bbb6ec152e0328b39b3"
- integrity sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==
+"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.4.tgz#60550bcc9818be9ace88d269ccd97038fc399b55"
+ integrity sha512-ShFl90cxNqDaSynDF/Bik/kTzISqePqU3qo2fv6kSJEvF7y7tDCDpcU6WiT01rPO6zngZnrvJ/0j4q6Qg+5EQg==
dependencies:
internmap "1 - 2"
@@ -4375,12 +4326,12 @@ d3-contour@1:
dependencies:
d3-array "^1.1.1"
-d3-contour@4:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.0.tgz#5a1337c6da0d528479acdb5db54bc81a0ff2ec6b"
- integrity sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==
+d3-contour@3:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.0.1.tgz#2c64255d43059599cd0dba8fe4cc3d51ccdd9bbd"
+ integrity sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==
dependencies:
- d3-array "^3.2.0"
+ d3-array "2 - 3"
d3-delaunay@6:
version "6.0.2"
@@ -4721,7 +4672,7 @@ d3-zoom@3:
d3-selection "2 - 3"
d3-transition "2 - 3"
-d3@^5.16.0:
+d3@^5.14, d3@^5.16.0:
version "5.16.0"
resolved "https://registry.yarnpkg.com/d3/-/d3-5.16.0.tgz#9c5e8d3b56403c79d4ed42fbd62f6113f199c877"
integrity sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==
@@ -4758,17 +4709,17 @@ d3@^5.16.0:
d3-voronoi "1"
d3-zoom "1"
-d3@^7.0.0, d3@^7.7.0:
- version "7.7.0"
- resolved "https://registry.yarnpkg.com/d3/-/d3-7.7.0.tgz#e7779a74ea7c807b432fdfd8128de062b19c62eb"
- integrity sha512-VEwHCMgMjD2WBsxeRGUE18RmzxT9Bn7ghDpzvTEvkLSBAKgTMydJjouZTjspgQfRHpPt/PB3EHWBa6SSyFQq4g==
+d3@^7.0.0:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/d3/-/d3-7.0.4.tgz#37dfeb3b526f64a0de2ddb705ea61649325207bd"
+ integrity sha512-ruRiyPYZEGeJBOOjVS5pHliNUZM2HAllEY7HKB2ff+9ENxOti4N+S+WZqo9ggUMr8tSPMm+riqKpJd1oYEDN5Q==
dependencies:
d3-array "3"
d3-axis "3"
d3-brush "3"
d3-chord "3"
d3-color "3"
- d3-contour "4"
+ d3-contour "3"
d3-delaunay "6"
d3-dispatch "3"
d3-drag "3"
@@ -4794,13 +4745,23 @@ d3@^7.0.0, d3@^7.7.0:
d3-transition "3"
d3-zoom "3"
-dagre-d3-es@7.0.6:
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.6.tgz#8cab465ff95aca8a1ca2292d07e1fb31b5db83f2"
- integrity sha512-CaaE/nZh205ix+Up4xsnlGmpog5GGm81Upi2+/SBHxwNwrccBb3K51LzjZ1U6hgvOlAEUsVWf1xSTzCyKpJ6+Q==
+dagre-d3@^0.6.4:
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/dagre-d3/-/dagre-d3-0.6.4.tgz#0728d5ce7f177ca2337df141ceb60fbe6eeb7b29"
+ integrity sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==
+ dependencies:
+ d3 "^5.14"
+ dagre "^0.8.5"
+ graphlib "^2.1.8"
+ lodash "^4.17.15"
+
+dagre@^0.8.5:
+ version "0.8.5"
+ resolved "https://registry.yarnpkg.com/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee"
+ integrity sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==
dependencies:
- d3 "^7.7.0"
- lodash-es "^4.17.21"
+ graphlib "^2.1.8"
+ lodash "^4.17.15"
data-urls@^3.0.1:
version "3.0.2"
@@ -5129,7 +5090,12 @@ dommatrix@^1.0.3:
resolved "https://registry.yarnpkg.com/dommatrix/-/dommatrix-1.0.3.tgz#e7c18e8d6f3abdd1fef3dd4aa74c4d2e620a0525"
integrity sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==
-dompurify@2.4.1, dompurify@^2.4.1:
+dompurify@2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.8.tgz#224fe9ae57d7ebd9a1ae1ac18c1c1ca3f532226f"
+ integrity sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==
+
+dompurify@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.1.tgz#f9cb1a275fde9af6f2d0a2644ef648dd6847b631"
integrity sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==
@@ -6479,6 +6445,13 @@ grapheme-splitter@^1.0.4:
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+graphlib@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da"
+ integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==
+ dependencies:
+ lodash "^4.17.15"
+
graphql-config@^4.3.6:
version "4.3.6"
resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.3.6.tgz#908ef03d6670c3068e51fe2e84e10e3e0af220b6"
@@ -6738,11 +6711,6 @@ he@^1.1.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-heap@^0.2.6:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc"
- integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==
-
highlight.js@^11.5.1, highlight.js@~11.5.0:
version "11.5.1"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.5.1.tgz#027c24e4509e2f4dcd00b4a6dda542ce0a1f7aea"
@@ -8087,16 +8055,6 @@ known-css-properties@^0.25.0:
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.25.0.tgz#6ebc4d4b412f602e5cfbeb4086bd544e34c0a776"
integrity sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==
-layout-base@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2"
- integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==
-
-layout-base@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285"
- integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==
-
leven@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
@@ -8195,11 +8153,6 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
-lodash-es@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
- integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-
lodash.assign@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
@@ -8721,21 +8674,20 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-mermaid@^9.3.0:
- version "9.3.0"
- resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-9.3.0.tgz#8bd7c4a44b53e4e85c53a0a474442e9c273494ae"
- integrity sha512-mGl0BM19TD/HbU/LmlaZbjBi//tojelg8P/mxD6pPZTAYaI+VawcyBdqRsoUHSc7j71PrMdJ3HBadoQNdvP5cg==
+mermaid@^9.1.3:
+ version "9.1.3"
+ resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-9.1.3.tgz#15d08662c66250124ce31106a4620285061ac59c"
+ integrity sha512-jTIYiqKwsUXVCoxHUVkK8t0QN3zSKIdJlb9thT0J5jCnzXyc+gqTbZE2QmjRfavFTPPn5eRy5zaFp7V+6RhxYg==
dependencies:
"@braintree/sanitize-url" "^6.0.0"
d3 "^7.0.0"
- dagre-d3-es "7.0.6"
- dompurify "2.4.1"
+ dagre "^0.8.5"
+ dagre-d3 "^0.6.4"
+ dompurify "2.3.8"
+ graphlib "^2.1.8"
khroma "^2.0.0"
- lodash-es "^4.17.21"
moment-mini "^2.24.0"
- non-layered-tidy-tree-layout "^2.0.2"
- stylis "^4.1.2"
- uuid "^9.0.0"
+ stylis "^4.0.10"
meros@^1.1.4:
version "1.2.0"
@@ -9476,11 +9428,6 @@ nomnom@^1.5.x:
chalk "~0.4.0"
underscore "~1.6.0"
-non-layered-tidy-tree-layout@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804"
- integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==
-
nopt@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
@@ -11611,10 +11558,10 @@ stylelint@^14.9.1:
v8-compile-cache "^2.3.0"
write-file-atomic "^4.0.1"
-stylis@^4.1.2:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
- integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
+stylis@^4.0.10:
+ version "4.0.10"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.10.tgz#446512d1097197ab3f02fb3c258358c3f7a14240"
+ integrity sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==
subscriptions-transport-ws@^0.11.0:
version "0.11.0"
@@ -12340,11 +12287,6 @@ uuid@^8.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-uuid@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
- integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
-
uvu@^0.5.0:
version "0.5.3"
resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae"