From 7885e913d2e271db8bb15175165d151244d45a0c Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Sat, 27 May 2023 22:25:52 +0530 Subject: [PATCH] New upstream version 15.10.7+ds1 --- .eslintrc.yml | 7 +- .gitignore | 1 + .gitlab-ci.yml | 49 +- .gitlab/CODEOWNERS | 167 +- .gitlab/ci/as-if-jh.gitlab-ci.yml | 16 +- .gitlab/ci/database.gitlab-ci.yml | 39 +- .gitlab/ci/docs.gitlab-ci.yml | 4 +- .gitlab/ci/frontend.gitlab-ci.yml | 37 +- .gitlab/ci/global.gitlab-ci.yml | 27 +- .gitlab/ci/notify.gitlab-ci.yml | 37 + .../ci/package-and-test/main.gitlab-ci.yml | 176 +- .../ci/package-and-test/rules.gitlab-ci.yml | 10 +- .../package-and-test/variables.gitlab-ci.yml | 2 + .gitlab/ci/preflight.gitlab-ci.yml | 57 +- .gitlab/ci/qa.gitlab-ci.yml | 19 +- .gitlab/ci/rails.gitlab-ci.yml | 127 +- .../rails/rspec-foss-impact.gitlab-ci.yml.erb | 48 +- .gitlab/ci/rails/shared.gitlab-ci.yml | 18 +- .../release-environments/main.gitlab-ci.yml | 32 + .gitlab/ci/reports.gitlab-ci.yml | 9 - .gitlab/ci/review-apps/main.gitlab-ci.yml | 6 +- .gitlab/ci/review-apps/qa.gitlab-ci.yml | 2 +- .gitlab/ci/rules.gitlab-ci.yml | 92 +- .gitlab/ci/setup.gitlab-ci.yml | 16 - .gitlab/ci/vendored-gems.gitlab-ci.yml | 8 + ...Geo Replicate a new Git repository type.md | 154 +- .../Geo Replicate a new blob type.md | 148 +- .gitlab/issue_templates/UX Theme.md | 114 +- .../New Static Analysis Check.md | 2 +- .../Revert To Resolve Incident.md | 1 + .gitleaksignore | 2 + .rubocop.yml | 13 + .../missing_dictionary_file.yml | 4 + .rubocop_todo/gitlab/namespaced_class.yml | 1 - .rubocop_todo/gitlab/strong_memoize_attr.yml | 4 - .rubocop_todo/layout/argument_alignment.yml | 161 -- .../layout/empty_line_after_magic_comment.yml | 2 - .rubocop_todo/layout/line_length.yml | 5 - .../layout/space_in_lambda_literal.yml | 1 - .rubocop_todo/layout/space_inside_parens.yml | 1 - .rubocop_todo/lint/unused_block_argument.yml | 2 - .rubocop_todo/lint/unused_method_argument.yml | 1 - .../naming/heredoc_delimiter_naming.yml | 1 - .rubocop_todo/performance/map_compact.yml | 13 - .rubocop_todo/performance/string_include.yml | 9 - .rubocop_todo/rails/inverse_of.yml | 17 - .rubocop_todo/rake/require.yml | 14 - .rubocop_todo/rspec/context_wording.yml | 5 - .../rspec/invalid_feature_category.yml | 66 - .../rspec/missing_feature_category.yml | 1878 ------------- .rubocop_todo/style/format_string.yml | 1 - .rubocop_todo/style/guard_clause.yml | 1 - .rubocop_todo/style/if_unless_modifier.yml | 2 - .rubocop_todo/style/mutable_constant.yml | 1 - .../style/percent_literal_delimiters.yml | 1 - .rubocop_todo/style/redundant_freeze.yml | 1 - .rubocop_todo/style/symbol_proc.yml | 1 - CHANGELOG.md | 875 +++++- GITALY_SERVER_VERSION | 2 +- GITLAB_KAS_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- GITLAB_SHELL_VERSION | 2 +- Gemfile | 57 +- Gemfile.checksum | 122 +- Gemfile.lock | 218 +- README.md | 2 +- VERSION | 2 +- .../images/learn_gitlab/section_code.svg | 4 + .../components/new_access_token_app.vue | 2 +- app/assets/javascripts/activities.js | 2 +- .../add_context_commits_modal_wrapper.vue | 2 +- .../store/actions.js | 2 +- .../components/abuse_report_row.vue | 41 + .../abuse_reports_filtered_search_bar.vue | 109 + .../admin/abuse_reports/components/app.vue | 63 + .../admin/abuse_reports/constants.js | 81 + .../javascripts/admin/abuse_reports/index.js | 31 + .../javascripts/admin/abuse_reports/utils.js | 6 + .../application_settings/network_outbound.js | 28 + .../broadcast_messages/components/base.vue | 2 +- .../components/message_form.vue | 62 +- .../admin/broadcast_messages/constants.js | 2 - .../admin/broadcast_messages/edit.js | 4 + .../admin/broadcast_messages/index.js | 11 +- .../admin/deploy_keys/components/table.vue | 2 +- .../admin/statistics_panel/store/actions.js | 2 +- .../users/components/actions/activate.vue | 2 +- .../users/components/actions/approve.vue | 2 +- .../admin/users/components/actions/ban.vue | 2 +- .../admin/users/components/actions/block.vue | 2 +- .../users/components/actions/deactivate.vue | 2 +- .../admin/users/components/actions/reject.vue | 2 +- .../admin/users/components/actions/unban.vue | 2 +- .../users/components/actions/unblock.vue | 2 +- .../admin/users/components/actions/unlock.vue | 2 +- .../admin/users/components/users_table.vue | 2 +- .../airflow/dags/components/dags.vue | 111 - app/assets/javascripts/{flash.js => alert.js} | 2 +- .../components/alerts_form.vue | 35 +- .../components/alerts_settings_wrapper.vue | 2 +- .../javascripts/alerts_settings/constants.js | 2 +- .../alerts_settings/utils/cache_updates.js | 2 +- .../cycle_analytics/components/base.vue | 30 +- .../components/path_navigation.vue | 17 +- .../components/value_stream_filters.vue | 6 - .../analytics/cycle_analytics/constants.js | 8 +- .../cycle_analytics/store/actions.js | 23 +- .../cycle_analytics/store/getters.js | 4 +- .../cycle_analytics/store/mutations.js | 7 +- .../analytics/cycle_analytics/store/state.js | 6 +- .../analytics/cycle_analytics/utils.js | 26 +- .../components/projects_dropdown_filter.vue | 5 - .../components/value_stream_metrics.vue | 20 +- .../value_streams_dashboard_link.vue | 30 + .../javascripts/analytics/shared/utils.js | 19 + .../usage_trends/components/usage_counts.vue | 2 +- app/assets/javascripts/api.js | 2 +- app/assets/javascripts/api/analytics_api.js | 58 +- app/assets/javascripts/api/user_api.js | 2 +- .../artifacts/components/artifact_row.vue | 24 +- .../components/artifacts_bulk_delete.vue | 182 ++ .../artifacts_table_row_details.vue | 11 +- .../components/job_artifacts_table.vue | 83 +- .../artifacts/components/job_checkbox.vue | 52 + app/assets/javascripts/artifacts/constants.js | 39 + ...ulk_destroy_job_artifacts.mutation.graphql | 7 + app/assets/javascripts/artifacts/index.js | 10 +- .../javascripts/authentication/mount_2fa.js | 26 +- .../components/manage_two_factor_form.vue | 6 +- .../authentication/u2f/authenticate.js | 106 - .../javascripts/authentication/u2f/error.js | 26 - .../javascripts/authentication/u2f/index.js | 17 - .../authentication/u2f/register.js | 102 - .../javascripts/authentication/u2f/util.js | 40 - .../authentication/webauthn/authenticate.js | 3 +- .../webauthn/components/registration.vue | 226 ++ .../authentication/webauthn/constants.js | 46 + .../authentication/webauthn/error.js | 7 +- .../authentication/webauthn/index.js | 18 +- .../authentication/webauthn/register.js | 3 +- .../authentication/webauthn/registration.js | 22 + .../authentication/webauthn/util.js | 8 +- app/assets/javascripts/awards_handler.js | 2 +- .../badges/components/badge_form.vue | 2 +- .../badges/components/badge_settings.vue | 4 +- .../batch_comments/components/draft_note.vue | 13 +- .../components/preview_dropdown.vue | 22 +- .../components/submit_dropdown.vue | 2 +- .../javascripts/batch_comments/index.js | 8 + .../stores/modules/batch_comments/actions.js | 4 +- .../modules/batch_comments/mutation_types.js | 2 + .../modules/batch_comments/mutations.js | 3 + app/assets/javascripts/behaviors/copy_code.js | 2 + .../behaviors/copy_to_clipboard.js | 4 +- .../javascripts/behaviors/date_picker.js | 5 +- .../behaviors/markdown/copy_as_gfm.js | 2 +- .../behaviors/markdown/render_json_table.js | 2 +- .../markdown/render_observability.js | 57 +- .../markdown/render_sandboxed_mermaid.js | 2 +- .../javascripts/behaviors/markdown/schema.js | 2 +- .../javascripts/behaviors/preview_markdown.js | 2 +- app/assets/javascripts/behaviors/shortcuts.js | 6 +- .../behaviors/shortcuts/shortcuts.js | 5 +- .../javascripts/blame/blame_redirect.js | 2 +- .../javascripts/blame/streaming/index.js | 56 + app/assets/javascripts/blob/csv/index.js | 1 + .../blob/file_template_mediator.js | 2 +- .../blob/notebook/notebook_viewer.vue | 5 + app/assets/javascripts/blob/openapi/index.js | 13 +- app/assets/javascripts/blob/viewer/index.js | 2 +- .../javascripts/blob_edit/blob_bundle.js | 2 +- app/assets/javascripts/blob_edit/edit_blob.js | 4 +- .../components/board_add_new_column.vue | 116 +- .../components/board_add_new_column_form.vue | 101 +- .../boards/components/board_app.vue | 28 +- .../boards/components/board_column.vue | 15 +- .../boards/components/board_content.vue | 25 +- .../components/board_content_sidebar.vue | 9 +- .../components/board_filtered_search.vue | 24 +- .../boards/components/board_form.vue | 40 +- .../boards/components/board_list.vue | 22 +- .../boards/components/board_list_header.vue | 144 +- .../components/board_settings_sidebar.vue | 4 +- .../boards/components/board_top_bar.vue | 44 +- .../boards/components/boards_selector.vue | 37 +- .../boards/components/config_toggle.vue | 9 +- .../issue_board_filtered_search.vue | 22 +- app/assets/javascripts/boards/constants.js | 27 +- .../group_board_milestones.query.graphql | 2 +- .../project_board_milestones.query.graphql | 2 +- app/assets/javascripts/boards/index.js | 7 +- .../javascripts/boards/issue_board_filters.js | 21 + .../javascripts/boards/stores/actions.js | 27 +- .../javascripts/boards/stores/mutations.js | 11 +- .../javascripts/branches/divergence_graph.js | 2 +- .../components/ci_variable_settings.vue | 8 + .../components/ci_variable_shared.vue | 74 +- .../components/ci_variable_table.vue | 43 +- .../ci/ci_variable_list/constants.js | 5 + .../queries/group_variables.query.graphql | 11 +- .../queries/project_variables.query.graphql | 11 +- .../graphql/queries/variables.query.graphql | 10 +- .../ci/ci_variable_list/graphql/settings.js | 49 +- .../javascripts/ci/ci_variable_list/index.js | 9 +- .../components/editor/text_editor.vue | 11 + .../components/header/validation_segment.vue | 111 +- .../accordion_items/image_item.vue | 39 + .../accordion_items/job_setup_item.vue | 89 + .../job_assistant_drawer/constants.js | 36 +- .../job_assistant_drawer.vue | 109 +- .../components/job_assistant_drawer/utils.js | 22 + .../ci/pipeline_editor/event_hub.js | 5 + .../javascripts/ci/pipeline_editor/index.js | 8 +- .../pipeline_editor/pipeline_editor_app.vue | 21 +- .../ci/pipeline_editor/store/index.js | 12 + .../pipeline_editor/store/mutation_types.js | 2 + .../ci/pipeline_editor/store/mutations.js | 10 + .../ci/pipeline_editor/store/state.js | 4 + .../components/pipeline_new_form.vue | 22 +- .../javascripts/ci/pipeline_new/index.js | 4 + .../delete_pipeline_schedule_modal.vue | 4 +- .../components/pipeline_schedules.vue | 3 + .../table/cells/pipeline_schedule_actions.vue | 9 +- .../table/pipeline_schedules_table.vue | 5 + .../components/take_ownership_modal.vue | 10 +- .../take_ownership_modal_legacy.vue | 14 +- .../get_pipeline_schedules.query.graphql | 6 +- .../javascripts/ci/reports/constants.js | 14 - .../admin_new_runner/admin_new_runner_app.vue | 37 +- .../admin_register_runner_app.vue | 69 + .../ci/runner/admin_register_runner/index.js | 36 + .../admin_runner_show_app.vue | 2 +- .../admin_runners/admin_runners_app.vue | 6 +- .../components/registration/cli_command.vue | 42 + .../registration/platforms_drawer.vue | 135 + .../registration_instructions.vue | 241 ++ ...registration_token_reset_dropdown_item.vue | 6 +- .../registration/scripts/linux/install.sh | 12 + .../registration/scripts/osx/install.sh | 11 + .../registration/scripts/windows/install.ps1 | 13 + .../runner/components/registration/utils.js | 109 + .../runner/components/runner_bulk_delete.vue | 2 +- .../runner/components/runner_create_form.vue | 71 + .../components/runner_delete_button.vue | 2 +- .../ci/runner/components/runner_jobs.vue | 2 +- .../components/runner_list_empty_state.vue | 4 +- .../runner/components/runner_pause_button.vue | 2 +- .../ci/runner/components/runner_projects.vue | 2 +- .../runner/components/runner_update_form.vue | 2 +- .../components/search_tokens/tag_token.vue | 2 +- app/assets/javascripts/ci/runner/constants.js | 62 +- .../new/runner_create.mutation.graphql | 9 + .../runner_for_registration.query.graphql | 8 + .../group_runner_show_app.vue | 2 +- .../group_runners/group_runners_app.vue | 2 +- .../show_alert_from_local_storage.js | 2 +- .../ci/runner/runner_edit/runner_edit_app.vue | 2 +- .../agents/components/revoke_token_button.vue | 11 +- .../javascripts/clusters/clusters_bundle.js | 2 +- app/assets/javascripts/clusters/constants.js | 16 - .../components/delete_agent_button.vue | 11 +- .../clusters_list/store/actions.js | 2 +- .../commit/components/signature_badge.vue | 94 + .../components/x509_certificate_details.vue | 45 + app/assets/javascripts/commit/constants.js | 104 + .../javascripts/commit_merge_requests.js | 2 +- .../components/project_form_group.vue | 2 +- .../bubble_menus/formatting_bubble_menu.vue | 3 +- .../bubble_menus/media_bubble_menu.vue | 35 +- .../components/content_editor.vue | 86 +- .../components/formatting_toolbar.vue | 168 +- .../components/toolbar_more_dropdown.vue | 10 +- .../toolbar_text_style_dropdown.vue | 2 + .../components/wrappers/table_cell_base.vue | 2 +- .../content_editor/constants/index.js | 1 + .../content_editor/extensions/attachment.js | 2 +- .../content_editor/extensions/color_chip.js | 4 +- .../extensions/drawio_diagram.js | 41 + .../extensions/external_keydown_handler.js | 2 +- .../content_editor/extensions/image.js | 4 +- .../extensions/paste_markdown.js | 4 +- .../content_editor/extensions/suggestions.js | 2 +- .../content_editor/extensions/table.js | 2 +- .../content_editor/services/content_editor.js | 4 +- .../services/create_content_editor.js | 8 +- .../services/gl_api_markdown_deserializer.js | 7 +- .../services/hast_to_prosemirror_converter.js | 2 +- .../services/markdown_serializer.js | 5 + .../content_editor/services/upload_helpers.js | 38 +- app/assets/javascripts/contextual_sidebar.js | 3 - .../contributors/components/contributors.vue | 42 +- .../contributors/stores/actions.js | 2 +- .../components/deploy_freeze_modal.vue | 16 +- .../deploy_freeze/store/actions.js | 2 +- .../deploy_keys/components/app.vue | 2 +- .../deploy_keys/components/confirm_modal.vue | 4 +- .../components/new_deploy_token.vue | 9 +- .../deploy_token_translations.js | 5 +- app/assets/javascripts/deprecated_notes.js | 59 +- .../design_notes/design_discussion.vue | 139 +- .../components/design_notes/design_note.vue | 91 +- .../design_notes/design_reply_form.vue | 118 +- .../components/design_sidebar.vue | 25 +- .../components/toolbar/index.vue | 3 +- .../design_management/constants.js | 5 + .../mutations/destroy_note.mutation.graphql | 8 + .../javascripts/design_management/index.js | 10 +- .../design_management/mixins/all_designs.js | 2 +- .../design_management/pages/design/index.vue | 81 +- .../design_management/utils/cache_update.js | 2 +- .../design_management/utils/error_messages.js | 8 +- app/assets/javascripts/diff.js | 2 +- .../javascripts/diffs/components/app.vue | 36 +- .../diffs/components/diff_code_quality.vue | 2 +- .../diffs/components/diff_expansion_cell.vue | 2 +- .../diffs/components/diff_file.vue | 2 +- .../javascripts/diffs/components/diff_row.vue | 5 + .../diffs/components/file_row_stats.vue | 2 +- .../diffs/components/tree_list.vue | 107 +- app/assets/javascripts/diffs/constants.js | 8 - app/assets/javascripts/diffs/index.js | 17 +- app/assets/javascripts/diffs/store/actions.js | 36 +- app/assets/javascripts/diffs/store/getters.js | 8 +- .../diffs/store/modules/diff_state.js | 1 + .../javascripts/diffs/store/mutations.js | 15 +- app/assets/javascripts/diffs/store/utils.js | 43 + .../diffs/utils/tree_worker_utils.js | 5 + .../javascripts/diffs/workers/tree_worker.js | 19 - app/assets/javascripts/drawio/constants.js | 15 + .../drawio/content_editor_facade.js | 80 + .../javascripts/drawio/drawio_editor.js | 277 ++ .../drawio/markdown_field_editor_facade.js | 72 + .../components/source_editor_toolbar.vue | 43 +- app/assets/javascripts/editor/constants.js | 26 +- .../source_editor_extension_base.js | 45 + .../extensions/source_editor_markdown_ext.js | 29 +- .../source_editor_markdown_livepreview_ext.js | 6 +- app/assets/javascripts/editor/schema/ci.json | 14 +- app/assets/javascripts/editor/utils.js | 9 +- .../emoji/components/emoji_group.vue | 5 + .../javascripts/entrypoints/super_sidebar.js | 5 + .../components/canary_update_modal.vue | 2 +- .../components/confirm_rollback_modal.vue | 2 +- .../components/delete_environment_modal.vue | 4 +- .../environments/components/deployment.vue | 2 +- .../components/edit_environment.vue | 2 +- .../components/environment_form.vue | 2 +- .../components/kubernetes_agent_info.vue | 101 + .../components/kubernetes_overview.vue | 73 + .../components/new_environment.vue | 2 +- .../components/new_environment_item.vue | 30 + .../components/stop_environment_modal.vue | 2 +- .../queries/k8s_cluster_agent.query.graphql | 19 + .../environments/mixins/environments_mixin.js | 2 +- .../components/error_details.vue | 2 +- .../error_tracking/store/actions.js | 2 +- .../error_tracking/store/details/actions.js | 2 +- .../error_tracking/store/list/actions.js | 2 +- .../error_tracking_settings/store/actions.js | 2 +- .../configure_feature_flags_modal.vue | 22 +- .../components/environments_dropdown.vue | 2 +- .../components/new_environments_dropdown.vue | 2 +- .../javascripts/feature_flags/constants.js | 8 - .../feature_flags/store/edit/actions.js | 2 +- .../feature_highlight_helper.js | 2 +- .../add_extra_tokens_for_merge_requests.js | 36 +- .../available_dropdown_mappings.js | 5 + .../filtered_search/dropdown_ajax_filter.js | 2 +- .../filtered_search/dropdown_emoji.js | 2 +- .../filtered_search/dropdown_non_user.js | 2 +- .../filtered_search_manager.js | 5 +- .../filtered_search/visual_token_value.js | 2 +- app/assets/javascripts/gpg_badges.js | 2 +- .../grafana_integration/store/actions.js | 4 +- .../javascripts/graphql_shared/constants.js | 1 + .../graphql_shared/possible_types.json | 3 +- .../get_users_by_usernames.query.graphql | 9 - app/assets/javascripts/group.js | 2 +- .../javascripts/groups/components/app.vue | 4 +- .../groups/components/group_name_and_path.vue | 2 +- .../components/invite_members_banner.vue | 6 +- app/assets/javascripts/groups/constants.js | 1 - .../settings/components/access_dropdown.vue | 2 +- app/assets/javascripts/groups/store/utils.js | 6 +- app/assets/javascripts/header.js | 2 +- .../header_search/components/app.vue | 60 +- .../header_search_autocomplete_items.vue | 14 +- .../header_search_default_items.vue | 6 +- .../components/header_search_scoped_items.vue | 6 +- .../javascripts/header_search/constants.js | 48 - .../header_search/store/getters.js | 20 +- app/assets/javascripts/ide/components/ide.vue | 2 +- .../ide/components/new_dropdown/modal.vue | 6 +- .../ide/components/repo_editor.vue | 26 +- app/assets/javascripts/ide/index.js | 1 + app/assets/javascripts/ide/stores/actions.js | 2 +- .../ide/stores/actions/merge_request.js | 2 +- .../javascripts/ide/stores/actions/project.js | 2 +- .../ide/stores/modules/commit/actions.js | 7 +- .../modules/merge_requests/constants.js | 6 - .../stores/modules/merge_requests/state.js | 4 +- .../terminal/actions/session_controls.js | 2 +- .../terminal/actions/session_status.js | 2 +- app/assets/javascripts/ide/stores/state.js | 1 + .../components/group_dropdown.vue | 6 +- .../components/import_status.vue | 9 +- .../components/import_actions_cell.vue | 25 +- .../import_groups/components/import_table.vue | 26 +- .../import_entities/import_groups/index.js | 1 + .../import_groups/services/status_poller.js | 2 +- ...ere_user_can_import_projects.query.graphql | 18 + .../import_entities/import_projects/index.js | 5 +- .../import_projects/store/actions.js | 10 +- app/assets/javascripts/incidents/constants.js | 1 - .../incidents_settings_service.js | 2 +- .../javascripts/init_deprecated_notes.js | 4 +- .../javascripts/integrations/constants.js | 6 +- .../edit/components/confirmation_modal.vue | 2 +- .../edit/components/integration_form.vue | 10 - .../components/integration_forms/section.vue | 8 + .../components/reset_confirmation_modal.vue | 2 +- .../components/sections/apple_app_store.vue | 73 + .../edit/components/sections/google_play.vue | 75 + .../edit/components/upload_dropzone_field.vue | 143 + .../index/components/integrations_table.vue | 14 +- .../components/group_select.vue | 1 + .../components/invite_members_modal.vue | 7 +- .../components/invite_members_trigger.vue | 50 +- .../components/invite_modal_base.vue | 41 +- .../javascripts/invite_members/constants.js | 5 +- .../utils/trigger_successful_invite_alert.js | 2 +- .../issuable/components/csv_export_modal.vue | 13 +- .../components/csv_import_export_buttons.vue | 4 +- .../components/issuable_header_warnings.vue | 8 +- .../components/related_issuable_item.vue | 72 +- .../issuable/components/status_box.vue | 11 +- app/assets/javascripts/issuable/constants.js | 10 - .../issuable/issuable_bulk_update_actions.js | 2 +- .../issuable/issuable_label_selector.js | 11 +- .../popover/components/mr_popover.vue | 24 +- .../javascripts/issuable/popover/constants.js | 13 - app/assets/javascripts/issues/constants.js | 29 +- .../issues/create_merge_request_dropdown.js | 123 +- .../components/issues_dashboard_app.vue | 41 +- app/assets/javascripts/issues/index.js | 8 +- app/assets/javascripts/issues/issue.js | 2 +- .../list/components/issues_list_app.vue | 41 +- .../javascripts/issues/list/constants.js | 1 - app/assets/javascripts/issues/list/utils.js | 40 +- .../javascripts/issues/manual_ordering.js | 2 +- .../components/related_merge_requests.vue | 32 +- .../related_merge_requests/store/actions.js | 2 +- .../issues/show/components/app.vue | 40 +- .../show/components/delete_issue_modal.vue | 3 +- .../issues/show/components/description.vue | 162 +- .../issues/show/components/edit_actions.vue | 12 - .../show/components/fields/description.vue | 1 - .../issues/show/components/fields/type.vue | 16 +- .../issues/show/components/header_actions.vue | 41 +- .../incidents/create_timeline_event.vue | 4 +- .../components/incidents/incident_tabs.vue | 24 +- .../show/components/incidents/router.js | 20 + .../incidents/timeline_events_form.vue | 6 +- .../incidents/timeline_events_list.vue | 2 +- .../issues/show/components/incidents/utils.js | 2 +- .../issues/show/components/locked_warning.vue | 12 +- .../components/task_list_item_actions.vue | 4 +- .../issues/show/components/title.vue | 28 +- .../javascripts/issues/show/constants.js | 1 - app/assets/javascripts/issues/show/index.js | 15 +- .../graphql/fragments/ci_job.fragment.graphql | 11 + .../fragments/ci_variable.fragment.graphql | 6 + .../job_play_with_variables.mutation.graphql | 11 + .../job_retry_with_variables.mutation.graphql | 11 +- .../job/graphql/queries/get_job.query.graphql | 11 +- .../components/job/job_log_controllers.vue | 2 + .../components/job/manual_variables_form.vue | 148 +- .../job_retry_forward_deployment_modal.vue | 16 +- .../components/job/sidebar/sidebar_header.vue | 2 +- .../jobs/components/table/constants.js | 1 - .../components/table/graphql/cache_config.js | 60 +- .../graphql/queries/get_jobs.query.graphql | 1 - .../queries/get_jobs_count.query.graphql | 8 + .../jobs/components/table/jobs_table_app.vue | 46 +- app/assets/javascripts/jobs/constants.js | 2 +- app/assets/javascripts/jobs/store/actions.js | 4 +- .../labels/components/promote_label_modal.vue | 4 +- .../labels/create_label_dropdown.js | 22 +- .../labels/group_label_subscription.js | 5 +- .../javascripts/labels/label_manager.js | 2 +- app/assets/javascripts/labels/labels.js | 12 +- .../javascripts/labels/labels_select.js | 2 +- .../labels/project_label_subscription.js | 5 +- app/assets/javascripts/layout_nav.js | 9 +- app/assets/javascripts/lib/swagger.js | 9 + app/assets/javascripts/lib/utils/constants.js | 5 + .../javascripts/lib/utils/error_message.js | 20 + .../javascripts/lib/utils/file_upload.js | 7 + .../javascripts/lib/utils/number_utils.js | 51 +- .../javascripts/lib/utils/ref_validator.js | 145 + .../javascripts/lib/utils/resize_observer.js | 10 +- .../javascripts/lib/utils/text_markdown.js | 58 +- .../javascripts/lib/utils/text_utility.js | 43 + .../vue3compat/compat_functional_mixin.js | 14 + .../lib/utils/vue3compat/mark_raw.js | 9 + app/assets/javascripts/locale/sprintf.js | 4 +- app/assets/javascripts/main.js | 10 +- app/assets/javascripts/members/constants.js | 2 - .../components/diff_file_editor.vue | 2 +- .../merge_conflicts/store/actions.js | 2 +- app/assets/javascripts/merge_request.js | 5 +- app/assets/javascripts/merge_request_tabs.js | 2 +- .../components/compare_dropdown.vue | 8 +- .../components/delete_milestone_modal.vue | 4 +- .../components/promote_milestone_modal.vue | 6 +- .../javascripts/milestones/milestone.js | 2 +- .../javascripts/mirrors/mirror_repos.js | 2 +- app/assets/javascripts/mirrors/ssh_mirror.js | 2 +- .../ml/experiment_tracking/constants.js | 17 +- .../routes/candidates/show/index.js | 3 + .../candidates/show/ml_candidates_show.vue} | 52 +- .../routes/candidates/show/translations.js | 11 + .../routes/experiments/show/constants.js | 21 + .../routes/experiments/show/index.js | 3 + .../experiments/show/ml_experiments_show.vue} | 173 +- .../routes/experiments/show/translations.js | 16 + .../monitoring/components/dashboard.vue | 2 +- .../javascripts/monitoring/constants.js | 6 - .../javascripts/monitoring/stores/actions.js | 2 +- app/assets/javascripts/mr_notes/init_notes.js | 7 + .../javascripts/namespaces/leave_by_url.js | 2 +- .../nav/components/new_nav_toggle.vue | 30 +- .../nav/components/top_nav_new_dropdown.vue | 17 + .../notebook/cells/output/error.vue | 40 + .../notebook/cells/output/index.vue | 10 + app/assets/javascripts/notebook/index.vue | 4 + .../notes/components/comment_field_layout.vue | 2 +- .../notes/components/comment_form.vue | 126 +- .../components/discussion_locked_widget.vue | 6 +- .../notes/components/note_actions.vue | 2 +- .../notes/components/note_awards_list.vue | 2 +- .../notes/components/note_body.vue | 2 +- .../notes/components/note_edited_text.vue | 46 +- .../notes/components/note_header.vue | 15 +- .../notes/components/noteable_discussion.vue | 2 +- .../notes/components/noteable_note.vue | 2 +- .../components/toggle_replies_widget.vue | 6 +- app/assets/javascripts/notes/constants.js | 23 +- app/assets/javascripts/notes/i18n.js | 5 + app/assets/javascripts/notes/index.js | 6 + .../notes/mixins/diff_line_note_form.js | 2 +- .../javascripts/notes/mixins/resolvable.js | 2 +- .../javascripts/notes/stores/actions.js | 35 +- .../javascripts/notes/stores/mutations.js | 5 +- .../components/observability_app.vue | 60 +- .../components/skeleton/embed.vue | 15 + .../components/skeleton/index.vue | 21 +- .../javascripts/observability/constants.js | 12 + app/assets/javascripts/observability/index.js | 32 + .../operation_settings/store/actions.js | 4 +- .../components/details_page/delete_modal.vue | 2 +- .../components/details_page/tags_list.vue | 9 +- .../components/details_page/tags_list_row.vue | 9 +- .../components/list_page/image_list_row.vue | 8 +- ...et_container_repository_tags.query.graphql | 1 + .../explorer/pages/details.vue | 2 +- .../explorer/pages/list.vue | 5 +- .../dependency_proxy/app.vue | 2 +- .../harbor_registry/pages/details.vue | 2 +- .../harbor_registry/pages/harbor_tags.vue | 2 +- .../harbor_registry/pages/list.vue | 2 +- .../details/components/app.vue | 12 +- .../details/store/actions.js | 2 +- .../list/components/packages_list_app.vue | 2 +- .../infrastructure_registry/list/constants.js | 1 - .../list/stores/actions.js | 4 +- .../components/delete_modal.vue | 2 +- .../components/details/maven_installation.vue | 10 +- .../details/package_versions_list.vue | 45 +- .../components/details/pypi_installation.vue | 5 +- .../components/details/version_row.vue | 20 + .../components/functional/delete_packages.vue | 2 +- .../components/list/package_list_row.vue | 5 +- .../package_registry/constants.js | 19 +- .../queries/get_package_details.query.graphql | 1 + .../package_registry/pages/details.vue | 16 +- .../package_registry/pages/list.vue | 9 +- .../group/components/group_settings_app.vue | 2 +- .../settings/group/constants.js | 4 - .../container_expiration_policy_form.vue | 2 +- .../components/expiration_dropdown.vue | 2 +- .../project/components/expiration_input.vue | 2 +- .../components/registry_settings_app.vue | 2 +- .../shared/components/registry_list.vue | 2 +- .../pages/admin/abuse_reports/index.js | 2 + .../general/components/signup_form.vue | 21 +- .../application_settings/network/index.js | 3 + .../payload_downloader.js | 2 +- .../application_settings/payload_previewer.js | 2 +- .../index/components/cancel_jobs_modal.vue | 4 +- .../index/components/delete_project_modal.vue | 2 +- .../pages/admin/runners/register/index.js | 3 + .../pages/dashboard/todos/index/todos.js | 2 +- .../pages/groups/new/components/app.vue | 25 +- .../pages/groups/new/group_path_validator.js | 2 +- .../javascripts/pages/groups/new/index.js | 4 + .../components/bulk_imports_history_app.vue | 9 +- .../components/import_error_details.vue | 2 +- .../history/components/import_history_app.vue | 2 +- .../javascripts/pages/profiles/index.js | 2 + .../password_prompt/password_prompt_modal.vue | 2 +- .../pages/profiles/two_factor_auths/index.js | 2 + .../projects/airflow/dags/index/index.js | 27 - .../pages/projects/blame/show/index.js | 7 +- .../pages/projects/blob/show/index.js | 31 + .../pages/projects/boards/index.js | 2 - .../pages/projects/commit/show/index.js | 6 +- .../forks/new/components/fork_form.vue | 2 +- .../new/components/project_namespace.vue | 2 +- .../graphs/components/code_coverage.vue | 8 +- .../projects/merge_requests/edit/index.js | 2 +- .../projects/merge_requests/index/index.js | 3 +- .../projects/ml/candidates/show/index.js | 4 +- .../projects/ml/experiments/show/index.js | 30 +- .../javascripts/pages/projects/project.js | 5 +- .../projects/settings/ci_cd/show/index.js | 2 + .../projects/settings/repository/form.js | 4 +- .../permissions/components/settings_panel.vue | 4 +- .../pages/registrations/new/index.js | 7 +- .../javascripts/pages/sessions/new/index.js | 2 +- .../pages/sessions/new/username_validator.js | 2 +- .../shared/wikis/components/wiki_content.vue | 2 +- .../shared/wikis/components/wiki_form.vue | 1 + .../javascripts/pages/shared/wikis/wikis.js | 11 + .../pages/users/activity_calendar.js | 19 +- .../javascripts/pages/users/show/index.js | 19 +- .../javascripts/pages/users/user_tabs.js | 12 +- .../javascripts/persistent_user_callout.js | 2 +- .../javascripts/persistent_user_callouts.js | 2 + .../pipeline_wizard/components/editor.vue | 13 +- .../pipelines/components/graph/job_item.vue | 7 + .../components/jobs/failed_jobs_app.vue | 2 +- .../components/jobs/failed_jobs_table.vue | 2 +- .../pipelines/components/jobs/jobs_app.vue | 2 +- .../jobs_shared/action_component.vue | 2 +- .../pipeline_mini_graph/pipeline_stage.vue | 2 +- .../pipelines_list/pipeline_stop_modal.vue | 2 +- .../components/pipelines_list/pipelines.vue | 2 +- .../pipelines_manual_actions.vue | 2 +- .../tokens/pipeline_branch_name_token.vue | 2 +- .../tokens/pipeline_tag_name_token.vue | 2 +- .../tokens/pipeline_trigger_author_token.vue | 2 +- .../test_reports/test_case_details.vue | 2 +- .../test_reports/test_suite_table.vue | 4 +- .../test_reports/test_summary_table.vue | 6 +- app/assets/javascripts/pipelines/constants.js | 3 - .../pipelines/mixins/pipelines_mixin.js | 2 +- .../pipelines/pipeline_details_bundle.js | 2 +- .../javascripts/pipelines/pipeline_tabs.js | 2 + .../pipelines/stores/test_reports/actions.js | 2 +- .../stores/test_reports/mutations.js | 2 +- .../components/delete_account_modal.vue | 11 +- .../account/components/update_username.vue | 9 +- .../profile/components/activity_calendar.vue | 100 + .../profile/components/followers_tab.vue | 15 +- .../profile/components/following_tab.vue | 15 +- .../get_user_achievements.query.graphql | 21 + .../profile/components/overview_tab.vue | 5 +- .../profile/components/profile_tabs.vue | 9 +- .../profile/components/user_achievements.vue | 100 + app/assets/javascripts/profile/constants.js | 7 + app/assets/javascripts/profile/index.js | 36 + .../components/profile_preferences.vue | 2 +- app/assets/javascripts/profile/profile.js | 2 +- app/assets/javascripts/profile/utils.js | 13 + .../commit/components/branches_dropdown.vue | 33 +- .../projects/commit/components/form_modal.vue | 24 +- .../commit/components/projects_dropdown.vue | 32 +- .../commit/init_revert_commit_modal.js | 1 - .../projects/commit/store/actions.js | 2 +- .../commit_box_pipeline_mini_graph.vue | 2 +- .../components/commit_box_pipeline_status.vue | 2 +- .../projects/commits/store/actions.js | 2 +- .../compare/components/revision_dropdown.vue | 4 +- .../components/revision_dropdown_legacy.vue | 4 +- .../components/shared/delete_button.vue | 10 +- .../projects/new/components/app.vue | 48 +- app/assets/javascripts/projects/new/index.js | 8 + .../javascripts/projects/project_find_file.js | 2 +- .../projects/settings/access_dropdown.js | 15 +- .../components/edit/branch_dropdown.vue | 2 +- .../branch_rules/components/view/constants.js | 24 +- .../branch_rules/components/view/index.vue | 75 +- .../components/view/protection_row.vue | 7 +- .../branch_rules/mount_branch_rules.js | 7 + .../settings/components/access_dropdown.vue | 7 +- .../projects/settings/constants.js | 1 + .../settings/mount_ref_switcher_badges.js | 31 + .../settings/repository/branch_rules/app.vue | 2 +- .../branch_rules/components/branch_rule.vue | 11 +- .../branch_rules/mount_branch_rules.js | 12 +- .../components/topics_token_selector.vue | 64 +- .../javascripts/projects/settings/utils.js | 21 + app/assets/javascripts/projects/star.js | 2 +- .../commit_pipeline_status_component.vue | 2 +- .../protected_branches/constants.js | 9 - .../protected_branch_create.js | 2 +- .../protected_branch_edit.js | 2 +- .../javascripts/protected_tags/constants.js | 11 + .../protected_tags/protected_tag_create.js | 81 +- .../protected_tags/protected_tag_edit.js | 112 +- .../protected_tags/protected_tag_edit_list.js | 4 +- .../components/add_issuable_form.vue | 2 +- .../components/related_issuable_input.vue | 2 +- .../components/related_issues_block.vue | 117 +- .../components/related_issues_list.vue | 12 +- .../components/related_issues_root.vue | 2 +- .../javascripts/related_issues/constants.js | 31 +- .../releases/components/app_index.vue | 2 +- .../releases/components/app_show.vue | 2 +- .../releases/components/tag_field_new.vue | 9 +- app/assets/javascripts/releases/constants.js | 5 + .../releases/release_notification_service.js | 2 +- .../stores/modules/edit_new/actions.js | 2 +- .../stores/modules/edit_new/getters.js | 11 +- .../javascripts/repository/commits_service.js | 2 +- .../components/blob_content_viewer.vue | 2 +- .../repository/components/blob_controls.vue | 2 +- .../blob_viewers/notebook_viewer.vue | 19 +- .../components/delete_blob_modal.vue | 20 +- .../repository/components/fork_info.vue | 197 +- .../components/fork_sync_conflicts_modal.vue | 137 + .../repository/components/last_commit.vue | 7 +- .../components/new_directory_modal.vue | 22 +- .../repository/components/tree_content.vue | 15 +- .../components/upload_blob_modal.vue | 22 +- .../javascripts/repository/constants.js | 8 +- app/assets/javascripts/repository/index.js | 9 +- .../mutations/sync_fork.mutation.graphql | 11 + .../queries/fork_details.query.graphql | 2 + app/assets/javascripts/right_sidebar.js | 2 +- .../saved_replies/components/app.vue | 2 +- .../saved_replies/components/form.vue | 182 ++ .../saved_replies/components/list.vue | 56 +- .../saved_replies/components/list_item.vue | 84 +- .../javascripts/saved_replies/pages/edit.vue | 68 + .../javascripts/saved_replies/pages/index.vue | 54 +- .../create_saved_reply.mutation.graphql | 10 + .../delete_saved_reply.mutation.graphql | 5 + .../queries/get_saved_reply.query.graphql | 10 + .../queries/saved_replies.query.graphql | 4 +- .../update_saved_reply.mutation.graphql | 10 + .../javascripts/saved_replies/routes.js | 7 + .../search/sidebar/components/app.vue | 11 +- .../sidebar/components/checkbox_filter.vue | 19 +- .../sidebar/components/language_filter.vue | 50 +- .../sidebar/components/radio_filter.vue | 8 +- .../sidebar/components/results_filters.vue | 7 +- .../sidebar/components/scope_navigation.vue | 14 +- .../javascripts/search/sidebar/utils.js | 27 +- .../javascripts/search/store/actions.js | 31 +- .../javascripts/search/store/getters.js | 12 +- .../javascripts/search/store/mutations.js | 2 +- app/assets/javascripts/search/store/utils.js | 32 + .../search/topbar/components/app.vue | 79 +- .../security_configuration/components/app.vue | 11 +- .../components/constants.js | 3 +- .../components/self_monitor_form.vue | 34 +- .../{constants.js => legacy_constants.js} | 4 +- .../sentry/legacy_sentry_config.js | 2 +- .../javascripts/sentry/sentry_config.js | 4 - .../javascripts/service_ping_consent.js | 2 +- .../set_status_modal_wrapper.vue | 2 +- .../components/assignees/assignee_avatar.vue | 4 +- .../assignees/assignee_avatar_link.vue | 4 +- .../assignees/assignees_realtime.vue | 4 - .../assignees/collapsed_assignee_list.vue | 4 +- .../assignees/sidebar_assignees.vue | 2 +- .../assignees/sidebar_assignees_widget.vue | 6 +- .../assignees/sidebar_invite_members.vue | 4 - .../assignees/sidebar_participant.vue | 4 +- .../assignees/uncollapsed_assignee_list.vue | 6 +- .../sidebar_confidentiality_content.vue | 4 +- .../sidebar_confidentiality_form.vue | 2 +- .../sidebar_confidentiality_widget.vue | 2 +- .../components/crm_contacts/crm_contacts.vue | 2 +- .../components/date/sidebar_date_widget.vue | 14 +- .../incidents/sidebar_escalation_status.vue | 2 +- .../dropdown_contents_create_view.vue | 12 +- .../labels/labels_select_vue/store/actions.js | 2 +- .../labels/labels_select_widget/constants.js | 5 - .../dropdown_contents_create_view.vue | 17 +- .../dropdown_contents_labels_view.vue | 2 +- .../labels_select_root.vue | 14 +- .../components/lock/edit_form_buttons.vue | 6 +- .../components/lock/issuable_lock_form.vue | 12 +- .../milestone/milestone_dropdown.vue | 11 +- .../components/move/move_issue_button.vue | 2 +- .../components/move/move_issues_button.vue | 2 +- .../components/participants/participants.vue | 10 +- .../reviewers/reviewer_avatar_link.vue | 6 +- .../reviewers/sidebar_reviewers.vue | 2 +- .../severity/sidebar_severity_widget.vue | 11 +- .../sidebar/components/sidebar_dropdown.vue | 16 +- .../components/sidebar_dropdown_widget.vue | 6 +- .../sidebar_subscriptions_widget.vue | 13 +- .../time_tracking/create_timelog_form.vue | 18 +- .../components/time_tracking/report.vue | 2 +- .../components/time_tracking/time_tracker.vue | 4 +- .../todo_toggle/sidebar_todo_widget.vue | 5 +- app/assets/javascripts/sidebar/constants.js | 54 +- .../sidebar/mount_milestone_sidebar.js | 4 - .../javascripts/sidebar/mount_sidebar.js | 31 +- .../update_epic_due_date.mutation.graphql | 1 + .../update_epic_start_date.mutation.graphql | 1 + .../javascripts/sidebar/sidebar_mediator.js | 2 +- app/assets/javascripts/single_file_diff.js | 2 +- .../javascripts/snippets/components/edit.vue | 8 +- .../snippets/components/snippet_blob_edit.vue | 6 +- .../snippets/components/snippet_header.vue | 26 +- .../javascripts/streaming/chunk_writer.js | 144 + app/assets/javascripts/streaming/constants.js | 9 + .../streaming/handle_streamed_anchor_link.js | 26 + .../javascripts/streaming/html_stream.js | 33 + app/assets/javascripts/streaming/polyfills.js | 5 + .../streaming/rate_limit_stream_requests.js | 87 + .../javascripts/streaming/render_balancer.js | 36 + .../streaming/render_html_streams.js | 40 + .../components/context_switcher.vue | 160 +- .../components/context_switcher_toggle.vue | 26 +- .../super_sidebar/components/counter.vue | 2 +- .../super_sidebar/components/create_menu.vue | 1 + .../components/frequent_items_list.vue | 77 + .../components/global_search.vue | 320 +++ .../global_search_autocomplete_items.vue | 167 ++ .../global_search_default_items.vue | 58 + .../components/global_search_scoped_items.vue | 87 + .../components/global_search/constants.js | 33 + .../components/global_search/store/actions.js | 45 + .../components/global_search/store/getters.js | 220 ++ .../components/global_search/store/index.js | 25 + .../global_search/store/mutation_types.js | 6 + .../global_search/store/mutations.js | 30 + .../components/global_search/store/state.js | 19 + .../super_sidebar/components/groups_list.vue | 78 + .../super_sidebar/components/help_center.vue | 29 +- .../super_sidebar/components/items_list.vue | 40 + .../components/merge_request_menu.vue | 16 +- .../super_sidebar/components/nav_item.vue | 122 +- .../components/projects_list.vue | 79 + .../components/search_results.vue | 49 + .../super_sidebar/components/sidebar_menu.vue | 24 + .../components/sidebar_portal.vue | 30 + .../components/sidebar_portal_target.vue | 17 + .../components/super_sidebar.vue | 85 +- .../super_sidebar/components/user_bar.vue | 73 +- .../super_sidebar/components/user_menu.vue | 291 ++ .../components/user_name_group.vue | 77 + .../javascripts/super_sidebar/constants.js | 14 + ...rch_user_groups_and_projects.query.graphql | 24 + .../javascripts/super_sidebar/mock_data.js | 7 +- .../super_sidebar/super_sidebar_bundle.js | 19 + .../super_sidebar_collapsed_state_manager.js | 51 + app/assets/javascripts/super_sidebar/utils.js | 83 + app/assets/javascripts/syntax_highlight.js | 4 + app/assets/javascripts/task_list.js | 2 +- .../components/init_command_modal.vue | 2 +- .../components/states_table_actions.vue | 4 +- app/assets/javascripts/toggles/index.js | 16 +- .../components/inbound_token_access.vue | 2 +- .../token_access/components/opt_in_jwt.vue | 2 +- .../components/outbound_token_access.vue | 2 +- .../components/token_access_app.vue | 9 +- .../components/token_projects_table.vue | 7 +- .../usage_quotas/storage/constants.js | 1 - .../user_lists/components/add_user_modal.vue | 4 +- app/assets/javascripts/users_select/index.js | 7 +- .../new => validators}/length_validator.js | 15 +- .../components/action_buttons.vue | 2 +- .../components/approvals/approvals.vue | 70 +- .../approvals/approvals_summary.vue | 72 +- ....query.graphql => approvals.query.graphql} | 10 +- .../deployment/deployment_actions.vue | 2 +- .../components/extensions/base.vue | 6 +- .../components/mr_widget_author_time.vue | 2 +- .../components/state_container.vue | 4 +- .../states/mr_widget_auto_merge_enabled.vue | 2 +- .../components/states/mr_widget_merged.vue | 2 +- .../components/states/mr_widget_rebase.vue | 212 +- .../components/states/nothing_to_merge.vue | 20 +- .../components/states/ready_to_merge.vue | 6 +- .../components/states/work_in_progress.vue | 2 +- .../components/widget/widget.vue | 2 +- .../vue_merge_request_widget/constants.js | 8 +- .../vue_merge_request_widget/index.js | 16 +- .../mixins/approvals.js | 27 + .../mr_widget_options.vue | 77 +- .../queries/get_state.subscription.graphql | 1 + .../queries/states/rebase.query.graphql | 9 + .../stores/get_state_key.js | 2 +- .../stores/mr_widget_store.js | 6 +- .../components/system_notes/system_note.vue | 6 +- .../vue_shared/components/ci_badge_link.vue | 2 +- .../ci_cd_analytics_area_chart.vue | 35 +- .../color_select_root.vue | 2 +- .../confirm_danger/confirm_danger_modal.vue | 12 +- .../vue_shared/components/file_row.vue | 2 +- .../vue_shared/components/file_row_header.vue | 2 +- .../filtered_search_bar_root.vue | 2 +- .../store/modules/filters/actions.js | 2 +- .../tokens/branch_token.vue | 2 +- .../tokens/crm_contact_token.vue | 6 +- .../tokens/crm_organization_token.vue | 6 +- .../tokens/emoji_token.vue | 2 +- .../tokens/label_token.vue | 2 +- .../tokens/milestone_token.vue | 2 +- .../tokens/release_token.vue | 2 +- .../filtered_search_bar/tokens/user_token.vue | 2 +- .../components/form/form_footer_actions.vue | 3 +- .../issuable_blocked_icon/constants.js | 5 +- .../issuable_blocked_icon.vue | 11 +- .../listbox_input/listbox_input.vue | 10 +- .../markdown/drawio_toolbar_button.vue | 48 + .../markdown/editor_mode_dropdown.vue | 2 +- .../vue_shared/components/markdown/field.vue | 11 +- .../vue_shared/components/markdown/header.vue | 35 + .../components/markdown/markdown_editor.vue | 109 +- .../markdown/saved_replies.query.graphql | 12 + .../markdown/saved_replies_dropdown.vue | 120 + .../components/markdown/suggestions.vue | 2 +- .../components/metric_images/store/actions.js | 2 +- .../new_resource_dropdown.vue | 2 +- .../components/pagination/constants.js | 3 - .../project_selector/project_list_item.vue | 8 +- .../resizable_chart_container.vue | 40 - .../vue_shared/components/source_editor.vue | 11 +- .../components/source_viewer/constants.js | 2 - .../tooltip_on_truncate.vue | 7 + .../upload_dropzone/upload_dropzone.vue | 2 +- .../user_avatar/user_avatar_link.vue | 2 +- .../components/user_popover/user_popover.vue | 2 +- .../components/user_select/user_select.vue | 4 +- .../javascripts/vue_shared/constants.js | 6 +- .../vue_shared/gl_feature_flags_plugin.js | 16 +- .../vue_shared/global_search/constants.js | 73 + .../vue_shared/issuable/list/constants.js | 13 +- .../show/components/issuable_body.vue | 5 +- .../show/components/issuable_header.vue | 4 +- .../show/components/issuable_title.vue | 4 +- .../new_namespace/new_namespace_page.vue | 56 +- .../vue_shared/plugins/global_toast.js | 2 +- .../merge_request_artifact_download.vue | 2 +- .../security_reports/security_reports_app.vue | 2 +- .../work_items/components/item_state.vue | 2 +- .../work_items/components/item_title.vue | 1 + .../components/notes/activity_filter.vue | 113 - .../components/notes/system_note.vue | 2 +- .../notes/work_item_activity_sort_filter.vue | 116 + .../components/notes/work_item_add_note.vue | 72 +- .../notes/work_item_comment_form.vue | 62 +- .../notes/work_item_comment_locked.vue | 6 +- .../components/notes/work_item_discussion.vue | 164 +- .../work_item_history_only_filter_note.vue | 61 + .../components/notes/work_item_note.vue | 163 +- .../notes/work_item_note_actions.vue | 61 +- .../components/notes/work_item_note_body.vue | 5 + .../notes/work_item_note_replying.vue | 20 +- .../notes/work_item_note_signed_out.vue | 2 +- .../notes/work_item_notes_activity_header.vue | 91 + .../work_items/components/widget_wrapper.vue | 8 +- .../components/work_item_actions.vue | 1 + .../components/work_item_assignees.vue | 2 +- .../components/work_item_description.vue | 1 - .../components/work_item_detail.vue | 459 ++-- .../components/work_item_detail_modal.vue | 25 +- .../components/work_item_due_date.vue | 14 +- .../components/work_item_links/index.js | 2 - .../work_item_links/work_item_link_child.vue | 17 +- .../work_item_link_child_metadata.vue | 4 +- .../work_item_links/work_item_links.vue | 24 +- .../work_item_links/work_item_links_form.vue | 2 +- .../work_item_links/work_item_links_menu.vue | 4 +- .../work_item_links/work_item_tree.vue | 2 +- .../work_item_tree_children.vue | 2 +- .../components/work_item_milestone.vue | 1 + .../work_items/components/work_item_notes.vue | 140 +- .../javascripts/work_items/constants.js | 31 +- .../work_items/graphql/cache_utils.js | 132 +- .../graphql/get_issue_details.query.graphql | 11 +- .../notes/work_item_note.fragment.graphql | 1 + ...item_note_add_award_emoji.mutation.graphql | 17 + .../graphql/work_item_links.query.graphql | 39 +- app/assets/javascripts/work_items/index.js | 2 + .../work_items/pages/create_work_item.vue | 2 +- .../javascripts/work_items/router/index.js | 2 +- app/assets/javascripts/zen_mode.js | 8 + .../stylesheets/_page_specific_files.scss | 1 - .../components/content_editor.scss | 1 + .../components/related_items_list.scss | 67 +- app/assets/stylesheets/framework/buttons.scss | 1 - app/assets/stylesheets/framework/diffs.scss | 15 +- .../stylesheets/framework/dropdowns.scss | 28 +- app/assets/stylesheets/framework/files.scss | 28 + app/assets/stylesheets/framework/filters.scss | 5 +- app/assets/stylesheets/framework/forms.scss | 27 +- app/assets/stylesheets/framework/header.scss | 28 +- app/assets/stylesheets/framework/mixins.scss | 12 + app/assets/stylesheets/framework/modal.scss | 2 +- .../stylesheets/framework/page_title.scss | 2 - app/assets/stylesheets/framework/sidebar.scss | 7 +- .../stylesheets/framework/super_sidebar.scss | 186 +- .../framework/system_messages.scss | 3 + app/assets/stylesheets/framework/tables.scss | 2 +- .../stylesheets/framework/timeline.scss | 1 + .../stylesheets/framework/typography.scss | 3 +- .../stylesheets/framework/variables.scss | 11 +- app/assets/stylesheets/framework/wells.scss | 4 +- .../diff_custom_colors_addition.scss | 2 +- .../admin/{geo_nodes.scss => geo_sites.scss} | 12 +- .../stylesheets/page_bundles/incidents.scss | 2 - .../stylesheets/page_bundles/issuable.scss | 22 +- .../page_bundles/jira_connect.scss | 2 +- .../page_bundles/merge_requests.scss | 45 +- .../stylesheets/page_bundles/milestone.scss | 4 - .../ml_experiment_tracking.scss | 18 +- .../stylesheets/page_bundles/profile.scss | 4 +- .../stylesheets/page_bundles/settings.scss | 22 +- app/assets/stylesheets/page_bundles/tree.scss | 3 +- app/assets/stylesheets/page_bundles/wiki.scss | 61 +- .../stylesheets/page_bundles/work_items.scss | 21 +- app/assets/stylesheets/pages/commits.scss | 4 + app/assets/stylesheets/pages/detail_page.scss | 6 +- app/assets/stylesheets/pages/issues.scss | 45 +- app/assets/stylesheets/pages/labels.scss | 49 +- app/assets/stylesheets/pages/notes.scss | 34 +- app/assets/stylesheets/pages/profile.scss | 7 - app/assets/stylesheets/print.scss | 1 + .../stylesheets/startup/startup-dark.scss | 48 +- .../stylesheets/startup/startup-general.scss | 48 +- .../stylesheets/startup/startup-signin.scss | 15 +- .../themes/dark_mode_overrides.scss | 11 + app/assets/stylesheets/utilities.scss | 59 +- .../admin/abuse_reports_controller.rb | 8 + .../admin/application_settings_controller.rb | 7 +- .../admin/applications_controller.rb | 29 +- .../admin/broadcast_messages_controller.rb | 2 +- .../admin/ci/variables_controller.rb | 7 +- app/controllers/admin/cohorts_controller.rb | 2 +- .../admin/dev_ops_report_controller.rb | 2 +- app/controllers/admin/groups_controller.rb | 4 +- .../admin/identities_controller.rb | 2 +- .../admin/impersonation_tokens_controller.rb | 2 +- .../admin/impersonations_controller.rb | 2 +- app/controllers/admin/keys_controller.rb | 2 +- app/controllers/admin/projects_controller.rb | 27 +- app/controllers/admin/runners_controller.rb | 9 +- app/controllers/admin/sessions_controller.rb | 2 +- app/controllers/admin/spam_logs_controller.rb | 6 +- app/controllers/admin/topics_controller.rb | 4 +- .../admin/usage_trends_controller.rb | 2 +- app/controllers/application_controller.rb | 10 +- app/controllers/chaos_controller.rb | 5 +- .../concerns/authenticates_with_two_factor.rb | 33 +- ...nticates_with_two_factor_for_admin_mode.rb | 22 +- .../concerns/confirm_email_warning.rb | 2 +- .../concerns/cycle_analytics_params.rb | 3 - .../enforces_two_factor_authentication.rb | 3 +- .../concerns/integrations/params.rb | 3 + .../concerns/invisible_captcha_on_signup.rb | 14 +- app/controllers/concerns/issuable_actions.rb | 21 +- app/controllers/concerns/kas_cookie.rb | 16 + app/controllers/concerns/known_sign_in.rb | 9 +- .../concerns/membership_actions.rb | 4 +- app/controllers/concerns/notes_actions.rb | 3 +- .../observability/content_security_policy.rb | 12 +- .../concerns/product_analytics_tracking.rb | 83 +- .../concerns/registrations_tracking.rb | 2 + app/controllers/concerns/renders_notes.rb | 4 +- .../concerns/renders_projects_list.rb | 1 + .../concerns/sorting_preference.rb | 4 + app/controllers/concerns/uploads_actions.rb | 1 - app/controllers/concerns/wiki_actions.rb | 19 +- app/controllers/confirmations_controller.rb | 12 +- .../dashboard/projects_controller.rb | 4 +- app/controllers/dashboard/todos_controller.rb | 4 +- app/controllers/explore/groups_controller.rb | 7 +- app/controllers/graphql_controller.rb | 14 +- app/controllers/groups/children_controller.rb | 31 +- ...endency_proxy_for_containers_controller.rb | 2 +- .../groups/group_links_controller.rb | 2 +- .../groups/group_members_controller.rb | 5 +- .../groups/observability_controller.rb | 2 +- .../settings/access_tokens_controller.rb | 2 +- .../settings/applications_controller.rb | 30 +- .../groups/settings/ci_cd_controller.rb | 5 + .../groups/variables_controller.rb | 2 +- app/controllers/groups_controller.rb | 6 +- app/controllers/ide_controller.rb | 16 +- app/controllers/import/base_controller.rb | 2 +- .../import/bitbucket_controller.rb | 4 +- .../import/bulk_imports_controller.rb | 3 - app/controllers/import/fogbugz_controller.rb | 2 +- app/controllers/import/gitea_controller.rb | 7 +- app/controllers/import/github_controller.rb | 24 +- .../import/gitlab_projects_controller.rb | 2 +- app/controllers/import/manifest_controller.rb | 4 +- app/controllers/invites_controller.rb | 2 +- .../jira_connect/public_keys_controller.rb | 2 - app/controllers/jwt_controller.rb | 2 +- app/controllers/metrics_controller.rb | 7 +- .../oauth/applications_controller.rb | 27 +- .../oauth/authorizations_controller.rb | 8 +- .../authorized_applications_controller.rb | 4 +- .../jira_dvcs/authorizations_controller.rb | 10 +- .../omniauth_callbacks_controller.rb | 7 +- app/controllers/passwords_controller.rb | 2 +- .../profiles/accounts_controller.rb | 2 +- .../profiles/active_sessions_controller.rb | 2 +- app/controllers/profiles/emails_controller.rb | 4 +- .../profiles/notifications_controller.rb | 5 +- .../profiles/passwords_controller.rb | 2 +- .../personal_access_tokens_controller.rb | 7 +- .../profiles/two_factor_auths_controller.rb | 44 +- .../profiles/u2f_registrations_controller.rb | 11 - .../webauthn_registrations_controller.rb | 2 +- app/controllers/profiles_controller.rb | 2 +- .../projects/airflow/dags_controller.rb | 38 - .../cycle_analytics/stages_controller.rb | 5 + .../cycle_analytics/summary_controller.rb | 6 + .../projects/artifacts_controller.rb | 4 + .../projects/avatars_controller.rb | 2 - app/controllers/projects/badges_controller.rb | 1 + app/controllers/projects/blame_controller.rb | 38 +- app/controllers/projects/blob_controller.rb | 42 +- .../projects/branches_controller.rb | 2 +- .../projects/ci/lints_controller.rb | 2 +- .../projects/ci/pipeline_editor_controller.rb | 2 +- .../histograms_controller.rb | 2 +- .../projects/cluster_agents_controller.rb | 3 + app/controllers/projects/commit_controller.rb | 19 +- .../projects/commits_controller.rb | 14 +- .../projects/cycle_analytics_controller.rb | 6 +- .../designs/raw_images_controller.rb | 2 - .../designs/resized_image_controller.rb | 2 - .../projects/environments_controller.rb | 33 +- .../projects/error_tracking_controller.rb | 3 +- .../projects/feature_flags_controller.rb | 53 +- .../projects/google_cloud/base_controller.rb | 4 +- app/controllers/projects/graphs_controller.rb | 2 +- app/controllers/projects/hooks_controller.rb | 7 +- .../projects/imports_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 18 +- app/controllers/projects/jobs_controller.rb | 17 +- app/controllers/projects/labels_controller.rb | 24 +- .../merge_requests/creations_controller.rb | 9 +- .../projects/merge_requests_controller.rb | 19 +- app/controllers/projects/pages_controller.rb | 14 +- .../projects/pages_domains_controller.rb | 4 +- .../projects/pipeline_schedules_controller.rb | 11 +- .../projects/pipelines_controller.rb | 30 +- .../projects/prometheus/metrics_controller.rb | 4 +- app/controllers/projects/raw_controller.rb | 2 - app/controllers/projects/refs_controller.rb | 2 +- .../projects/repositories_controller.rb | 13 +- .../security/configuration_controller.rb | 4 +- .../settings/access_tokens_controller.rb | 2 +- .../projects/settings/ci_cd_controller.rb | 2 +- app/controllers/projects/tree_controller.rb | 9 +- .../projects/variables_controller.rb | 2 +- .../projects/web_ide_terminals_controller.rb | 5 +- .../projects/work_items_controller.rb | 2 +- app/controllers/projects_controller.rb | 4 +- .../registrations/welcome_controller.rb | 4 +- app/controllers/registrations_controller.rb | 24 +- .../repositories/git_http_controller.rb | 6 + .../repositories/lfs_api_controller.rb | 16 +- .../repositories/lfs_locks_api_controller.rb | 4 +- app/controllers/search_controller.rb | 17 +- app/controllers/sessions_controller.rb | 12 +- app/controllers/snippets_controller.rb | 10 +- app/controllers/users_controller.rb | 35 +- app/finders/abuse_reports_finder.rb | 82 +- app/finders/autocomplete/users_finder.rb | 2 +- app/finders/ci/pipelines_finder.rb | 9 +- app/finders/concerns/updated_at_filter.rb | 10 + app/finders/deployments_finder.rb | 9 +- app/finders/group_members_finder.rb | 7 + .../accepting_project_imports_finder.rb | 31 + .../groups/accepting_project_shares_finder.rb | 2 +- app/finders/groups/user_groups_finder.rb | 6 + app/finders/issuable_finder.rb | 8 +- app/finders/merge_requests_finder.rb | 15 +- app/finders/milestones_finder.rb | 16 + app/finders/serverless_domain_finder.rb | 35 - app/graphql/mutations/achievements/award.rb | 38 + app/graphql/mutations/achievements/revoke.rb | 33 + .../mutations/alert_management/base.rb | 2 - .../mutations/ci/job_artifact/bulk_destroy.rb | 69 + .../ci/pipeline_schedule/take_ownership.rb | 2 +- .../ci/project_ci_cd_settings_update.rb | 2 - .../ci/runner/common_mutation_arguments.rb | 50 + app/graphql/mutations/ci/runner/create.rb | 44 + app/graphql/mutations/ci/runner/update.rb | 39 +- .../mutations/clusters/agent_tokens/create.rb | 4 +- .../mutations/clusters/agent_tokens/revoke.rb | 3 +- .../mutations/work_items/update_arguments.rb | 4 + .../mutations/design_management/update.rb | 39 + app/graphql/mutations/issues/bulk_update.rb | 23 +- .../mutations/members/bulk_update_base.rb | 88 + .../mutations/members/groups/bulk_update.rb | 77 +- .../mutations/members/projects/bulk_update.rb | 26 + .../metrics/dashboard/annotations/create.rb | 2 +- .../metrics/dashboard/annotations/delete.rb | 2 +- app/graphql/mutations/projects/sync_fork.rb | 61 + .../mutations/release_asset_links/create.rb | 12 +- .../mutations/release_asset_links/delete.rb | 12 +- .../mutations/release_asset_links/update.rb | 12 +- app/graphql/mutations/work_items/export.rb | 48 + app/graphql/mutations/work_items/update.rb | 17 +- .../repository/path_last_commit.query.graphql | 25 +- .../achievements/achievements_resolver.rb | 27 + .../user_achievements_resolver.rb | 33 + .../cycle_analytics/base_issue_resolver.rb | 58 + .../deployment_count_resolver.rb | 62 + .../cycle_analytics/issue_count_resolver.rb | 37 + .../ci/pipeline_job_artifacts_resolver.rb | 2 +- .../resolvers/ci/runner_projects_resolver.rb | 6 +- app/graphql/resolvers/ci/runner_resolver.rb | 8 +- app/graphql/resolvers/ci/runners_resolver.rb | 29 +- .../work_items/shared_filter_arguments.rb | 28 + app/graphql/resolvers/issues_resolver.rb | 18 +- .../project_merge_requests_resolver.rb | 8 +- .../projects/fork_details_resolver.rb | 11 +- app/graphql/resolvers/work_items_resolver.rb | 36 +- .../types/achievements/achievement_type.rb | 6 + .../achievements/user_achievement_type.rb | 51 + .../analytics/cycle_analytics/flow_metrics.rb | 30 + .../analytics/cycle_analytics/link_type.rb | 33 + .../analytics/cycle_analytics/metric_type.rb | 39 + app/graphql/types/board_list_type.rb | 2 +- app/graphql/types/ci/job_type.rb | 34 + app/graphql/types/ci/runner_machine_type.rb | 51 + app/graphql/types/ci/runner_type.rb | 28 +- .../commit_signatures/ssh_signature_type.rb | 17 +- .../types/design_management/design_type.rb | 7 + .../types/issuable_subscription_event_enum.rb | 11 + app/graphql/types/mutation_type.rb | 10 +- app/graphql/types/namespace_type.rb | 8 +- .../types/packages/package_details_type.rb | 4 +- .../permission_types/ci/pipeline_schedules.rb | 9 +- .../types/permission_types/group_enum.rb | 3 + app/graphql/types/project_type.rb | 10 +- .../types/projects/fork_details_type.rb | 26 + .../projects/namespace_project_sort_enum.rb | 5 +- .../types/root_storage_statistics_type.rb | 1 + app/graphql/types/user_interface.rb | 9 + .../available_export_fields_enum.rb | 17 + .../types/work_items/widget_interface.rb | 5 +- .../work_items/widgets/notifications_type.rb | 26 + .../notifications_update_input_type.rb | 16 + app/helpers/admin/abuse_reports_helper.rb | 19 + .../analytics/cycle_analytics_helper.rb | 29 - app/helpers/application_helper.rb | 22 +- app/helpers/application_settings_helper.rb | 17 +- app/helpers/artifacts_helper.rb | 1 + app/helpers/blob_helper.rb | 30 +- app/helpers/broadcast_messages_helper.rb | 17 + app/helpers/ci/catalog/resources_helper.rb | 15 + app/helpers/ci/pipeline_editor_helper.rb | 2 +- app/helpers/ci/status_helper.rb | 4 +- app/helpers/commits_helper.rb | 45 +- app/helpers/dashboard_helper.rb | 13 +- app/helpers/device_registration_helper.rb | 11 + app/helpers/diff_helper.rb | 6 + app/helpers/dropdowns_helper.rb | 2 +- app/helpers/events_helper.rb | 46 +- app/helpers/explore_helper.rb | 2 +- app/helpers/feature_flags_helper.rb | 6 +- app/helpers/groups/observability_helper.rb | 19 +- app/helpers/groups_helper.rb | 1 + app/helpers/ide_helper.rb | 22 +- app/helpers/issuables_helper.rb | 12 +- app/helpers/jira_connect_helper.rb | 2 +- app/helpers/markup_helper.rb | 21 +- app/helpers/merge_requests_helper.rb | 5 +- app/helpers/mirror_helper.rb | 2 +- app/helpers/nav/new_dropdown_helper.rb | 38 +- app/helpers/nav/top_nav_helper.rb | 72 +- app/helpers/nav_helper.rb | 35 +- app/helpers/notes_helper.rb | 7 +- app/helpers/operations_helper.rb | 2 +- app/helpers/packages_helper.rb | 11 +- app/helpers/page_layout_helper.rb | 2 +- app/helpers/plan_limits_helper.rb | 28 + app/helpers/projects/error_tracking_helper.rb | 3 +- .../projects/settings/branch_rules_helper.rb | 23 + app/helpers/projects_helper.rb | 17 +- app/helpers/registrations_helper.rb | 4 +- app/helpers/routing/projects_helper.rb | 7 +- app/helpers/search_helper.rb | 4 +- app/helpers/sidebars_helper.rb | 112 +- app/helpers/snippets_helper.rb | 37 +- app/helpers/sorting_helper.rb | 6 +- app/helpers/system_note_helper.rb | 2 - app/helpers/todos_helper.rb | 14 +- app/helpers/users/callouts_helper.rb | 35 +- app/helpers/users/group_callouts_helper.rb | 8 +- app/helpers/users_helper.rb | 34 +- app/helpers/visibility_level_helper.rb | 5 +- app/helpers/web_hooks/web_hooks_helper.rb | 24 +- app/helpers/work_items_helper.rb | 3 +- app/mailers/emails/issues.rb | 13 +- app/mailers/emails/profile.rb | 2 +- app/mailers/emails/shared.rb | 20 + app/mailers/emails/work_items.rb | 19 + app/mailers/notify.rb | 2 + app/mailers/previews/notify_preview.rb | 12 + app/models/ability.rb | 7 + app/models/abuse_report.rb | 9 +- app/models/achievements/user_achievement.rb | 8 +- app/models/airflow/dags.rb | 14 - app/models/alert_management/alert.rb | 7 +- app/models/alert_management/alert_assignee.rb | 2 +- .../alert_management/alert_user_mention.rb | 5 +- app/models/application_setting.rb | 101 +- .../application_setting_implementation.rb | 5 +- app/models/audit_event.rb | 2 +- app/models/badge.rb | 2 +- app/models/board.rb | 4 +- app/models/bulk_import.rb | 13 + app/models/bulk_imports/batch_tracker.rb | 46 + app/models/bulk_imports/entity.rb | 23 +- app/models/bulk_imports/export.rb | 1 + app/models/bulk_imports/export_batch.rb | 33 + app/models/bulk_imports/export_upload.rb | 1 + app/models/bulk_imports/file_transfer.rb | 4 +- .../bulk_imports/file_transfer/base_config.rb | 3 +- app/models/bulk_imports/tracker.rb | 3 + app/models/chat_name.rb | 4 +- app/models/ci/build.rb | 46 +- app/models/ci/build_metadata.rb | 4 +- app/models/ci/build_pending_state.rb | 2 +- app/models/ci/build_trace_chunk.rb | 2 +- app/models/ci/catalog/listing.rb | 34 + app/models/ci/catalog/resource.rb | 16 + .../ci/daily_build_group_report_result.rb | 5 +- app/models/ci/job_artifact.rb | 4 +- app/models/ci/job_token/scope.rb | 3 +- app/models/ci/job_variable.rb | 2 +- app/models/ci/pipeline.rb | 53 +- app/models/ci/pipeline_schedule.rb | 11 +- app/models/ci/resource_group.rb | 19 +- app/models/ci/runner.rb | 61 +- app/models/ci/runner_machine.rb | 51 +- app/models/ci/runner_machine_build.rb | 26 + app/models/ci/runner_version.rb | 3 +- app/models/ci/sources/pipeline.rb | 1 + app/models/ci/stage.rb | 3 + .../clusters/applications/crossplane.rb | 58 - app/models/clusters/applications/knative.rb | 14 +- .../clusters/applications/prometheus.rb | 126 - app/models/clusters/cluster.rb | 10 - app/models/clusters/platforms/kubernetes.rb | 3 +- app/models/commit.rb | 3 +- app/models/commit_collection.rb | 17 + app/models/commit_range.rb | 2 +- app/models/commit_status.rb | 20 +- .../analytics/cycle_analytics/stageable.rb | 9 +- app/models/concerns/atomic_internal_id.rb | 12 + app/models/concerns/cached_commit.rb | 5 + .../cascading_namespace_setting_attribute.rb | 21 +- app/models/concerns/ci/has_status.rb | 3 +- app/models/concerns/ci/partitionable.rb | 21 +- .../ci/partitionable/partitioned_filter.rb | 41 - app/models/concerns/counter_attribute.rb | 50 +- app/models/concerns/each_batch.rb | 76 + app/models/concerns/enum_with_nil.rb | 26 - .../concerns/has_unique_internal_users.rb | 2 +- app/models/concerns/has_user_type.rb | 14 +- app/models/concerns/issuable.rb | 8 +- app/models/concerns/noteable.rb | 1 + .../packages/debian/component_file.rb | 4 + app/models/concerns/partitioned_table.rb | 3 +- app/models/concerns/redis_cacheable.rb | 8 + app/models/concerns/referable.rb | 6 +- app/models/concerns/routable.rb | 57 +- app/models/concerns/subscribable.rb | 13 +- .../token_authenticatable_strategies/base.rb | 19 +- .../encrypted.rb | 6 +- .../encryption_helper.rb | 2 - app/models/concerns/uniquify.rb | 40 - .../concerns/web_hooks/auto_disabling.rb | 103 +- .../concerns/web_hooks/has_web_hooks.rb | 12 +- app/models/concerns/web_hooks/unstoppable.rb | 29 - .../container_registry/data_repair_detail.rb | 10 + app/models/container_registry/event.rb | 16 +- app/models/container_repository.rb | 10 +- app/models/dependency_proxy/manifest.rb | 5 + app/models/dependency_proxy/registry.rb | 2 + app/models/design_management/design.rb | 12 +- app/models/draft_note.rb | 2 +- .../project_error_tracking_setting.rb | 2 +- app/models/group.rb | 35 +- app/models/hooks/project_hook.rb | 1 - app/models/hooks/service_hook.rb | 1 - app/models/hooks/system_hook.rb | 1 - app/models/hooks/web_hook.rb | 55 +- app/models/import_failure.rb | 5 + app/models/integration.rb | 5 +- app/models/integrations/apple_app_store.rb | 18 +- .../integrations/base_slack_notification.rb | 2 - .../integrations/base_slash_commands.rb | 16 - app/models/integrations/campfire.rb | 4 +- app/models/integrations/google_play.rb | 88 + app/models/integrations/jira.rb | 2 - .../integrations/mattermost_slash_commands.rb | 10 +- .../integrations/slack_slash_commands.rb | 10 +- app/models/integrations/squash_tm.rb | 82 + app/models/issue.rb | 41 +- app/models/member.rb | 6 + app/models/members/member_role.rb | 49 - app/models/members_preloader.rb | 17 +- app/models/merge_request.rb | 21 +- app/models/merge_request_diff_commit.rb | 2 +- app/models/milestone.rb | 4 +- app/models/namespace.rb | 100 +- app/models/namespaces/ldap_setting.rb | 11 + app/models/namespaces/traversal/linear.rb | 24 +- app/models/note.rb | 12 +- app/models/oauth_access_token.rb | 2 + app/models/onboarding/completion.rb | 51 +- app/models/operations/feature_flag.rb | 2 +- app/models/packages/debian.rb | 2 + app/models/packages/debian/file_metadatum.rb | 6 +- app/models/packages/rpm/repository_file.rb | 2 +- app/models/pages/lookup_path.rb | 14 +- app/models/pages_domain.rb | 19 +- app/models/personal_access_token.rb | 13 +- .../preloaders/commit_status_preloader.rb | 7 +- app/models/preloaders/labels_preloader.rb | 17 +- .../preloaders/project_policy_preloader.rb | 5 +- .../project_root_ancestor_preloader.rb | 2 +- .../runner_machine_policy_preloader.rb | 23 + ...er_max_access_level_in_groups_preloader.rb | 12 +- app/models/project.rb | 202 +- app/models/project_ci_cd_setting.rb | 4 - app/models/project_feature.rb | 6 + app/models/project_setting.rb | 9 + app/models/projects/data_transfer.rb | 8 + .../{divergence_counts.rb => details.rb} | 50 +- .../projects/import_export/relation_export.rb | 14 +- app/models/protected_branch.rb | 35 +- app/models/repository.rb | 46 +- app/models/resource_label_event.rb | 5 +- app/models/resource_milestone_event.rb | 4 - app/models/serverless/domain.rb | 44 - app/models/serverless/domain_cluster.rb | 39 - app/models/serverless/function.rb | 26 - app/models/serverless/lookup_path.rb | 30 - app/models/serverless/virtual_domain.rb | 22 - app/models/{airflow.rb => service_desk.rb} | 5 +- .../service_desk/custom_email_verification.rb | 55 + app/models/service_desk_setting.rb | 25 +- app/models/snippet.rb | 11 +- app/models/system_note_metadata.rb | 3 +- app/models/user.rb | 53 +- app/models/user_status.rb | 2 +- app/models/user_synced_attributes_metadata.rb | 26 +- app/models/users/banned_user.rb | 2 + app/models/users/callout.rb | 3 +- app/models/users/group_callout.rb | 4 +- app/models/wiki.rb | 5 + app/models/wiki_directory.rb | 60 +- app/models/work_item.rb | 20 + app/models/work_items/widget_definition.rb | 3 +- .../work_items/widgets/notifications.rb | 9 + .../achievements/user_achievement_policy.rb | 7 + app/policies/ci/pipeline_schedule_policy.rb | 4 + app/policies/ci/runner_machine_policy.rb | 18 + app/policies/clusters/instance_policy.rb | 1 + app/policies/concerns/archived_abilities.rb | 1 + app/policies/global_policy.rb | 6 +- app/policies/group_policy.rb | 40 +- app/policies/issue_policy.rb | 1 + .../namespaces/user_namespace_policy.rb | 5 +- app/policies/project_hook_policy.rb | 3 +- app/policies/project_policy.rb | 26 +- app/presenters/README.md | 12 +- app/presenters/ci/build_runner_presenter.rb | 6 +- app/presenters/commit_presenter.rb | 4 + app/presenters/event_presenter.rb | 2 +- app/presenters/label_presenter.rb | 18 +- app/presenters/merge_request_presenter.rb | 20 +- app/presenters/project_presenter.rb | 262 +- app/presenters/snippet_blob_presenter.rb | 8 +- app/serializers/admin/abuse_report_entity.rb | 16 + .../admin/abuse_report_serializer.rb | 7 + app/serializers/cluster_application_entity.rb | 20 - app/serializers/cluster_entity.rb | 1 - app/serializers/cluster_serializer.rb | 2 +- app/serializers/pipeline_details_entity.rb | 10 +- app/serializers/profile/event_entity.rb | 125 + app/serializers/profile/event_serializer.rb | 7 + app/serializers/project_import_entity.rb | 7 + app/services/achievements/award_service.rb | 48 + app/services/achievements/revoke_service.rb | 47 + .../project_recalculate_service.rb | 2 + app/services/base_container_service.rb | 22 + .../archive_extraction_service.rb | 11 - .../ci/catalog/add_resource_service.rb | 41 + .../ci/catalog/validate_resource_service.rb | 46 + app/services/ci/create_pipeline_service.rb | 3 +- .../bulk_delete_by_project_service.rb | 73 + .../ci/job_artifacts/create_service.rb | 16 +- .../destroy_all_expired_service.rb | 22 +- .../ci/job_artifacts/destroy_batch_service.rb | 21 +- .../ci/job_token_scope/add_project_service.rb | 2 - .../atomic_processing_service.rb | 24 +- .../status_collection.rb | 30 +- .../take_ownership_service.rb | 2 +- app/services/ci/process_build_service.rb | 34 +- .../ci/queue/pending_builds_strategy.rb | 7 +- app/services/ci/register_job_service.rb | 2 +- .../ci/runners/create_runner_service.rb | 2 +- .../process_runner_version_update_service.rb | 5 + app/services/ci/update_build_queue_service.rb | 2 +- .../clusters/agent_tokens/create_service.rb | 22 +- .../clusters/agent_tokens/revoke_service.rb | 46 + .../agents/authorize_proxy_user_service.rb | 99 + .../agents/create_activity_event_service.rb | 4 + app/services/commits/change_service.rb | 20 +- .../incident_management/usage_data.rb | 2 - .../update_repository_storage_methods.rb | 9 +- .../cleanup_service.rb | 1 - .../dependency_proxy/head_manifest_service.rb | 2 +- app/services/event_create_service.rb | 47 +- app/services/feature_flags/base_service.rb | 38 +- app/services/feature_flags/create_service.rb | 10 + app/services/feature_flags/destroy_service.rb | 10 + app/services/feature_flags/update_service.rb | 16 +- app/services/files/base_service.rb | 15 +- app/services/groups/autocomplete_service.rb | 2 +- .../groups/group_links/create_service.rb | 2 + .../groups/group_links/destroy_service.rb | 4 + .../groups/group_links/update_service.rb | 4 + app/services/import/base_service.rb | 2 +- .../import/bitbucket_server_service.rb | 2 +- app/services/import/fogbugz_service.rb | 4 +- .../github/cancel_project_import_service.rb | 6 + app/services/import/github_service.rb | 2 +- .../validate_remote_git_endpoint_service.rb | 4 +- app/services/import_csv/base_service.rb | 39 +- .../timeline_events/base_service.rb | 2 - app/services/issuable/clone/base_service.rb | 5 - app/services/issuable/destroy_service.rb | 2 +- .../issuable/import_csv/base_service.rb | 2 +- app/services/issuable_base_service.rb | 10 +- app/services/issues/after_create_service.rb | 5 - app/services/issues/base_service.rb | 8 + app/services/issues/build_service.rb | 5 - app/services/issues/close_service.rb | 10 - app/services/issues/create_service.rb | 9 +- app/services/issues/duplicate_service.rb | 5 - .../referenced_merge_requests_service.rb | 12 +- .../issues/related_branches_service.rb | 5 - app/services/issues/reopen_service.rb | 13 - app/services/issues/reorder_service.rb | 5 - app/services/issues/update_service.rb | 11 +- app/services/issues/zoom_link_service.rb | 2 +- .../proxy_lifecycle_event_service.rb | 6 +- app/services/keys/revoke_service.rb | 2 - app/services/markup/rendering_service.rb | 2 + .../mattermost/create_team_service.rb | 2 +- .../merge_requests/add_context_service.rb | 4 +- app/services/merge_requests/base_service.rb | 10 + .../merge_requests/refresh_service.rb | 7 + .../dashboard/annotations/create_service.rb | 4 +- .../dashboard/annotations/delete_service.rb | 2 +- app/services/notes/create_service.rb | 10 +- app/services/notes/quick_actions_service.rb | 9 +- .../debian/extract_metadata_service.rb | 34 +- .../debian/generate_distribution_service.rb | 32 +- .../debian/process_package_file_service.rb | 4 +- .../mark_package_for_destruction_service.rb | 11 +- .../mark_packages_for_destruction_service.rb | 11 +- .../maven/find_or_create_package_service.rb | 63 +- .../personal_access_tokens/create_service.rb | 8 +- ...batch_open_merge_requests_count_service.rb | 18 + app/services/projects/blame_service.rb | 42 +- .../gitlab/cleanup_tags_service.rb | 4 +- app/services/projects/create_service.rb | 8 + app/services/projects/forks/sync_service.rb | 113 + .../import_export/relation_export_service.rb | 1 + .../projects/lfs_pointers/lfs_link_service.rb | 12 +- .../open_merge_requests_count_service.rb | 8 +- .../protect_default_branch_service.rb | 6 +- .../update_repository_storage_service.rb | 13 - app/services/projects/update_service.rb | 20 + .../protected_branches/base_service.rb | 2 + .../protected_branches/cache_service.rb | 3 +- app/services/releases/links/base_service.rb | 35 + app/services/releases/links/create_service.rb | 25 + .../releases/links/destroy_service.rb | 24 + app/services/releases/links/update_service.rb | 24 + .../resource_access_tokens/create_service.rb | 34 +- .../ci_configuration/base_create_service.rb | 16 +- .../serverless/associate_domain_service.rb | 30 - app/services/system_notes/commit_service.rb | 56 +- app/services/tasks_to_be_done/base_service.rb | 2 +- app/services/todo_service.rb | 2 - app/services/users/build_service.rb | 4 +- .../refresh_authorized_projects_service.rb | 2 + .../users/validate_manual_otp_service.rb | 3 + app/services/work_items/export_csv_service.rb | 2 +- app/services/work_items/import_csv_service.rb | 116 + .../work_items/parent_links/create_service.rb | 2 + .../notifications_service/update_service.rb | 26 + .../ci/pipeline_artifact_uploader.rb | 2 +- app/uploaders/ci/secure_file_uploader.rb | 2 +- app/uploaders/deleted_object_uploader.rb | 2 +- .../dependency_proxy/file_uploader.rb | 2 +- app/uploaders/external_diff_uploader.rb | 2 +- app/uploaders/gitlab_uploader.rb | 17 +- app/uploaders/job_artifact_uploader.rb | 2 +- app/uploaders/lfs_object_uploader.rb | 2 +- app/uploaders/object_storage.rb | 3 +- .../packages/composer/cache_uploader.rb | 2 +- .../debian/component_file_uploader.rb | 2 +- .../distribution_release_file_uploader.rb | 2 +- .../packages/package_file_uploader.rb | 2 +- .../packages/rpm/repository_file_uploader.rb | 2 +- app/uploaders/pages/deployment_uploader.rb | 2 +- app/uploaders/terraform/state_uploader.rb | 2 +- app/validators/addressable_url_validator.rb | 3 + app/validators/json_schema_validator.rb | 1 + .../google_service_account_key.json | 48 + .../import_failure_external_identifiers.json | 18 + .../abuse_reports/_abuse_report.html.haml | 6 +- app/views/admin/abuse_reports/index.html.haml | 58 +- .../application_settings/_ci_cd.html.haml | 18 +- .../application_settings/_outbound.html.haml | 27 +- .../_projects_api_limits.html.haml | 21 + .../application_settings/_realtime.html.haml | 4 +- .../_repository_check.html.haml | 4 +- .../_runner_registrars_form.html.haml | 11 + .../_visibility_and_access.html.haml | 2 + .../appearances/_form.html.haml | 12 +- .../appearances/show.html.haml | 1 - .../application_settings/ci_cd.html.haml | 3 +- .../application_settings/general.html.haml | 1 - .../integrations.html.haml | 1 - .../metrics_and_profiling.html.haml | 1 - .../application_settings/network.html.haml | 6 +- .../preferences.html.haml | 1 - .../application_settings/reporting.html.haml | 1 - .../application_settings/repository.html.haml | 1 - .../service_usage_data.html.haml | 1 - app/views/admin/applications/show.html.haml | 1 + .../background_migrations/index.html.haml | 2 +- .../broadcast_messages/_preview.html.haml | 3 - .../admin/broadcast_messages/edit.html.haml | 13 +- .../admin/broadcast_messages/index.html.haml | 2 + app/views/admin/dev_ops_report/show.html.haml | 2 +- app/views/admin/groups/_group.html.haml | 5 +- app/views/admin/groups/show.html.haml | 3 +- app/views/admin/health_check/show.html.haml | 5 +- app/views/admin/projects/_form.html.haml | 23 + app/views/admin/projects/_projects.html.haml | 7 +- app/views/admin/projects/edit.html.haml | 4 + app/views/admin/projects/show.html.haml | 4 +- app/views/admin/runners/register.html.haml | 7 + .../admin/sessions/_two_factor_otp.html.haml | 8 +- app/views/admin/sessions/new.html.haml | 1 - app/views/admin/sessions/two_factor.html.haml | 3 +- app/views/admin/spam_logs/index.html.haml | 2 +- app/views/admin/topics/_topic.html.haml | 5 +- app/views/authentication/_register.html.haml | 91 +- .../clusters/clusters/_integrations.html.haml | 2 +- app/views/dashboard/_groups_head.html.haml | 11 +- app/views/dashboard/_projects_head.html.haml | 5 +- app/views/dashboard/_projects_nav.html.haml | 3 - app/views/dashboard/_snippets_head.html.haml | 15 +- .../_blank_state_admin_welcome.html.haml | 8 +- .../projects/_blank_state_welcome.html.haml | 8 +- app/views/dashboard/snippets/index.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 14 +- .../devise/confirmations/almost_there.haml | 7 +- app/views/devise/confirmations/new.html.haml | 5 +- app/views/devise/registrations/new.html.haml | 2 +- .../devise/sessions/two_factor.html.haml | 12 +- .../devise/shared/_error_messages.html.haml | 9 + .../devise/shared/_sign_in_link.html.haml | 2 +- app/views/devise/shared/_signup_box.html.haml | 2 +- .../doorkeeper/applications/show.html.haml | 3 +- app/views/explore/groups/_nav.html.haml | 4 +- app/views/explore/groups/index.html.haml | 17 +- app/views/explore/projects/_nav.html.haml | 6 +- app/views/explore/projects/index.html.haml | 15 +- app/views/explore/projects/starred.html.haml | 11 +- app/views/explore/projects/topic.html.haml | 30 +- app/views/explore/projects/topics.html.haml | 9 +- app/views/explore/projects/trending.html.haml | 12 +- app/views/explore/snippets/index.html.haml | 14 +- app/views/explore/topics/_head.html.haml | 10 +- ...roup_from_another_instance_panel.html.haml | 4 +- .../_import_group_from_file_panel.html.haml | 6 +- .../groups/_invite_members_modal.html.haml | 2 +- .../_invite_members_side_nav_link.html.haml | 8 - .../_invite_members_top_nav_link.html.haml | 5 + app/views/groups/_new_group_fields.html.haml | 3 +- .../groups/group_members/index.html.haml | 4 +- app/views/groups/milestones/_form.html.haml | 43 +- app/views/groups/milestones/new.html.haml | 5 +- app/views/groups/new.html.haml | 4 +- app/views/groups/settings/_export.html.haml | 5 +- app/views/groups/settings/_general.html.haml | 3 +- app/views/groups/settings/_transfer.html.haml | 2 +- .../settings/applications/show.html.haml | 3 +- .../ci_cd/_auto_devops_form.html.haml | 7 +- app/views/groups/show.html.haml | 1 - .../_ci_cd_limits.html.haml | 16 +- app/views/ide/_show.html.haml | 4 +- app/views/layouts/_head.html.haml | 3 + app/views/layouts/_loading_hints.html.haml | 3 +- app/views/layouts/_page.html.haml | 10 +- app/views/layouts/component_preview.html.haml | 4 +- app/views/layouts/dashboard.html.haml | 2 +- app/views/layouts/explore.html.haml | 11 +- app/views/layouts/group.html.haml | 4 + .../layouts/header/_new_dropdown.html.haml | 15 +- app/views/layouts/nav/_breadcrumbs.html.haml | 45 +- .../layouts/nav/sidebar/_explore.html.haml | 1 + .../layouts/nav/sidebar/_group.html.haml | 3 +- .../layouts/nav/sidebar/_profile.html.haml | 170 +- .../nav/sidebar/_user_profile.html.haml | 1 + .../layouts/nav/sidebar/_your_work.html.haml | 2 +- app/views/layouts/project.html.haml | 3 + app/views/layouts/snippets.html.haml | 5 +- .../notify/_issuable_csv_export.html.haml | 6 +- .../notify/_issuable_csv_export.text.erb | 7 + .../export_work_items_csv_email.html.haml | 1 + .../export_work_items_csv_email.text.erb | 1 + .../import_work_items_csv_email.html.haml | 49 + .../import_work_items_csv_email.text.erb | 48 + app/views/notify/issues_csv_email.text.erb | 6 +- .../merge_request_status_email.text.haml | 2 +- .../notify/merge_requests_csv_email.text.erb | 6 +- app/views/notify/new_review_email.text.erb | 1 - ..._factor_otp_attempt_failed_email.html.haml | 4 +- ..._factor_otp_attempt_failed_email.text.haml | 4 +- .../notify/unknown_sign_in_email.html.haml | 5 + .../notify/unknown_sign_in_email.text.haml | 2 +- .../profiles/chat_names/_chat_name.html.haml | 16 - app/views/profiles/chat_names/index.html.haml | 7 +- app/views/profiles/chat_names/new.html.haml | 40 +- app/views/profiles/gpg_keys/_key.html.haml | 2 +- app/views/profiles/keys/_key.html.haml | 2 +- app/views/profiles/preferences/show.html.haml | 3 + app/views/profiles/show.html.haml | 17 +- .../profiles/two_factor_auths/show.html.haml | 82 +- app/views/projects/_files.html.haml | 2 +- app/views/projects/_home_panel.html.haml | 2 +- .../_invite_members_empty_project.html.haml | 6 +- .../projects/_invite_members_modal.html.haml | 2 +- .../_invite_members_side_nav_link.html.haml | 8 - .../_invite_members_top_nav_link.html.haml | 5 + .../projects/_new_project_fields.html.haml | 2 +- ...lf_monitoring_deprecation_notice.html.haml | 13 + .../projects/airflow/dags/index.html.haml | 11 - app/views/projects/artifacts/browse.html.haml | 2 +- app/views/projects/blame/show.html.haml | 27 +- app/views/projects/blob/_breadcrumb.html.haml | 2 +- app/views/projects/blob/_editor.html.haml | 18 +- .../projects/blob/viewers/_csv.html.haml | 2 +- .../_branch_names_fields.html.haml | 1 + .../projects/branch_rules/_show.html.haml | 6 +- .../projects/branches/_branch_rules_info.haml | 12 + app/views/projects/branches/index.html.haml | 12 +- app/views/projects/buttons/_clone.html.haml | 8 +- .../commit/_signature_badge.html.haml | 2 +- .../projects/commit/diff_files.html.haml | 6 +- app/views/projects/commits/_commit.html.haml | 8 + app/views/projects/compare/index.html.haml | 4 +- app/views/projects/compare/show.html.haml | 2 +- .../projects/cycle_analytics/show.html.haml | 1 - app/views/projects/diffs/_diffs.html.haml | 4 +- app/views/projects/edit.html.haml | 8 +- app/views/projects/empty.html.haml | 1 + .../projects/environments/show.html.haml | 4 +- .../projects/feature_flags/index.html.haml | 2 +- app/views/projects/graphs/show.html.haml | 2 +- .../issues/_design_management.html.haml | 3 +- .../projects/issues/_discussion.html.haml | 3 +- .../issues/_work_item_links.html.haml | 2 +- .../issues/service_desk/_nav_btns.html.haml | 2 +- app/views/projects/issues/show.html.haml | 1 - .../merge_requests/_mr_title.html.haml | 3 +- .../merge_requests/_nav_btns.html.haml | 2 +- .../projects/merge_requests/_page.html.haml | 8 +- app/views/projects/milestones/_form.html.haml | 48 +- .../mirrors/_mirror_repos_list.html.haml | 6 +- .../projects/ml/candidates/show.html.haml | 1 + .../ml/experiments/_experiment.html.haml | 3 - .../ml/experiments/_experiment_list.html.haml | 7 - .../experiments/_incubation_banner.html.haml | 8 - .../projects/ml/experiments/show.html.haml | 2 + app/views/projects/new.html.haml | 13 +- .../projects/pages/_pages_settings.html.haml | 11 +- .../pages_domains/_certificate.html.haml | 8 +- .../_pipeline_schedule.html.haml | 2 +- app/views/projects/pipelines/_info.html.haml | 23 +- .../pipelines/_pipeline_stats_text.html.haml | 1 + app/views/projects/pipelines/new.html.haml | 2 + app/views/projects/pipelines/show.html.haml | 16 +- .../projects/project_members/index.html.haml | 5 +- .../_create_protected_tag.html.haml | 4 +- .../protected_tags/_protected_tag.html.haml | 4 +- .../_protected_tag_create_access_levels.haml | 8 +- .../security/configuration/show.html.haml | 4 +- .../projects/settings/_general.html.haml | 4 +- .../settings/branch_rules/index.html.haml | 2 +- .../settings/ci_cd/_autodevops_form.html.haml | 6 +- .../projects/settings/ci_cd/_badge.html.haml | 2 +- .../projects/settings/ci_cd/_form.html.haml | 2 +- .../settings/integrations/_form.html.haml | 3 + .../settings/integrations/index.html.haml | 2 + app/views/projects/show.html.haml | 2 + .../projects/starrers/_starrer.html.haml | 4 +- app/views/projects/work_items/index.html.haml | 1 - .../registrations/welcome/show.html.haml | 3 +- app/views/search/_results.html.haml | 2 +- app/views/search/_results_list.html.haml | 27 +- app/views/search/_results_status.html.haml | 49 +- app/views/search/results/_blob.html.haml | 8 +- app/views/search/show.html.haml | 5 +- app/views/shared/_label.html.haml | 9 +- .../shared/_mobile_clone_panel.html.haml | 4 +- .../doorkeeper/applications/_show.html.haml | 17 +- .../applications/_update_form.html.haml | 3 + .../shared/empty_states/_issues.html.haml | 3 +- .../shared/icons/_mr_widget_empty_state.svg | 1 - ..._notifications_deprecation_alert.html.haml | 20 + .../prometheus/_custom_metrics.html.haml | 8 +- .../prometheus/_metrics.html.haml | 14 +- .../shared/issuable/_feed_buttons.html.haml | 8 +- .../shared/issuable/_label_dropdown.html.haml | 2 +- .../issuable/_label_page_create.html.haml | 6 +- .../shared/issuable/_search_bar.html.haml | 8 + .../issuable/_sidebar_user_dropdown.html.haml | 4 +- .../issuable/form/_type_selector.html.haml | 2 +- .../issue_type/_details_content.html.haml | 2 +- app/views/shared/labels/_form.html.haml | 2 +- .../shared/milestones/_description.html.haml | 4 +- .../shared/milestones/_form_dates.html.haml | 21 +- .../nav/_explore_scope_header.html.haml | 6 + .../nav/_user_settings_scope_header.html.haml | 4 + app/views/shared/topics/_topic.html.haml | 5 +- .../shared/wikis/_wiki_directory.html.haml | 7 +- app/views/snippets/show.html.haml | 5 +- app/views/users/_profile_basic_info.html.haml | 8 +- app/views/users/show.html.haml | 251 +- app/workers/all_queues.yml | 77 +- .../project_recalculate_per_user_worker.rb | 2 +- .../project_recalculate_worker.rb | 2 +- .../user_refresh_from_replica_worker.rb | 2 +- .../user_refresh_over_user_range_worker.rb | 2 +- .../user_refresh_with_low_urgency_worker.rb | 2 +- app/workers/authorized_projects_worker.rb | 2 +- app/workers/ci/archive_traces_cron_worker.rb | 10 +- app/workers/concerns/application_worker.rb | 3 +- .../gitlab/github_import/object_importer.rb | 39 +- .../cleanup_container_repository_worker.rb | 9 +- app/workers/delete_user_worker.rb | 2 +- .../github_import/advance_stage_worker.rb | 1 + .../import_collaborator_worker.rb | 21 + .../stage/import_collaborators_worker.rb | 66 + .../stage/import_pull_requests_worker.rb | 2 +- .../stage/import_repository_worker.rb | 2 +- app/workers/gitlab_service_ping_worker.rb | 2 + app/workers/group_destroy_worker.rb | 5 +- ...o_factor_requirement_for_members_worker.rb | 2 +- app/workers/issuable_export_csv_worker.rb | 18 +- app/workers/issues/placement_worker.rb | 2 +- .../unassign_issuables_worker.rb | 2 +- app/workers/new_merge_request_worker.rb | 1 - .../debian/generate_distribution_worker.rb | 2 +- .../expired_notification_worker.rb | 2 +- .../personal_access_tokens/expiring_worker.rb | 2 +- app/workers/post_receive.rb | 2 - app/workers/project_destroy_worker.rb | 5 +- app/workers/projects/forks/sync_worker.rb | 22 + .../create_relation_exports_worker.rb | 48 + .../import_export/relation_export_worker.rb | 23 +- .../wait_relation_exports_worker.rb | 82 + app/workers/prune_old_events_worker.rb | 10 +- .../remove_expired_group_links_worker.rb | 2 +- app/workers/remove_expired_members_worker.rb | 2 +- ...remove_unaccepted_member_invites_worker.rb | 2 +- app/workers/stage_update_worker.rb | 1 + config/application.rb | 7 +- .../types/feature_flag_created.yml | 9 + .../types/feature_flag_deleted.yml | 9 + .../types/feature_flag_updated.yml | 9 + config/environments/development.rb | 3 + config/esbuild.config.js | 6 + ...083_projects_settings_cicd_show_render.yml | 2 +- ...352_projects_settings_cicd_show_upload.yml | 2 +- ...364_projects_settings_cicd_show_delete.yml | 2 +- ...rdErrorEvent_track_weak_password_error.yml | 2 +- .../1674843937_Ci__Build_create_id_tokens.yml | 2 +- ...visit_instance_compliance_audit_events.yml | 26 + ..._visit_compliance_credential_inventory.yml | 26 + ...er_visit_group_compliance_audit_events.yml | 26 + ..._AuditEvents_admin_audit_event_request.yml | 26 + ..._API__Groups_group_audit_event_request.yml | 26 + ...__Projects_project_audit_event_request.yml | 26 + ...09151015_notes__create_service_execute.yml | 2 +- ...206_default_review_app_open_review_app.yml | 2 +- ...1130_invite_members_modal_click_cancel.yml | 26 + ...228151130_invite_members_modal_click_x.yml | 26 + ...invite_members_modal_invite_successful.yml | 26 + ...0228151130_invite_members_modal_render.yml | 26 + config/feature_categories.yml | 8 +- ...ce_tracking.yml => abuse_reports_list.yml} | 8 +- .../development/achievements.yml | 2 +- .../always_perform_delayed_deletion.yml | 8 + .../development/artifacts_management_page.yml | 2 +- ...migration.yml => blame_page_streaming.yml} | 8 +- ... => ci_batch_project_includes_context.yml} | 8 +- .../ci_destroy_unlocked_job_artifacts.yml | 8 - ...lel_import.yml => ci_fix_max_includes.yml} | 10 +- .../ci_inbound_job_token_scope.yml | 8 - .../ci_job_artifact_bulk_destroy.yml | 8 + ...icates.yml => ci_private_catalog_beta.yml} | 10 +- .../development/ci_variables_pages.yml | 8 + .../{airflow_dags.yml => cloudseed_aws.yml} | 8 +- ...rker.yml => codeowners_default_owners.yml} | 8 +- .../counter_attribute_db_lease_for_update.yml | 2 +- ...l => create_runner_workflow_for_admin.yml} | 2 +- .../create_runner_workflow_for_namespace.yml | 8 + ...elayed_repository_update_mirror_worker.yml | 8 - .../deploy_key_for_protected_tags.yml | 2 +- ...ml => disable_update_max_seats_worker.yml} | 6 +- ...o_not_run_safety_net_auth_refresh_jobs.yml | 2 +- ...able_environments_search_within_folder.yml | 2 +- .../development/environment_details_vue.yml | 2 +- .../environment_search_api_min_chars.yml | 2 +- .../environments_search_logging.yml | 8 - .../fe_epic_board_total_weight.yml | 2 +- .../development/file_line_blame.yml | 2 +- .../development/full_path_project_search.yml | 2 +- .../github_client_fetch_repos_via_graphql.yml | 8 - .../development/github_import_gists.yml | 2 +- ...ration.yml => google_play_integration.yml} | 8 +- .../development/hash_oauth_secrets.yml | 8 - .../hide_public_email_on_profile.yml | 2 +- .../development/incident_event_tags.yml | 2 +- ...erships_from_group_shares_in_preloader.yml | 8 - .../integration_slack_app_notifications.yml | 8 - .../invitation_flow_enforcement_setting.yml | 2 +- .../development/kas_user_access.yml | 8 + .../development/kas_user_access_project.yml | 8 + ...ort_projects.yml => large_ipynb_diffs.yml} | 10 +- ...> lazy_load_pipeline_dropdown_actions.yml} | 8 +- ...ed_capacity_seat_refresh_worker_medium.yml | 8 - .../linear_group_descendants_finder_upto.yml | 2 +- .../development/linear_project_ancestors.yml | 8 - .../linear_user_manageable_groups.yml | 8 - .../development/log_response_length.yml | 2 +- ...igh.yml => log_user_git_push_activity.yml} | 8 +- .../mr_show_reports_immediately.yml | 2 +- ...multiple_environment_approval_rules_fe.yml | 2 +- .../development/non_public_artifacts.yml | 2 +- ...pm_allow_packages_in_multiple_projects.yml | 8 + .../development/pages_unique_domain.yml | 8 + .../permit_all_shared_groups_for_approval.yml | 8 - ....yml => pipeline_trigger_merge_status.yml} | 8 +- .../development/present_groups_select_all.yml | 2 +- .../development/profile_tabs_vue.yml | 2 +- ...ect_members_index_by_project_namespace.yml | 2 +- .../project_statistics_bulk_increment.yml | 2 +- ...or_unauthenticated_projects_api_access.yml | 8 + .../reduce_sub_batch_size_on_timeouts.yml | 8 + ...ml => refactor_ci_minutes_consumption.yml} | 8 +- ...api.yml => resolve_ambiguous_archives.yml} | 8 +- ...t_special_characters_in_namespace_path.yml | 8 + .../route_hll_to_snowplow_phase2.yml | 8 - ...italy.yml => runner_machine_heartbeat.yml} | 10 +- .../development/s3_multithreaded_uploads.yml | 2 +- ...egation.yml => search_index_integrity.yml} | 8 +- ...ml => search_index_partitioning_notes.yml} | 9 +- ...dropped_findings_as_resolved_scheduler.yml | 8 - ...desk_new_note_email_native_attachments.yml | 2 +- .../development/set_traversal_ids_on_save.yml | 8 - .../development/show_group_readme.yml | 2 +- ...ures.yml => show_tags_on_commits_view.yml} | 8 +- .../skip_group_share_unlink_auth_refresh.yml | 2 +- ...ranches_cache.yml => synchronize_fork.yml} | 8 +- .../development/trial_email_validation.yml | 8 - .../ultimate_feature_removal_banner.yml | 2 +- ..._fork_network_upon_visibility_decrease.yml | 8 - .../use_iid_in_work_items_path.yml | 8 - .../use_response_url_for_chat_responder.yml | 8 - .../development/use_sub_repositories_api.yml | 8 + .../development/use_traversal_ids.yml | 2 +- .../use_traversal_ids_for_ancestor_scopes.yml | 4 +- .../use_traversal_ids_for_ancestors.yml | 4 +- .../use_traversal_ids_for_ancestors_upto.yml | 4 +- ...e_traversal_ids_for_descendants_scopes.yml | 2 +- .../use_traversal_ids_for_root_ancestor.yml | 2 +- ...e_traversal_ids_for_self_and_hierarchy.yml | 4 +- ...rsal_ids_for_self_and_hierarchy_scopes.yml | 2 +- .../use_traversal_ids_groups_finder.yml | 2 +- .../development/use_traversal_ids_roots.yml | 4 +- .../development/user_time_settings.yml | 2 +- .../validate_environment_tier_presence.yml | 2 +- .../development/vue_issues_dashboard.yml | 2 +- .../webui_members_inherited_users.yml | 2 +- .../experiment/generic_explore_groups.yml | 8 - .../experiment/invite_members_in_side_nav.yml | 8 - .../feature_flags/ops/advanced_user_index.yml | 8 - .../ops/advanced_user_search.yml | 8 - .../ops/auto_disabling_web_hooks.yml | 9 + .../ops/automatic_lock_writes_on_table.yml | 2 +- ...ci_build_dependencies_artifacts_logger.yml | 2 +- .../detect_cross_database_modification.yml | 2 +- .../ops/dynamic_image_resizing.yml | 2 +- config/feature_flags/ops/dynamic_nonce.yml | 8 - .../legacy_open_source_license_available.yml | 2 +- .../ops/ops_prune_old_events.yml | 8 + .../projects_build_artifacts_size_refresh.yml | 2 +- ...ects_build_artifacts_size_refresh_high.yml | 2 +- ...ts_build_artifacts_size_refresh_medium.yml | 2 +- .../query_analyzer_gitlab_schema_metrics.yml | 2 +- .../ops/split_log_bulk_increment_counter.yml | 2 +- config/gitlab.yml.example | 11 +- config/gitlab_loose_foreign_keys.yml | 8 + .../0_1_yaml_safe_load_file_patch.rb | 15 + config/initializers/1_settings.rb | 20 +- config/initializers/7_redis.rb | 1 + config/initializers/action_mailer_hooks.rb | 1 - .../initializers/active_record_preloader.rb | 11 + config/initializers/carrierwave_patch.rb | 6 +- config/initializers/doorkeeper.rb | 14 - config/initializers/fog_core_patch.rb | 3 +- config/initializers/google_cloud_profiler.rb | 25 + config/initializers/lograge.rb | 2 +- config/initializers/mail_encoding_patch.rb | 18 +- config/initializers/mail_starttls_patch.rb | 87 + config/initializers/postgres_partitioning.rb | 3 +- .../initializers/safe_session_store_patch.rb | 80 + .../001_fast_gettext.rb | 1 + .../004_zeitwerk.rb | 3 +- .../20210216175101_merge_requests_users.yml | 4 +- ...2_i_code_review_user_create_mr_monthly.yml | 2 +- .../20210216175552_ci_pipeline_schedules.yml | 2 +- .../counts_28d/20210216180312_snippets.yml | 2 +- ...tion_monthly_active_users_web_ide_edit.yml | 4 +- ...1_action_monthly_active_users_sfe_edit.yml | 4 +- ...nthly_active_users_snippet_editor_edit.yml | 4 +- .../20210216180334_g_edit_by_sfe_monthly.yml | 2 +- ...136_i_testing_test_case_parsed_monthly.yml | 2 +- .../20210216183627_omniauth_providers.yml | 2 +- ...ode_review_total_unique_counts_monthly.yml | 4 +- ...templates_implicit_auto_devops_monthly.yml | 2 +- ..._templates_total_unique_counts_monthly.yml | 1 + ...ng_testing_code_quality_report_monthly.yml | 2 +- ...g_testing_accessibility_report_monthly.yml | 2 +- ...i_testing_summary_widget_total_monthly.yml | 2 +- ...e_review_category_monthly_active_users.yml | 4 +- .../20210910132229_user_auth_by_provider.yml | 2 +- ...i_testing_test_report_uploaded_monthly.yml | 2 +- ...sting_coverage_report_uploaded_monthly.yml | 2 +- ...182900_i_code_review_create_mr_monthly.yml | 2 +- ...12174745_i_testing_active_user_monthly.yml | 2 +- ...mplates_security_api_discovery_monthly.yml | 25 + .../20230217215050_ci_internal_pipelines.yml | 23 + ..._entities_group_finished_with_failures.yml | 27 + ...tities_group_finished_without_failures.yml | 27 + ...ntities_project_finished_with_failures.yml | 27 + ...ties_project_finished_without_failures.yml | 27 + ...ithub_import_project_cancelled_monthly.yml | 26 + ...rt_project_partially_completed_monthly.yml | 26 + ...2134_i_testing_test_case_parsed_weekly.yml | 2 +- ...code_review_total_unique_counts_weekly.yml | 4 +- ...i_templates_total_unique_counts_weekly.yml | 1 + ...ing_testing_code_quality_report_weekly.yml | 2 +- ...ng_testing_accessibility_report_weekly.yml | 2 +- ..._i_testing_summary_widget_total_weekly.yml | 2 +- ..._i_testing_test_report_uploaded_weekly.yml | 2 +- ...esting_coverage_report_uploaded_weekly.yml | 2 +- ...3183300_i_code_review_create_mr_weekly.yml | 2 +- ...112174745_i_testing_active_user_weekly.yml | 2 +- ...emplates_security_api_discovery_weekly.yml | 25 + ...github_import_project_cancelled_weekly.yml | 26 + ...ort_project_partially_completed_weekly.yml | 26 + ...0216180228_projects_jira_server_active.yml | 4 +- ...10216180230_projects_jira_cloud_active.yml | 4 +- .../20210216180242_web_ide_commits.yml | 2 +- .../counts_all/20210216180752_keys.yml | 2 +- .../20210216183400_omniauth_providers.yml | 2 +- .../20210910132001_user_auth_by_provider.yml | 2 +- ...projects_inheriting_google_play_active.yml | 22 + ...0222192643_projects_google_play_active.yml | 22 + ...222193011_instances_google_play_active.yml | 22 + ...1_groups_inheriting_google_play_active.yml | 22 + ...230222193255_groups_google_play_active.yml | 22 + ...933_groups_inheriting_squash_tm_active.yml | 22 + ...20230303131936_groups_squash_tm_active.yml | 22 + ...30303132041_instances_squash_tm_active.yml | 22 + ...8_projects_inheriting_squash_tm_active.yml | 22 + ...230303132352_projects_squash_tm_active.yml | 22 + ...8_i_container_registry_delete_manifest.yml | 26 + ...30228110448_installation_creation_date.yml | 22 + .../20230314161014_gitlab_dedicated.yml | 20 + .../index_inconsistencies_metric.json | 19 + .../settings/20210204124906_ldap_enabled.yml | 2 +- .../20210204124910_omniauth_enabled.yml | 2 +- .../20210204124918_signup_enabled.yml | 2 +- ...203164341_index_inconsistencies_metric.yml | 25 + config/routes.rb | 2 + config/routes/admin.rb | 9 +- config/routes/group.rb | 4 +- config/routes/import.rb | 1 + config/routes/issues.rb | 9 +- config/routes/profile.rb | 3 +- config/routes/project.rb | 4 - config/routes/repository.rb | 1 + config/settings.rb | 7 + config/sidekiq_queues.yml | 12 + config/vue3migration/compiler.js | 50 + config/webpack.config.js | 105 +- danger/database/Dangerfile | 2 + danger/datateam/Dangerfile | 2 + danger/plugins/sidekiq_args.rb | 10 + danger/product_intelligence/Dangerfile | 2 + danger/roulette/Dangerfile | 5 +- danger/sidekiq_args/Dangerfile | 5 + danger/stable_branch_patch/Dangerfile | 2 +- .../14-10-old-search-migration-removal.yml | 2 +- .../14-7-deprecate-merged_by-api-field.yml | 25 - ...d-replaced-with-paused-breaking-change.yml | 30 - ...us-filter-does-accept-active-or-paused.yml | 19 - .../15-1-deprecate-maintainer_note.yml | 15 - .../15-10-consul-legacy-metrics-disable.yml | 15 + .../15-10-gitaly-legacy-config.yml | 35 + data/deprecations/15-10-omniauth-dingtalk.yml | 41 + .../15-6-deprecate-merge_status-api-field.yml | 12 - .../15-6-deprecate-post-api-v4-runner.yml | 6 +- .../15-6-deprecate-runner-reg-token-helm.yml | 10 +- ...15-6-deprecate-runner-register-command.yml | 9 +- ...ate-runner-register-token-k8s-operator.yml | 8 +- ...ner-registration-token-reset-endpoints.yml | 6 +- .../15-7-deprecate-gitlab-runner-exec-cmd.yml | 10 +- ...ecate-kas-metrics-port-in-gitlab-chart.yml | 10 +- .../15-7-deprecate-shimo-integration.yml | 2 +- ...gle-merge-request-changes-api-endpoint.yml | 12 - .../15-7-deprecate-zentao-integration.yml | 2 +- ...precate-merge-request-approvals-fields.yml | 14 - ...recate-slack-notifications-integration.yml | 2 +- ...-8-deprecate-system-hook-test-endpoint.yml | 2 +- .../15-8-deprecate-updated-at-error.yml | 2 +- .../15-8-jira-connect-app-cookie-auth.yml | 2 +- data/deprecations/15-8-live-preview.yml | 2 +- .../15-8-projects-api-ops-access-level.yml | 2 +- data/deprecations/15-8-visual-review-tool.yml | 2 +- ...15-9-accessibility-testing-deprecation.yml | 2 +- .../15-9-ci-builds-column-validations.yml | 29 + .../15-9-deprecate-ci-pre-clone-script.yml | 23 + ...e-option-to-remove-project-immediately.yml | 6 +- .../15-9-env-search-char-limit.yml | 9 + .../15-9-insecure-ci-job-token.yml | 20 +- .../15-9-legacy-praefect-configuration.yml | 6 +- .../15-9-managed-licenses-api.yml | 9 + .../15-9-rails-error-tracking.yml | 4 +- ...15-9-remove-offset-pagination-jobs-api.yml | 2 +- .../15-9-secure-analyzers-bump.yml | 10 +- data/deprecations/15-9-trigger-job-status.yml | 4 +- .../templates/_deprecation_template.md.erb | 21 +- .../15_10/15_10-non-public-artifacts.yml | 25 + data/removals/15_9/15-9-live-preview.yml | 11 + data/whats_new/20230222001_15_09.yml | 75 + db/docs/application_setting_terms.yml | 2 +- db/docs/atlassian_identities.yml | 2 +- db/docs/authentication_events.yml | 2 +- db/docs/banned_users.yml | 2 +- db/docs/bulk_import_batch_trackers.yml | 11 + db/docs/bulk_import_export_batches.yml | 11 + db/docs/catalog_resources.yml | 8 + db/docs/ci_build_needs.yml | 2 +- db/docs/ci_cost_settings.yml | 10 + db/docs/ci_group_variables.yml | 2 +- db/docs/ci_instance_variables.yml | 2 +- db/docs/ci_job_variables.yml | 2 +- db/docs/ci_pipeline_variables.yml | 2 +- db/docs/ci_secure_file_states.yml | 2 +- db/docs/ci_secure_files.yml | 2 +- db/docs/ci_sources_pipelines.yml | 2 +- db/docs/ci_variables.yml | 2 +- db/docs/clusters_applications_crossplane.yml | 2 - db/docs/clusters_applications_prometheus.yml | 2 - ...container_registry_data_repair_details.yml | 10 + db/docs/container_repository_states.yml | 11 + db/docs/{ => deleted_tables}/airflow_dags.yml | 2 + db/docs/elastic_reindexing_slices.yml | 2 +- db/docs/elasticsearch_indexed_projects.yml | 2 +- db/docs/group_group_links.yml | 2 +- db/docs/identities.yml | 2 +- db/docs/integrations.yml | 2 + db/docs/ip_restrictions.yml | 2 +- db/docs/keys.yml | 2 +- db/docs/ldap_group_links.yml | 2 +- db/docs/namespace_admin_notes.yml | 2 +- db/docs/namespace_ldap_settings.yml | 10 + db/docs/oauth_access_grants.yml | 2 +- db/docs/oauth_access_tokens.yml | 2 +- db/docs/oauth_applications.yml | 2 +- db/docs/oauth_openid_requests.yml | 2 +- db/docs/p_ci_runner_machine_builds.yml | 9 + db/docs/personal_access_tokens.yml | 2 +- ...postgres_async_foreign_key_validations.yml | 2 +- db/docs/project_access_tokens.yml | 2 +- db/docs/project_authorizations.yml | 2 +- db/docs/project_group_links.yml | 2 +- db/docs/saml_group_links.yml | 2 +- db/docs/saml_providers.yml | 2 +- db/docs/scim_identities.yml | 2 +- db/docs/scim_oauth_access_tokens.yml | 2 +- db/docs/serverless_domain_cluster.yml | 2 - ...ervice_desk_custom_email_verifications.yml | 11 + db/docs/smartcard_identities.yml | 2 +- db/docs/term_agreements.yml | 2 +- db/docs/token_with_ivs.yml | 2 +- db/docs/u2f_registrations.yml | 2 +- db/docs/user_canonical_emails.yml | 2 +- db/docs/user_highest_roles.yml | 2 +- db/docs/user_permission_export_uploads.yml | 2 +- db/docs/user_synced_attributes_metadata.yml | 2 +- db/docs/webauthn_registrations.yml | 2 +- db/docs/work_item_types.yml | 1 + db/docs/work_item_widget_definitions.yml | 1 + db/fixtures/development/17_cycle_analytics.rb | 59 +- db/fixtures/development/36_achievements.rb | 68 + db/fixtures/development/heart.png | Bin 0 -> 22484 bytes db/fixtures/development/rocket.jpg | Bin 0 -> 28042 bytes ...13164245_create_namespace_ldap_settings.rb | 16 + ...service_desk_custom_email_verifications.rb | 24 + ...tgoing_requests_to_application_settings.rb | 9 + ...d_column_to_package_metadata_join_table.rb | 56 + ...5656_create_container_repository_states.rb | 44 + ...hlighting_theme_to_application_settings.rb | 7 + ...10152109_add_bulk_import_export_batches.rb | 21 + ...d_batched_column_to_bulk_import_exports.rb | 9 + ..._batch_id_to_bulk_import_export_uploads.rb | 7 + ...reign_key_to_bulk_import_export_uploads.rb | 15 + ...10160351_add_bulk_import_batch_trackers.rb | 22 + ..._batched_column_to_bulk_import_trackers.rb | 7 + ..._id_index_to_bulk_import_export_uploads.rb | 15 + ...vulnerability_id_on_vulnerability_reads.rb | 15 + ...runner_machine_builds_partitioned_table.rb | 30 + ...provisioned_by_group_at_to_user_details.rb | 9 + ...add_has_failures_column_to_bulk_imports.rb | 7 + ...x_sbom_occurrences_on_project_id_and_id.rb | 15 + ...status_and_resolved_at_to_abuse_reports.rb | 8 + ..._category_and_id_index_to_abuse_reports.rb | 15 + ...rability_reads_trigger_to_set_has_issue.rb | 185 ++ .../20230216144719_drop_table_airflow_dags.rb | 22 + ...failures_column_to_bulk_import_entities.rb | 7 + ...16171309_create_ci_runner_cost_settings.rb | 17 + ...unauthenticated_to_application_settings.rb | 7 + ...7144421_add_check_type_to_pre_scan_step.rb | 11 + ...d_in_to_vulnerability_state_transitions.rb | 11 + ...dd_status_and_id_index_to_abuse_reports.rb | 15 + ...20163141_create_catalog_resources_table.rb | 11 + ..._partition_for_ci_runner_machine_builds.rb | 49 + ...ed_to_namespace_root_storage_statistics.rb | 21 + ...ojects_minutes_cost_factor_default_to_1.rb | 17 + ...to_postgres_async_constraint_validation.rb | 7 + ...saml_group_lock_to_application_settings.rb | 7 + ..._limit_check_at_asc_order_synchronously.rb | 17 + .../20230228133011_add_design_description.rb | 18 + ...0228135034_add_design_description_limit.rb | 13 + ...2350_add_notifications_work_item_widget.rb | 57 + ...er_id_for_enterprise_users_without_date.rb | 19 + ..._user_id_for_enterprise_users_with_date.rb | 19 + ...ique_index_on_catalog_resources_project.rb | 17 + ..._collector_host_to_application_settings.rb | 9 + ...porter_id_and_id_index_to_abuse_reports.rb | 15 + ...s_product_analytics_data_collector_host.rb | 13 + ...ic_runner_release_version_fetch_setting.rb | 14 + ..._container_registry_data_repair_details.rb | 17 + ...external_identifiers_to_import_failures.rb | 9 + ...and_updated_at_indexes_to_abuse_reports.rb | 18 + ...icated_instance_to_application_settings.rb | 9 + ...201308_backfill_namespace_ldap_settings.rb | 33 + ...4623_schedule_migration_for_remediation.rb | 18 + ...03_queue_backfill_compliance_violations.rb | 24 + ...07_add_partition_index_to_web_hook_logs.rb | 21 + ...le_create_vulnerability_links_migration.rb | 27 + ...llable_users_index_for_service_accounts.rb | 27 + ...2135758_queue_backfill_prepared_at_data.rb | 23 + .../20230202211434_migrate_redis_slot_keys.rb | 113 + ...0208125736_schedule_migration_for_links.rb | 25 + ..._add_index_for_next_over_limit_check_at.rb | 17 + ...alize_ci_build_needs_big_int_conversion.rb | 28 + ...index_on_packages_package_file_filename.rb | 21 + ..._validation_for_ci_build_trace_metadata.rb | 15 + ...delete_incorrectly_onboarded_namespaces.rb | 17 + ...2956_add_sync_index_on_lfs_objects_file.rb | 15 + ...ex_on_merge_request_diffs_external_diff.rb | 15 + ...ngs_send_user_confirmation_email_column.rb | 7 + ...218145930_add_index_users_on_updated_at.rb | 16 + ...5940_add_index_namespaces_on_updated_at.rb | 16 + ...i_job_artifacts_partition_id_and_job_id.rb | 15 + ...to_ci_builds_ci_job_artifacts_on_job_id.rb | 35 + ...e_fk_to_vulnerability_state_transitions.rb | 15 + ...lumns_ci_build_needs_big_int_conversion.rb | 57 + ..._postgres_async_foreign_key_validations.rb | 19 + ...eport_results_partition_id_and_build_id.rb | 15 + ...lds_ci_build_report_results_on_build_id.rb | 35 + ...i_build_needs_partition_id_and_build_id.rb | 15 + ...to_ci_builds_ci_build_needs_on_build_id.rb | 35 + ...approval_rules_on_scan_result_policy_id.rb | 19 + ...key_validation_for_ci_sources_pipelines.rb | 15 + ...ign_key_validation_for_ci_job_variables.rb | 15 + ...ial_index_on_vulnerability_report_types.rb | 15 + ...partitions_on_partition_id_and_build_id.rb | 41 + ..._raise_ci_variable_limits_on_gitlab_com.rb | 53 + ...ded_namespaces_from_onboarding_progress.rb | 29 + ...nc_index_removal_of_token_for_ci_builds.rb | 17 + ..._index_on_token_encrypted_for_ci_builds.rb | 18 + ...o_ci_build_ci_pending_build_on_build_id.rb | 35 + ...o_ci_build_ci_running_build_on_build_id.rb | 35 + ...raint_on_oauth_access_tokens_expires_in.rb | 13 + ...nullify_creator_id_of_orphaned_projects.rb | 22 + ...uilds_metadata_partitions_and_ci_builds.rb | 17 + ...d_foreign_key_on_creator_id_on_projects.rb | 15 + ...4085743_update_issues_internal_id_scope.rb | 29 + ...233_migrate_evidences_from_raw_metadata.rb | 25 + ...s_source_partition_id_and_source_job_id.rb | 15 + ...s_ci_sources_pipelines_on_source_job_id.rb | 35 + ...race_metadata_partition_id_and_build_id.rb | 15 + ...lds_ci_build_trace_metadata_on_build_id.rb | 35 + ...i_job_variables_partition_id_and_job_id.rb | 15 + ...to_ci_builds_ci_job_variables_on_job_id.rb | 35 + ...backfill_is_finished_for_gitlab_dot_com.rb | 29 + ...gs_note_id_to_bigint_for_gitlab_dot_com.rb | 56 + ...xpired_unlocked_non_trace_job_artifacts.rb | 17 + ...ocked_non_trace_job_artifacts_expire_at.rb | 15 + ...chines_constraint_on_ci_builds_metadata.rb | 27 + ...3259_ensure_ci_runner_machines_is_empty.rb | 17 + ...ner_machine_id_on_runner_machine_builds.rb | 17 + ...x_to_oauth_access_grants_application_id.rb | 15 + ...ueue_fix_vulnerability_reads_has_issues.rb | 28 + ...e_delete_orphaned_packages_dependencies.rb | 26 + ..._temporary_partitioning_indexes_removal.rb | 32 + ...3154314_add_user_type_migration_indexes.rb | 22 + ...184416_drop_revokable_from_achievements.rb | 9 + ...g_fk_on_p_ci_builds_metadata_partitions.rb | 20 + ...s_metadata_on_partition_id_and_build_id.rb | 36 + ...builds_p_ci_builds_metadata_on_build_id.rb | 32 + ..._ci_builds_primary_key_for_partitioning.rb | 66 + ...ueue_backfill_project_wiki_repositories.rb | 25 + ..._track_ci_runner_machine_record_changes.rb | 15 + ...int_fk_rails_f601258b28_on_events_table.rb | 19 + ...user_mentions_note_id_convert_to_bigint.rb | 31 + ...r_mentions_note_id_convert_to_id_bigint.rb | 43 + ...r_mentions_note_id_convert_to_id_bigint.rb | 27 + ...071242_delete_security_policy_bot_users.rb | 21 + ...ition_id_index_from_p_ci_build_metadata.rb | 18 + ...59_recreate_user_type_migration_indexes.rb | 24 + ...les_that_may_have_been_deleted_by_a_bug.rb | 37 + ...backfill_is_finished_for_gitlab_dot_com.rb | 30 + ...metrics_id_to_bigint_for_gitlab_dot_com.rb | 64 + ...31_reschedule_migration_for_remediation.rb | 32 + ...temp_index_for_software_license_cleanup.rb | 15 + ...185145_cleanup_orphan_software_licenses.rb | 27 + ...650_remove_index_on_events_action_async.rb | 12 + ...230328111013_re_migrate_redis_slot_keys.rb | 73 + db/schema_migrations/20230113164245 | 1 + db/schema_migrations/20230113201308 | 1 + db/schema_migrations/20230118135145 | 1 + db/schema_migrations/20230118144623 | 1 + db/schema_migrations/20230125195503 | 1 + db/schema_migrations/20230126101907 | 1 + db/schema_migrations/20230127030015 | 1 + db/schema_migrations/20230130182412 | 1 + db/schema_migrations/20230131184319 | 1 + db/schema_migrations/20230201165656 | 1 + db/schema_migrations/20230202094723 | 1 + db/schema_migrations/20230202135758 | 1 + db/schema_migrations/20230202211434 | 1 + db/schema_migrations/20230208125736 | 1 + db/schema_migrations/20230210152109 | 1 + db/schema_migrations/20230210153420 | 1 + db/schema_migrations/20230210155715 | 1 + db/schema_migrations/20230210160037 | 1 + db/schema_migrations/20230210160351 | 1 + db/schema_migrations/20230210161002 | 1 + db/schema_migrations/20230210171012 | 1 + db/schema_migrations/20230213103019 | 1 + db/schema_migrations/20230213213559 | 1 + db/schema_migrations/20230214181633 | 1 + db/schema_migrations/20230215074223 | 1 + db/schema_migrations/20230215124011 | 1 + db/schema_migrations/20230215131026 | 1 + db/schema_migrations/20230215180605 | 1 + db/schema_migrations/20230215213349 | 1 + db/schema_migrations/20230216040505 | 1 + db/schema_migrations/20230216060333 | 1 + db/schema_migrations/20230216071312 | 1 + db/schema_migrations/20230216142836 | 1 + db/schema_migrations/20230216144719 | 1 + db/schema_migrations/20230216152912 | 1 + db/schema_migrations/20230216171309 | 1 + db/schema_migrations/20230216191507 | 1 + db/schema_migrations/20230216222956 | 1 + db/schema_migrations/20230216232404 | 1 + db/schema_migrations/20230216233937 | 1 + db/schema_migrations/20230217065736 | 1 + db/schema_migrations/20230217144421 | 1 + db/schema_migrations/20230217232554 | 1 + db/schema_migrations/20230218145930 | 1 + db/schema_migrations/20230218145940 | 1 + db/schema_migrations/20230218152729 | 1 + db/schema_migrations/20230218152730 | 1 + db/schema_migrations/20230219191034 | 1 + db/schema_migrations/20230220035034 | 1 + db/schema_migrations/20230220102212 | 1 + db/schema_migrations/20230220112930 | 1 + db/schema_migrations/20230220132409 | 1 + db/schema_migrations/20230220132410 | 1 + db/schema_migrations/20230220134145 | 1 + db/schema_migrations/20230220134146 | 1 + db/schema_migrations/20230220163141 | 1 + db/schema_migrations/20230220165240 | 1 + db/schema_migrations/20230221010522 | 1 + db/schema_migrations/20230221011750 | 1 + db/schema_migrations/20230221093533 | 1 + db/schema_migrations/20230221110256 | 1 + db/schema_migrations/20230221125148 | 1 + db/schema_migrations/20230221162222 | 1 + db/schema_migrations/20230221214519 | 1 + db/schema_migrations/20230222035805 | 1 + db/schema_migrations/20230222055510 | 1 + db/schema_migrations/20230222101420 | 1 + db/schema_migrations/20230222102421 | 1 + db/schema_migrations/20230222153048 | 1 + db/schema_migrations/20230222193845 | 1 + db/schema_migrations/20230223014251 | 1 + db/schema_migrations/20230223065753 | 1 + db/schema_migrations/20230223082752 | 1 + db/schema_migrations/20230223093704 | 1 + db/schema_migrations/20230224085743 | 1 + db/schema_migrations/20230224130315 | 1 + db/schema_migrations/20230224144233 | 1 + db/schema_migrations/20230224161346 | 1 + db/schema_migrations/20230227123949 | 1 + db/schema_migrations/20230227123950 | 1 + db/schema_migrations/20230227151608 | 1 + db/schema_migrations/20230227151609 | 1 + db/schema_migrations/20230227153231 | 1 + db/schema_migrations/20230227153232 | 1 + db/schema_migrations/20230228021910 | 1 + db/schema_migrations/20230228023014 | 1 + db/schema_migrations/20230228092612 | 1 + db/schema_migrations/20230228133011 | 1 + db/schema_migrations/20230228135034 | 1 + db/schema_migrations/20230228142350 | 1 + db/schema_migrations/20230228212427 | 1 + db/schema_migrations/20230228212905 | 1 + db/schema_migrations/20230301065107 | 1 + db/schema_migrations/20230302090155 | 1 + db/schema_migrations/20230302123258 | 1 + db/schema_migrations/20230302123259 | 1 + db/schema_migrations/20230302123301 | 1 + db/schema_migrations/20230302163339 | 1 + db/schema_migrations/20230302185739 | 1 + db/schema_migrations/20230303105806 | 1 + db/schema_migrations/20230303120531 | 1 + db/schema_migrations/20230303144424 | 1 + db/schema_migrations/20230303154314 | 1 + db/schema_migrations/20230304184416 | 1 + db/schema_migrations/20230306071456 | 1 + db/schema_migrations/20230306072532 | 1 + db/schema_migrations/20230306082852 | 1 + db/schema_migrations/20230306143322 | 1 + db/schema_migrations/20230306145230 | 1 + db/schema_migrations/20230306195007 | 1 + db/schema_migrations/20230307085644 | 1 + db/schema_migrations/20230307091216 | 1 + db/schema_migrations/20230307122838 | 1 + db/schema_migrations/20230307160251 | 1 + db/schema_migrations/20230307233631 | 1 + db/schema_migrations/20230308163018 | 1 + db/schema_migrations/20230309000957 | 1 + db/schema_migrations/20230309010000 | 1 + db/schema_migrations/20230309010931 | 1 + db/schema_migrations/20230309020422 | 1 + db/schema_migrations/20230309071242 | 1 + db/schema_migrations/20230309103016 | 1 + db/schema_migrations/20230310111859 | 1 + db/schema_migrations/20230310213308 | 1 + db/schema_migrations/20230313054226 | 1 + db/schema_migrations/20230313100920 | 1 + db/schema_migrations/20230313133001 | 1 + db/schema_migrations/20230313143033 | 1 + db/schema_migrations/20230313150531 | 1 + db/schema_migrations/20230313184306 | 1 + db/schema_migrations/20230313185145 | 1 + db/schema_migrations/20230316014650 | 1 + db/schema_migrations/20230328111013 | 1 + db/structure.sql | 437 ++- doc/.vale/gitlab/CodeblockFences.yml | 4 +- doc/.vale/gitlab/HeadingDepth.yml | 2 +- doc/.vale/gitlab/Substitutions.yml | 1 + doc/.vale/gitlab/spelling-exceptions.txt | 10 +- doc/administration/audit_event_streaming.md | 56 +- doc/administration/audit_events.md | 13 +- doc/administration/auth/authentiq.md | 12 - doc/administration/auth/ldap/index.md | 2 +- .../auth/ldap/ldap-troubleshooting.md | 4 +- .../auth/ldap/ldap_synchronization.md | 44 +- doc/administration/auth/oidc.md | 248 ++ doc/administration/clusters/kas.md | 46 +- doc/administration/dedicated/index.md | 108 +- doc/administration/docs_self_host.md | 20 +- doc/administration/environment_variables.md | 2 +- doc/administration/geo/index.md | 3 +- .../geo/replication/configuration.md | 16 +- .../geo/replication/container_registry.md | 16 +- .../geo/replication/datatypes.md | 8 +- .../geo/replication/geo_validation_tests.md | 3 +- .../img/adding_a_secondary_v15_8.png | Bin 0 -> 14698 bytes .../geo/replication/troubleshooting.md | 21 +- .../replication/upgrading_the_geo_sites.md | 1 + .../geo/secondary_proxy/index.md | 1 + doc/administration/geo/setup/database.md | 44 +- .../geo/setup/external_database.md | 16 +- doc/administration/geo/setup/index.md | 23 +- doc/administration/get_started.md | 7 +- doc/administration/git_protocol.md | 2 +- doc/administration/gitaly/configure_gitaly.md | 346 ++- doc/administration/gitaly/index.md | 23 +- doc/administration/gitaly/monitoring.md | 11 +- doc/administration/gitaly/praefect.md | 545 ++-- doc/administration/gitaly/recovery.md | 70 +- doc/administration/gitaly/reference.md | 9 +- doc/administration/gitaly/troubleshooting.md | 27 +- doc/administration/index.md | 2 +- doc/administration/instance_limits.md | 33 +- doc/administration/integration/kroki.md | 15 +- doc/administration/integration/plantuml.md | 13 +- doc/administration/integration/terminal.md | 2 +- doc/administration/job_artifacts.md | 4 +- doc/administration/lfs/index.md | 14 +- doc/administration/load_balancer.md | 2 +- doc/administration/logs/index.md | 22 +- .../gitlab_self_monitoring_project/index.md | 2 +- .../monitoring/prometheus/gitlab_metrics.md | 110 +- .../monitoring/prometheus/index.md | 5 +- doc/administration/object_storage.md | 422 ++- doc/administration/operations/gitlab_sshd.md | 10 +- doc/administration/operations/index.md | 1 + .../operations/moving_repositories.md | 14 +- .../operations/rails_console.md | 2 +- .../package_information/supported_os.md | 9 + .../packages/container_registry.md | 108 +- doc/administration/pages/index.md | 46 +- doc/administration/postgresql/external.md | 20 +- .../postgresql/multiple_databases.md | 91 +- doc/administration/postgresql/pgbouncer.md | 21 +- doc/administration/raketasks/github_import.md | 2 +- .../raketasks/project_import_export.md | 146 +- doc/administration/read_only_gitlab.md | 42 +- .../redis/replication_and_failover.md | 43 + .../replication_and_failover_external.md | 14 +- .../reference_architectures/10k_users.md | 233 +- .../reference_architectures/1k_users.md | 4 +- .../reference_architectures/25k_users.md | 235 +- .../reference_architectures/2k_users.md | 75 +- .../reference_architectures/3k_users.md | 197 +- .../reference_architectures/50k_users.md | 235 +- .../reference_architectures/5k_users.md | 193 +- .../reference_architectures/index.md | 36 +- doc/administration/reply_by_email.md | 4 +- doc/administration/repository_checks.md | 35 +- doc/administration/server_hooks.md | 2 +- doc/administration/sidekiq/index.md | 28 +- .../processing_specific_job_classes.md | 25 +- doc/administration/terraform_state.md | 22 +- doc/administration/uploads.md | 5 + doc/api/audit_events.md | 5 +- doc/api/commits.md | 8 + doc/api/deploy_keys.md | 4 +- doc/api/deploy_tokens.md | 4 +- doc/api/deployments.md | 4 +- doc/api/discussions.md | 21 +- doc/api/dora/metrics.md | 2 +- doc/api/draft_notes.md | 40 + doc/api/environments.md | 4 +- doc/api/error_tracking.md | 41 +- doc/api/feature_flag_specs.md | 14 - doc/api/feature_flag_user_lists.md | 4 +- doc/api/feature_flags.md | 4 +- doc/api/features.md | 4 +- doc/api/freeze_periods.md | 4 +- doc/api/geo_nodes.md | 21 + doc/api/graphql/getting_started.md | 7 +- doc/api/graphql/reference/index.md | 767 +++++- doc/api/group_badges.md | 6 +- doc/api/group_clusters.md | 2 +- doc/api/group_import_export.md | 24 +- doc/api/group_iterations.md | 4 + doc/api/group_level_variables.md | 2 +- doc/api/group_milestones.md | 6 +- doc/api/group_protected_branches.md | 469 ++++ doc/api/group_protected_environments.md | 4 +- doc/api/group_releases.md | 4 +- doc/api/groups.md | 51 +- doc/api/import.md | 26 +- doc/api/instance_clusters.md | 2 +- doc/api/instance_level_ci_variables.md | 2 +- doc/api/integrations.md | 115 +- doc/api/iterations.md | 4 + doc/api/job_artifacts.md | 2 +- doc/api/keys.md | 34 +- doc/api/license.md | 32 + doc/api/lint.md | 208 +- doc/api/managed_licenses.md | 5 +- doc/api/member_roles.md | 2 + doc/api/merge_request_approvals.md | 2 +- doc/api/merge_requests.md | 3 +- doc/api/merge_trains.md | 71 + doc/api/milestones.md | 14 +- doc/api/namespaces.md | 5 +- doc/api/notes.md | 48 +- doc/api/oauth2.md | 4 +- doc/api/openapi/openapi.yaml | 2 +- doc/api/packages.md | 3 + doc/api/pages.md | 8 +- doc/api/pages_domains.md | 6 +- doc/api/pipeline_triggers.md | 2 +- doc/api/product_analytics.md | 3 +- doc/api/project_badges.md | 2 +- doc/api/project_clusters.md | 2 +- doc/api/project_import_export.md | 14 +- doc/api/project_level_variables.md | 2 +- doc/api/project_vulnerabilities.md | 4 +- doc/api/projects.md | 48 +- doc/api/protected_branches.md | 42 +- doc/api/protected_environments.md | 4 +- doc/api/protected_tags.md | 63 +- doc/api/releases/index.md | 4 +- doc/api/releases/links.md | 4 +- doc/api/resource_groups.md | 4 +- doc/api/rest/deprecations.md | 86 + doc/api/rest/index.md | 19 +- doc/api/search.md | 15 +- doc/api/secure_files.md | 2 +- doc/api/settings.md | 16 +- doc/api/suggestions.md | 16 +- doc/api/topics.md | 4 +- doc/api/users.md | 2 +- doc/api/visual_review_discussions.md | 2 +- doc/architecture/blueprints/_template.md | 13 + .../cells/cells-feature-admin-area.md | 58 + .../cells-feature-agent-for-kubernetes.md | 29 + .../blueprints/cells/cells-feature-backups.md | 61 + .../cells/cells-feature-ci-runners.md | 169 ++ .../cells/cells-feature-container-registry.md | 131 + .../cells-feature-contributions-forks.md | 120 + .../cells/cells-feature-dashboard.md | 29 + .../cells/cells-feature-data-migration.md | 130 + .../cells/cells-feature-database-sequences.md | 94 + .../cells/cells-feature-git-access.md | 163 ++ .../cells/cells-feature-gitlab-pages.md | 29 + .../cells/cells-feature-global-search.md | 47 + .../blueprints/cells/cells-feature-graphql.md | 94 + .../cells/cells-feature-organizations.md | 58 + .../cells-feature-personal-namespaces.md | 29 + ...feature-router-endpoints-classification.md | 46 + .../cells/cells-feature-schema-changes.md | 55 + .../blueprints/cells/cells-feature-secrets.md | 48 + .../cells/cells-feature-snippets.md | 29 + .../cells/cells-feature-template.md | 29 + .../blueprints/cells/cells-feature-uploads.md | 29 + .../iteration0-organizations-introduction.png | Bin .../images/pods-and-fulfillment.png | Bin .../blueprints/cells/images/term-cell.png | Bin 0 -> 88371 bytes .../blueprints/cells/images/term-cluster.png | Bin 0 -> 429127 bytes .../cells/images/term-organization.png | Bin 0 -> 156340 bytes .../images/term-top-level-namespace.png | Bin doc/architecture/blueprints/cells/index.md | 358 +++ .../cells/pods-feature-admin-area.md} | 8 +- .../pods-feature-agent-for-kubernetes.md} | 8 +- .../blueprints/cells/pods-feature-backups.md} | 8 +- .../cells/pods-feature-ci-runners.md | 11 + .../cells/pods-feature-container-registry.md | 11 + .../cells/pods-feature-contributions-forks.md | 11 + .../cells/pods-feature-dashboard.md | 11 + .../cells/pods-feature-data-migration.md | 11 + .../cells/pods-feature-database-sequences.md | 11 + .../cells/pods-feature-git-access.md | 11 + .../cells/pods-feature-gitlab-pages.md | 11 + .../cells/pods-feature-global-search.md | 11 + .../blueprints/cells/pods-feature-graphql.md | 11 + .../cells/pods-feature-organizations.md | 11 + .../cells/pods-feature-personal-namespaces.md | 11 + ...feature-router-endpoints-classification.md | 11 + .../cells/pods-feature-schema-changes.md | 11 + .../blueprints/cells/pods-feature-secrets.md | 11 + .../blueprints/cells/pods-feature-snippets.md | 11 + .../blueprints/cells/pods-feature-template.md | 11 + .../blueprints/cells/pods-feature-uploads.md | 11 + ...tateless-router-with-buffering-requests.md | 648 +++++ ...l-stateless-router-with-routes-learning.md | 672 +++++ .../ci_data_decay/pipeline_partitioning.md | 16 +- .../ci_pipeline_components/dev_workflow.md | 155 ++ .../img/new_release.png | Bin 0 -> 13622 bytes .../img/pipeline_main.png | Bin 0 -> 6644 bytes .../img/pipeline_tag.png | Bin 0 -> 8697 bytes .../ci_pipeline_components/index.md | 185 +- .../blueprints/clickhouse_usage/index.md | 52 + .../index.md} | 2 +- .../index.md | 88 +- .../index.md | 5 +- .../gitlab_agent_deployments/index.md | 2 + .../metrics/index.md | 4 +- .../blueprints/object_storage/index.md | 2 +- .../blueprints/pods/images/term-cluster.png | Bin 63268 -> 0 bytes .../pods/images/term-organization.png | Bin 7150 -> 0 bytes .../blueprints/pods/images/term-pod.png | Bin 16104 -> 0 bytes doc/architecture/blueprints/pods/index.md | 359 +-- .../pods/pods-feature-admin-area.md | 61 +- .../pods/pods-feature-agent-for-kubernetes.md | 32 +- .../blueprints/pods/pods-feature-backups.md | 64 +- .../pods/pods-feature-ci-runners.md | 172 +- .../pods/pods-feature-container-registry.md | 134 +- .../pods/pods-feature-contributions-forks.md | 123 +- .../blueprints/pods/pods-feature-dashboard.md | 32 +- .../pods/pods-feature-data-migration.md | 133 +- .../pods/pods-feature-database-sequences.md | 97 +- .../pods/pods-feature-git-access.md | 166 +- .../pods/pods-feature-gitlab-pages.md | 32 +- .../pods/pods-feature-global-search.md | 50 +- .../blueprints/pods/pods-feature-graphql.md | 97 +- .../pods/pods-feature-organizations.md | 61 +- .../pods/pods-feature-personal-namespaces.md | 32 +- ...feature-router-endpoints-classification.md | 49 +- .../pods/pods-feature-schema-changes.md | 58 +- .../blueprints/pods/pods-feature-secrets.md | 51 +- .../blueprints/pods/pods-feature-snippets.md | 32 +- .../blueprints/pods/pods-feature-template.md | 32 +- .../blueprints/pods/pods-feature-uploads.md | 32 +- ...tateless-router-with-buffering-requests.md | 651 +---- ...l-stateless-router-with-routes-learning.md | 675 +---- .../blueprints/rate_limiting/index.md | 2 +- .../blueprints/runner_tokens/index.md | 52 +- doc/ci/caching/index.md | 17 +- .../chatops/img/gitlab-chatops-icon-small.png | Bin 2922 -> 0 bytes doc/ci/chatops/index.md | 125 +- .../cloud_deployment/ecs/deploy_to_aws_ecs.md | 4 +- doc/ci/cloud_deployment/heroku.md | 4 +- doc/ci/cloud_deployment/index.md | 4 +- doc/ci/cloud_services/aws/index.md | 2 +- doc/ci/cloud_services/azure/index.md | 2 +- doc/ci/cloud_services/google_cloud/index.md | 2 +- doc/ci/cloud_services/index.md | 2 +- doc/ci/docker/using_docker_build.md | 175 +- doc/ci/environments/deployment_approvals.md | 4 +- doc/ci/environments/deployment_safety.md | 4 +- doc/ci/environments/environments_dashboard.md | 4 +- .../environments/external_deployment_tools.md | 76 +- .../img/environments_project_home.png | Bin 70687 -> 23937 bytes doc/ci/environments/incremental_rollouts.md | 4 +- doc/ci/environments/index.md | 38 +- doc/ci/environments/protected_environments.md | 4 +- .../index.md | 2 +- .../deployment/composer-npm-deploy.md | 4 +- doc/ci/examples/deployment/index.md | 4 +- .../end_to_end_testing_webdriverio/index.md | 2 +- doc/ci/examples/index.md | 2 +- .../laravel_with_gitlab_and_envoy/index.md | 2 +- doc/ci/examples/semantic-release.md | 2 +- doc/ci/introduction/index.md | 2 +- doc/ci/jobs/ci_job_token.md | 27 +- doc/ci/jobs/index.md | 6 +- doc/ci/large_repositories/index.md | 2 +- doc/ci/lint.md | 4 +- doc/ci/pipeline_editor/index.md | 2 +- doc/ci/pipelines/cicd_minutes.md | 13 +- doc/ci/pipelines/downstream_pipelines.md | 79 +- .../multi_project_pipeline_graph_v14_3.png | Bin 30119 -> 0 bytes .../img/pipeline_mini_graph_v15_0.png | Bin 6061 -> 0 bytes doc/ci/pipelines/index.md | 3 +- doc/ci/pipelines/job_artifacts.md | 4 +- doc/ci/pipelines/merge_request_pipelines.md | 9 +- doc/ci/pipelines/pipeline_architectures.md | 2 +- doc/ci/pipelines/pipeline_artifacts.md | 2 +- doc/ci/pipelines/settings.md | 2 +- doc/ci/resource_groups/index.md | 4 +- doc/ci/review_apps/index.md | 2 +- doc/ci/runners/configure_runners.md | 7 +- doc/ci/runners/index.md | 2 +- doc/ci/runners/register_runner.md | 33 + doc/ci/runners/saas/linux_saas_runner.md | 11 +- doc/ci/runners/saas/macos/environment.md | 4 +- doc/ci/runners/saas/macos_saas_runner.md | 2 +- doc/ci/secrets/id_token_authentication.md | 4 +- doc/ci/secrets/index.md | 2 +- doc/ci/secure_files/index.md | 2 +- doc/ci/services/index.md | 2 +- doc/ci/ssh_keys/index.md | 2 +- doc/ci/test_cases/index.md | 12 +- doc/ci/testing/accessibility_testing.md | 2 +- doc/ci/testing/browser_performance_testing.md | 2 +- doc/ci/testing/code_quality.md | 7 + doc/ci/testing/fail_fast_testing.md | 2 +- .../testing/img/code_quality_summary_15_9.png | Bin 0 -> 71968 bytes doc/ci/testing/index.md | 2 +- doc/ci/testing/load_performance_testing.md | 2 +- doc/ci/testing/metrics_reports.md | 2 +- doc/ci/testing/test_coverage_visualization.md | 4 +- doc/ci/testing/unit_test_report_examples.md | 23 +- doc/ci/testing/unit_test_reports.md | 2 +- doc/ci/triggers/index.md | 12 +- doc/ci/troubleshooting.md | 4 +- doc/ci/variables/index.md | 10 +- doc/ci/variables/predefined_variables.md | 2 +- .../variables/where_variables_can_be_used.md | 2 +- doc/ci/yaml/artifacts_reports.md | 4 +- doc/ci/yaml/includes.md | 56 +- doc/ci/yaml/index.md | 88 +- doc/cloud_seed/index.md | 2 +- .../{elasticsearch.md => advanced_search.md} | 315 +-- doc/development/api_graphql_styleguide.md | 2 +- doc/development/api_styleguide.md | 11 + doc/development/application_slis/index.md | 2 +- ...ails_request_apdex.md => rails_request.md} | 45 +- doc/development/architecture.md | 23 +- doc/development/audit_event_guide/index.md | 2 +- doc/development/auto_devops.md | 2 +- .../gitaly_touch_points.md | 2 +- .../backend/create_source_code_be/index.md | 8 +- doc/development/bulk_import.md | 9 +- doc/development/caching.md | 6 +- doc/development/cascading_settings.md | 36 +- doc/development/changelog.md | 2 +- doc/development/cicd/cicd_tables.md | 119 + doc/development/cicd/index.md | 3 +- doc/development/cicd/templates.md | 1 - doc/development/code_intelligence/index.md | 2 +- doc/development/code_owners/index.md | 132 + doc/development/code_review.md | 14 +- doc/development/contributing/design.md | 4 +- doc/development/contributing/index.md | 28 +- .../contributing/issue_workflow.md | 322 +-- .../contributing/merge_request_workflow.md | 65 +- doc/development/contributing/style_guides.md | 24 +- doc/development/dangerbot.md | 28 +- .../add_foreign_key_to_existing_column.md | 19 +- .../database/batched_background_migrations.md | 143 +- .../clickhouse/merge_request_analytics.md | 355 +++ .../database/clickhouse/tiered_storage.md | 138 + .../database/database_dictionary.md | 1 + doc/development/database/database_lab.md | 15 +- .../database/database_migration_pipeline.md | 2 +- .../database/database_reviewer_guidelines.md | 5 +- doc/development/database/index.md | 4 +- .../database/multiple_databases.md | 2 +- doc/development/database/query_performance.md | 4 +- doc/development/database/required_stops.md | 30 + .../database/understanding_explain_plans.md | 31 +- doc/development/database_review.md | 29 +- .../deprecation_guidelines/index.md | 4 +- doc/development/distributed_tracing.md | 2 +- doc/development/distribution/index.md | 35 + doc/development/documentation/alpha_beta.md | 43 + doc/development/documentation/contribute.md | 83 + .../documentation/feature_flags.md | 74 +- doc/development/documentation/index.md | 20 +- .../documentation/restful_api_styleguide.md | 2 +- .../documentation/styleguide/index.md | 12 +- .../documentation/styleguide/word_list.md | 76 +- .../documentation/topic_types/task.md | 16 + doc/development/documentation/versions.md | 7 +- doc/development/documentation/workflow.md | 168 +- doc/development/ee_features.md | 110 +- doc/development/fe_guide/accessibility.md | 51 +- doc/development/fe_guide/content_editor.md | 2 +- doc/development/fe_guide/frontend_faq.md | 4 +- doc/development/fe_guide/graphql.md | 603 ++-- .../merge_request_widget_extensions.md | 1 - doc/development/fe_guide/performance.md | 24 +- doc/development/fe_guide/source_editor.md | 6 +- doc/development/fe_guide/storybook.md | 28 +- doc/development/fe_guide/style/html.md | 2 +- doc/development/fe_guide/style/index.md | 2 +- doc/development/fe_guide/style/javascript.md | 19 + doc/development/fe_guide/style/vue.md | 270 +- doc/development/fe_guide/vue.md | 31 +- doc/development/fe_guide/vuex.md | 16 +- doc/development/fe_guide/widgets.md | 4 +- doc/development/feature_development.md | 3 +- doc/development/feature_flags/controls.md | 2 + doc/development/feature_flags/index.md | 2 +- doc/development/fips_compliance.md | 88 +- doc/development/gemfile.md | 20 +- doc/development/gitaly.md | 12 +- doc/development/github_importer.md | 21 +- .../gitlab_flavored_markdown/index.md | 2 +- doc/development/gitlab_shell/index.md | 6 +- doc/development/gitpod_internals.md | 2 +- doc/development/go_guide/go_upgrade.md | 2 +- doc/development/go_guide/index.md | 14 +- doc/development/i18n/proofreader.md | 2 +- doc/development/image_scaling.md | 4 +- doc/development/img/feature-flag-metrics.png | Bin 88110 -> 27814 bytes doc/development/import_project.md | 146 +- doc/development/integrations/codesandbox.md | 155 -- doc/development/integrations/index.md | 4 +- doc/development/integrations/jenkins.md | 4 +- doc/development/integrations/jira_connect.md | 24 +- doc/development/integrations/secure.md | 17 +- doc/development/internal_api/index.md | 34 +- doc/development/issue_types.md | 2 +- doc/development/json.md | 2 +- doc/development/kubernetes.md | 2 +- doc/development/labels/index.md | 348 +++ doc/development/lfs.md | 4 +- doc/development/logging.md | 24 +- .../merge_request_concepts/approval_rules.md | 2 +- .../merge_request_concepts/diffs/index.md | 2 +- .../merge_request_concepts/index.md | 2 +- .../merge_request_concepts/performance.md | 2 +- doc/development/migration_style_guide.md | 10 +- doc/development/navigation_sidebar.md | 38 + doc/development/organization/index.md | 159 ++ doc/development/packages/debian_repository.md | 4 +- doc/development/packages/index.md | 2 +- doc/development/permissions.md | 125 +- doc/development/pipelines/index.md | 27 +- doc/development/pipelines/internals.md | 2 - doc/development/pipelines/performance.md | 2 +- .../product_qualified_lead_guide/index.md | 2 +- doc/development/project_templates.md | 2 +- doc/development/prometheus_metrics.md | 2 +- doc/development/python_guide/index.md | 2 +- doc/development/rails_update.md | 52 +- doc/development/rake_tasks.md | 2 +- doc/development/real_time.md | 2 +- doc/development/redis.md | 22 +- doc/development/redis/new_redis_instance.md | 64 +- doc/development/repository_mirroring.md | 2 +- doc/development/rubocop_development_guide.md | 6 +- .../advanced_search_migration_styleguide.md | 311 +++ doc/development/sec/index.md | 4 +- doc/development/secure_coding_guidelines.md | 61 +- doc/development/service_ping/implement.md | 73 +- doc/development/service_ping/index.md | 38 +- .../service_ping/metrics_dictionary.md | 4 +- .../service_ping/metrics_instrumentation.md | 6 +- .../service_ping/metrics_lifecycle.md | 6 +- doc/development/shell_commands.md | 2 +- .../sidekiq/compatibility_across_updates.md | 146 +- doc/development/sidekiq/index.md | 2 +- .../snowplow/event_dictionary_guide.md | 7 +- doc/development/snowplow/implementation.md | 174 +- doc/development/snowplow/index.md | 2 +- doc/development/snowplow/review_guidelines.md | 3 +- .../exploratory_testing.md | 1 + .../model_and_services.md | 6 +- .../error_budgets_kibana_dashboard_v15_10.png | Bin 0 -> 142096 bytes .../stage_group_observability/index.md | 42 +- .../testing_guide/best_practices.md | 2 + .../testing_guide/contract/index.md | 4 +- .../end_to_end/beginners_guide.md | 2 +- .../end_to_end/best_practices.md | 4 +- .../end_to_end/rspec_metadata_tests.md | 2 +- ...unning_tests_that_require_special_setup.md | 20 +- doc/development/testing_guide/flaky_tests.md | 6 +- .../testing_guide/frontend_testing.md | 19 + doc/development/testing_guide/review_apps.md | 2 +- .../testing_guide/testing_levels.md | 2 +- doc/development/uploads/index.md | 2 +- .../uploads/working_with_uploads.md | 2 +- doc/development/ux/index.md | 26 + doc/development/value_stream_analytics.md | 4 +- doc/development/wikis.md | 2 +- doc/development/windows.md | 2 +- doc/development/workspace/index.md | 162 +- doc/drawers/advanced_search_syntax.md | 1 + doc/gitlab-basics/add-file.md | 140 +- doc/gitlab-basics/command-line-commands.md | 126 +- doc/gitlab-basics/start-using-git.md | 2 +- doc/index.md | 4 +- doc/install/aws/index.md | 2 +- doc/install/installation.md | 22 +- doc/install/next_steps.md | 2 +- .../advanced_search/elasticsearch.md | 152 +- .../elasticsearch_troubleshooting.md | 16 +- doc/integration/datadog.md | 2 +- doc/integration/ding_talk.md | 3 +- doc/integration/external-issue-tracker.md | 2 +- doc/integration/facebook.md | 2 +- doc/integration/gitpod.md | 2 +- doc/integration/glab/index.md | 33 +- .../gmail_action_buttons_for_gitlab.md | 3 +- doc/integration/google.md | 2 +- doc/integration/index.md | 2 +- doc/integration/jenkins.md | 2 +- doc/integration/jira/configure.md | 6 +- doc/integration/jira/connect-app.md | 32 +- doc/integration/jira/development_panel.md | 127 +- .../jira/img/jira_dev_panel_jira_setup_3.png | Bin 80136 -> 0 bytes .../jira/img/jira_dev_panel_jira_setup_4.png | Bin 21592 -> 0 bytes .../jira/img/jira_dev_panel_jira_setup_5.png | Bin 10336 -> 0 bytes doc/integration/jira/index.md | 8 +- doc/integration/jira/issues.md | 15 +- .../jira/jira_server_configuration.md | 10 +- doc/integration/jira/troubleshooting.md | 6 +- doc/integration/mattermost/index.md | 10 +- doc/integration/omniauth.md | 8 +- doc/integration/partner_marketplace.md | 114 +- doc/integration/saml.md | 6 +- doc/integration/trello_power_up.md | 8 +- doc/operations/error_tracking.md | 268 +- doc/operations/feature_flags.md | 13 +- doc/operations/img/copy-group-id.png | Bin 112686 -> 0 bytes .../img/create-gitlab-application.png | Bin 521206 -> 0 bytes .../img/error_tracking_setting_dsn_v14_4.png | Bin 39249 -> 0 bytes .../img/error_tracking_setting_v14_3.png | Bin 27537 -> 0 bytes doc/operations/img/listing_groups.png | Bin 40621 -> 0 bytes .../incident_timeline_events.md | 9 +- .../incident_management/manage_incidents.md | 2 +- doc/operations/index.md | 6 +- doc/operations/metrics/dashboards/default.md | 2 +- doc/operations/metrics/dashboards/develop.md | 2 +- doc/operations/metrics/dashboards/index.md | 8 +- .../metrics/dashboards/panel_types.md | 2 +- doc/operations/metrics/dashboards/settings.md | 2 +- .../dashboards/templating_variables.md | 2 +- .../metrics/dashboards/variables.md | 2 +- doc/operations/metrics/dashboards/yaml.md | 2 +- doc/operations/metrics/embed.md | 5 +- doc/operations/metrics/index.md | 4 +- doc/operations/quickstart-guide.md | 229 -- doc/policy/alpha-beta-support.md | 2 +- doc/policy/maintenance.md | 6 +- doc/raketasks/backup_gitlab.md | 12 +- doc/raketasks/backup_restore.md | 2 +- doc/raketasks/cleanup.md | 2 +- .../generate_sample_prometheus_data.md | 12 +- doc/raketasks/index.md | 7 +- doc/raketasks/restore_gitlab.md | 6 +- doc/security/index.md | 2 +- doc/security/reset_user_password.md | 16 +- doc/security/token_overview.md | 2 +- doc/security/user_file_uploads.md | 24 + doc/security/webhooks.md | 111 +- doc/subscriptions/bronze_starter.md | 4 +- doc/subscriptions/gitlab_com/index.md | 11 +- doc/subscriptions/gitlab_dedicated/index.md | 109 +- doc/subscriptions/index.md | 23 +- doc/subscriptions/self_managed/index.md | 2 +- doc/topics/authentication/index.md | 2 +- .../cloud_deployments/auto_devops_with_eks.md | 301 ++ .../cloud_deployments/auto_devops_with_gke.md | 2 +- doc/topics/autodevops/index.md | 1 + doc/topics/autodevops/upgrading_postgresql.md | 87 +- doc/topics/awesome_co.md | 70 + doc/topics/git/bisect.md | 79 +- doc/topics/git/feature_branching.md | 34 +- doc/topics/git/git_log.md | 63 +- doc/topics/git/index.md | 8 +- doc/topics/git/merge_conflicts.md | 11 - doc/topics/git/partial_clone.md | 4 +- doc/topics/git/subtree.md | 53 +- doc/topics/git/tags.md | 44 +- doc/topics/git/troubleshooting_git.md | 16 +- doc/topics/git/unstage.md | 14 +- doc/topics/git/useful_git_commands.md | 6 - doc/topics/offline/quick_start_guide.md | 86 + doc/topics/set_up_organization.md | 2 +- doc/topics/your_work.md | 5 + .../convert_personal_namespace_into_group.md | 95 + doc/tutorials/index.md | 1 + doc/update/background_migrations.md | 6 +- doc/update/deprecations.md | 328 +-- doc/update/index.md | 460 +++- doc/update/mysql_to_postgresql.md | 11 - doc/update/package/convert_to_ee.md | 2 +- doc/update/package/index.md | 2 +- doc/update/plan_your_upgrade.md | 2 +- doc/update/removals.md | 22 + doc/update/restore_after_failure.md | 12 - doc/update/upgrading_from_source.md | 9 +- .../upgrading_postgresql_using_slony.md | 12 - doc/update/zero_downtime.md | 4 + doc/user/admin_area/analytics/index.md | 2 +- doc/user/admin_area/appearance.md | 21 + .../admin_area/custom_project_templates.md | 2 +- doc/user/admin_area/index.md | 10 + doc/user/admin_area/license.md | 2 + doc/user/admin_area/license_file.md | 7 + .../reporting/git_abuse_rate_limit.md | 15 +- doc/user/admin_area/reporting/spamcheck.md | 12 +- .../settings/account_and_limit_settings.md | 10 + .../settings/continuous_integration.md | 4 +- .../settings/deprecated_api_rate_limits.md | 4 +- .../settings/external_authorization.md | 25 +- .../settings/files_api_rate_limits.md | 2 +- doc/user/admin_area/settings/index.md | 2 +- .../settings/rate_limit_on_projects_api.md | 33 + .../settings/sign_up_restrictions.md | 48 +- .../admin_area/settings/third_party_offers.md | 4 +- .../visibility_and_access_controls.md | 3 - doc/user/analytics/ci_cd_analytics.md | 4 +- doc/user/analytics/dora_metrics.md | 125 +- doc/user/analytics/value_stream_analytics.md | 4 +- doc/user/analytics/value_streams_dashboard.md | 22 +- .../application_security/api_fuzzing/index.md | 11 +- .../api_security/api_discovery/index.md | 169 ++ .../api_security/index.md | 21 + .../configuration/index.md | 6 +- .../container_scanning/index.md | 29 +- .../coverage_fuzzing/index.md | 8 +- .../dast/authentication.md | 48 +- .../dast/browser_based.md | 32 +- .../application_security/dast/proxy-based.md | 6 +- .../application_security/dast_api/index.md | 11 +- .../dependency_list/index.md | 2 +- .../dependency_scanning/index.md | 51 +- .../iac_scanning/index.md | 5 +- .../policies/img/association_diagram.png | Bin 6624 -> 19149 bytes .../policies/img/policy_rule_mode_v14_9.png | Bin 34025 -> 0 bytes .../policies/img/policy_rule_mode_v15_9.png | Bin 0 -> 37866 bytes .../policies/img/policy_yaml_mode_v14_9.png | Bin 27424 -> 0 bytes .../policies/img/policy_yaml_mode_v15_9.png | Bin 0 -> 29904 bytes .../scan_execution_policy_rule_mode_v15_5.png | Bin 23688 -> 0 bytes .../scan_execution_policy_rule_mode_v15_9.png | Bin 0 -> 27667 bytes ...eduled_scan_execution_policies_diagram.png | Bin 0 -> 12050 bytes .../application_security/policies/index.md | 29 +- .../policies/scan-execution-policies.md | 22 +- .../policies/scan-result-policies.md | 14 +- doc/user/application_security/sast/index.md | 7 +- .../secret_detection/index.md | 47 +- .../secure_your_application.md | 2 +- .../img/security_center_dashboard_v13_4.png | Bin 29797 -> 0 bytes .../img/security_center_dashboard_v15_10.png | Bin 0 -> 22361 bytes .../security_dashboard/index.md | 9 +- .../vulnerabilities/index.md | 22 +- .../vulnerability_report/index.md | 6 +- doc/user/award_emojis.md | 2 +- doc/user/clusters/agent/gitops.md | 4 + doc/user/clusters/agent/gitops/flux.md | 36 + .../clusters/agent/gitops/flux_tutorial.md | 184 ++ .../agent/gitops/secrets_management.md | 6 +- doc/user/clusters/agent/index.md | 16 +- doc/user/clusters/agent/troubleshooting.md | 115 +- doc/user/clusters/cost_management.md | 2 +- doc/user/clusters/environments.md | 2 +- doc/user/clusters/integrations.md | 2 +- doc/user/clusters/management_project.md | 2 +- .../migrating_from_gma_to_project_template.md | 2 +- .../compliance/compliance_report/index.md | 193 +- .../img/license_approval_policy_v15_9.png | Bin 33240 -> 30952 bytes .../compliance/license_approval_policies.md | 12 + doc/user/compliance/license_check_rules.md | 2 +- .../compliance/license_compliance/index.md | 2 +- .../index.md | 28 +- doc/user/crm/index.md | 4 +- .../discussions/img/index_notes_filters.png | Bin 21284 -> 0 bytes doc/user/discussions/index.md | 56 +- doc/user/enterprise_user/index.md | 39 + doc/user/gitlab_com/index.md | 102 +- doc/user/group/access_and_permissions.md | 40 +- doc/user/group/clusters/index.md | 2 +- doc/user/group/compliance_frameworks.md | 48 +- .../img/group_stats_cal.png | Bin 2029 -> 0 bytes .../img/group_stats_table.png | Bin 22691 -> 0 bytes doc/user/group/custom_project_templates.md | 2 +- doc/user/group/epics/epic_boards.md | 20 +- .../img/epic_board_epic_create_v14_1.png | Bin 14584 -> 0 bytes .../img/epic_board_epic_create_v15_10.png | Bin 0 -> 11786 bytes doc/user/group/epics/img/epic_board_v14_1.png | Bin 28691 -> 0 bytes .../group/epics/img/epic_board_v15_10.png | Bin 0 -> 78145 bytes doc/user/group/epics/manage_epics.md | 60 +- doc/user/group/import/index.md | 281 +- doc/user/group/index.md | 4 +- doc/user/group/manage.md | 8 +- .../group/reporting/git_abuse_rate_limit.md | 15 +- .../group/repositories_analytics/index.md | 2 +- doc/user/group/saml_sso/group_sync.md | 31 +- .../img/Azure-manage-group-claims.png | Bin 84609 -> 24492 bytes doc/user/group/saml_sso/index.md | 432 +-- doc/user/group/saml_sso/scim_setup.md | 8 +- .../group/saml_sso/troubleshooting_scim.md | 2 +- .../group/settings/group_access_tokens.md | 16 +- doc/user/group/settings/import_export.md | 11 - doc/user/group/subgroups/index.md | 6 +- .../img/object_hierarchy_example_V14_10.png | Bin 0 -> 20826 bytes .../group/value_stream_analytics/index.md | 277 +- .../img/observability_copy_shortened_link.png | Bin 0 -> 15090 bytes .../infrastructure/clusters/connect/index.md | 2 +- .../clusters/connect/new_civo_cluster.md | 22 +- .../clusters/connect/new_eks_cluster.md | 96 +- .../clusters/connect/new_gke_cluster.md | 24 +- doc/user/infrastructure/clusters/index.md | 2 +- .../clusters/manage/clusters_health.md | 2 +- .../infrastructure/iac/terraform_state.md | 4 +- .../iac/terraform_template_recipes.md | 4 +- doc/user/instance/clusters/index.md | 2 +- doc/user/markdown.md | 86 +- doc/user/namespace/index.md | 4 +- doc/user/okrs.md | 50 +- doc/user/operations_dashboard/index.md | 4 +- doc/user/organization/index.md | 42 + .../reduce_container_registry_storage.md | 2 +- doc/user/packages/debian_repository/index.md | 107 +- doc/user/packages/go_proxy/index.md | 2 +- .../harbor_container_registry/index.md | 2 +- doc/user/packages/npm_registry/index.md | 44 +- doc/user/packages/nuget_repository/index.md | 2 +- .../reduce_package_registry_storage.md | 3 + .../supported_functionality.md | 23 +- doc/user/packages/yarn_repository/index.md | 365 ++- doc/user/permissions.md | 35 +- doc/user/product_analytics/index.md | 48 +- doc/user/profile/account/create_accounts.md | 8 +- doc/user/profile/account/delete_account.md | 1 + .../account/two_factor_authentication.md | 178 +- doc/user/profile/active_sessions.md | 4 +- doc/user/profile/contributions_calendar.md | 6 +- .../img/saved_replies_dropdown_v15_10.png | Bin 0 -> 23623 bytes doc/user/profile/index.md | 86 +- doc/user/profile/notifications.md | 12 +- doc/user/profile/personal_access_tokens.md | 5 +- doc/user/profile/preferences.md | 6 + doc/user/profile/saved_replies.md | 61 + doc/user/project/badges.md | 8 +- doc/user/project/clusters/add_eks_clusters.md | 4 +- .../project/clusters/add_existing_cluster.md | 2 +- doc/user/project/clusters/add_gke_clusters.md | 2 +- .../project/clusters/add_remove_clusters.md | 2 +- doc/user/project/clusters/cluster_access.md | 2 +- .../project/clusters/deploy_to_cluster.md | 2 +- .../clusters/gitlab_managed_clusters.md | 2 +- doc/user/project/clusters/index.md | 2 +- .../clusters/multiple_kubernetes_clusters.md | 2 +- doc/user/project/clusters/runbooks/index.md | 2 +- doc/user/project/code_owners.md | 218 +- doc/user/project/deploy_boards.md | 6 +- doc/user/project/deploy_keys/index.md | 28 +- doc/user/project/deploy_tokens/index.md | 4 +- doc/user/project/description_templates.md | 4 + doc/user/project/file_lock.md | 4 +- .../project/img/codeowners_in_UI_v15_10.png | Bin 0 -> 10529 bytes ...i_approvals_code_owners_sections_v15_9.png | Bin 0 -> 18972 bytes doc/user/project/import/bitbucket.md | 2 + doc/user/project/import/bitbucket_server.md | 10 + doc/user/project/import/gitea.md | 7 +- doc/user/project/import/github.md | 103 +- .../bitbucket_import_select_project_v12_3.png | Bin 31980 -> 0 bytes .../import/img/fogbugz_import_finished.png | Bin 17744 -> 0 bytes .../import/img/manifest_status_v13_3.png | Bin 31313 -> 0 bytes doc/user/project/import/index.md | 2 +- doc/user/project/index.md | 9 +- .../project/integrations/apple_app_store.md | 8 +- doc/user/project/integrations/asana.md | 2 +- doc/user/project/integrations/ewm.md | 2 +- doc/user/project/integrations/github.md | 2 +- doc/user/project/integrations/google_play.md | 49 + .../project/integrations/hangouts_chat.md | 6 +- doc/user/project/integrations/harbor.md | 6 +- doc/user/project/integrations/index.md | 5 +- doc/user/project/integrations/irker.md | 4 +- doc/user/project/integrations/mock_ci.md | 10 +- .../project/integrations/pivotal_tracker.md | 2 +- doc/user/project/integrations/prometheus.md | 2 +- .../prometheus_library/cloudwatch.md | 2 +- .../prometheus_library/haproxy.md | 2 +- .../integrations/prometheus_library/index.md | 2 +- .../prometheus_library/kubernetes.md | 2 +- .../integrations/prometheus_library/nginx.md | 2 +- .../prometheus_library/nginx_ingress.md | 2 +- .../prometheus_library/nginx_ingress_vts.md | 2 +- doc/user/project/integrations/redmine.md | 3 +- doc/user/project/integrations/servicenow.md | 2 + .../integrations/slack_slash_commands.md | 2 +- doc/user/project/integrations/squash_tm.md | 37 + .../project/integrations/unify_circuit.md | 2 +- doc/user/project/integrations/webhooks.md | 13 +- doc/user/project/issue_board.md | 22 +- doc/user/project/issues/create_issues.md | 7 +- .../project/issues/crosslinking_issues.md | 4 +- doc/user/project/issues/csv_import.md | 4 +- doc/user/project/issues/design_management.md | 13 + doc/user/project/issues/managing_issues.md | 2 +- doc/user/project/members/index.md | 4 +- .../members/share_project_with_groups.md | 14 +- .../merge_requests/allow_collaboration.md | 2 +- .../merge_requests/cherry_pick_changes.md | 10 +- doc/user/project/merge_requests/commits.md | 11 - .../merge_requests/creating_merge_requests.md | 6 +- .../img/remove_source_branch_status.png | Bin 32586 -> 0 bytes doc/user/project/merge_requests/index.md | 7 +- .../project/merge_requests/methods/index.md | 1 - .../reviews/img/apply_suggestion_v13_9.png | Bin 37127 -> 0 bytes .../reviews/img/make_suggestion_v13_9.png | Bin 30463 -> 0 bytes .../reviews/img/suggestion_button_v13_9.png | Bin 27319 -> 0 bytes ...ggestions_custom_commit_messages_v14_7.png | Bin 14774 -> 0 bytes .../project/merge_requests/reviews/index.md | 6 +- .../merge_requests/reviews/suggestions.md | 128 +- .../project/merge_requests/status_checks.md | 3 + .../milestones/burndown_and_burnup_charts.md | 20 +- doc/user/project/milestones/index.md | 5 +- .../project/organize_work_with_projects.md | 4 +- .../dns_concepts.md | 7 +- .../index.md | 2 +- .../lets_encrypt_integration.md | 2 +- .../ssl_tls_concepts.md | 5 +- .../getting_started/pages_ci_cd_template.md | 2 +- .../pages_forked_sample_project.md | 4 +- .../pages_new_project_template.md | 2 +- .../project/pages/getting_started/pages_ui.md | 2 +- .../project/pages/getting_started_part_one.md | 2 +- doc/user/project/pages/introduction.md | 2 +- doc/user/project/pages/public_folder.md | 4 +- doc/user/project/pages/redirects.md | 2 +- doc/user/project/protected_branches.md | 68 +- doc/user/project/protected_tags.md | 33 +- doc/user/project/quick_actions.md | 2 +- doc/user/project/releases/index.md | 6 +- .../project/releases/release_cicd_examples.md | 4 +- doc/user/project/releases/release_cli.md | 4 +- doc/user/project/releases/release_fields.md | 4 +- doc/user/project/remote_development/index.md | 2 +- .../img/branch_filter_search_box_v13_12.png | Bin 15803 -> 0 bytes .../branches/img/compare_branches_v13_12.png | Bin 46536 -> 0 bytes .../repository_filter_search_box_v13_12.png | Bin 12634 -> 0 bytes .../img/swap_revisions_after_v13_12.png | Bin 8949 -> 0 bytes .../img/swap_revisions_before_v13_12.png | Bin 8935 -> 0 bytes .../img/view_branch_protections_v15_10.png | Bin 0 -> 5103 bytes doc/user/project/repository/branches/index.md | 214 +- doc/user/project/repository/file_finder.md | 2 +- .../project/repository/forking_workflow.md | 10 +- doc/user/project/repository/git_blame.md | 2 +- doc/user/project/repository/git_history.md | 2 +- .../repository/gpg_signed_commits/index.md | 2 +- doc/user/project/repository/index.md | 6 +- doc/user/project/repository/mirror/push.md | 6 +- .../repository/tags/img/tag-display_v15_9.png | Bin 0 -> 7320 bytes .../tags/img/tags_commits_view_v15_10.png | Bin 0 -> 7054 bytes doc/user/project/repository/tags/index.md | 108 + doc/user/project/repository/web_editor.md | 30 +- doc/user/project/requirements/index.md | 10 +- doc/user/project/service_desk.md | 77 +- doc/user/project/settings/import_export.md | 9 +- .../settings/import_export_troubleshooting.md | 58 +- doc/user/project/settings/index.md | 6 +- .../project/settings/project_access_tokens.md | 15 +- doc/user/project/web_ide/index.md | 4 +- doc/user/project/web_ide_beta/index.md | 33 +- doc/user/project/wiki/group.md | 8 +- doc/user/project/working_with_projects.md | 33 +- doc/user/public_access.md | 4 +- doc/user/report_abuse.md | 2 + doc/user/reserved_names.md | 4 +- doc/user/search/advanced_search.md | 64 +- doc/user/search/exact_code_search.md | 5 +- .../global_search/advanced_search_syntax.md | 11 - doc/user/search/index.md | 13 +- doc/user/shortcuts.md | 2 +- doc/user/snippets.md | 4 +- doc/user/ssh.md | 6 +- doc/user/tasks.md | 20 + doc/user/todos.md | 4 +- doc/user/workspace/index.md | 45 +- .../output_example_snapshots/html.yml | 2 +- jest.config.base.js | 51 +- lefthook.yml | 31 + lib/api/access_requests.rb | 2 +- lib/api/admin/ci/variables.rb | 2 +- lib/api/applications.rb | 2 +- lib/api/ci/helpers/runner.rb | 8 +- lib/api/ci/pipeline_schedules.rb | 7 +- lib/api/ci/pipelines.rb | 4 +- lib/api/ci/runner.rb | 6 +- lib/api/ci/variables.rb | 2 +- lib/api/clusters/agent_tokens.rb | 9 +- lib/api/commits.rb | 10 + lib/api/composer_packages.rb | 2 +- lib/api/concerns/packages/conan_endpoints.rb | 2 +- .../packages/debian_package_endpoints.rb | 42 +- lib/api/concerns/packages/npm_endpoints.rb | 12 +- lib/api/debian_project_packages.rb | 4 +- lib/api/draft_notes.rb | 74 + lib/api/entities/application_with_secret.rb | 8 +- lib/api/entities/ci/job_request/response.rb | 4 +- .../entities/internal/pages/lookup_path.rb | 8 +- lib/api/entities/note.rb | 1 + lib/api/entities/project.rb | 2 +- lib/api/error_tracking/project_settings.rb | 40 +- lib/api/files.rb | 10 +- lib/api/generic_packages.rb | 4 +- lib/api/group_container_repositories.rb | 2 +- lib/api/group_variables.rb | 2 +- lib/api/helpers/integrations_helpers.rb | 36 + lib/api/helpers/internal_helpers.rb | 1 + lib/api/helpers/packages/conan/api_helpers.rb | 4 +- .../packages/dependency_proxy_helpers.rb | 9 +- lib/api/helpers/packages/npm.rb | 32 +- lib/api/helpers/packages_helpers.rb | 1 + lib/api/internal/base.rb | 12 +- lib/api/internal/kubernetes.rb | 45 +- lib/api/internal/pages.rb | 21 +- lib/api/issues.rb | 2 +- lib/api/keys.rb | 2 +- lib/api/lint.rb | 2 +- lib/api/maven_packages.rb | 3 +- lib/api/merge_requests.rb | 4 + lib/api/metrics/dashboard/annotations.rb | 2 +- lib/api/milestone_responses.rb | 45 +- lib/api/npm_project_packages.rb | 2 +- lib/api/nuget_project_packages.rb | 2 - lib/api/personal_access_tokens.rb | 2 +- .../self_information.rb | 2 +- lib/api/project_container_repositories.rb | 10 +- lib/api/projects.rb | 17 +- lib/api/protected_branches.rb | 6 +- lib/api/pypi_packages.rb | 2 +- lib/api/release/links.rb | 38 +- lib/api/resource_access_tokens.rb | 2 +- lib/api/rpm_project_packages.rb | 1 - lib/api/rubygem_packages.rb | 2 +- lib/api/search.rb | 3 + lib/api/templates.rb | 2 +- lib/api/terraform/modules/v1/packages.rb | 4 +- lib/api/terraform/state.rb | 22 +- lib/api/unleash.rb | 4 +- lib/api/users.rb | 68 +- .../jira_connect/serializers/build_entity.rb | 7 +- lib/backup/gitaly_backup.rb | 17 +- .../filter/inline_observability_filter.rb | 27 +- .../issuable_reference_expansion_filter.rb | 41 +- .../filter/reference_redactor_filter.rb | 4 +- .../references/design_reference_filter.rb | 2 +- .../references/issue_reference_filter.rb | 2 +- lib/banzai/reference_parser/commit_parser.rb | 7 - .../reference_parser/commit_range_parser.rb | 7 - lib/banzai/reference_parser/issue_parser.rb | 24 +- .../reference_parser/merge_request_parser.rb | 22 +- lib/banzai/render_context.rb | 5 +- lib/bulk_imports/clients/http.rb | 9 +- lib/bulk_imports/error.rb | 2 +- lib/bulk_imports/features.rb | 15 - lib/bulk_imports/groups/stage.rb | 8 +- .../group_attributes_transformer.rb | 7 +- lib/bulk_imports/ndjson_pipeline.rb | 43 +- .../pipelines/commit_notes_pipeline.rb | 15 + lib/bulk_imports/projects/stage.rb | 5 + lib/container_registry/gitlab_api_client.rb | 48 + .../batched_background_migration/USAGE | 12 + .../batched_background_migration_generator.rb | 73 + ...d_background_migration_dictionary.template | 6 + .../batched_background_migration_job.template | 22 + ...hed_background_migration_job_spec.template | 7 + ...ueue_batched_background_migration.template | 28 + ...batched_background_migration_spec.template | 26 + .../snowplow_event_definition_generator.rb | 13 +- .../aggregated/records_fetcher.rb | 8 +- .../cycle_analytics/records_fetcher.rb | 8 +- .../cycle_analytics/request_params.rb | 100 +- .../stage_events/plan_stage_start.rb | 2 +- lib/gitlab/app_logger.rb | 2 +- lib/gitlab/application_rate_limiter.rb | 6 +- lib/gitlab/audit/auditor.rb | 10 +- lib/gitlab/auth/ldap/config.rb | 4 + lib/gitlab/auth/o_auth/user.rb | 4 +- lib/gitlab/auth/otp/duo_auth.rb | 13 + .../otp/strategies/duo_auth/manual_otp.rb | 46 + lib/gitlab/auth/user_access_denied_reason.rb | 3 +- ...n_mode_scope_for_personal_access_tokens.rb | 2 +- .../backfill_compliance_violations.rb | 17 + .../backfill_namespace_ldap_settings.rb | 17 + .../backfill_prepared_at_merge_requests.rb | 18 + .../backfill_project_wiki_repositories.rb | 35 + .../batched_migration_job.rb | 15 +- .../create_vulnerability_links.rb | 14 + .../delete_orphaned_packages_dependencies.rb | 27 + .../fix_vulnerability_reads_has_issues.rb | 33 + .../issues_internal_id_scope_updater.rb | 66 + ...te_evidences_for_vulnerability_findings.rb | 81 + ...igrate_links_for_vulnerability_findings.rb | 79 + ...remediations_for_vulnerability_findings.rb | 164 ++ lib/gitlab/bitbucket_import/importer.rb | 2 +- lib/gitlab/cache/client.rb | 68 + lib/gitlab/cache/metadata.rb | 11 +- lib/gitlab/changes_list.rb | 4 +- lib/gitlab/chat/responder.rb | 18 +- lib/gitlab/checks/base_single_checker.rb | 2 +- lib/gitlab/checks/changes_access.rb | 14 +- lib/gitlab/checks/diff_check.rb | 4 + lib/gitlab/checks/single_change_access.rb | 10 + lib/gitlab/ci/badge/release/latest_release.rb | 3 +- lib/gitlab/ci/badge/release/template.rb | 8 +- lib/gitlab/ci/components/header.rb | 42 + lib/gitlab/ci/config.rb | 12 +- lib/gitlab/ci/config/entry/job.rb | 6 +- lib/gitlab/ci/config/external/context.rb | 20 +- lib/gitlab/ci/config/external/file/base.rb | 33 +- .../ci/config/external/file/component.rb | 2 +- lib/gitlab/ci/config/external/file/project.rb | 71 +- .../ci/config/external/mapper/verifier.rb | 63 +- lib/gitlab/ci/config/header/input.rb | 24 + lib/gitlab/ci/config/header/root.rb | 36 + lib/gitlab/ci/config/header/spec.rb | 24 + lib/gitlab/ci/config/yaml.rb | 44 +- lib/gitlab/ci/config/yaml/result.rb | 36 + lib/gitlab/ci/input/arguments/base.rb | 62 + lib/gitlab/ci/input/arguments/default.rb | 44 + lib/gitlab/ci/input/arguments/options.rb | 52 + lib/gitlab/ci/input/arguments/required.rb | 46 + lib/gitlab/ci/input/arguments/unknown.rb | 31 + lib/gitlab/ci/input/inputs.rb | 73 + lib/gitlab/ci/parsers/security/common.rb | 1 + lib/gitlab/ci/pipeline/chain/command.rb | 3 +- .../ci/pipeline/chain/config/content.rb | 1 + .../ci/pipeline/chain/config/process.rb | 1 + lib/gitlab/ci/pipeline/duration.rb | 25 +- lib/gitlab/ci/project_config.rb | 1 + lib/gitlab/ci/project_config/auto_devops.rb | 4 + .../ci/project_config/external_project.rb | 4 + lib/gitlab/ci/project_config/remote.rb | 4 + lib/gitlab/ci/project_config/repository.rb | 4 + lib/gitlab/ci/project_config/source.rb | 5 + lib/gitlab/ci/reports/security/finding.rb | 4 +- lib/gitlab/ci/reports/security/report.rb | 5 +- .../vulnerability_reports_comparer.rb | 165 -- lib/gitlab/ci/resource_groups/logger.rb | 13 + lib/gitlab/ci/runner_releases.rb | 5 + lib/gitlab/ci/status/composite.rb | 28 +- .../ci/templates/Jobs/Build.gitlab-ci.yml | 2 +- .../templates/Jobs/Build.latest.gitlab-ci.yml | 2 +- .../Jobs/Container-Scanning.gitlab-ci.yml | 1 + .../Container-Scanning.latest.gitlab-ci.yml | 1 + .../DAST-Default-Branch-Deploy.gitlab-ci.yml | 2 +- .../Jobs/Dependency-Scanning.gitlab-ci.yml | 38 +- .../Dependency-Scanning.latest.gitlab-ci.yml | 38 +- .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 2 +- .../Jobs/Deploy.latest.gitlab-ci.yml | 2 +- .../Jobs/SAST-IaC.latest.gitlab-ci.yml | 2 +- .../templates/Jobs/SAST.latest.gitlab-ci.yml | 24 +- .../Secret-Detection.latest.gitlab-ci.yml | 2 +- .../Security/API-Discovery.gitlab-ci.yml | 66 + lib/gitlab/color_schemes.rb | 2 +- lib/gitlab/config/entry/validators.rb | 2 +- lib/gitlab/config/loader/multi_doc_yaml.rb | 67 +- lib/gitlab/config/loader/yaml.rb | 4 + .../content_security_policy/config_loader.rb | 12 + lib/gitlab/data_builder/pipeline.rb | 7 +- ...c_foreign_keys.rb => async_constraints.rb} | 6 +- .../migration_helpers.rb | 59 +- .../postgres_async_constraint_validation.rb | 35 + .../database/async_constraints/validators.rb | 20 + .../async_constraints/validators/base.rb | 91 + .../validators/check_constraint.rb | 19 + .../validators/foreign_key.rb | 21 + .../foreign_key_validator.rb | 94 - .../postgres_async_foreign_key_validation.rb | 21 - .../background_migration/batch_optimizer.rb | 13 +- .../background_migration/batched_job.rb | 83 +- .../background_migration/batched_migration.rb | 2 - .../batched_migration_wrapper.rb | 13 +- .../sub_batch_timeout_error.rb | 17 + lib/gitlab/database/gitlab_schema.rb | 15 + lib/gitlab/database/lock_writes_manager.rb | 2 + lib/gitlab/database/migration_helpers.rb | 89 +- .../migration_helpers/convert_to_bigint.rb | 19 + .../batched_background_migration_helpers.rb | 11 + .../migrations/constraints_helpers.rb | 40 +- .../test_batched_background_runner.rb | 2 +- lib/gitlab/database/partitioning.rb | 3 +- .../partitioning/ci_sliding_list_strategy.rb | 40 + .../partitioning/partition_manager.rb | 2 + .../foreign_key_helpers.rb | 71 +- lib/gitlab/database/postgres_foreign_key.rb | 8 + lib/gitlab/database/postgres_partition.rb | 10 +- lib/gitlab/database/reindexing.rb | 2 +- .../database/schema_validation/database.rb | 50 +- .../database/schema_validation/index.rb | 25 - .../database/schema_validation/indexes.rb | 37 - .../database/schema_validation/runner.rb | 23 + .../schema_validation/schema_objects/base.rb | 27 + .../schema_validation/schema_objects/index.rb | 15 + .../schema_objects/trigger.rb | 15 + .../schema_validation/structure_sql.rb | 41 +- .../validators/base_validator.rb | 43 + .../different_definition_indexes.rb | 22 + .../different_definition_triggers.rb | 22 + .../validators/extra_indexes.rb | 19 + .../validators/extra_triggers.rb | 19 + .../validators/missing_indexes.rb | 19 + .../validators/missing_triggers.rb | 19 + lib/gitlab/database/tables_locker.rb | 34 +- .../work_items/base_type_importer.rb | 24 +- ...opy_design_collection_model_attributes.yml | 3 + .../secret/pbkdf2_sha512.rb | 7 +- .../hook/validate_addresses_interceptor.rb | 32 - lib/gitlab/email/html_to_markdown_parser.rb | 37 +- lib/gitlab/email/receiver.rb | 2 +- lib/gitlab/etag_caching/router/graphql.rb | 2 +- lib/gitlab/exception_log_formatter.rb | 4 + lib/gitlab/file_finder.rb | 12 +- lib/gitlab/git.rb | 2 +- lib/gitlab/git/commit.rb | 3 +- lib/gitlab/git/diff_collection.rb | 2 + lib/gitlab/git/repository.rb | 30 +- lib/gitlab/git/rugged_impl/tree.rb | 1 - lib/gitlab/git/tree.rb | 4 +- lib/gitlab/gitaly_client/commit_service.rb | 4 +- lib/gitlab/gitaly_client/ref_service.rb | 2 +- .../gitaly_client/repository_service.rb | 8 +- lib/gitlab/github_import/clients/proxy.rb | 33 +- .../github_import/clients/search_repos.rb | 45 +- .../importer/collaborator_importer.rb | 66 + .../importer/collaborators_importer.rb | 35 + .../importer/events/cross_referenced.rb | 1 + .../importer/label_links_importer.rb | 2 + .../importer/note_attachments_importer.rb | 24 +- .../pull_requests/review_request_importer.rb | 2 +- .../importer/repository_importer.rb | 15 +- .../github_import/markdown/attachment.rb | 16 + .../github_import/parallel_scheduling.rb | 35 +- .../github_import/project_relation_type.rb | 55 + .../representation/collaborator.rb | 42 + lib/gitlab/github_import/settings.rb | 4 +- lib/gitlab/gon_helper.rb | 1 - lib/gitlab/i18n.rb | 27 +- lib/gitlab/i18n/pluralization.rb | 86 + lib/gitlab/import/errors.rb | 45 + lib/gitlab/import/import_failure_service.rb | 8 +- lib/gitlab/import/metrics.rb | 27 +- lib/gitlab/import_export/attributes_finder.rb | 8 +- .../import_export/attributes_permitter.rb | 2 +- .../base/relation_object_saver.rb | 31 +- lib/gitlab/import_export/command_line_util.rb | 14 + lib/gitlab/import_export/config.rb | 1 + lib/gitlab/import_export/file_importer.rb | 17 +- .../group/relation_tree_restorer.rb | 42 +- .../import_export/project/import_export.yml | 54 +- .../import_export/project/object_builder.rb | 1 + .../import_export/project/relation_factory.rb | 19 +- lib/gitlab/instrumentation/redis_base.rb | 17 + .../instrumentation/redis_interceptor.rb | 8 +- lib/gitlab/instrumentation/zoekt.rb | 49 + lib/gitlab/instrumentation_helper.rb | 12 + .../clone/copy_resource_events_service.rb | 4 +- lib/gitlab/issues/rebalancing/state.rb | 4 +- lib/gitlab/jira_import/issues_importer.rb | 4 +- lib/gitlab/jira_import/metadata_collector.rb | 2 +- lib/gitlab/json_cache.rb | 2 +- lib/gitlab/kas/user_access.rb | 73 + lib/gitlab/language_detection.rb | 4 +- lib/gitlab/legacy_github_import/client.rb | 1 + lib/gitlab/legacy_github_import/importer.rb | 47 +- lib/gitlab/loggable.rb | 11 + .../metrics/requests_rack_middleware.rb | 2 +- lib/gitlab/metrics/subscribers/rack_attack.rb | 5 - lib/gitlab/metrics/subscribers/rails_cache.rb | 16 +- lib/gitlab/multi_collection_paginator.rb | 2 + lib/gitlab/nav/top_nav_menu_item.rb | 8 +- lib/gitlab/no_cache_headers.rb | 1 - lib/gitlab/observability.rb | 132 +- lib/gitlab/optimistic_locking.rb | 5 +- lib/gitlab/pages/random_domain.rb | 51 + lib/gitlab/pages/virtual_host_finder.rb | 72 + lib/gitlab/patch/node_loader.rb | 40 + lib/gitlab/private_commit_email.rb | 2 +- .../queries/knative_invocation_query.rb | 42 - lib/gitlab/rack_attack.rb | 2 +- .../rack_attack/instrumented_cache_store.rb | 33 - lib/gitlab/rack_attack/store.rb | 57 + lib/gitlab/redis/cache.rb | 13 +- lib/gitlab/redis/multi_store.rb | 103 +- lib/gitlab/redis/rate_limiting.rb | 9 +- lib/gitlab/redis/repository_cache.rb | 8 +- lib/gitlab/regex.rb | 13 +- lib/gitlab/search_results.rb | 8 + .../seeders/ci/runner/runner_fleet_seeder.rb | 12 +- lib/gitlab/serializer/ci/variables.rb | 2 +- lib/gitlab/serverless/service.rb | 102 - .../incident_management/incident_new.rb | 4 +- lib/gitlab/task_helpers.rb | 2 +- lib/gitlab/url_blocker.rb | 83 +- .../usage/metrics/aggregates/aggregate.rb | 7 +- .../count_bulk_imports_entities_metric.rb | 5 + .../gitlab_dedicated_metric.rb | 15 + .../index_inconsistencies_metric.rb | 46 + .../installation_creation_date_metric.rb | 15 + lib/gitlab/usage_data.rb | 45 +- .../container_registry_event_counter.rb | 10 + .../editor_unique_counter.rb | 22 +- .../gitlab_cli_activity_unique_counter.rb | 4 +- .../usage_data_counters/hll_redis_counter.rb | 73 +- .../issue_activity_unique_counter.rb | 1 - .../known_events/analytics.yml | 13 - .../known_events/ci_templates.yml | 153 +- .../known_events/ci_users.yml | 4 - .../known_events/code_review_events.yml | 112 - .../known_events/common.yml | 77 - .../container_registry_events.yml | 6 - .../known_events/ecosystem.yml | 11 - .../known_events/error_tracking.yml | 2 - .../known_events/importer_events.yml | 10 +- .../known_events/kubernetes_agent.yml | 1 - .../known_events/package_events.yml | 22 - .../known_events/quickactions.yml | 63 - .../known_events/work_items.yml | 14 - .../merge_request_activity_unique_counter.rb | 4 - .../track_unique_events.rb | 81 - .../work_item_activity_unique_counter.rb | 2 +- lib/gitlab/usage_data_non_sql_metrics.rb | 7 - lib/gitlab/usage_data_queries.rb | 7 - lib/gitlab/utils/error_message.rb | 13 + lib/gitlab/utils/override.rb | 4 +- lib/gitlab/utils/uniquify.rb | 45 + lib/gitlab/utils/usage_data.rb | 27 - .../utils/username_and_email_generator.rb | 42 + lib/gitlab/verify/batch_verifier.rb | 2 +- lib/object_storage/config.rb | 24 +- lib/safe_zip/extract.rb | 21 + lib/sidebars/concerns/render_if_logged_in.rb | 11 + lib/sidebars/concerns/super_sidebar_panel.rb | 58 + lib/sidebars/context.rb | 5 +- lib/sidebars/explore/menus/groups_menu.rb | 34 + lib/sidebars/explore/menus/projects_menu.rb | 34 + lib/sidebars/explore/menus/snippets_menu.rb | 34 + lib/sidebars/explore/menus/topics_menu.rb | 34 + lib/sidebars/explore/panel.rb | 39 + lib/sidebars/groups/menus/ci_cd_menu.rb | 5 + .../groups/menus/group_information_menu.rb | 10 + .../groups/menus/invite_team_members_menu.rb | 46 - lib/sidebars/groups/menus/issues_menu.rb | 21 +- lib/sidebars/groups/menus/kubernetes_menu.rb | 8 + .../groups/menus/merge_requests_menu.rb | 11 + .../groups/menus/observability_menu.rb | 14 +- .../groups/menus/packages_registries_menu.rb | 10 + lib/sidebars/groups/menus/scope_menu.rb | 12 +- lib/sidebars/groups/menus/settings_menu.rb | 5 + lib/sidebars/groups/panel.rb | 10 - .../super_sidebar_menus/operations_menu.rb | 19 + .../groups/super_sidebar_menus/plan_menu.rb | 19 + lib/sidebars/groups/super_sidebar_panel.rb | 43 + lib/sidebars/menu.rb | 45 + lib/sidebars/menu_item.rb | 25 +- lib/sidebars/panel.rb | 11 +- lib/sidebars/projects/menus/analytics_menu.rb | 5 + lib/sidebars/projects/menus/ci_cd_menu.rb | 5 + .../projects/menus/deployments_menu.rb | 9 + .../projects/menus/infrastructure_menu.rb | 36 +- .../menus/invite_team_members_menu.rb | 47 - lib/sidebars/projects/menus/issues_menu.rb | 16 + .../projects/menus/merge_requests_menu.rb | 11 + lib/sidebars/projects/menus/monitor_menu.rb | 20 +- .../menus/packages_registries_menu.rb | 9 + .../menus/project_information_menu.rb | 10 + .../projects/menus/repository_menu.rb | 9 +- lib/sidebars/projects/menus/scope_menu.rb | 10 + .../menus/security_compliance_menu.rb | 9 +- lib/sidebars/projects/menus/settings_menu.rb | 5 + lib/sidebars/projects/menus/snippets_menu.rb | 9 + lib/sidebars/projects/menus/wiki_menu.rb | 8 + lib/sidebars/projects/panel.rb | 8 - .../super_sidebar_menus/operations_menu.rb | 19 + .../projects/super_sidebar_menus/plan_menu.rb | 19 + lib/sidebars/projects/super_sidebar_panel.rb | 43 + lib/sidebars/static_menu.rb | 13 + lib/sidebars/uncategorized_menu.rb | 19 + lib/sidebars/user_profile/base_menu.rb | 12 + .../user_profile/menus/activity_menu.rb | 24 + .../menus/contributed_projects_menu.rb | 24 + .../user_profile/menus/followers_menu.rb | 38 + .../user_profile/menus/following_menu.rb | 38 + .../user_profile/menus/groups_menu.rb | 24 + .../user_profile/menus/overview_menu.rb | 24 + .../menus/personal_projects_menu.rb | 24 + .../user_profile/menus/snippets_menu.rb | 24 + .../menus/starred_projects_menu.rb | 24 + lib/sidebars/user_profile/panel.rb | 52 + .../user_settings/menus/access_tokens_menu.rb | 39 + .../user_settings/menus/account_menu.rb | 36 + .../menus/active_sessions_menu.rb | 31 + .../user_settings/menus/applications_menu.rb | 31 + .../menus/authentication_log_menu.rb | 31 + lib/sidebars/user_settings/menus/chat_menu.rb | 31 + .../user_settings/menus/emails_menu.rb | 36 + .../user_settings/menus/gpg_keys_menu.rb | 31 + .../user_settings/menus/notifications_menu.rb | 31 + .../user_settings/menus/password_menu.rb | 39 + .../user_settings/menus/preferences_menu.rb | 31 + .../user_settings/menus/profile_menu.rb | 31 + .../user_settings/menus/saved_replies_menu.rb | 42 + .../user_settings/menus/ssh_keys_menu.rb | 36 + lib/sidebars/user_settings/panel.rb | 51 + lib/sidebars/your_work/panel.rb | 9 + lib/support/nginx/gitlab-pages-ssl | 11 +- lib/support/nginx/gitlab-ssl | 11 +- lib/support/nginx/registry-ssl | 11 +- lib/tasks/contracts/merge_requests.rake | 2 +- lib/tasks/contracts/pipeline_schedules.rake | 2 +- lib/tasks/contracts/pipelines.rake | 2 +- lib/tasks/gitlab/assets.rake | 4 +- lib/tasks/gitlab/db.rake | 54 +- .../db/decomposition/connection_status.rake | 37 + lib/tasks/gitlab/docs/redirect.rake | 7 +- lib/tasks/gitlab/graphql.rake | 10 +- lib/tasks/gitlab/import_export/import.rake | 10 +- lib/tasks/gitlab/lfs/migrate.rake | 4 +- lib/tasks/gitlab/metrics_exporter.rake | 5 +- lib/tasks/gitlab/openapi.rake | 4 +- lib/tasks/gitlab/packages/events.rake | 6 +- lib/tasks/gitlab/packages/migrate.rake | 4 +- lib/tasks/gitlab/pages.rake | 4 +- ...oject_statistics_build_artifacts_size.rake | 6 +- lib/tasks/gitlab/seed/runner_fleet.rake | 10 +- lib/tasks/gitlab/terraform/migrate.rake | 4 +- lib/tasks/gitlab/tw/codeowners.rake | 46 +- lib/tasks/gitlab/usage_data.rake | 2 - lib/tasks/gitlab/x509/update.rake | 4 +- lib/tasks/import.rake | 6 +- locale/am_ET/gitlab.po | 2061 ++++++++++---- locale/ar_SA/gitlab.po | 2105 ++++++++++---- locale/as_IN/gitlab.po | 2061 ++++++++++---- locale/az_AZ/gitlab.po | 2061 ++++++++++---- locale/ba_RU/gitlab.po | 2050 ++++++++++---- locale/bg/gitlab.po | 2063 ++++++++++---- locale/bn_BD/gitlab.po | 2061 ++++++++++---- locale/bn_IN/gitlab.po | 2061 ++++++++++---- locale/br_FR/gitlab.po | 2094 ++++++++++---- locale/bs_BA/gitlab.po | 2072 ++++++++++---- locale/ca_ES/gitlab.po | 2061 ++++++++++---- locale/cs_CZ/gitlab.po | 2083 ++++++++++---- locale/cy_GB/gitlab.po | 2105 ++++++++++---- locale/da_DK/gitlab.po | 2103 ++++++++++---- locale/de/gitlab.po | 2075 ++++++++++---- locale/el_GR/gitlab.po | 2061 ++++++++++---- locale/en_GB/gitlab.po | 2069 ++++++++++---- locale/eo/gitlab.po | 2063 ++++++++++---- locale/es/gitlab.po | 2095 ++++++++++---- locale/et_EE/gitlab.po | 2061 ++++++++++---- locale/fa_IR/gitlab.po | 2061 ++++++++++---- locale/fi_FI/gitlab.po | 2061 ++++++++++---- locale/fil_PH/gitlab.po | 2061 ++++++++++---- locale/fr/gitlab.po | 2295 +++++++++++----- locale/gitlab.pot | 2076 ++++++++++---- locale/gl_ES/gitlab.po | 2061 ++++++++++---- locale/he_IL/gitlab.po | 2083 ++++++++++---- locale/hi_IN/gitlab.po | 2061 ++++++++++---- locale/hr_HR/gitlab.po | 2072 ++++++++++---- locale/hu_HU/gitlab.po | 2061 ++++++++++---- locale/hy_AM/gitlab.po | 2061 ++++++++++---- locale/id_ID/gitlab.po | 2050 ++++++++++---- locale/ig_NG/gitlab.po | 2050 ++++++++++---- locale/is_IS/gitlab.po | 2061 ++++++++++---- locale/it/gitlab.po | 2063 ++++++++++---- locale/ja/gitlab.po | 2308 +++++++++++----- locale/ka_GE/gitlab.po | 2061 ++++++++++---- locale/kab/gitlab.po | 2061 ++++++++++---- locale/ko/gitlab.po | 2068 ++++++++++---- locale/ku_TR/gitlab.po | 2061 ++++++++++---- locale/ky_KG/gitlab.po | 2061 ++++++++++---- locale/lt_LT/gitlab.po | 2083 ++++++++++---- locale/mk_MK/gitlab.po | 2061 ++++++++++---- locale/ml_IN/gitlab.po | 2061 ++++++++++---- locale/mn_MN/gitlab.po | 2061 ++++++++++---- locale/ms_MY/gitlab.po | 2050 ++++++++++---- locale/nb_NO/gitlab.po | 2081 ++++++++++---- locale/nl_NL/gitlab.po | 2061 ++++++++++---- locale/or_IN/gitlab.po | 2061 ++++++++++---- locale/pa_IN/gitlab.po | 2061 ++++++++++---- locale/pa_PK/gitlab.po | 2061 ++++++++++---- locale/pl_PL/gitlab.po | 2083 ++++++++++---- locale/pt_BR/gitlab.po | 2307 +++++++++++----- locale/pt_PT/gitlab.po | 2063 ++++++++++---- locale/ro_RO/gitlab.po | 2164 ++++++++++----- locale/ru/gitlab.po | 2105 ++++++++++---- locale/si_LK/gitlab.po | 2079 ++++++++++---- locale/sk_SK/gitlab.po | 2083 ++++++++++---- locale/sl_SI/gitlab.po | 2083 ++++++++++---- locale/sq_AL/gitlab.po | 2061 ++++++++++---- locale/sr_CS/gitlab.po | 2072 ++++++++++---- locale/sr_SP/gitlab.po | 2072 ++++++++++---- locale/sv_SE/gitlab.po | 2061 ++++++++++---- locale/sw_KE/gitlab.po | 2061 ++++++++++---- locale/ta_IN/gitlab.po | 2061 ++++++++++---- locale/th_TH/gitlab.po | 2050 ++++++++++---- locale/tr_TR/gitlab.po | 2069 ++++++++++---- locale/uk/gitlab.po | 2165 ++++++++++----- locale/ur_PK/gitlab.po | 2061 ++++++++++---- locale/uz_UZ/gitlab.po | 2061 ++++++++++---- locale/vi_VN/gitlab.po | 2050 ++++++++++---- locale/zh_CN/gitlab.po | 2420 +++++++++++----- locale/zh_HK/gitlab.po | 2052 ++++++++++---- locale/zh_TW/gitlab.po | 2428 ++++++++++++----- package.json | 122 +- patches/@vue+compiler-sfc+3.2.47.patch | 28 + patches/@vue+vue3-jest+29.2.3.patch | 22 + patches/vue-loader-vue3+17.0.1.patch | 78 + public/500.html | 2 +- public/502.html | 2 +- public/503.html | 2 +- qa/Gemfile | 8 +- qa/Gemfile.lock | 35 +- .../page/group/settings/usage_quotas.rb | 3 +- qa/qa.rb | 3 +- .../kubernetes_agent/agentk-manifest.yaml.erb | 111 - qa/qa/fixtures/mocks/import/github.yml | 74 + .../request_forwarding/gitlab_ci.yaml.erb | 8 + .../request_forwarding/settings.xml.erb | 23 + qa/qa/flow/login.rb | 4 +- qa/qa/flow/pipeline.rb | 8 + qa/qa/flow/saml.rb | 2 - qa/qa/page/component/dropdown.rb | 18 +- qa/qa/page/component/groups_filter.rb | 12 +- qa/qa/page/group/sub_menus/common.rb | 2 +- qa/qa/page/main/login.rb | 1 + qa/qa/page/main/menu.rb | 60 +- qa/qa/page/merge_request/new.rb | 2 + qa/qa/page/merge_request/show.rb | 26 +- qa/qa/page/profile/menu.rb | 24 +- qa/qa/page/project/job/show.rb | 8 + qa/qa/page/project/monitor/alerts/index.rb | 12 + qa/qa/page/project/monitor/alerts/show.rb | 25 + qa/qa/page/project/monitor/incidents/index.rb | 12 +- qa/qa/page/project/pipeline/show.rb | 11 + qa/qa/page/project/settings/alerts.rb | 5 +- qa/qa/page/project/show.rb | 2 + qa/qa/page/project/sub_menus/common.rb | 2 +- qa/qa/page/project/sub_menus/monitor.rb | 16 + qa/qa/page/project/sub_menus/repository.rb | 2 +- qa/qa/page/user/show.rb | 6 +- qa/qa/resource/api_fabricator.rb | 122 +- qa/qa/resource/base.rb | 35 +- qa/qa/resource/ci_cd_settings.rb | 47 + .../integrations/web_hook/smockerable.rb | 41 + qa/qa/resource/project_web_hook.rb | 44 +- qa/qa/resource/runner_base.rb | 4 +- qa/qa/resource/snippet.rb | 4 +- qa/qa/resource/web_hook_base.rb | 46 + qa/qa/runtime/allure_report.rb | 19 +- qa/qa/runtime/browser.rb | 1 + qa/qa/runtime/env.rb | 18 +- qa/qa/service/cluster_provider/gcloud.rb | 10 +- qa/qa/service/docker_run/gitlab_runner.rb | 2 +- qa/qa/service/kubernetes_cluster.rb | 14 +- .../import/import_github_repo_spec.rb | 7 +- .../integrations/webhook_events_spec.rb | 134 +- .../migration/gitlab_migration_issue_spec.rb | 10 +- .../gitlab_migration_large_project_spec.rb | 4 - .../migration/gitlab_migration_mr_spec.rb | 6 +- .../gitlab_migration_project_spec.rb | 2 +- .../1_manage/user_inherited_access_spec.rb | 31 +- .../api/3_create/repository/files_spec.rb | 1 - ...ce_with_forward_pipeline_variables_spec.rb | 2 +- .../api/4_verify/file_variable_spec.rb | 2 +- .../import/import_github_repo_spec.rb | 5 +- .../user/follow_user_activity_spec.rb | 2 +- .../rebase_merge_request_spec.rb | 8 +- .../project_based_content_creation_spec.rb | 8 +- .../push_mirroring_lfs_over_http_spec.rb | 6 +- .../snippet/snippet_index_page_spec.rb | 4 +- .../web_ide/add_file_template_spec.rb | 13 +- .../add_new_directory_in_web_ide_spec.rb | 11 +- .../create_first_file_in_web_ide_spec.rb | 11 +- .../web_ide/link_to_line_in_web_ide_spec.rb | 8 +- .../web_ide/open_fork_in_web_ide_spec.rb | 84 - .../open_web_ide_from_diff_tab_spec.rb | 11 +- .../web_ide/review_merge_request_spec.rb | 11 +- .../server_hooks_custom_error_message_spec.rb | 14 +- .../upload_new_file_in_web_ide_spec.rb | 10 +- ...acts_across_parent_child_pipelines_spec.rb | 448 +++ ...ing_job_artifacts_across_pipelines_spec.rb | 170 ++ .../add_remove_ci_variable_spec.rb | 2 +- .../ci_variable/custom_variable_spec.rb | 7 +- .../pipeline_with_protected_variable_spec.rb | 2 +- .../ci_variable/prefill_variables_spec.rb | 7 +- .../raw_variables_defined_in_yaml_spec.rb | 2 +- ...en_forward_pipeline_variables_true_spec.rb | 2 +- ...n_forward_pipeline_variables_false_spec.rb | 2 +- ...tiple_files_from_multiple_projects_spec.rb | 154 ++ .../pipeline/locked_artifacts_spec.rb | 2 +- ...variables_to_downstream_via_bridge_spec.rb | 2 +- .../testing/endpoint_coverage_spec.rb | 2 +- .../testing/view_code_coverage_spec.rb | 2 +- .../package_registry/helm_registry_spec.rb | 7 +- .../maven/maven_group_level_spec.rb | 105 +- .../maven_gradle_repository_spec.rb | 7 +- .../nuget/nuget_group_level_spec.rb | 21 +- .../deploy_key/clone_using_deploy_key_spec.rb | 1 - ...overy_alert_resolves_correct_alert_spec.rb | 48 + .../recovery_alert_closes_correct_incident.rb | 49 + .../import/github_import_shared_context.rb | 1 + .../import/gitlab_project_migration_common.rb | 1 - .../packages_registry_shared_context.rb | 14 + .../sends_and_resolves_test_alerts.rb | 73 + qa/qa/specs/helpers/context_selector.rb | 6 +- qa/qa/support/json_formatter.rb | 8 + qa/qa/support/loglinking.rb | 22 +- qa/qa/support/matchers/have_matcher.rb | 3 + qa/qa/tools/test_resource_data_processor.rb | 2 +- qa/qa/vendor/smocker/event_payload.rb | 61 - qa/qa/vendor/smocker/history_response.rb | 7 - qa/qa/vendor/smocker/smocker_api.rb | 8 + .../fixtures/ff/async_commit_diff_files.yml | 8 +- qa/spec/fixtures/ff/bulk_import_projects.yml | 8 - qa/spec/resource/api_fabricator_spec.rb | 2 +- qa/spec/resource/project_web_hook_spec.rb | 70 + qa/spec/runtime/env_spec.rb | 16 +- .../specs/helpers/context_selector_spec.rb | 144 + qa/spec/specs/helpers/feature_flag_spec.rb | 64 + qa/spec/tools/ci/ff_changes_spec.rb | 8 +- qa/spec/vendor/smocker_api_spec.rb | 18 + .../missing_dictionary_file.rb | 59 + rubocop/cop/gitlab/feature_available_usage.rb | 2 +- rubocop/cop/gitlab/json.rb | 6 +- rubocop/cop/gitlab/mark_used_feature_flags.rb | 24 - rubocop/cop/graphql/id_type.rb | 2 +- rubocop/cop/migration/add_reference.rb | 2 +- .../rspec/factory_bot/inline_association.rb | 2 +- rubocop/rubocop-ruby30.yml | 4 +- rubocop/rubocop-ruby31.yml | 10 + scripts/allowed_warnings.txt | 9 + scripts/api/base.rb | 28 + scripts/api/cancel_pipeline.rb | 14 +- scripts/api/commit_merge_requests.rb | 19 +- scripts/api/create_issue.rb | 24 +- scripts/api/create_issue_discussion.rb | 24 +- .../api/create_merge_request_discussion.rb | 33 + scripts/api/find_issues.rb | 24 +- scripts/api/get_job_id.rb | 19 +- scripts/api/get_package_and_test_job.rb | 39 + scripts/api/pipeline_failed_jobs.rb | 21 +- scripts/api/update_issue.rb | 29 + ...construct-release-environments-versions.rb | 37 + scripts/database/schema_validator.rb | 34 + scripts/db_tasks | 3 +- .../decomposition/generate-loose-foreign-key | 11 +- scripts/frontend/startup_css/constants.js | 3 + scripts/generate-e2e-pipeline | 3 +- ...rate-failed-package-and-test-mr-message.rb | 79 + scripts/generate-rspec-foss-impact-pipeline | 66 - scripts/generate_rspec_pipeline.rb | 176 ++ scripts/gitlab_component_helpers.sh | 31 + scripts/lint-docs-blueprints.rb | 4 +- .../pipeline/create_test_failure_issues.rb | 224 ++ scripts/pipeline_test_report_builder.rb | 10 +- scripts/prepare_build.sh | 6 + scripts/review_apps/automated_cleanup.rb | 14 +- scripts/setup-test-env | 59 +- scripts/trigger-build.rb | 1 + scripts/utils.sh | 14 +- scripts/validate_schema_changes | 7 + spec/commands/sidekiq_cluster/cli_spec.rb | 5 +- .../inject_enterprise_edition_module_spec.rb | 2 +- spec/config/object_store_settings_spec.rb | 2 +- spec/config/settings_spec.rb | 16 +- spec/config/smime_signature_settings_spec.rb | 2 +- .../helpers/contract_source_helper.rb | 5 +- .../provider/contract_source_helper_spec.rb | 8 +- spec/contracts/publish-contracts.sh | 3 +- .../application_settings_controller_spec.rb | 2 +- .../admin/applications_controller_spec.rb | 102 +- .../admin/cohorts_controller_spec.rb | 1 - .../admin/dev_ops_report_controller_spec.rb | 1 - .../admin/integrations_controller_spec.rb | 6 +- .../admin/runners_controller_spec.rb | 57 +- .../admin/sessions_controller_spec.rb | 25 +- .../admin/spam_logs_controller_spec.rb | 10 +- .../admin/usage_trends_controller_spec.rb | 1 - .../admin/users_controller_spec.rb | 23 +- .../application_controller_spec.rb | 23 +- .../value_stream_actions_spec.rb | 3 +- .../concerns/confirm_email_warning_spec.rb | 2 +- .../content_security_policy_patch_spec.rb | 2 +- .../concerns/continue_params_spec.rb | 5 +- ...er_with_cross_project_access_check_spec.rb | 11 +- spec/controllers/concerns/kas_cookie_spec.rb | 55 + .../product_analytics_tracking_spec.rb | 24 +- .../concerns/renders_commits_spec.rb | 2 +- .../concerns/send_file_upload_spec.rb | 2 +- .../concerns/sorting_preference_spec.rb | 41 +- .../confirmations_controller_spec.rb | 94 +- .../dashboard/projects_controller_spec.rb | 46 + spec/controllers/every_controller_spec.rb | 3 +- .../explore/groups_controller_spec.rb | 4 +- spec/controllers/graphql_controller_spec.rb | 66 +- .../groups/children_controller_spec.rb | 12 + ...cy_proxy_for_containers_controller_spec.rb | 2 +- .../groups/group_members_controller_spec.rb | 41 +- .../groups/milestones_controller_spec.rb | 47 +- .../settings/applications_controller_spec.rb | 135 +- .../groups/variables_controller_spec.rb | 10 +- spec/controllers/help_controller_spec.rb | 18 +- .../import/bitbucket_controller_spec.rb | 33 +- .../bitbucket_server_controller_spec.rb | 2 +- .../import/bulk_imports_controller_spec.rb | 18 +- .../import/fogbugz_controller_spec.rb | 5 +- .../import/gitea_controller_spec.rb | 2 +- .../import/github_controller_spec.rb | 63 +- .../import/gitlab_controller_spec.rb | 2 +- .../import/manifest_controller_spec.rb | 4 +- .../oauth/applications_controller_spec.rb | 54 +- .../oauth/authorizations_controller_spec.rb | 3 +- .../omniauth_callbacks_controller_spec.rb | 75 +- spec/controllers/passwords_controller_spec.rb | 3 +- .../two_factor_auths_controller_spec.rb | 2 +- spec/controllers/profiles_controller_spec.rb | 32 +- .../projects/artifacts_controller_spec.rb | 34 +- .../projects/badges_controller_spec.rb | 12 +- .../projects/blame_controller_spec.rb | 10 +- .../projects/blob_controller_spec.rb | 54 +- .../projects/branches_controller_spec.rb | 294 +- .../projects/clusters_controller_spec.rb | 11 +- .../projects/commit_controller_spec.rb | 208 +- .../projects/commits_controller_spec.rb | 78 +- .../cycle_analytics_controller_spec.rb | 7 +- .../projects/deploy_keys_controller_spec.rb | 10 +- .../projects/deployments_controller_spec.rb | 4 +- .../designs/resized_image_controller_spec.rb | 11 +- .../projects/environments_controller_spec.rb | 131 +- .../projects/feature_flags_controller_spec.rb | 11 +- .../projects/find_file_controller_spec.rb | 15 +- .../projects/forks_controller_spec.rb | 7 +- .../projects/grafana_api_controller_spec.rb | 16 +- .../projects/graphs_controller_spec.rb | 1 - .../projects/group_links_controller_spec.rb | 2 +- .../projects/hooks_controller_spec.rb | 12 +- .../projects/imports_controller_spec.rb | 14 +- .../projects/issues_controller_spec.rb | 53 +- .../projects/jobs_controller_spec.rb | 21 +- .../projects/mattermosts_controller_spec.rb | 20 +- .../conflicts_controller_spec.rb | 80 +- .../creations_controller_spec.rb | 43 +- .../merge_requests/diffs_controller_spec.rb | 19 +- .../merge_requests/drafts_controller_spec.rb | 16 +- .../merge_requests_controller_spec.rb | 117 +- .../projects/notes_controller_spec.rb | 57 +- .../projects/pages_controller_spec.rb | 137 +- .../pipeline_schedules_controller_spec.rb | 6 +- .../projects/pipelines_controller_spec.rb | 103 +- .../prometheus/alerts_controller_spec.rb | 5 +- .../projects/raw_controller_spec.rb | 10 +- .../projects/refs_controller_spec.rb | 13 +- .../registry/repositories_controller_spec.rb | 16 +- .../projects/registry/tags_controller_spec.rb | 29 +- .../settings/ci_cd_controller_spec.rb | 15 +- .../merge_requests_controller_spec.rb | 11 +- .../snippets/blobs_controller_spec.rb | 17 +- .../projects/snippets_controller_spec.rb | 11 +- .../projects/tree_controller_spec.rb | 38 +- spec/controllers/projects_controller_spec.rb | 142 +- .../registrations/welcome_controller_spec.rb | 28 +- .../registrations_controller_spec.rb | 229 +- .../repositories/git_http_controller_spec.rb | 67 +- spec/controllers/search_controller_spec.rb | 13 +- spec/controllers/sessions_controller_spec.rb | 48 +- .../snippets/blobs_controller_spec.rb | 8 +- spec/db/schema_spec.rb | 32 +- spec/deprecation_warnings.rb | 21 + .../application_experiment_spec.rb | 8 +- spec/factories/abuse_reports.rb | 4 + .../achievements/user_achievements.rb | 14 + spec/factories/airflow/dags.rb | 8 - spec/factories/bulk_import/batch_trackers.rb | 37 + spec/factories/bulk_import/export_batches.rb | 23 + spec/factories/chat_names.rb | 1 - spec/factories/ci/builds.rb | 12 +- spec/factories/ci/catalog/resources.rb | 7 + spec/factories/ci/runner_machine_builds.rb | 8 + spec/factories/ci/runners.rb | 6 + spec/factories/clusters/applications/helm.rb | 9 - spec/factories/clusters/clusters.rb | 3 - .../postgres_async_constraint_validation.rb | 17 + .../postgres_async_foreign_key_validation.rb | 9 - spec/factories/integrations.rb | 21 +- spec/factories/notes.rb | 5 + .../packages/debian/component_file.rb | 7 + .../packages/debian/file_metadatum.rb | 16 +- spec/factories/packages/package_files.rb | 29 +- spec/factories/packages/packages.rb | 1 + .../project_error_tracking_settings.rb | 5 + spec/factories/project_hooks.rb | 2 +- spec/factories/projects.rb | 27 +- spec/factories/serverless/domain.rb | 11 - spec/factories/serverless/domain_cluster.rb | 17 - .../service_desk/custom_email_verification.rb | 8 + spec/factories/users.rb | 5 + spec/factories/users/banned_users.rb | 7 + spec/factories/work_items.rb | 7 + spec/fast_spec_helper.rb | 26 +- spec/features/abuse_report_spec.rb | 19 - spec/features/action_cable_logging_spec.rb | 2 +- .../admin/admin_abuse_reports_spec.rb | 237 +- spec/features/admin/admin_appearance_spec.rb | 2 +- .../admin/admin_browse_spam_logs_spec.rb | 2 +- spec/features/admin/admin_deploy_keys_spec.rb | 2 +- .../features/admin/admin_health_check_spec.rb | 6 +- spec/features/admin/admin_mode/login_spec.rb | 22 +- spec/features/admin/admin_mode/logout_spec.rb | 2 +- .../features/admin/admin_mode/workers_spec.rb | 2 +- spec/features/admin/admin_mode_spec.rb | 2 +- spec/features/admin/admin_projects_spec.rb | 25 + spec/features/admin/admin_runners_spec.rb | 27 +- .../admin_sees_background_migrations_spec.rb | 2 +- spec/features/admin/admin_settings_spec.rb | 18 +- spec/features/admin/admin_system_info_spec.rb | 2 +- .../admin_users_impersonation_tokens_spec.rb | 2 +- .../features/admin/broadcast_messages_spec.rb | 73 + spec/features/admin_variables_spec.rb | 16 +- spec/features/boards/boards_spec.rb | 13 +- spec/features/boards/new_issue_spec.rb | 50 +- .../breadcrumbs_schema_markup_spec.rb | 2 +- spec/features/calendar_spec.rb | 425 ++- .../callouts/registration_enabled_spec.rb | 2 +- spec/features/commit_spec.rb | 42 +- spec/features/contextual_sidebar_spec.rb | 69 - ...ith_external_authorization_service_spec.rb | 10 +- spec/features/dashboard/groups_list_spec.rb | 7 + spec/features/dashboard/projects_spec.rb | 24 +- spec/features/dashboard/root_explore_spec.rb | 6 +- spec/features/dashboard/shortcuts_spec.rb | 2 +- spec/features/dashboard/snippets_spec.rb | 7 + ...splay_system_header_and_footer_bar_spec.rb | 2 +- spec/features/expand_collapse_diffs_spec.rb | 14 +- spec/features/explore/navbar_spec.rb | 13 + ...uently_visited_projects_and_groups_spec.rb | 2 +- spec/features/group_variables_spec.rb | 15 +- spec/features/groups/board_spec.rb | 6 +- spec/features/groups/group_settings_spec.rb | 11 +- .../import_export/connect_instance_spec.rb | 2 +- .../groups/members/sort_members_spec.rb | 2 +- spec/features/groups/new_group_page_spec.rb | 50 +- .../groups/settings/access_tokens_spec.rb | 2 +- .../settings/packages_and_registries_spec.rb | 8 + spec/features/help_dropdown_spec.rb | 2 +- spec/features/help_pages_spec.rb | 2 +- .../incident_timeline_events_spec.rb | 3 +- .../user_views_alert_details_spec.rb | 34 + spec/features/invites_spec.rb | 7 +- spec/features/issuables/issuable_list_spec.rb | 2 +- spec/features/issues/discussion_lock_spec.rb | 2 +- spec/features/issues/form_spec.rb | 66 +- spec/features/issues/issue_detail_spec.rb | 24 + spec/features/issues/issue_sidebar_spec.rb | 2 - spec/features/issues/move_spec.rb | 3 +- .../issues/user_comments_on_issue_spec.rb | 2 + ...r_creates_branch_and_merge_request_spec.rb | 20 + spec/features/issues/user_edits_issue_spec.rb | 22 +- spec/features/markdown/observability_spec.rb | 132 +- .../user_comments_on_diff_spec.rb | 2 +- .../user_comments_on_merge_request_spec.rb | 2 + .../user_creates_image_diff_notes_spec.rb | 2 +- .../user_edits_assignees_sidebar_spec.rb | 2 - .../user_edits_reviewers_sidebar_spec.rb | 2 - .../user_reverts_merge_request_spec.rb | 2 +- .../user_sees_discussions_navigation_spec.rb | 2 +- .../user_sees_real_time_reviewers_spec.rb | 24 + .../user_views_open_merge_request_spec.rb | 12 + .../user_lists_merge_requests_spec.rb | 39 +- spec/features/monitor_sidebar_link_spec.rb | 2 +- spec/features/nav/new_nav_toggle_spec.rb | 2 +- spec/features/nav/top_nav_responsive_spec.rb | 22 +- spec/features/nav/top_nav_spec.rb | 14 +- ...late_new_pipeline_vars_with_params_spec.rb | 2 +- spec/features/profiles/chat_names_spec.rb | 5 +- spec/features/profiles/gpg_keys_spec.rb | 3 +- .../profiles/user_creates_saved_reply_spec.rb | 29 + .../profiles/user_deletes_saved_reply_spec.rb | 27 + .../profiles/user_edit_profile_spec.rb | 20 + .../profiles/user_updates_saved_reply_spec.rb | 28 + .../profiles/user_uses_saved_reply_spec.rb | 29 + ..._visits_profile_authentication_log_spec.rb | 2 +- spec/features/project_group_variables_spec.rb | 2 +- spec/features/project_variables_spec.rb | 15 +- spec/features/projects/badges/list_spec.rb | 39 +- spec/features/projects/blobs/blame_spec.rb | 47 +- .../features/projects/blobs/blob_show_spec.rb | 8 +- spec/features/projects/branches_spec.rb | 24 + spec/features/projects/ci/editor_spec.rb | 2 +- spec/features/projects/ci/lint_spec.rb | 2 +- .../projects/commit/cherry_pick_spec.rb | 2 +- .../commit/user_reverts_commit_spec.rb | 2 +- .../integrations/apple_app_store_spec.rb | 24 + .../projects/integrations/google_play_spec.rb | 25 + ...activates_mattermost_slash_command_spec.rb | 2 +- ...user_activates_slack_notifications_spec.rb | 1 - ...user_activates_slack_slash_command_spec.rb | 2 +- ...triggers_manual_job_with_variables_spec.rb | 2 +- spec/features/projects/jobs_spec.rb | 13 +- .../features/projects/members/sorting_spec.rb | 2 +- spec/features/projects/navbar_spec.rb | 1 + spec/features/projects/new_project_spec.rb | 49 + .../user_edits_lets_encrypt_settings_spec.rb | 12 +- .../projects/pipeline_schedules_spec.rb | 2 +- .../projects/pipelines/pipeline_spec.rb | 44 + .../projects/pipelines/pipelines_spec.rb | 6 +- .../projects/settings/access_tokens_spec.rb | 2 +- .../settings/monitor_settings_spec.rb | 4 +- .../registry_settings_cleanup_tags_spec.rb | 9 + .../settings/registry_settings_spec.rb | 9 + .../user_changes_project_visibility_spec.rb | 19 - .../work_items/work_item_children_spec.rb | 43 + .../projects/work_items/work_item_spec.rb | 58 + spec/features/protected_tags_spec.rb | 34 +- .../user_uses_header_search_field_spec.rb | 18 +- spec/features/security/admin_access_spec.rb | 2 +- .../security/dashboard_access_spec.rb | 2 +- .../security/group/internal_access_spec.rb | 2 +- .../security/group/private_access_spec.rb | 2 +- .../security/group/public_access_spec.rb | 2 +- .../security/project/internal_access_spec.rb | 2 +- .../security/project/private_access_spec.rb | 2 +- .../security/project/public_access_spec.rb | 2 +- .../project/snippet/internal_access_spec.rb | 2 +- .../project/snippet/private_access_spec.rb | 2 +- .../project/snippet/public_access_spec.rb | 2 +- spec/features/signed_commits_spec.rb | 2 +- spec/features/snippets/show_spec.rb | 5 +- spec/features/topic_show_spec.rb | 2 +- spec/features/u2f_spec.rb | 216 -- spec/features/unsubscribe_links_spec.rb | 2 +- spec/features/users/login_spec.rb | 204 +- spec/features/users/show_spec.rb | 34 +- spec/features/users/signup_spec.rb | 9 +- spec/features/webauthn_spec.rb | 261 +- spec/features/whats_new_spec.rb | 6 +- spec/features/work_items/work_item_spec.rb | 37 - spec/finders/abuse_reports_finder_spec.rb | 111 +- spec/finders/group_members_finder_spec.rb | 52 + .../accepting_project_imports_finder_spec.rb | 105 + .../finders/groups/user_groups_finder_spec.rb | 20 +- spec/finders/merge_requests_finder_spec.rb | 18 + spec/finders/milestones_finder_spec.rb | 92 +- spec/finders/serverless_domain_finder_spec.rb | 103 - spec/fixtures/api/schemas/cluster_status.json | 11 +- .../api/schemas/entities/discussion.json | 5 +- .../schemas/internal/pages/lookup_path.json | 3 +- .../api/schemas/public_api/v4/notes.json | 5 +- spec/fixtures/auth_key.p8 | 16 + spec/fixtures/diagram.drawio.svg | 38 + spec/fixtures/lib/gitlab/email/basic.html | 6 +- .../gitlab/import_export/complex/project.json | 133 +- .../complex/tree/project/ci_pipelines.ndjson | 8 +- .../complex/tree/project/commit_notes.ndjson | 2 + spec/fixtures/packages/debian/README.md | 2 +- .../sample-ddeb_1.2.3~alpha2_amd64.ddeb | Bin 0 -> 1068 bytes .../packages/debian/sample/debian/.gitignore | 2 +- .../packages/debian/sample/debian/control | 4 + .../packages/debian/sample/debian/rules | 7 + .../packages/debian/sample_1.2.3~alpha2.dsc | 9 +- .../debian/sample_1.2.3~alpha2.tar.xz | Bin 864 -> 964 bytes .../sample_1.2.3~alpha2_amd64.buildinfo | 306 ++- .../debian/sample_1.2.3~alpha2_amd64.changes | 21 +- spec/fixtures/service_account.json | 12 + spec/fixtures/structure.sql | 8 + spec/fixtures/work_items_invalid_types.csv | 4 + spec/fixtures/work_items_missing_header.csv | 3 + spec/fixtures/work_items_valid.csv | 3 + spec/fixtures/work_items_valid_types.csv | 3 + spec/frontend/.eslintrc.yml | 1 + .../create_mock_source_editor_extension.js | 12 + .../__helpers__/experimentation_helper.js | 7 - spec/frontend/__helpers__/gon_helper.js | 5 + .../keep_alive_component_helper_spec.js | 4 - .../frontend/__helpers__/shared_test_setup.js | 16 +- .../__helpers__/vue_mock_directive.js | 32 +- .../__helpers__/vuex_action_helper.js | 2 + .../__helpers__/vuex_action_helper_spec.js | 14 + spec/frontend/__mocks__/@gitlab/ui.js | 18 +- spec/frontend/__mocks__/lodash/debounce.js | 19 +- spec/frontend/__mocks__/lodash/throttle.js | 2 +- .../abuse_category_selector_spec.js | 4 - .../components/expires_at_field_spec.js | 4 - .../components/new_access_token_app_spec.js | 5 +- .../access_tokens/components/token_spec.js | 4 - .../components/tokens_app_spec.js | 4 - .../add_context_commits_modal_spec.js | 4 - .../components/review_tab_container_spec.js | 4 - .../store/actions_spec.js | 2 +- .../components/abuse_report_row_spec.js | 43 + .../abuse_reports_filtered_search_bar_spec.js | 214 ++ .../abuse_reports/components/app_spec.js | 104 + .../frontend/admin/abuse_reports/mock_data.js | 14 + .../admin/abuse_reports/utils_spec.js | 13 + .../components/devops_score_callout_spec.js | 4 - .../components/form_spec.js | 4 - .../network_outbound_spec.js | 70 + .../components/delete_application_spec.js | 1 - .../components/database_listbox_spec.js | 4 - .../components/base_spec.js | 5 +- .../components/message_form_spec.js | 23 +- .../components/messages_table_spec.js | 4 - .../deploy_keys/components/table_spec.js | 10 +- .../components/signup_checkbox_spec.js | 4 - .../components/signup_form_spec.js | 2 - .../statistics_panel/components/app_spec.js | 4 - .../topics/components/remove_avatar_spec.js | 6 +- .../topics/components/topic_select_spec.js | 1 - .../users/components/actions/actions_spec.js | 5 - .../admin/users/components/app_spec.js | 5 - .../modals/delete_user_modal_spec.js | 5 - .../users/components/user_actions_spec.js | 7 +- .../users/components/user_avatar_spec.js | 7 +- .../admin/users/components/user_date_spec.js | 5 - .../users/components/users_table_spec.js | 11 +- spec/frontend/admin/users/index_spec.js | 4 - .../airflow/dags/components/dags_spec.js | 115 - .../airflow/dags/components/mock_data.js | 67 - .../components/alert_management_table_spec.js | 2 +- .../frontend/{flash_spec.js => alert_spec.js} | 2 +- .../__snapshots__/alerts_form_spec.js.snap | 33 +- .../alerts_settings_wrapper_spec.js | 12 +- .../components/activity_chart_spec.js | 5 - .../analytics/cycle_analytics/base_spec.js | 33 +- .../cycle_analytics/filter_bar_spec.js | 1 - .../formatted_stage_count_spec.js | 4 - .../analytics/cycle_analytics/mock_data.js | 2 + .../cycle_analytics/path_navigation_spec.js | 2 - .../cycle_analytics/stage_table_spec.js | 6 - .../cycle_analytics/store/actions_spec.js | 31 +- .../cycle_analytics/store/mutations_spec.js | 13 +- .../cycle_analytics/total_time_spec.js | 4 - .../analytics/cycle_analytics/utils_spec.js | 23 +- .../value_stream_filters_spec.js | 5 - .../value_stream_metrics_spec.js | 29 +- .../components/service_ping_disabled_spec.js | 4 - .../shared/components/daterange_spec.js | 15 +- .../shared/components/metric_popover_spec.js | 4 - .../shared/components/metric_tile_spec.js | 4 - .../projects_dropdown_filter_spec.js | 4 - spec/frontend/analytics/shared/utils_spec.js | 28 + .../usage_trends/components/app_spec.js | 5 - .../components/usage_counts_spec.js | 4 - .../usage_trends_count_chart_spec.js | 5 - .../components/users_chart_spec.js | 5 - .../api/alert_management_alerts_api_spec.js | 3 - spec/frontend/api/groups_api_spec.js | 13 +- spec/frontend/api/packages_api_spec.js | 12 +- spec/frontend/api/projects_api_spec.js | 3 - spec/frontend/api/tags_api_spec.js | 3 - spec/frontend/api/user_api_spec.js | 3 - spec/frontend/api_spec.js | 25 +- spec/frontend/approvals/mock_data.js | 10 + .../artifacts/components/artifact_row_spec.js | 39 +- .../components/artifacts_bulk_delete_spec.js | 96 + .../artifacts_table_row_details_spec.js | 32 +- .../components/feedback_banner_spec.js | 4 - .../components/job_artifacts_table_spec.js | 206 +- .../artifacts/components/job_checkbox_spec.js | 71 + .../keep_latest_artifact_checkbox_spec.js | 2 - .../authentication/u2f/authenticate_spec.js | 104 - .../authentication/u2f/mock_u2f_device.js | 23 - .../authentication/u2f/register_spec.js | 84 - spec/frontend/authentication/u2f/util_spec.js | 61 - .../webauthn/components/registration_spec.js | 255 ++ .../authentication/webauthn/error_spec.js | 13 +- .../authentication/webauthn/util_spec.js | 31 +- spec/frontend/awards_handler_spec.js | 5 - .../badges/components/badge_form_spec.js | 1 - .../badges/components/badge_list_row_spec.js | 1 - .../badges/components/badge_list_spec.js | 4 - .../badges/components/badge_settings_spec.js | 4 - spec/frontend/badges/components/badge_spec.js | 4 - .../components/diff_file_drafts_spec.js | 4 - .../components/draft_note_spec.js | 4 - .../components/drafts_count_spec.js | 4 - .../components/preview_dropdown_spec.js | 19 +- .../components/preview_item_spec.js | 4 - .../components/review_bar_spec.js | 4 - .../components/submit_dropdown_spec.js | 1 - .../modules/batch_comments/actions_spec.js | 6 + .../modules/batch_comments/mutations_spec.js | 10 + .../diagram_performance_warning_spec.js | 4 - .../behaviors/components/json_table_spec.js | 4 - .../behaviors/copy_to_clipboard_spec.js | 2 +- .../markdown/highlight_current_user_spec.js | 10 - .../markdown/render_observability_spec.js | 61 +- spec/frontend/blame/blame_redirect_spec.js | 4 +- spec/frontend/blame/streaming/index_spec.js | 110 + .../components/blob_content_error_spec.js | 4 - .../blob/components/blob_content_spec.js | 4 - .../blob/components/blob_edit_header_spec.js | 4 - .../blob_header_default_actions_spec.js | 4 - .../components/blob_header_filepath_spec.js | 4 - .../blob/components/blob_header_spec.js | 170 +- .../blob_header_viewer_switcher_spec.js | 51 +- .../blob/components/table_contents_spec.js | 1 - spec/frontend/blob/csv/csv_viewer_spec.js | 4 - .../blob/notebook/notebook_viever_spec.js | 2 - spec/frontend/blob/pdf/pdf_viewer_spec.js | 5 - .../blob/pipeline_tour_success_modal_spec.js | 1 - .../components/popover_spec.js | 5 - spec/frontend/blob_edit/blob_bundle_spec.js | 4 +- spec/frontend/blob_edit/edit_blob_spec.js | 2 +- spec/frontend/boards/board_card_inner_spec.js | 8 +- spec/frontend/boards/board_list_helper.js | 1 + spec/frontend/boards/board_list_spec.js | 4 - .../board_add_new_column_form_spec.js | 124 +- .../components/board_add_new_column_spec.js | 61 +- .../board_add_new_column_trigger_spec.js | 6 +- .../boards/components/board_app_spec.js | 3 +- .../boards/components/board_card_spec.js | 2 - .../boards/components/board_column_spec.js | 6 +- .../board_configuration_options_spec.js | 4 - .../components/board_content_sidebar_spec.js | 4 - .../boards/components/board_content_spec.js | 15 +- .../components/board_filtered_search_spec.js | 28 +- .../boards/components/board_form_spec.js | 77 +- .../components/board_list_header_spec.js | 104 +- .../boards/components/board_new_issue_spec.js | 4 - .../boards/components/board_new_item_spec.js | 4 - .../components/board_settings_sidebar_spec.js | 4 +- .../boards/components/board_top_bar_spec.js | 19 +- .../boards/components/boards_selector_spec.js | 11 +- .../boards/components/config_toggle_spec.js | 4 - .../issue_board_filtered_search_spec.js | 16 +- .../boards/components/issue_due_date_spec.js | 4 - .../components/issue_time_estimate_spec.js | 4 - .../boards/components/item_count_spec.js | 8 - .../sidebar/board_editable_item_spec.js | 5 - .../board_sidebar_time_tracker_spec.js | 5 - .../sidebar/board_sidebar_title_spec.js | 2 - .../boards/components/toggle_focus_spec.js | 6 +- spec/frontend/boards/mock_data.js | 4 + spec/frontend/boards/project_select_spec.js | 5 - spec/frontend/boards/stores/actions_spec.js | 20 +- spec/frontend/boards/stores/getters_spec.js | 8 - .../components/delete_branch_button_spec.js | 4 - .../components/delete_branch_modal_spec.js | 4 - .../components/delete_merged_branches_spec.js | 6 +- .../components/divergence_graph_spec.js | 4 - .../branches/components/graph_bar_spec.js | 4 - spec/frontend/captcha/captcha_modal_spec.js | 68 +- .../ci/ci_lint/components/ci_lint_spec.js | 1 - .../components/ci_admin_variables_spec.js | 4 - .../ci_environments_dropdown_spec.js | 4 - .../components/ci_group_variables_spec.js | 4 - .../components/ci_project_variables_spec.js | 4 - .../components/ci_variable_modal_spec.js | 4 - .../components/ci_variable_settings_spec.js | 24 +- .../components/ci_variable_shared_spec.js | 604 ++-- .../components/ci_variable_table_spec.js | 209 +- .../code_snippet_alert_spec.js | 4 - .../components/commit/commit_form_spec.js | 4 - .../components/commit/commit_section_spec.js | 4 - .../drawer/cards/first_pipeline_card_spec.js | 4 - .../drawer/cards/getting_started_card_spec.js | 4 - .../pipeline_config_reference_card_spec.js | 4 - .../cards/visualize_and_lint_card_spec.js | 4 - .../drawer/pipeline_editor_drawer_spec.js | 4 - .../drawer/ui/demo_job_pill_spec.js | 4 - .../editor/ci_config_merged_preview_spec.js | 4 - .../editor/ci_editor_header_spec.js | 1 - .../components/editor/text_editor_spec.js | 74 +- .../file-nav/branch_switcher_spec.js | 4 - .../file-nav/pipeline_editor_file_nav_spec.js | 4 - .../components/file-tree/container_spec.js | 3 +- .../components/file-tree/file_item_spec.js | 4 - .../header/pipeline_editor_header_spec.js | 5 - .../components/header/pipeline_status_spec.js | 1 - .../header/validation_segment_spec.js | 102 +- .../accordion_items/image_item_spec.js | 39 + .../accordion_items/job_setup_item_spec.js | 61 + .../job_assistant_drawer_spec.js | 112 +- .../components/lint/ci_lint_results_spec.js | 4 - .../components/lint/ci_lint_warnings_spec.js | 5 - .../components/pipeline_editor_tabs_spec.js | 1 + .../popovers/file_tree_popover_spec.js | 1 - .../validate_pipeline_popover_spec.js | 4 - .../popovers/walkthrough_popover_spec.js | 4 - .../ui/confirm_unsaved_changes_dialog_spec.js | 4 +- .../ui/pipeline_editor_empty_state_spec.js | 4 - .../components/validate/ci_validate_spec.js | 4 - spec/frontend/ci/pipeline_editor/mock_data.js | 87 +- .../pipeline_editor_app_spec.js | 17 +- .../pipeline_editor_home_spec.js | 1 - .../components/pipeline_new_form_spec.js | 17 +- .../components/refs_dropdown_spec.js | 6 +- spec/frontend/ci/pipeline_new/mock_data.js | 2 + .../delete_pipeline_schedule_modal_spec.js | 4 - .../components/pipeline_schedules_spec.js | 6 +- .../cells/pipeline_schedule_actions_spec.js | 20 +- .../pipeline_schedule_last_pipeline_spec.js | 4 - .../cells/pipeline_schedule_next_run_spec.js | 4 - .../cells/pipeline_schedule_owner_spec.js | 4 - .../cells/pipeline_schedule_target_spec.js | 4 - .../table/pipeline_schedules_table_spec.js | 7 +- .../take_ownership_modal_legacy_spec.js | 14 +- .../ci/pipeline_schedules/mock_data.js | 2 + .../components/codequality_issue_body_spec.js | 5 - .../components/grouped_issues_list_spec.js | 4 - .../components/issue_status_icon_spec.js | 5 - .../ci/reports/components/report_link_spec.js | 4 - .../reports/components/report_section_spec.js | 4 - .../ci/reports/components/summary_row_spec.js | 5 - .../admin_new_runner_app_spec.js | 93 +- .../admin_register_runner_app_spec.js | 122 + .../admin_runner_show_app_spec.js | 5 +- .../admin_runners/admin_runners_app_spec.js | 5 +- .../cells/runner_actions_cell_spec.js | 4 - .../cells/runner_owner_cell_spec.js | 6 +- .../cells/runner_status_cell_spec.js | 4 - .../cells/runner_summary_cell_spec.js | 4 - .../cells/runner_summary_field_spec.js | 6 +- .../__snapshots__/utils_spec.js.snap | 204 ++ .../registration/cli_command_spec.js | 39 + .../registration/platforms_drawer_spec.js | 108 + .../registration_dropdown_spec.js | 4 - .../registration_instructions_spec.js | 293 ++ ...stration_token_reset_dropdown_item_spec.js | 10 +- .../registration/registration_token_spec.js | 4 - .../components/registration/utils_spec.js | 118 + .../components/runner_assigned_item_spec.js | 4 - .../components/runner_bulk_delete_spec.js | 6 +- .../components/runner_create_form_spec.js | 170 ++ .../components/runner_delete_button_spec.js | 12 +- .../runner/components/runner_details_spec.js | 4 - .../components/runner_edit_button_spec.js | 6 +- .../runner_filtered_search_bar_spec.js | 4 - .../runner/components/runner_groups_spec.js | 4 - .../runner/components/runner_header_spec.js | 4 - .../ci/runner/components/runner_jobs_spec.js | 5 +- .../components/runner_jobs_table_spec.js | 4 - .../runner_list_empty_state_spec.js | 14 +- .../ci/runner/components/runner_list_spec.js | 4 - .../runner_membership_toggle_spec.js | 4 - .../components/runner_pagination_spec.js | 4 - .../components/runner_pause_button_spec.js | 10 +- .../components/runner_paused_badge_spec.js | 6 +- .../runner/components/runner_projects_spec.js | 5 +- .../components/runner_status_badge_spec.js | 4 +- .../ci/runner/components/runner_tag_spec.js | 8 +- .../ci/runner/components/runner_tags_spec.js | 4 - .../components/runner_type_badge_spec.js | 6 +- .../components/runner_type_tabs_spec.js | 4 - .../components/runner_update_form_spec.js | 8 +- .../search_tokens/tag_token_spec.js | 5 +- .../stat/runner_single_stat_spec.js | 4 - .../components/stat/runner_stats_spec.js | 4 - .../group_runner_show_app_spec.js | 5 +- .../group_runners/group_runners_app_spec.js | 5 +- .../show_alert_from_local_storage_spec.js | 4 +- spec/frontend/ci/runner/mock_data.js | 8 + .../runner_edit/runner_edit_app_spec.js | 5 +- .../metadata/__snapshots__/modal_spec.js.snap | 4 +- .../components/metadata/button_spec.js | 4 - .../components/metadata/modal_spec.js | 1 - .../components/secure_files_list_spec.js | 13 +- .../components/activity_events_list_spec.js | 4 - .../components/activity_history_item_spec.js | 4 - .../agent_integration_status_row_spec.js | 4 - .../components/create_token_button_spec.js | 6 +- .../components/create_token_modal_spec.js | 1 - .../components/integration_status_spec.js | 4 - .../components/revoke_token_button_spec.js | 3 +- .../clusters/agents/components/show_spec.js | 4 - .../agents/components/token_table_spec.js | 4 - .../__snapshots__/new_cluster_spec.js.snap | 2 +- .../remove_cluster_confirmation_spec.js.snap | 209 ++ .../clusters/components/new_cluster_spec.js | 4 - .../remove_cluster_confirmation_spec.js | 22 +- .../forms/components/integration_form_spec.js | 31 +- .../components/agent_token_spec.js | 4 - .../clusters_list/components/agents_spec.js | 2 - .../components/ancestor_notice_spec.js | 4 - .../components/clusters_actions_spec.js | 5 +- .../components/clusters_empty_state_spec.js | 4 - .../components/clusters_main_view_spec.js | 4 - .../clusters_list/components/clusters_spec.js | 5 +- .../components/clusters_view_all_spec.js | 4 - .../components/delete_agent_button_spec.js | 5 +- .../components/install_agent_modal_spec.js | 1 - .../components/node_error_help_text_spec.js | 4 - .../clusters_list/store/actions_spec.js | 6 +- .../code_navigation/components/app_spec.js | 4 - .../components/popover_spec.js | 4 - .../commit_box_pipeline_mini_graph_spec.js | 8 +- .../commit_pipeline_status_component_spec.js | 11 +- .../commit_box_pipeline_status_spec.js | 8 +- .../commit/components/signature_badge_spec.js | 134 + .../x509_certificate_details_spec.js | 36 + spec/frontend/commit/mock_data.js | 31 + .../commit/pipelines/pipelines_table_spec.js | 118 +- .../components/project_form_group_spec.js | 1 - .../__snapshots__/toolbar_button_spec.js.snap | 2 +- .../bubble_menus/bubble_menu_spec.js | 4 - .../code_block_bubble_menu_spec.js | 4 - .../formatting_bubble_menu_spec.js | 4 - .../bubble_menus/link_bubble_menu_spec.js | 4 - .../bubble_menus/media_bubble_menu_spec.js | 95 +- .../components/content_editor_alert_spec.js | 4 - .../components/content_editor_spec.js | 68 +- .../components/editor_state_observer_spec.js | 4 - .../components/formatting_toolbar_spec.js | 14 +- .../components/loading_indicator_spec.js | 4 - .../components/toolbar_button_spec.js | 4 - .../components/toolbar_image_button_spec.js | 1 - .../components/toolbar_link_button_spec.js | 1 - .../components/toolbar_more_dropdown_spec.js | 40 +- .../components/toolbar_table_button_spec.js | 1 - .../toolbar_text_style_dropdown_spec.js | 4 - .../components/wrappers/code_block_spec.js | 4 - .../components/wrappers/details_spec.js | 4 - .../wrappers/footnote_definition_spec.js | 4 - .../components/wrappers/label_spec.js | 4 - .../wrappers/table_cell_base_spec.js | 8 +- .../wrappers/table_cell_body_spec.js | 4 - .../wrappers/table_cell_header_spec.js | 4 - .../wrappers/table_of_contents_spec.js | 4 - .../extensions/attachment_spec.js | 21 +- .../extensions/drawio_diagram_spec.js | 103 + .../extensions/paste_markdown_spec.js | 2 +- .../render_html_and_json_for_all_examples.js | 2 +- .../services/create_content_editor_spec.js | 16 +- .../gl_api_markdown_deserializer_spec.js | 22 +- .../services/markdown_serializer_spec.js | 9 + .../frontend/content_editor/test_constants.js | 6 + spec/frontend/content_editor/test_utils.js | 2 + .../__snapshots__/contributors_spec.js.snap | 64 +- .../component/contributors_spec.js | 6 +- .../contributors/store/actions_spec.js | 6 +- .../frontend/crm/contact_form_wrapper_spec.js | 1 - spec/frontend/crm/contacts_root_spec.js | 1 - spec/frontend/crm/crm_form_spec.js | 4 - .../crm/organization_form_wrapper_spec.js | 4 - spec/frontend/crm/organizations_root_spec.js | 1 - .../custom_metrics_form_fields_spec.js | 1 - .../components/custom_metrics_form_spec.js | 4 - .../components/deploy_freeze_modal_spec.js | 5 - .../components/deploy_freeze_settings_spec.js | 5 - .../components/deploy_freeze_table_spec.js | 5 - .../deploy_freeze/store/actions_spec.js | 4 +- .../deploy_keys/components/app_spec.js | 1 - .../deploy_keys/components/key_spec.js | 5 - .../deploy_keys/components/keys_panel_spec.js | 5 - .../components/new_deploy_token_spec.js | 51 +- .../components/revoke_button_spec.js | 4 - .../components/delete_button_spec.js | 4 - .../__snapshots__/design_note_spec.js.snap | 2 + .../design_notes/design_discussion_spec.js | 170 +- .../design_note_signed_out_spec.js | 4 - .../design_notes/design_note_spec.js | 56 +- .../design_notes/design_reply_form_spec.js | 251 +- .../toggle_replies_widget_spec.js | 4 - .../components/design_presentation_spec.js | 6 - .../components/design_scaler_spec.js | 5 - .../components/design_sidebar_spec.js | 10 +- .../components/design_todo_button_spec.js | 2 - .../components/image_spec.js | 4 - .../components/list/item_spec.js | 4 - .../toolbar/design_navigation_spec.js | 4 - .../components/toolbar/index_spec.js | 46 +- .../components/upload/button_spec.js | 4 - .../upload/design_version_dropdown_spec.js | 4 - .../mock_data/apollo_mock.js | 112 +- .../design_management/mock_data/project.js | 17 + .../pages/design/index_spec.js | 81 +- .../design_management/pages/index_spec.js | 15 +- .../frontend/design_management/router_spec.js | 6 - .../utils/cache_update_spec.js | 4 +- spec/frontend/diffs/components/app_spec.js | 79 +- .../collapsed_files_warning_spec.js | 4 - .../diffs/components/commit_item_spec.js | 5 - .../compare_dropdown_layout_spec.js | 5 - .../diffs/components/compare_versions_spec.js | 5 - .../components/diff_code_quality_spec.js | 4 - .../diffs/components/diff_content_spec.js | 5 - .../components/diff_discussion_reply_spec.js | 4 - .../diffs/components/diff_discussions_spec.js | 4 - .../diffs/components/diff_file_header_spec.js | 2 - .../diffs/components/diff_file_row_spec.js | 4 - .../diffs/components/diff_file_spec.js | 13 - .../components/diff_gutter_avatars_spec.js | 4 - .../diffs/components/diff_row_spec.js | 4 - .../components/hidden_files_warning_spec.js | 4 - .../components/image_diff_overlay_spec.js | 4 - .../components/merge_conflict_warning_spec.js | 4 - .../diffs/components/no_changes_spec.js | 5 - .../components/settings_dropdown_spec.js | 1 - .../diffs/components/tree_list_spec.js | 83 +- spec/frontend/diffs/store/actions_spec.js | 49 +- spec/frontend/diffs/store/getters_spec.js | 25 +- spec/frontend/diffs/store/mutations_spec.js | 9 +- spec/frontend/diffs/store/utils_spec.js | 57 + .../diffs/utils/tree_worker_utils_spec.js | 30 + .../drawio/content_editor_facade_spec.js | 138 + spec/frontend/drawio/drawio_editor_spec.js | 479 ++++ .../markdown_field_editor_facade_spec.js | 148 + spec/frontend/editor/components/helpers.js | 3 +- .../source_editor_toolbar_button_spec.js | 5 - .../components/source_editor_toolbar_spec.js | 32 +- .../editor/schema/ci/ci_schema_spec.js | 8 +- .../ci/yaml_tests/negative_tests/services.yml | 38 + .../ci/yaml_tests/positive_tests/services.yml | 31 + .../source_editor_ci_schema_ext_spec.js | 11 +- .../source_editor_extension_base_spec.js | 112 +- .../editor/source_editor_markdown_ext_spec.js | 25 +- ...ce_editor_markdown_livepreview_ext_spec.js | 4 +- .../editor/source_editor_webide_ext_spec.js | 1 - spec/frontend/editor/utils_spec.js | 22 +- .../emoji/components/category_spec.js | 21 +- .../emoji/components/emoji_group_spec.js | 4 - .../emoji/components/emoji_list_spec.js | 33 +- spec/frontend/environment.js | 8 +- .../environments/canary_ingress_spec.js | 4 +- .../environments/canary_update_modal_spec.js | 4 +- .../delete_environment_modal_spec.js | 6 +- .../environments/edit_environment_spec.js | 5 +- .../frontend/environments/empty_state_spec.js | 4 - .../enable_review_app_modal_spec.js | 4 - .../environments/environment_actions_spec.js | 3 +- .../environments/environment_folder_spec.js | 2 +- .../environments/environment_form_spec.js | 20 +- .../environments/environment_item_spec.js | 8 - .../environments/environment_pin_spec.js | 8 - .../environments/environment_table_spec.js | 4 - .../environments/environments_app_spec.js | 4 - .../environments_detail_header_spec.js | 6 +- .../environments_folder_view_spec.js | 1 - .../environments/graphql/mock_data.js | 6 + .../kubernetes_agent_info_spec.js | 126 + .../environments/kubernetes_overview_spec.js | 84 + .../environments/new_environment_item_spec.js | 83 +- .../environments/new_environment_spec.js | 5 +- .../stop_stale_environments_modal_spec.js | 6 +- .../components/error_details_spec.js | 6 +- .../error_tracking/store/actions_spec.js | 4 +- .../store/details/actions_spec.js | 6 +- .../error_tracking/store/list/actions_spec.js | 6 +- .../components/gitlab_experiment_spec.js | 7 - spec/frontend/experimentation/utils_spec.js | 3 - .../configure_feature_flags_modal_spec.js | 9 +- .../components/edit_feature_flag_spec.js | 1 - .../components/empty_state_spec.js | 2 - .../components/environments_dropdown_spec.js | 1 - .../components/feature_flags_spec.js | 2 - .../feature_flags/components/form_spec.js | 4 - .../components/new_feature_flag_spec.js | 4 - .../strategies/flexible_rollout_spec.js | 2 - .../strategies/parameter_form_group_spec.js | 2 - .../strategies/percent_rollout_spec.js | 2 - .../strategies/users_with_id_spec.js | 2 - .../components/strategy_parameters_spec.js | 2 - .../feature_highlight_helper_spec.js | 6 +- .../feature_highlight_popover_spec.js | 5 - .../recent_searches_dropdown_content_spec.js | 5 - .../filtered_search/dropdown_user_spec.js | 4 - .../filtered_search_manager_spec.js | 4 +- .../visual_token_value_spec.js | 4 +- spec/frontend/fixtures/abuse_reports.rb | 2 + spec/frontend/fixtures/api_deploy_keys.rb | 5 +- spec/frontend/fixtures/jobs.rb | 22 + spec/frontend/fixtures/merge_requests.rb | 6 +- spec/frontend/fixtures/runner.rb | 34 + spec/frontend/fixtures/saved_replies.rb | 28 + spec/frontend/fixtures/startup_css.rb | 20 +- spec/frontend/fixtures/u2f.rb | 48 - spec/frontend/fixtures/users.rb | 65 + spec/frontend/fixtures/webauthn.rb | 1 + .../frequent_items/components/app_spec.js | 1 - .../frequent_items_list_item_spec.js | 2 - .../components/frequent_items_list_spec.js | 4 - .../new/pages/pages_pipeline_wizard_spec.js | 4 - .../gitlab_version_check_badge_spec.js | 1 - .../components/google_cloud_menu_spec.js | 4 - .../components/incubation_banner_spec.js | 4 - .../components/revoke_oauth_spec.js | 4 - .../google_cloud/configuration/panel_spec.js | 4 - .../cloudsql/create_instance_form_spec.js | 4 - .../databases/cloudsql/instance_table_spec.js | 4 - .../google_cloud/databases/panel_spec.js | 4 - .../databases/service_table_spec.js | 4 - .../google_cloud/deployments/panel_spec.js | 4 - .../deployments/service_table_spec.js | 4 - .../google_cloud/gcp_regions/form_spec.js | 4 - .../google_cloud/gcp_regions/list_spec.js | 4 - .../service_accounts/form_spec.js | 4 - .../service_accounts/list_spec.js | 4 - .../components/grafana_integration_spec.js | 6 +- .../components/shared_runners_form_spec.js | 3 - spec/frontend/groups/components/app_spec.js | 15 +- ...subgroups_and_projects_empty_state_spec.js | 4 - .../groups/components/group_folder_spec.js | 4 - .../groups/components/group_item_spec.js | 4 - .../components/group_name_and_path_spec.js | 4 +- .../frontend/groups/components/groups_spec.js | 4 - .../components/invite_members_banner_spec.js | 9 - .../groups/components/item_actions_spec.js | 5 - .../new_top_level_group_alert_spec.js | 4 - .../groups/components/overview_tabs_spec.js | 1 - .../components/transfer_group_form_spec.js | 4 - .../components/transfer_locations_spec.js | 4 - .../header_search/components/app_spec.js | 20 +- .../header_search_autocomplete_items_spec.js | 11 +- .../header_search_default_items_spec.js | 4 - .../header_search_scoped_items_spec.js | 7 +- spec/frontend/header_search/mock_data.js | 10 +- .../header_search/store/actions_spec.js | 2 +- .../header_search/store/getters_spec.js | 7 + .../helpers/startup_css_helper_spec.js | 7 - .../ide/components/activity_bar_spec.js | 4 - .../ide/components/branches/item_spec.js | 4 - .../components/branches/search_list_spec.js | 5 - .../components/cannot_push_code_alert_spec.js | 4 - .../components/commit_sidebar/actions_spec.js | 4 - .../commit_sidebar/editor_header_spec.js | 41 +- .../commit_sidebar/empty_state_spec.js | 4 - .../components/commit_sidebar/form_spec.js | 6 +- .../commit_sidebar/list_item_spec.js | 4 - .../components/commit_sidebar/list_spec.js | 4 - .../commit_sidebar/message_field_spec.js | 4 - .../new_merge_request_option_spec.js | 6 +- .../commit_sidebar/radio_group_spec.js | 6 +- .../commit_sidebar/success_message_spec.js | 4 - .../ide/components/error_message_spec.js | 5 - .../ide/components/file_row_extra_spec.js | 2 - .../ide/components/file_templates/bar_spec.js | 4 - .../file_templates/dropdown_spec.js | 5 - .../ide/components/ide_file_row_spec.js | 5 - .../ide/components/ide_project_header_spec.js | 4 - .../ide/components/ide_review_spec.js | 4 - .../ide/components/ide_side_bar_spec.js | 5 - .../ide/components/ide_sidebar_nav_spec.js | 11 +- spec/frontend/ide/components/ide_spec.js | 2 - .../ide/components/ide_status_bar_spec.js | 4 - .../ide/components/ide_status_list_spec.js | 3 - .../ide/components/ide_status_mr_spec.js | 4 - .../ide/components/ide_tree_list_spec.js | 4 - spec/frontend/ide/components/ide_tree_spec.js | 4 - .../jobs/detail/description_spec.js | 4 - .../jobs/detail/scroll_button_spec.js | 4 - .../ide/components/jobs/detail_spec.js | 4 - .../frontend/ide/components/jobs/item_spec.js | 4 - .../ide/components/jobs/stage_spec.js | 5 - .../components/merge_requests/item_spec.js | 5 - .../components/merge_requests/list_spec.js | 5 - .../components/nav_dropdown_button_spec.js | 4 - .../ide/components/nav_dropdown_spec.js | 4 - .../components/new_dropdown/button_spec.js | 4 - .../ide/components/new_dropdown/index_spec.js | 4 - .../ide/components/new_dropdown/modal_spec.js | 21 +- .../components/new_dropdown/upload_spec.js | 4 - .../panes/collapsible_sidebar_spec.js | 5 - .../ide/components/panes/right_spec.js | 5 - .../components/pipelines/empty_state_spec.js | 4 - .../ide/components/pipelines/list_spec.js | 5 - .../components/repo_commit_section_spec.js | 5 - .../ide/components/repo_editor_spec.js | 2 - spec/frontend/ide/components/repo_tab_spec.js | 5 - .../frontend/ide/components/repo_tabs_spec.js | 4 - .../ide/components/resizable_panel_spec.js | 5 - .../shared/commit_message_field_spec.js | 4 - .../components/shared/tokened_input_spec.js | 4 - .../components/terminal/empty_state_spec.js | 4 - .../ide/components/terminal/terminal_spec.js | 4 - .../ide/components/terminal/view_spec.js | 4 - .../terminal_sync_status_safe_spec.js | 4 - .../terminal_sync_status_spec.js | 4 - spec/frontend/ide/services/index_spec.js | 3 - spec/frontend/ide/services/terminals_spec.js | 2 - spec/frontend/ide/stores/actions/file_spec.js | 4 - .../ide/stores/actions/merge_request_spec.js | 8 +- .../ide/stores/actions/project_spec.js | 6 +- spec/frontend/ide/stores/actions_spec.js | 8 +- spec/frontend/ide/stores/extend_spec.js | 5 +- spec/frontend/ide/stores/getters_spec.js | 7 - .../ide/stores/modules/commit/actions_spec.js | 76 +- .../terminal/actions/session_controls_spec.js | 8 +- .../terminal/actions/session_status_spec.js | 6 +- .../components/group_dropdown_spec.js | 8 +- .../components/import_status_spec.js | 4 - .../components/import_actions_cell_spec.js | 43 +- .../components/import_source_cell_spec.js | 4 - .../components/import_table_spec.js | 60 +- .../components/import_target_cell_spec.js | 9 +- .../graphql/client_factory_spec.js | 2 +- .../services/status_poller_spec.js | 6 +- .../components/advanced_settings_spec.js | 4 - .../provider_repo_table_row_spec.js | 5 - .../import_projects/store/actions_spec.js | 4 +- .../incidents_settings_service_spec.js | 6 +- .../components/pagerduty_form_spec.js | 4 - .../edit/components/active_checkbox_spec.js | 4 - .../components/confirmation_modal_spec.js | 4 - .../edit/components/dynamic_field_spec.js | 4 - .../edit/components/integration_form_spec.js | 51 +- .../components/jira_issues_fields_spec.js | 4 - .../components/jira_trigger_fields_spec.js | 4 - .../edit/components/override_dropdown_spec.js | 4 - .../sections/apple_app_store_spec.js | 57 + .../components/sections/configuration_spec.js | 4 - .../components/sections/connection_spec.js | 4 - .../components/sections/google_play_spec.js | 54 + .../components/sections/jira_issues_spec.js | 4 - .../components/sections/jira_trigger_spec.js | 4 - .../edit/components/sections/trigger_spec.js | 4 - .../edit/components/trigger_field_spec.js | 4 - .../edit/components/trigger_fields_spec.js | 4 - .../components/upload_dropzone_field_spec.js | 88 + .../components/integrations_list_spec.js | 4 - .../components/integrations_table_spec.js | 61 +- .../components/integration_overrides_spec.js | 1 - .../components/integration_tabs_spec.js | 4 - .../components/confetti_spec.js | 8 +- .../components/group_select_spec.js | 8 +- .../import_project_members_modal_spec.js | 1 - .../import_project_members_trigger_spec.js | 4 - .../components/invite_group_trigger_spec.js | 5 - .../components/invite_groups_modal_spec.js | 17 +- .../components/invite_members_modal_spec.js | 30 +- .../components/invite_members_trigger_spec.js | 57 +- .../components/invite_modal_base_spec.js | 31 +- .../components/members_token_select_spec.js | 5 - .../components/project_select_spec.js | 4 - .../trigger_successful_invite_alert_spec.js | 4 +- .../components/csv_export_modal_spec.js | 18 +- .../csv_import_export_buttons_spec.js | 6 +- .../components/csv_import_modal_spec.js | 4 - .../components/issuable_by_email_spec.js | 2 - .../issuable_header_warnings_spec.js | 7 +- .../components/issue_assignees_spec.js | 5 - .../components/issue_milestone_spec.js | 179 +- .../components/related_issuable_item_spec.js | 4 - .../issuable/components/status_box_spec.js | 5 - .../popover/components/issue_popover_spec.js | 4 - .../popover/components/mr_popover_spec.js | 4 - .../components/add_issuable_form_spec.js | 237 +- .../components/related_issues_block_spec.js | 14 +- .../components/related_issues_root_spec.js | 5 +- .../create_merge_request_dropdown_spec.js | 8 + .../components/issues_dashboard_app_spec.js | 20 +- .../components/issue_card_time_info_spec.js | 4 - .../list/components/issues_list_app_spec.js | 80 +- .../jira_issues_import_status_app_spec.js | 5 - spec/frontend/issues/list/mock_data.js | 20 + spec/frontend/issues/list/utils_spec.js | 5 +- .../components/title_suggestions_item_spec.js | 4 - .../new/components/title_suggestions_spec.js | 129 +- .../new/components/type_popover_spec.js | 4 - spec/frontend/issues/new/mock_data.js | 64 + .../components/related_merge_requests_spec.js | 1 - .../store/actions_spec.js | 4 +- .../issues/show/components/app_spec.js | 595 ++-- .../components/delete_issue_modal_spec.js | 4 - .../show/components/description_spec.js | 182 +- .../show/components/edit_actions_spec.js | 4 - .../issues/show/components/edited_spec.js | 4 - .../components/fields/description_spec.js | 28 +- .../fields/description_template_spec.js | 4 - .../show/components/fields/title_spec.js | 5 - .../show/components/fields/type_spec.js | 8 +- .../issues/show/components/form_spec.js | 4 - .../show/components/header_actions_spec.js | 47 +- .../create_timeline_events_form_spec.js | 5 +- .../incidents/incident_tabs_spec.js | 55 +- .../incidents/timeline_events_form_spec.js | 5 +- .../incidents/timeline_events_list_spec.js | 8 +- .../incidents/timeline_events_tab_spec.js | 4 +- .../show/components/incidents/utils_spec.js | 4 +- .../show/components/locked_warning_spec.js | 5 - .../components/task_list_item_actions_spec.js | 2 +- .../issues/show/components/title_spec.js | 91 +- .../issues/show/mock_data/mock_data.js | 57 +- .../components/new_branch_form_spec.js | 4 - .../components/project_dropdown_spec.js | 4 - .../components/source_branch_dropdown_spec.js | 4 - .../jira_connect/branches/pages/index_spec.js | 4 - .../jira_connect/subscriptions/api_spec.js | 3 - .../components/add_namespace_button_spec.js | 6 +- .../add_namespace_modal_spec.js | 4 - .../groups_list_item_spec.js | 4 - .../add_namespace_modal/groups_list_spec.js | 4 - .../subscriptions/components/app_spec.js | 4 - .../components/browser_support_alert_spec.js | 4 - .../components/group_item_name_spec.js | 4 - .../components/sign_in_legacy_button_spec.js | 4 - .../components/sign_in_oauth_button_spec.js | 4 - .../components/subscriptions_list_spec.js | 4 - .../components/user_link_spec.js | 4 - .../pages/sign_in/sign_in_gitlab_com_spec.js | 4 - .../sign_in_gitlab_multiversion/index_spec.js | 4 - .../version_select_form_spec.js | 4 - .../pages/sign_in/sign_in_page_spec.js | 4 - .../pages/subscriptions_page_spec.js | 4 - .../jira_import_form_spec.js.snap | 6 +- .../components/jira_import_app_spec.js | 5 - .../components/jira_import_form_spec.js | 1 - .../components/jira_import_progress_spec.js | 5 - .../components/jira_import_setup_spec.js | 5 - .../jobs_filtered_search_spec.js | 4 - .../tokens/job_status_token_spec.js | 4 - .../components/job/artifacts_block_spec.js | 5 - .../jobs/components/job/commit_block_spec.js | 4 - .../components/job/environments_block_spec.js | 5 - .../jobs/components/job/erased_block_spec.js | 4 - .../jobs/components/job/job_app_spec.js | 3 +- .../components/job/job_container_item_spec.js | 5 - .../job/job_log_controllers_spec.js | 12 + ...job_retry_forward_deployment_modal_spec.js | 12 +- .../components/job/jobs_container_spec.js | 4 - .../job/manual_variables_form_spec.js | 108 +- .../frontend/jobs/components/job/mock_data.js | 27 +- .../components/job/sidebar_detail_row_spec.js | 5 - .../jobs/components/job/sidebar_spec.js | 4 - .../components/job/stages_dropdown_spec.js | 4 - .../jobs/components/job/trigger_block_spec.js | 4 - .../job/unmet_prerequisites_block_spec.js | 4 - .../log/collapsible_section_spec.js | 4 - .../components/log/duration_badge_spec.js | 4 - .../jobs/components/log/line_header_spec.js | 4 - .../jobs/components/log/line_number_spec.js | 4 - spec/frontend/jobs/components/log/log_spec.js | 15 +- .../table/cells/duration_cell_spec.js | 4 - .../components/table/cells/job_cell_spec.js | 4 - .../table/cells/pipeline_cell_spec.js | 4 - .../table/graphql/cache_config_spec.js | 19 + .../components/table/job_table_app_spec.js | 53 +- .../jobs/components/table/jobs_table_spec.js | 4 - .../components/table/jobs_table_tabs_spec.js | 4 - .../jobs/mixins/delayed_job_mixin_spec.js | 5 - spec/frontend/jobs/mock_data.js | 2 + .../components/delete_label_modal_spec.js | 4 - .../components/promote_label_modal_spec.js | 1 - .../language_switcher/components/app_spec.js | 4 - ...work_errors_during_navigation_link_spec.js | 5 - spec/frontend/lib/dompurify_spec.js | 14 +- .../lib/utils/axios_startup_calls_spec.js | 7 - spec/frontend/lib/utils/common_utils_spec.js | 8 - .../confirm_action_spec.js | 1 - .../confirm_modal_spec.js | 4 - .../utils/datetime/timeago_utility_spec.js | 10 - spec/frontend/lib/utils/error_message_spec.js | 65 + spec/frontend/lib/utils/file_upload_spec.js | 22 +- .../frontend/lib/utils/number_utility_spec.js | 29 + spec/frontend/lib/utils/ref_validator_spec.js | 79 + spec/frontend/lib/utils/text_markdown_spec.js | 62 + spec/frontend/lib/utils/text_utility_spec.js | 32 + spec/frontend/lib/utils/url_utility_spec.js | 8 - .../lib/utils/vuex_module_mappers_spec.js | 4 - spec/frontend/locale/sprintf_spec.js | 11 + .../access_request_action_buttons_spec.js | 4 - .../approve_access_request_button_spec.js | 6 +- .../invite_action_buttons_spec.js | 4 - .../remove_group_link_button_spec.js | 7 +- .../remove_member_button_spec.js | 6 +- .../resend_invite_button_spec.js | 6 +- .../leave_group_dropdown_item_spec.js | 6 +- .../remove_member_dropdown_item_spec.js | 4 - .../user_action_dropdown_spec.js | 6 +- spec/frontend/members/components/app_spec.js | 1 - .../components/avatars/group_avatar_spec.js | 4 - .../components/avatars/invite_avatar_spec.js | 4 - .../components/avatars/user_avatar_spec.js | 4 - .../filter_sort/sort_dropdown_spec.js | 2 +- .../members/components/members_tabs_spec.js | 4 - .../components/modals/leave_modal_spec.js | 4 - .../modals/remove_group_link_modal_spec.js | 5 - .../modals/remove_member_modal_spec.js | 4 - .../components/table/created_at_spec.js | 4 - .../table/expiration_datepicker_spec.js | 4 - .../table/member_action_buttons_spec.js | 4 - .../components/table/member_avatar_spec.js | 4 - .../components/table/member_source_spec.js | 6 +- .../table/members_table_cell_spec.js | 5 - .../components/table/members_table_spec.js | 4 - .../components/table/role_dropdown_spec.js | 10 +- spec/frontend/members/index_spec.js | 3 - .../merge_conflict_resolver_app_spec.js | 4 - .../merge_conflicts/store/actions_spec.js | 6 +- spec/frontend/merge_request_spec.js | 4 +- spec/frontend/merge_request_tabs_spec.js | 2 - .../components/compare_app_spec.js | 4 - .../components/compare_dropdown_spec.js | 1 - .../components/delete_milestone_modal_spec.js | 8 +- .../components/milestone_combobox_spec.js | 5 - .../promote_milestone_modal_spec.js | 8 +- .../ml_candidates_show_spec.js.snap} | 21 +- .../show/ml_candidates_show_spec.js} | 8 +- .../show/ml_experiments_show_spec.js} | 105 +- .../routes/experiments/show/mock_data.js | 52 + .../components/charts/column_spec.js | 4 - .../components/charts/gauge_spec.js | 5 - .../components/charts/heatmap_spec.js | 4 - .../components/charts/single_stat_spec.js | 4 - .../components/charts/time_series_spec.js | 4 - .../components/create_dashboard_modal_spec.js | 4 - .../components/dashboard_actions_menu_spec.js | 5 - .../components/dashboard_header_spec.js | 4 - .../dashboard_panel_builder_spec.js | 2 - .../components/dashboard_panel_spec.js | 16 - .../monitoring/components/dashboard_spec.js | 5 +- .../components/dashboard_url_time_spec.js | 4 +- .../monitoring/components/graph_group_spec.js | 4 - .../components/group_empty_state_spec.js | 4 - .../components/refresh_button_spec.js | 1 + .../variables/dropdown_field_spec.js | 6 +- .../components/variables/text_field_spec.js | 6 +- .../monitoring/pages/panel_new_page_spec.js | 4 - .../frontend/monitoring/store/actions_spec.js | 11 +- .../nav/components/new_nav_toggle_spec.js | 192 +- .../nav/components/responsive_app_spec.js | 4 - .../nav/components/responsive_header_spec.js | 6 +- .../nav/components/responsive_home_spec.js | 6 +- .../nav/components/top_nav_app_spec.js | 4 - .../components/top_nav_container_view_spec.js | 4 - .../components/top_nav_dropdown_menu_spec.js | 4 - .../components/top_nav_menu_sections_spec.js | 4 - .../components/top_nav_new_dropdown_spec.js | 29 +- spec/frontend/notebook/cells/code_spec.js | 4 - spec/frontend/notebook/cells/markdown_spec.js | 6 +- .../notebook/cells/output/error_spec.js | 48 + .../notebook/cells/output/index_spec.js | 4 - spec/frontend/notebook/cells/prompt_spec.js | 4 - spec/frontend/notebook/index_spec.js | 6 +- spec/frontend/notebook/mock_data.js | 6 + .../notes/components/comment_form_spec.js | 122 +- .../components/comment_type_dropdown_spec.js | 4 - .../components/diff_discussion_header_spec.js | 4 - .../components/discussion_actions_spec.js | 11 +- .../components/discussion_counter_spec.js | 3 - .../components/discussion_filter_note_spec.js | 5 - .../components/discussion_navigator_spec.js | 1 - .../discussion_notes_replies_wrapper_spec.js | 4 - .../notes/components/discussion_notes_spec.js | 5 - .../discussion_reply_placeholder_spec.js | 4 - .../discussion_resolve_button_spec.js | 4 - ...scussion_resolve_with_issue_button_spec.js | 4 - .../email_participants_warning_spec.js | 5 - .../note_actions/reply_button_spec.js | 5 - .../timeline_event_button_spec.js | 4 - .../notes/components/note_actions_spec.js | 7 - .../notes/components/note_attachment_spec.js | 5 - .../notes/components/note_body_spec.js | 4 - .../notes/components/note_edited_text_spec.js | 71 +- .../notes/components/note_form_spec.js | 4 - .../notes/components/note_header_spec.js | 5 - .../components/note_signed_out_widget_spec.js | 4 - .../components/noteable_discussion_spec.js | 15 - .../notes/components/noteable_note_spec.js | 4 - .../components/notes_activity_header_spec.js | 4 - .../notes/components/notes_app_spec.js | 3 +- .../components/toggle_replies_widget_spec.js | 4 - spec/frontend/notes/deprecated_notes_spec.js | 1 - spec/frontend/notes/stores/actions_spec.js | 26 +- .../custom_notifications_modal_spec.js | 52 +- .../components/notifications_dropdown_spec.js | 4 +- spec/frontend/observability/index_spec.js | 64 + .../observability/observability_app_spec.js | 144 +- spec/frontend/observability/skeleton_spec.js | 15 +- .../components/metrics_settings_spec.js | 6 +- .../explorer/components/delete_button_spec.js | 5 - .../explorer/components/delete_image_spec.js | 5 - .../details_page/delete_alert_spec.js | 5 - .../details_page/delete_modal_spec.js | 7 +- .../details_page/details_header_spec.js | 4 +- .../partial_cleanup_alert_spec.js | 5 - .../details_page/status_alert_spec.js | 5 - .../details_page/tags_list_row_spec.js | 43 +- .../components/details_page/tags_list_spec.js | 28 +- .../details_page/tags_loader_spec.js | 5 - .../list_page/cleanup_status_spec.js | 4 - .../list_page/group_empty_state_spec.js | 4 - .../list_page/image_list_row_spec.js | 20 +- .../components/list_page/image_list_spec.js | 5 - .../list_page/project_empty_state_spec.js | 4 - .../list_page/registry_header_spec.js | 5 - .../container_registry/explorer/mock_data.js | 3 +- .../explorer/pages/details_spec.js | 5 - .../explorer/pages/list_spec.js | 4 - .../dependency_proxy/app_spec.js | 13 +- .../components/manifest_list_spec.js | 4 - .../components/manifest_row_spec.js | 4 - .../details/artifacts_list_row_spec.js | 4 - .../components/details/artifacts_list_spec.js | 4 - .../components/details/details_header_spec.js | 4 - .../list/harbor_list_header_spec.js | 4 - .../components/list/harbor_list_row_spec.js | 4 - .../components/list/harbor_list_spec.js | 4 - .../components/tags/tags_header_spec.js | 4 - .../components/tags/tags_list_row_spec.js | 4 - .../components/tags/tags_list_spec.js | 4 - .../harbor_registry/pages/details_spec.js | 4 - .../harbor_registry/pages/list_spec.js | 4 - .../harbor_registry/pages/tags_spec.js | 4 - .../components/details/components/app_spec.js | 4 - .../details/components/details_title_spec.js | 4 - .../details/components/file_sha_spec.js | 4 - .../details/components/package_files_spec.js | 5 - .../components/package_history_spec.js | 5 - .../components/terraform_installation_spec.js | 4 - .../components/details/store/actions_spec.js | 10 +- .../packages_list_app_spec.js.snap | 2 - .../components/infrastructure_search_spec.js | 5 - .../components/infrastructure_title_spec.js | 5 - .../list/components/packages_list_app_spec.js | 10 +- .../list/components/packages_list_spec.js | 31 +- .../components/list/stores/actions_spec.js | 8 +- .../shared/package_list_row_spec.js | 7 +- .../components/delete_modal_spec.js | 2 +- .../maven_installation_spec.js.snap | 3 +- .../pypi_installation_spec.js.snap | 10 +- .../details/additional_metadata_spec.js | 5 - .../details/composer_installation_spec.js | 4 - .../details/conan_installation_spec.js | 4 - .../components/details/dependency_row_spec.js | 4 - .../components/details/file_sha_spec.js | 4 - .../details/installation_title_spec.js | 4 - .../details/installations_commands_spec.js | 4 - .../details/maven_installation_spec.js | 6 +- .../details/metadata/composer_spec.js | 5 - .../components/details/metadata/conan_spec.js | 5 - .../components/details/metadata/maven_spec.js | 5 - .../components/details/metadata/nuget_spec.js | 5 - .../components/details/metadata/pypi_spec.js | 5 - .../details/npm_installation_spec.js | 4 - .../details/nuget_installation_spec.js | 4 - .../components/details/package_files_spec.js | 4 - .../details/package_history_spec.js | 5 - .../components/details/package_title_spec.js | 6 +- .../details/package_versions_list_spec.js | 80 +- .../details/pypi_installation_spec.js | 17 +- .../components/details/version_row_spec.js | 34 +- .../functional/delete_packages_spec.js | 8 +- .../components/list/package_list_row_spec.js | 9 +- .../components/list/packages_list_spec.js | 4 - .../components/list/packages_search_spec.js | 4 - .../components/list/packages_title_spec.js | 5 - .../components/list/publish_method_spec.js | 4 - .../list/tokens/package_type_token_spec.js | 5 - .../package_registry/mock_data.js | 1 + .../package_registry/pages/details_spec.js | 8 +- .../package_registry/pages/list_spec.js | 25 +- .../dependency_proxy_settings_spec.js | 6 +- .../group/components/exceptions_input_spec.js | 4 - .../components/group_settings_app_spec.js | 6 +- .../group/components/package_settings_spec.js | 6 +- .../packages_forwarding_settings_spec.js | 2 +- .../components/cleanup_image_tags_spec.js | 4 - .../container_expiration_policy_form_spec.js | 4 - .../container_expiration_policy_spec.js | 4 - .../components/expiration_dropdown_spec.js | 5 - .../components/expiration_input_spec.js | 5 - .../components/expiration_run_text_spec.js | 5 - .../components/expiration_toggle_spec.js | 5 - .../packages_cleanup_policy_form_spec.js | 1 - .../packages_cleanup_policy_spec.js | 1 - .../components/registry_settings_app_spec.js | 5 - .../shared/components/cli_commands_spec.js | 5 - .../components/delete_package_modal_spec.js | 5 - .../shared/components/package_path_spec.js | 7 +- .../components/packages_list_loader_spec.js | 5 - .../components/persisted_search_spec.js | 4 - .../shared/components/publish_method_spec.js | 5 - .../components/registry_breadcrumb_spec.js | 4 - .../shared/components/registry_list_spec.js | 21 +- .../shared/components/settings_block_spec.js | 4 - .../jobs/index/components/cancel_jobs_spec.js | 4 +- .../pages/groups/new/components/app_spec.js | 25 +- .../create_group_description_details_spec.js | 4 - .../bulk_imports_history_app_spec.js | 8 +- .../components/import_error_details_spec.js | 11 +- .../components/import_history_app_spec.js | 11 +- .../password_prompt_modal_spec.js | 7 +- .../projects/forks/new/components/app_spec.js | 4 - .../forks/new/components/fork_form_spec.js | 7 +- .../new/components/project_namespace_spec.js | 17 +- .../projects/graphs/code_coverage_spec.js | 11 +- .../components/interval_pattern_input_spec.js | 6 - .../pipeline_schedule_callout_spec.js | 8 - .../project_feature_settings_spec.js | 5 - .../components/project_setting_row_spec.js | 4 - .../components/settings_panel_spec.js | 5 - .../wikis/components/wiki_alert_spec.js | 5 - .../wikis/components/wiki_content_spec.js | 5 - .../shared/wikis/components/wiki_form_spec.js | 9 +- spec/frontend/pdf/index_spec.js | 4 - spec/frontend/pdf/page_spec.js | 4 - .../components/add_request_spec.js | 4 - .../components/detailed_metric_spec.js | 4 - .../components/request_warning_spec.js | 4 - spec/frontend/persistent_user_callout_spec.js | 4 +- .../pipeline_wizard/components/commit_spec.js | 14 - .../pipeline_wizard/components/editor_spec.js | 4 - .../components/input_wrapper_spec.js | 8 - .../components/step_nav_spec.js | 4 - .../components/widgets/checklist_spec.js | 4 - .../components/widgets/list_spec.js | 8 - .../components/wrapper_spec.js | 21 - .../pipeline_wizard/pipeline_wizard_spec.js | 4 - .../components/dag/dag_annotations_spec.js | 5 - .../components/dag/dag_graph_spec.js | 5 - .../pipelines/components/dag/dag_spec.js | 5 - .../components/jobs/failed_jobs_app_spec.js | 8 +- .../components/jobs/failed_jobs_table_spec.js | 8 +- .../components/jobs/jobs_app_spec.js | 8 +- .../linked_pipelines_mini_list_spec.js | 12 +- .../pipeline_mini_graph_spec.js | 15 - .../pipeline_stage_spec.js | 5 +- .../pipeline_stages_spec.js | 5 - .../components/pipeline_tabs_spec.js | 4 - .../pipelines_filtered_search_spec.js | 2 - .../empty_state/ci_templates_spec.js | 5 - .../empty_state/ios_templates_spec.js | 5 - .../pipelines_ci_templates_spec.js | 5 - spec/frontend/pipelines/empty_state_spec.js | 5 - .../pipelines/graph/action_component_spec.js | 1 - .../graph/graph_component_wrapper_spec.js | 4 - .../graph/graph_view_selector_spec.js | 4 - .../graph/job_group_dropdown_spec.js | 4 - .../frontend/pipelines/graph/job_item_spec.js | 47 +- .../pipelines/graph/linked_pipeline_spec.js | 4 - .../graph/linked_pipelines_column_spec.js | 4 - .../graph/stage_column_component_spec.js | 4 - .../graph_shared/links_inner_spec.js | 1 - .../graph_shared/links_layer_spec.js | 4 - .../pipelines/header_component_spec.js | 5 - spec/frontend/pipelines/nav_controls_spec.js | 37 +- .../pipeline_graph/pipeline_graph_spec.js | 4 - .../pipelines/pipeline_labels_spec.js | 4 - .../pipelines/pipeline_multi_actions_spec.js | 2 - .../pipelines/pipeline_triggerer_spec.js | 6 +- spec/frontend/pipelines/pipeline_url_spec.js | 4 - .../pipelines/pipelines_actions_spec.js | 7 +- .../pipelines/pipelines_artifacts_spec.js | 5 - spec/frontend/pipelines/pipelines_spec.js | 5 +- .../pipelines/pipelines_table_spec.js | 6 - .../test_reports/stores/actions_spec.js | 6 +- .../test_reports/stores/mutations_spec.js | 6 +- .../test_reports/test_case_details_spec.js | 5 - .../test_reports/test_reports_spec.js | 4 - .../test_reports/test_suite_table_spec.js | 4 - spec/frontend/pipelines/time_ago_spec.js | 5 - .../tokens/pipeline_branch_name_token_spec.js | 5 - .../tokens/pipeline_status_token_spec.js | 5 - .../tokens/pipeline_tag_name_token_spec.js | 5 - .../pipeline_trigger_author_token_spec.js | 5 - .../popovers/components/popovers_spec.js | 5 - .../components/delete_account_modal_spec.js | 6 - .../components/update_username_spec.js | 46 +- .../components/activity_calendar_spec.js | 120 + .../profile/components/followers_tab_spec.js | 21 +- .../profile/components/following_tab_spec.js | 21 +- .../profile/components/overview_tab_spec.js | 7 + .../components/user_achievements_spec.js | 102 + spec/frontend/profile/mock_data.js | 22 + .../components/diffs_colors_preview_spec.js | 5 - .../components/diffs_colors_spec.js | 5 - .../components/integration_view_spec.js | 5 - .../components/profile_preferences_spec.js | 9 +- spec/frontend/profile/utils_spec.js | 15 + .../clusters_deprecation_alert_spec.js | 4 - .../components/branches_dropdown_spec.js | 4 +- .../commit/components/form_modal_spec.js | 3 +- .../components/projects_dropdown_spec.js | 15 +- .../projects/commit/store/actions_spec.js | 6 +- .../commits/components/author_select_spec.js | 1 - .../projects/commits/store/actions_spec.js | 8 +- .../projects/compare/components/app_spec.js | 5 - .../compare/components/repo_dropdown_spec.js | 5 - .../compare/components/revision_card_spec.js | 5 - .../revision_dropdown_legacy_spec.js | 51 +- .../components/revision_dropdown_spec.js | 48 +- .../components/project_delete_button_spec.js | 5 - .../components/shared/delete_button_spec.js | 5 - .../projects/details/upload_button_spec.js | 4 - .../projects/new/components/app_spec.js | 45 +- .../deployment_target_select_spec.js | 1 - .../new_project_push_tip_popover_spec.js | 1 - .../components/new_project_url_select_spec.js | 21 +- .../ci_cd_analytics_area_chart_spec.js.snap | 29 +- .../pipelines/charts/components/app_spec.js | 4 - .../ci_cd_analytics_area_chart_spec.js | 5 - .../charts/components/pipeline_charts_spec.js | 5 - .../charts/components/statistics_list_spec.js | 4 - .../prune_unreachable_objects_button_spec.js | 7 +- .../components/edit/branch_dropdown_spec.js | 8 +- .../components/edit/index_spec.js | 4 - .../components/edit/protections/index_spec.js | 4 - .../protections/merge_protections_spec.js | 4 - .../edit/protections/push_protections_spec.js | 4 - .../components/view/index_spec.js | 48 +- .../components/view/protection_row_spec.js | 2 - .../components/view/protection_spec.js | 2 - .../default_branch_selector_spec.js | 4 - .../components/new_access_dropdown_spec.js | 20 +- .../components/shared_runners_toggle_spec.js | 4 +- .../components/transfer_project_form_spec.js | 4 - .../repository/branch_rules/app_spec.js | 6 +- .../components/branch_rule_spec.js | 4 +- .../repository/branch_rules/mock_data.js | 2 +- .../components/topics_token_selector_spec.js | 1 - spec/frontend/projects/settings/utils_spec.js | 24 +- .../components/service_desk_root_spec.js | 1 - .../terraform_notification_spec.js | 4 - .../protected_branch_edit_spec.js | 6 +- .../__snapshots__/ref_selector_spec.js.snap | 80 - .../ref/components/ref_selector_spec.js | 53 +- .../releases/components/app_edit_new_spec.js | 7 +- .../releases/components/app_index_spec.js | 12 +- .../releases/components/app_show_spec.js | 15 +- .../components/asset_links_form_spec.js | 5 - .../components/confirm_delete_modal_spec.js | 4 - .../components/evidence_block_spec.js | 4 - .../components/issuable_stats_spec.js | 5 - .../components/release_block_footer_spec.js | 5 - .../components/release_block_header_spec.js | 4 - .../release_block_milestone_info_spec.js | 5 - .../releases/components/release_block_spec.js | 4 - .../components/releases_pagination_spec.js | 4 - .../releases/components/releases_sort_spec.js | 4 - .../components/tag_field_exsting_spec.js | 5 - .../releases/components/tag_field_new_spec.js | 8 +- .../releases/components/tag_field_spec.js | 5 - .../release_notification_service_spec.js | 8 +- .../stores/modules/detail/actions_spec.js | 20 +- .../stores/modules/detail/getters_spec.js | 81 +- .../repository/commits_service_spec.js | 4 +- .../components/blob_button_group_spec.js | 4 - .../components/blob_content_viewer_spec.js | 6 - .../components/blob_controls_spec.js | 2 - .../blob_viewers/lfs_viewer_spec.js | 2 - .../blob_viewers/notebook_viewer_spec.js | 22 +- .../repository/components/breadcrumbs_spec.js | 4 - .../components/delete_blob_modal_spec.js | 8 +- .../directory_download_links_spec.js | 4 - .../repository/components/fork_info_spec.js | 137 +- .../components/fork_suggestion_spec.js | 2 - .../fork_sync_conflicts_modal_spec.js | 42 + .../repository/components/last_commit_spec.js | 33 +- .../components/new_directory_modal_spec.js | 12 +- .../preview/__snapshots__/index_spec.js.snap | 42 - .../components/preview/index_spec.js | 93 +- .../repository/components/table/index_spec.js | 4 - .../components/table/parent_row_spec.js | 4 - .../repository/components/table/row_spec.js | 6 +- .../components/tree_content_spec.js | 50 +- .../components/upload_blob_modal_spec.js | 52 +- .../repository/mixins/highlight_mixin_spec.js | 2 - spec/frontend/repository/mock_data.js | 6 + spec/frontend/repository/pages/blob_spec.js | 4 - spec/frontend/repository/pages/index_spec.js | 2 - spec/frontend/repository/pages/tree_spec.js | 2 - .../__snapshots__/list_item_spec.js.snap | 48 +- .../saved_replies/components/form_spec.js | 144 + .../components/list_item_spec.js | 36 +- .../saved_replies/components/list_spec.js | 48 +- .../saved_replies/pages/index_spec.js | 45 + spec/frontend/search/mock_data.js | 7 + .../search/sidebar/components/app_spec.js | 34 +- .../components/checkbox_filter_spec.js | 9 +- .../search/sidebar/components/filters_spec.js | 21 +- ...ilters_spec.js => language_filter_spec.js} | 27 +- .../sidebar/components/radio_filter_spec.js | 10 +- .../components/scope_navigation_spec.js | 39 +- .../search/sort/components/app_spec.js | 5 - spec/frontend/search/store/actions_spec.js | 48 +- spec/frontend/search/store/getters_spec.js | 49 +- spec/frontend/search/store/utils_spec.js | 35 +- .../search/topbar/components/app_spec.js | 4 - .../topbar/components/group_filter_spec.js | 4 - .../topbar/components/project_filter_spec.js | 4 - .../searchable_dropdown_item_spec.js | 4 - .../components/searchable_dropdown_spec.js | 51 +- spec/frontend/search_autocomplete_spec.js | 1 - .../components/search_settings_spec.js | 4 - .../components/app_spec.js | 30 +- .../components/auto_dev_ops_alert_spec.js | 4 - .../auto_dev_ops_enabled_alert_spec.js | 4 - .../components/feature_card_spec.js | 6 +- .../components/training_provider_list_spec.js | 3 +- .../components/upgrade_banner_spec.js | 1 - .../security_configuration/constants.js | 1 + .../self_monitor_form_spec.js.snap | 35 + spec/frontend/sentry/index_spec.js | 7 - spec/frontend/sentry/legacy_index_spec.js | 7 - spec/frontend/sentry/sentry_config_spec.js | 7 - .../set_status_modal_wrapper_spec.js | 7 +- .../user_profile_set_status_wrapper_spec.js | 4 - .../assignees/assignee_avatar_link_spec.js | 4 - .../assignees/assignee_avatar_spec.js | 7 - .../assignees/assignee_title_spec.js | 5 - .../assignees/assignees_realtime_spec.js | 1 - .../components/assignees/assignees_spec.js | 4 - .../assignees/collapsed_assignee_list_spec.js | 4 - .../assignees/collapsed_assignee_spec.js | 4 - .../assignees/issuable_assignees_spec.js | 5 - .../assignees/sidebar_assignees_spec.js | 3 - .../sidebar_assignees_widget_spec.js | 11 +- .../assignees/sidebar_editable_item_spec.js | 5 - .../assignees/sidebar_invite_members_spec.js | 4 - .../assignees/sidebar_participant_spec.js | 10 +- .../uncollapsed_assignee_list_spec.js | 4 - .../assignees/user_name_with_status_spec.js | 4 - .../sidebar_confidentiality_content_spec.js | 4 - .../sidebar_confidentiality_form_spec.js | 12 +- .../sidebar_confidentiality_widget_spec.js | 7 +- .../components/copy/copyable_field_spec.js | 4 - .../copy/sidebar_reference_widget_spec.js | 8 +- .../crm_contacts/crm_contacts_spec.js | 5 +- .../date/sidebar_date_widget_spec.js | 15 +- .../date/sidebar_formatted_date_spec.js | 4 - .../date/sidebar_inherit_date_spec.js | 4 - .../incidents/escalation_status_spec.js | 4 - .../sidebar_escalation_status_spec.js | 6 +- .../labels_select_vue/dropdown_button_spec.js | 4 - .../dropdown_contents_create_view_spec.js | 16 +- .../dropdown_contents_labels_view_spec.js | 4 - .../dropdown_contents_spec.js | 4 - .../labels_select_vue/dropdown_title_spec.js | 4 - .../dropdown_value_collapsed_spec.js | 6 +- .../labels_select_vue/dropdown_value_spec.js | 4 - .../labels_select_vue/label_item_spec.js | 4 - .../labels_select_root_spec.js | 4 - .../labels_select_vue/store/actions_spec.js | 8 +- .../dropdown_contents_create_view_spec.js | 10 +- .../dropdown_contents_labels_view_spec.js | 8 +- .../dropdown_contents_spec.js | 4 - .../dropdown_footer_spec.js | 4 - .../dropdown_header_spec.js | 4 - .../dropdown_value_spec.js | 4 - .../embedded_labels_list_spec.js | 4 - .../labels_select_widget/label_item_spec.js | 4 - .../labels_select_root_spec.js | 20 +- .../components/lock/edit_form_buttons_spec.js | 13 +- .../sidebar/components/lock/edit_form_spec.js | 5 - .../lock/issuable_lock_form_spec.js | 7 +- .../milestone/milestone_dropdown_spec.js | 4 +- .../move/issuable_move_dropdown_spec.js | 1 - .../components/move/move_issue_button_spec.js | 6 +- .../move/move_issues_button_spec.js | 21 +- .../participants/participants_spec.js | 187 +- .../sidebar_participants_widget_spec.js | 1 - .../reviewers/reviewer_title_spec.js | 5 - .../components/reviewers/reviewers_spec.js | 4 - .../reviewers/sidebar_reviewers_spec.js | 3 - .../uncollapsed_reviewer_list_spec.js | 4 - .../severity/sidebar_severity_spec.js | 13 +- .../components/sidebar_dropdown_spec.js | 4 +- .../sidebar_dropdown_widget_spec.js | 11 +- .../components/status/status_dropdown_spec.js | 4 - .../sidebar_subscriptions_widget_spec.js | 7 +- .../subscriptions_dropdown_spec.js | 4 - .../subscriptions/subscriptions_spec.js | 5 - .../time_tracking/create_timelog_form_spec.js | 4 +- .../components/time_tracking/report_spec.js | 5 +- .../time_tracking/time_tracker_spec.js | 6 +- .../todo_toggle/sidebar_todo_widget_spec.js | 7 +- .../todo_toggle/todo_button_spec.js | 1 - .../components/todo_toggle/todo_spec.js | 4 - .../components/toggle/toggle_sidebar_spec.js | 4 - spec/frontend/sidebar/mock_data.js | 1 + .../frontend/sidebar/sidebar_mediator_spec.js | 2 +- .../snippet_description_edit_spec.js.snap | 3 + .../frontend/snippets/components/edit_spec.js | 21 +- .../components/embed_dropdown_spec.js | 5 - .../frontend/snippets/components/show_spec.js | 4 - .../snippet_blob_actions_edit_spec.js | 5 - .../components/snippet_blob_edit_spec.js | 8 +- .../components/snippet_blob_view_spec.js | 4 - .../snippet_description_edit_spec.js | 4 - .../snippet_description_view_spec.js | 4 - .../components/snippet_header_spec.js | 136 +- .../snippets/components/snippet_title_spec.js | 4 - .../snippet_visibility_edit_spec.js | 4 - spec/frontend/snippets/mock_data.js | 19 + spec/frontend/streaming/chunk_writer_spec.js | 214 ++ .../handle_streamed_anchor_link_spec.js | 132 + spec/frontend/streaming/html_stream_spec.js | 46 + .../rate_limit_stream_requests_spec.js | 155 ++ .../streaming/render_balancer_spec.js | 69 + .../streaming/render_html_streams_spec.js | 96 + .../components/context_switcher_spec.js | 219 ++ .../context_switcher_toggle_spec.js | 50 + .../components/frequent_items_list_spec.js | 68 + .../global_search_autocomplete_items_spec.js | 238 ++ .../global_search_default_items_spec.js | 102 + .../global_search_scoped_items_spec.js | 120 + .../components/global_search_spec.js | 516 ++++ .../components/global_search/mock_data.js | 404 +++ .../global_search/store/actions_spec.js | 113 + .../global_search/store/getters_spec.js | 333 +++ .../global_search/store/mutations_spec.js | 63 + .../components/groups_list_spec.js | 87 + .../components/help_center_spec.js | 11 +- .../components/items_list_spec.js | 63 + .../super_sidebar/components/nav_item_spec.js | 49 + .../components/projects_list_spec.js | 82 + .../components/search_results_spec.js | 57 + .../components/sidebar_portal_spec.js | 68 + .../components/super_sidebar_spec.js | 27 +- .../super_sidebar/components/user_bar_spec.js | 31 +- .../components/user_menu_spec.js | 375 +++ .../components/user_name_group_spec.js | 100 + spec/frontend/super_sidebar/mock_data.js | 187 ++ ...er_sidebar_collapsed_state_manager_spec.js | 157 ++ spec/frontend/super_sidebar/utils_spec.js | 160 ++ spec/frontend/syntax_highlight_spec.js | 6 +- .../tags/components/delete_tag_modal_spec.js | 4 - spec/frontend/terms/components/app_spec.js | 4 - .../terraform/components/empty_state_spec.js | 4 - .../components/init_command_modal_spec.js | 4 - .../components/states_table_actions_spec.js | 8 +- .../terraform/components/states_table_spec.js | 7 +- .../components/terraform_list_spec.js | 5 - spec/frontend/toggles/index_spec.js | 1 - .../token_access/inbound_token_access_spec.js | 4 +- spec/frontend/token_access/opt_in_jwt_spec.js | 4 +- .../outbound_token_access_spec.js | 4 +- .../token_access/token_access_app_spec.js | 14 +- .../token_access/token_projects_table_spec.js | 40 +- .../tooltips/components/tooltips_spec.js | 5 - .../components/usage_quotas_app_spec.js | 4 - .../components/project_storage_app_spec.js | 4 - .../components/project_storage_detail_spec.js | 3 - .../components/storage_type_icon_spec.js | 4 - .../storage/components/usage_graph_spec.js | 4 - .../user_lists/components/user_lists_spec.js | 5 - .../components/user_lists_table_spec.js | 4 - spec/frontend/user_popovers_spec.js | 11 - .../validators/length_validator_spec.js | 91 + spec/frontend/vue_compat_test_setup.js | 60 + .../components/action_buttons.js | 4 - .../components/added_commit_message_spec.js | 4 - .../components/approvals/approvals_spec.js | 223 +- .../approvals_summary_optional_spec.js | 5 - .../approvals/approvals_summary_spec.js | 21 +- .../components/artifacts_list_app_spec.js | 1 - .../components/artifacts_list_spec.js | 4 - .../extensions/child_content_spec.js | 5 - .../components/extensions/status_icon_spec.js | 4 - .../mr_collapsible_extension_spec.js | 4 - .../mr_widget_alert_message_spec.js | 4 - .../components/mr_widget_author_spec.js | 1 - .../components/mr_widget_author_time_spec.js | 4 - .../components/mr_widget_container_spec.js | 4 - .../components/mr_widget_icon_spec.js | 4 - .../mr_widget_pipeline_container_spec.js | 4 - .../components/mr_widget_rebase_spec.js | 78 +- .../mr_widget_related_links_spec.js | 4 - .../components/mr_widget_status_icon_spec.js | 5 - .../mr_widget_suggest_pipeline_spec.js | 4 - .../components/review_app_link_spec.js | 4 - .../components/states/commit_edit_spec.js | 4 - .../states/merge_checks_failed_spec.js | 4 - ...ailed_pipeline_confirmation_dialog_spec.js | 4 - .../states/mr_widget_archived_spec.js | 5 - .../mr_widget_auto_merge_enabled_spec.js | 2 - .../mr_widget_auto_merge_failed_spec.js | 4 - .../states/mr_widget_checking_spec.js | 5 - .../mr_widget_commit_message_dropdown_spec.js | 4 - .../states/mr_widget_commits_header_spec.js | 4 - .../states/mr_widget_conflicts_spec.js | 4 - .../states/mr_widget_failed_to_merge_spec.js | 4 - .../states/mr_widget_merged_spec.js | 4 - .../states/mr_widget_merging_spec.js | 4 - .../states/mr_widget_missing_branch_spec.js | 4 - .../states/mr_widget_not_allowed_spec.js | 5 - .../states/mr_widget_nothing_to_merge_spec.js | 62 +- .../states/mr_widget_pipeline_blocked_spec.js | 5 - .../states/mr_widget_pipeline_failed_spec.js | 5 - .../states/mr_widget_sha_mismatch_spec.js | 4 - .../mr_widget_squash_before_merge_spec.js | 4 - .../mr_widget_unresolved_discussions_spec.js | 8 - .../states/new_ready_to_merge_spec.js | 4 - .../states/work_in_progress_spec.js | 4 +- .../components/widget/action_buttons_spec.js | 4 - .../components/widget/widget_spec.js | 4 - .../deployment_action_button_spec.js | 4 - .../deployment/deployment_actions_spec.js | 5 +- .../deployment/deployment_list_spec.js | 1 - .../deployment/deployment_spec.js | 4 - .../deployment/deployment_view_button_spec.js | 4 - .../extensions/test_report/index_spec.js | 1 - .../extentions/accessibility/index_spec.js | 1 - .../extentions/code_quality/index_spec.js | 1 - .../extentions/terraform/index_spec.js | 1 - .../mr_widget_how_to_merge_modal_spec.js | 5 - .../mr_widget_options_spec.js | 136 +- .../stores/get_state_key_spec.js | 2 +- .../alert_management_sidebar_todo_spec.js | 4 - .../file_row_header_spec.js.snap | 40 - .../components/actions_button_spec.js | 4 - .../components/alert_details_table_spec.js | 5 - .../vue_shared/components/awards_list_spec.js | 10 - .../blob_viewers/rich_viewer_spec.js | 4 - .../blob_viewers/simple_viewer_spec.js | 4 - .../components/changed_file_icon_spec.js | 4 - .../components/chronic_duration_input_spec.js | 6 - .../components/ci_badge_link_spec.js | 4 - .../vue_shared/components/ci_icon_spec.js | 5 - .../components/clipboard_button_spec.js | 5 - .../components/clone_dropdown_spec.js | 5 - .../components/code_block_highlighted_spec.js | 4 - .../vue_shared/components/code_block_spec.js | 4 - .../color_picker/color_picker_spec.js | 4 - .../color_select_dropdown/color_item_spec.js | 4 - .../color_select_root_spec.js | 10 +- .../dropdown_contents_color_view_spec.js | 4 - .../dropdown_contents_spec.js | 4 - .../dropdown_header_spec.js | 4 - .../dropdown_value_spec.js | 4 - .../vue_shared/components/commit_spec.js | 4 - .../components/confidentiality_badge_spec.js | 17 +- .../confirm_danger_modal_spec.js | 6 +- .../confirm_danger/confirm_danger_spec.js | 4 - .../components/confirm_fork_modal_spec.js | 4 - .../components/confirm_modal_spec.js | 4 - .../components/content_transition_spec.js | 5 - .../date_time_picker_input_spec.js | 4 - .../date_time_picker/date_time_picker_spec.js | 4 - .../deployment_instance_spec.js | 12 - .../design_management/design_note_pin_spec.js | 4 - .../components/diff_stats_dropdown_spec.js | 4 - .../diff_viewer/diff_viewer_spec.js | 4 - .../viewers/image_diff_viewer_spec.js | 4 - .../diff_viewer/viewers/mode_changed_spec.js | 4 - .../components/dismissible_alert_spec.js | 4 - .../components/dismissible_container_spec.js | 4 - .../dismissible_feedback_alert_spec.js | 5 - .../components/dom_element_listener_spec.js | 4 - .../dropdown/dropdown_button_spec.js | 4 - .../dropdown/dropdown_widget_spec.js | 9 - .../dropdown_keyboard_navigation_spec.js | 4 - .../vue_shared/components/ensure_data_spec.js | 1 - .../entity_select/project_select_spec.js | 5 +- .../components/expand_button_spec.js | 4 - .../components/file_finder/item_spec.js | 4 - .../vue_shared/components/file_icon_spec.js | 4 - .../components/file_row_header_spec.js | 28 +- .../vue_shared/components/file_row_spec.js | 14 +- .../vue_shared/components/file_tree_spec.js | 4 - .../filtered_search_bar_root_spec.js | 4 - .../store/modules/filters/actions_spec.js | 22 +- .../tokens/base_token_spec.js | 4 - .../tokens/branch_token_spec.js | 97 +- .../tokens/crm_contact_token_spec.js | 7 +- .../tokens/crm_organization_token_spec.js | 7 +- .../tokens/emoji_token_spec.js | 86 +- .../tokens/label_token_spec.js | 137 +- .../tokens/milestone_token_spec.js | 110 +- .../tokens/release_token_spec.js | 8 +- .../tokens/user_token_spec.js | 126 +- .../form/form_footer_actions_spec.js | 4 - .../form/input_copy_toggle_visibility_spec.js | 6 +- .../vue_shared/components/form/title_spec.js | 4 - .../components/gl_countdown_spec.js | 4 - .../components/header_ci_component_spec.js | 5 - .../components/help_popover_spec.js | 4 - .../components/integration_help_text_spec.js | 5 - .../components/keep_alive_slots_spec.js | 4 - .../listbox_input/listbox_input_spec.js | 6 +- .../components/local_storage_sync_spec.js | 1 - .../markdown/apply_suggestion_spec.js | 5 - .../markdown/drawio_toolbar_button_spec.js | 66 + .../markdown/editor_mode_dropdown_spec.js | 10 +- .../components/markdown/field_view_spec.js | 8 +- .../components/markdown/header_spec.js | 26 +- .../markdown/markdown_editor_spec.js | 193 +- .../markdown/saved_replies_dropdown_spec.js | 62 + .../markdown/suggestion_diff_header_spec.js | 6 +- .../markdown/suggestion_diff_row_spec.js | 4 - .../markdown/suggestion_diff_spec.js | 5 - .../markdown/toolbar_button_spec.js | 5 - .../components/markdown/toolbar_spec.js | 4 - .../markdown_drawer/markdown_drawer_spec.js | 2 - .../components/memory_graph_spec.js | 20 +- .../metric_images/store/actions_spec.js | 4 +- .../components/modal_copy_button_spec.js | 4 - .../components/navigation_tabs_spec.js | 5 - .../new_resource_dropdown_spec.js | 2 +- .../components/notes/noteable_warning_spec.js | 6 - .../components/notes/placeholder_note_spec.js | 5 - .../notes/placeholder_system_note_spec.js | 5 - .../components/notes/system_note_spec.js | 1 - .../notes/timeline_entry_item_spec.js | 4 - .../components/ordered_layout_spec.js | 4 - .../components/page_size_selector_spec.js | 4 - .../components/paginated_list_spec.js | 4 - ...ginated_table_with_search_and_tabs_spec.js | 63 +- .../pagination_bar/pagination_bar_spec.js | 4 - .../components/pagination_links_spec.js | 4 - .../components/panel_resizer_spec.js | 4 - .../components/papa_parse_alert_spec.js | 4 - .../components/project_avatar_spec.js | 4 - .../project_list_item_spec.js | 142 +- .../project_selector/project_selector_spec.js | 4 +- .../registry/code_instruction_spec.js | 4 - .../components/registry/details_row_spec.js | 5 - .../components/registry/history_item_spec.js | 5 - .../components/registry/list_item_spec.js | 5 - .../components/registry/metadata_item_spec.js | 7 +- .../persisted_dropdown_selection_spec.js | 4 - .../registry/registry_search_spec.js | 5 - .../components/registry/title_area_spec.js | 5 - .../resizable_chart_container_spec.js.snap | 23 - .../resizable_chart_container_spec.js | 64 - .../components/rich_timestamp_tooltip_spec.js | 4 - .../runner_cli_instructions_spec.js | 4 - .../runner_instructions_modal_spec.js | 4 - .../runner_instructions_spec.js | 6 +- .../merge_request_artifact_download_spec.js | 8 +- .../security_reports/help_icon_spec.js | 5 - .../security_reports/security_summary_spec.js | 5 - .../segmented_control_button_group_spec.js | 4 - .../settings/settings_block_spec.js | 4 - .../components/smart_virtual_list_spec.js | 5 +- .../components/source_editor_spec.js | 4 - .../components/chunk_deprecated_spec.js | 2 - .../components/chunk_line_spec.js | 2 - .../source_viewer/components/chunk_spec.js | 2 - .../source_viewer_deprecated_spec.js | 2 - .../source_viewer/source_viewer_spec.js | 2 - .../components/stacked_progress_bar_spec.js | 4 - .../components/table_pagination_spec.js | 4 - .../components/time_ago_tooltip_spec.js | 1 - .../timezone_dropdown_spec.js | 36 +- .../components/tooltip_on_truncate_spec.js | 30 +- .../upload_dropzone_spec.js.snap | 14 +- .../upload_dropzone/upload_dropzone_spec.js | 7 - .../vue_shared/components/url_sync_spec.js | 4 - .../usage_quotas/usage_banner_spec.js | 4 - .../user_avatar/user_avatar_image_spec.js | 4 - .../user_avatar/user_avatar_link_spec.js | 4 - .../user_avatar/user_avatar_list_spec.js | 4 - .../components/user_callout_dismisser_spec.js | 8 +- .../user_deletion_obstacles_list_spec.js | 4 - .../user_popover/user_popover_spec.js | 5 +- .../vue_shared/components/user_select_spec.js | 5 +- .../components/vuex_module_provider_spec.js | 4 - .../components/web_ide_link_spec.js | 4 - .../vue_shared/directives/validation_spec.js | 5 - .../components/issuable_create_root_spec.js | 4 - .../create/components/issuable_form_spec.js | 4 - .../issuable_label_selector_spec.js | 15 +- .../issuable/issuable_blocked_icon_spec.js | 20 +- .../issuable_bulk_edit_sidebar_spec.js | 1 - .../list/components/issuable_item_spec.js | 6 - .../components/issuable_list_root_spec.js | 4 - .../list/components/issuable_tabs_spec.js | 1 - .../show/components/issuable_body_spec.js | 6 +- .../components/issuable_description_spec.js | 4 - .../components/issuable_edit_form_spec.js | 3 + .../show/components/issuable_header_spec.js | 1 - .../components/issuable_show_root_spec.js | 4 - .../show/components/issuable_title_spec.js | 28 +- .../components/issuable_sidebar_root_spec.js | 1 - .../components/legacy_container_spec.js | 2 - .../new_namespace/components/welcome_spec.js | 2 - .../new_namespace/new_namespace_page_spec.js | 9 +- .../vue_shared/plugins/global_toast_spec.js | 22 +- .../components/section_layout_spec.js | 4 - .../components/manage_via_mr_spec.js | 4 - .../security_report_download_dropdown_spec.js | 5 - .../security_reports_app_spec.js | 8 +- .../webhooks/components/form_url_app_spec.js | 4 - .../frontend/whats_new/components/app_spec.js | 3 +- .../whats_new/components/feature_spec.js | 5 - .../utils/get_drawer_body_height_spec.js | 4 - .../work_items/components/app_spec.js | 4 - .../work_items/components/item_state_spec.js | 4 - .../work_items/components/item_title_spec.js | 4 - .../work_item_note_replying_spec.js.snap | 2 +- .../components/notes/activity_filter_spec.js | 74 - .../work_item_activity_sort_filter_spec.js | 109 + .../notes/work_item_discussion_spec.js | 26 +- ...work_item_history_only_filter_note_spec.js | 44 + .../notes/work_item_note_actions_spec.js | 98 +- .../components/notes/work_item_note_spec.js | 12 +- .../work_item_notes_activity_header_spec.js | 63 + .../components/work_item_actions_spec.js | 4 - .../components/work_item_assignees_spec.js | 4 - .../work_item_description_rendered_spec.js | 4 - .../components/work_item_description_spec.js | 9 +- .../components/work_item_detail_modal_spec.js | 4 - .../components/work_item_detail_spec.js | 49 +- .../components/work_item_due_date_spec.js | 4 - .../components/work_item_labels_spec.js | 4 - .../okr_actions_split_button_spec.js | 4 - .../work_item_link_child_spec.js | 34 +- .../work_item_links_form_spec.js | 4 - .../work_item_links_menu_spec.js | 4 - .../work_item_links/work_item_links_spec.js | 13 +- .../components/work_item_notes_spec.js | 71 +- .../components/work_item_state_spec.js | 4 - .../components/work_item_title_spec.js | 4 - .../components/work_item_type_icon_spec.js | 6 +- spec/frontend/work_items/mock_data.js | 236 +- .../work_items/pages/create_work_item_spec.js | 24 +- .../work_items/pages/work_item_root_spec.js | 4 - spec/frontend/work_items/router_spec.js | 2 + .../components/app_spec.js | 4 - .../components/hierarchy_spec.js | 4 - spec/frontend/zen_mode_spec.js | 29 +- .../content_editor_integration_spec.js | 4 - .../ide/ide_integration_spec.js | 1 - .../ide/user_opens_file_spec.js | 1 - .../ide/user_opens_ide_spec.js | 1 - .../ide/user_opens_mr_spec.js | 1 - .../mutations/achievements/award_spec.rb | 53 + .../mutations/achievements/revoke_spec.rb | 57 + .../alerts/set_assignees_spec.rb | 1 - .../alerts/todo/create_spec.rb | 1 - .../create_alert_issue_spec.rb | 2 - .../update_alert_status_spec.rb | 1 - .../members/bulk_update_base_spec.rb | 16 + .../release_asset_links/create_spec.rb | 2 +- .../release_asset_links/delete_spec.rb | 14 +- .../release_asset_links/update_spec.rb | 2 +- .../achievements_resolver_spec.rb | 34 + .../ci/group_runners_resolver_spec.rb | 2 +- .../ci/project_runners_resolver_spec.rb | 2 +- .../resolvers/ci/runners_resolver_spec.rb | 10 +- .../resolvers/ci/variables_resolver_spec.rb | 2 +- .../achievements/achievement_type_spec.rb | 1 + .../user_achievement_type_spec.rb | 24 + spec/graphql/types/ci/job_type_spec.rb | 6 +- .../types/ci/runner_machine_type_spec.rb | 18 + spec/graphql/types/ci/runner_type_spec.rb | 8 +- .../types/ci/variable_sort_enum_spec.rb | 2 +- .../types/commit_signature_interface_spec.rb | 5 + .../ssh_signature_type_spec.rb | 2 +- .../design_at_version_type_spec.rb | 2 +- .../design_management/design_type_spec.rb | 7 +- spec/graphql/types/key_type_spec.rb | 2 +- spec/graphql/types/project_type_spec.rb | 2 +- .../types/projects/fork_details_type_spec.rb | 2 + .../root_storage_statistics_type_spec.rb | 2 +- spec/graphql/types/user_type_spec.rb | 1 + .../available_export_fields_enum_spec.rb | 26 + .../types/work_items/widget_interface_spec.rb | 11 +- .../widgets/notifications_type_spec.rb | 12 + .../notifications_update_input_type_spec.rb | 9 + .../admin/abuse_reports_helper_spec.rb | 24 + .../analytics/cycle_analytics_helper_spec.rb | 61 - .../application_settings_helper_spec.rb | 6 +- spec/helpers/artifacts_helper_spec.rb | 1 + .../helpers/broadcast_messages_helper_spec.rb | 20 + .../ci/catalog/resources_helper_spec.rb | 33 + .../helpers/ci/pipeline_editor_helper_spec.rb | 2 +- spec/helpers/ci/pipelines_helper_spec.rb | 6 +- spec/helpers/ci/variables_helper_spec.rb | 2 +- spec/helpers/commits_helper_spec.rb | 36 +- .../device_registration_helper_spec.rb | 37 + spec/helpers/diff_helper_spec.rb | 59 +- spec/helpers/explore_helper_spec.rb | 2 +- .../groups/observability_helper_spec.rb | 91 +- spec/helpers/groups_helper_spec.rb | 6 +- spec/helpers/ide_helper_spec.rb | 204 +- spec/helpers/issuables_helper_spec.rb | 25 +- spec/helpers/jira_connect_helper_spec.rb | 19 +- spec/helpers/markup_helper_spec.rb | 39 + spec/helpers/nav/new_dropdown_helper_spec.rb | 71 +- spec/helpers/nav/top_nav_helper_spec.rb | 52 +- spec/helpers/notes_helper_spec.rb | 13 +- spec/helpers/packages_helper_spec.rb | 15 +- spec/helpers/plan_limits_helper_spec.rb | 29 + .../settings/branch_rules_helper_spec.rb | 25 + spec/helpers/projects_helper_spec.rb | 31 +- spec/helpers/registrations_helper_spec.rb | 16 - spec/helpers/search_helper_spec.rb | 15 + spec/helpers/sidebars_helper_spec.rb | 158 +- spec/helpers/sorting_helper_spec.rb | 54 + spec/helpers/todos_helper_spec.rb | 12 - spec/helpers/users/callouts_helper_spec.rb | 70 +- spec/helpers/users_helper_spec.rb | 58 +- .../check_forced_decomposition_spec.rb | 6 +- .../direct_upload_support_spec.rb | 4 +- .../google_cloud_profiler_spec.rb | 87 + spec/initializers/mail_starttls_patch_spec.rb | 86 + .../safe_session_store_patch_spec.rb | 62 + spec/lib/api/entities/ssh_key_spec.rb | 2 +- spec/lib/api/helpers/internal_helpers_spec.rb | 60 + spec/lib/api/helpers/packages_helpers_spec.rb | 3 +- spec/lib/api/helpers_spec.rb | 2 +- .../serializers/build_entity_spec.rb | 21 +- spec/lib/atlassian/jira_connect_spec.rb | 2 +- .../jira_issue_key_extractor_spec.rb | 2 +- spec/lib/backup/gitaly_backup_spec.rb | 11 +- .../inline_observability_filter_spec.rb | 96 +- ...ssuable_reference_expansion_filter_spec.rb | 123 + .../references/issue_reference_filter_spec.rb | 9 + .../merge_request_reference_filter_spec.rb | 9 + .../filter/references/reference_cache_spec.rb | 3 +- spec/lib/bulk_imports/clients/http_spec.rb | 33 +- spec/lib/bulk_imports/features_spec.rb | 43 - spec/lib/bulk_imports/groups/stage_spec.rb | 58 +- spec/lib/bulk_imports/ndjson_pipeline_spec.rb | 54 +- .../pipelines/ci_pipelines_pipeline_spec.rb | 8 + .../pipelines/commit_notes_pipeline_spec.rb | 69 + .../gitlab_api_client_spec.rb | 202 ++ .../collector/payload_validator_spec.rb | 2 +- ...hed_background_migration_generator_spec.rb | 82 + .../expected_files/my_batched_migration.txt | 22 + ...y_batched_migration_dictionary_matcher.txt | 6 + .../my_batched_migration_spec_matcher.txt | 7 + .../queue_my_batched_migration.txt | 28 + .../queue_my_batched_migration_spec.txt | 26 + ...nowplow_event_definition_generator_spec.rb | 26 +- .../analytics/cycle_analytics/average_spec.rb | 4 +- .../cycle_analytics/request_params_spec.rb | 26 + .../stage_events/stage_event_spec.rb | 4 +- .../api_authentication/token_resolver_spec.rb | 2 +- spec/lib/gitlab/app_logger_spec.rb | 25 +- spec/lib/gitlab/asciidoc_spec.rb | 2 +- spec/lib/gitlab/audit/auditor_spec.rb | 33 +- spec/lib/gitlab/auth/auth_finders_spec.rb | 2 +- spec/lib/gitlab/auth/o_auth/user_spec.rb | 83 +- .../strategies/duo_auth/manual_otp_spec.rb | 94 + spec/lib/gitlab/auth_spec.rb | 2 +- ...e_scope_for_personal_access_tokens_spec.rb | 2 +- ...ackfill_prepared_at_merge_requests_spec.rb | 57 + ...backfill_project_wiki_repositories_spec.rb | 65 + .../batched_migration_job_spec.rb | 22 + ...ete_orphaned_packages_dependencies_spec.rb | 57 + ...fix_vulnerability_reads_has_issues_spec.rb | 100 + .../issues_internal_id_scope_updater_spec.rb | 90 + ...idences_for_vulnerability_findings_spec.rb | 136 + ...e_links_for_vulnerability_findings_spec.rb | 141 + ...iations_for_vulnerability_findings_spec.rb | 173 ++ ...tor_id_column_of_orphaned_projects_spec.rb | 3 +- spec/lib/gitlab/background_task_spec.rb | 4 +- .../gitlab/bitbucket_import/importer_spec.rb | 2 +- spec/lib/gitlab/cache/client_spec.rb | 165 ++ spec/lib/gitlab/changes_list_spec.rb | 2 +- spec/lib/gitlab/chat/responder_spec.rb | 72 +- spec/lib/gitlab/checks/changes_access_spec.rb | 12 +- spec/lib/gitlab/checks/diff_check_spec.rb | 12 +- .../gitlab/ci/badge/release/template_spec.rb | 23 +- spec/lib/gitlab/ci/build/auto_retry_spec.rb | 2 +- .../lib/gitlab/ci/build/context/build_spec.rb | 2 +- spec/lib/gitlab/ci/build/hook_spec.rb | 2 +- spec/lib/gitlab/ci/components/header_spec.rb | 50 + .../ci/components/instance_path_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/job_spec.rb | 23 +- .../lib/gitlab/ci/config/entry/policy_spec.rb | 4 +- .../ci/config/entry/processable_spec.rb | 2 +- .../ci/config/entry/pull_policy_spec.rb | 4 +- .../entry/reports/coverage_report_spec.rb | 2 +- .../gitlab/ci/config/entry/reports_spec.rb | 2 +- .../gitlab/ci/config/entry/trigger_spec.rb | 2 +- .../gitlab/ci/config/external/context_spec.rb | 68 +- .../ci/config/external/file/artifact_spec.rb | 2 +- .../ci/config/external/file/base_spec.rb | 2 +- .../ci/config/external/file/component_spec.rb | 2 +- .../ci/config/external/file/local_spec.rb | 2 +- .../ci/config/external/file/project_spec.rb | 32 +- .../ci/config/external/file/remote_spec.rb | 2 +- .../ci/config/external/file/template_spec.rb | 2 +- .../ci/config/external/mapper/base_spec.rb | 2 +- .../ci/config/external/mapper/filter_spec.rb | 2 +- .../external/mapper/location_expander_spec.rb | 2 +- .../ci/config/external/mapper/matcher_spec.rb | 2 +- .../config/external/mapper/normalizer_spec.rb | 2 +- .../mapper/variables_expander_spec.rb | 2 +- .../config/external/mapper/verifier_spec.rb | 290 +- .../gitlab/ci/config/external/mapper_spec.rb | 13 +- .../ci/config/external/processor_spec.rb | 2 +- .../gitlab/ci/config/external/rules_spec.rb | 2 +- .../lib/gitlab/ci/config/header/input_spec.rb | 70 + spec/lib/gitlab/ci/config/header/root_spec.rb | 133 + spec/lib/gitlab/ci/config/header/spec_spec.rb | 44 + spec/lib/gitlab/ci/config/yaml/result_spec.rb | 31 + spec/lib/gitlab/ci/config/yaml_spec.rb | 45 +- spec/lib/gitlab/ci/config_spec.rb | 2 +- .../gitlab/ci/input/arguments/base_spec.rb | 19 + .../gitlab/ci/input/arguments/default_spec.rb | 45 + .../gitlab/ci/input/arguments/options_spec.rb | 52 + .../ci/input/arguments/required_spec.rb | 41 + .../gitlab/ci/input/arguments/unknown_spec.rb | 18 + spec/lib/gitlab/ci/input/inputs_spec.rb | 126 + .../gitlab/ci/interpolation/access_spec.rb | 2 +- .../lib/gitlab/ci/interpolation/block_spec.rb | 2 +- .../gitlab/ci/interpolation/config_spec.rb | 2 +- .../gitlab/ci/interpolation/context_spec.rb | 2 +- .../gitlab/ci/interpolation/template_spec.rb | 2 +- spec/lib/gitlab/ci/lint_spec.rb | 6 +- .../gitlab/ci/parsers/security/common_spec.rb | 8 +- .../ci/pipeline/chain/config/content_spec.rb | 11 +- spec/lib/gitlab/ci/pipeline/duration_spec.rb | 156 +- .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 2 +- .../lib/gitlab/ci/pipeline/seed/stage_spec.rb | 2 +- .../ci/project_config/repository_spec.rb | 8 +- .../gitlab/ci/project_config/source_spec.rb | 8 +- .../vulnerability_reports_comparer_spec.rb | 163 -- spec/lib/gitlab/ci/runner_releases_spec.rb | 32 + .../Jobs/build_gitlab_ci_yaml_spec.rb | 2 +- .../sast_iac_latest_gitlab_ci_yaml_spec.rb | 40 +- .../ci/variables/builder/pipeline_spec.rb | 2 +- spec/lib/gitlab/ci/variables/builder_spec.rb | 2 +- .../gitlab/ci/variables/collection_spec.rb | 2 +- .../gitlab/ci/yaml_processor/result_spec.rb | 4 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 2 +- spec/lib/gitlab/color_schemes_spec.rb | 8 +- .../gitlab/config/entry/validators_spec.rb | 2 +- .../config/loader/multi_doc_yaml_spec.rb | 198 +- spec/lib/gitlab/config/loader/yaml_spec.rb | 28 +- spec/lib/gitlab/console_spec.rb | 4 +- .../config_loader_spec.rb | 53 +- .../migration_helpers_spec.rb | 288 ++ ...stgres_async_constraint_validation_spec.rb | 109 + .../validators/check_constraint_spec.rb | 20 + .../validators/foreign_key_spec.rb | 35 + .../async_constraints/validators_spec.rb | 21 + .../gitlab/database/async_constraints_spec.rb | 29 + .../foreign_key_validator_spec.rb | 152 -- .../migration_helpers_spec.rb | 167 -- ...tgres_async_foreign_key_validation_spec.rb | 52 - .../database/async_foreign_keys_spec.rb | 23 - .../batch_optimizer_spec.rb | 9 + .../background_migration/batched_job_spec.rb | 165 ++ .../batched_migration_wrapper_spec.rb | 15 +- .../lib/gitlab/database/gitlab_schema_spec.rb | 20 +- .../convert_to_bigint_spec.rb | 35 + .../gitlab/database/migration_helpers_spec.rb | 110 +- ...tched_background_migration_helpers_spec.rb | 44 +- .../migrations/constraints_helpers_spec.rb | 35 +- .../test_batched_background_runner_spec.rb | 21 +- .../ci_sliding_list_strategy_spec.rb | 178 ++ .../partitioning/partition_manager_spec.rb | 27 +- .../foreign_key_helpers_spec.rb | 122 +- spec/lib/gitlab/database/partitioning_spec.rb | 11 +- .../database/postgres_foreign_key_spec.rb | 24 +- .../database/postgres_partition_spec.rb | 14 +- spec/lib/gitlab/database/reindexing_spec.rb | 4 +- .../schema_validation/database_spec.rb | 115 +- .../database/schema_validation/index_spec.rb | 22 - .../schema_validation/indexes_spec.rb | 56 - .../database/schema_validation/runner_spec.rb | 50 + .../schema_objects/index_spec.rb | 10 + .../schema_objects/trigger_spec.rb | 10 + .../schema_validation/structure_sql_spec.rb | 82 + .../validators/base_validator_spec.rb | 31 + .../different_definition_indexes_spec.rb | 8 + .../different_definition_triggers_spec.rb | 8 + .../validators/extra_indexes_spec.rb | 7 + .../validators/extra_triggers_spec.rb | 7 + .../validators/missing_indexes_spec.rb | 14 + .../validators/missing_triggers_spec.rb | 9 + .../lib/gitlab/database/tables_locker_spec.rb | 225 +- .../secret/pbkdf2_sha512_spec.rb | 11 - .../handler/create_issue_handler_spec.rb | 2 +- .../validate_addresses_interceptor_spec.rb | 52 - .../email/html_to_markdown_parser_spec.rb | 12 +- .../email/message/build_ios_app_guide_spec.rb | 6 +- .../in_product_marketing/helper_spec.rb | 6 +- spec/lib/gitlab/endpoint_attributes_spec.rb | 7 +- .../gitlab/etag_caching/middleware_spec.rb | 7 +- .../gitlab/exception_log_formatter_spec.rb | 6 + .../external_authorization/config_spec.rb | 2 +- spec/lib/gitlab/file_finder_spec.rb | 128 +- spec/lib/gitlab/git/commit_spec.rb | 3 +- spec/lib/gitlab/git/diff_collection_spec.rb | 20 + spec/lib/gitlab/git/repository_spec.rb | 96 +- spec/lib/gitlab/git_access_spec.rb | 2 +- .../gitlab/gitaly_client/ref_service_spec.rb | 20 +- .../gitaly_client/repository_service_spec.rb | 41 +- spec/lib/gitlab/github_import/client_spec.rb | 57 +- .../github_import/clients/proxy_spec.rb | 123 +- .../importer/collaborator_importer_spec.rb | 86 + .../importer/collaborators_importer_spec.rb | 119 + .../importer/label_links_importer_spec.rb | 18 + .../note_attachments_importer_spec.rb | 45 +- .../github_import/markdown/attachment_spec.rb | 58 +- .../github_import/parallel_scheduling_spec.rb | 83 +- .../project_relation_type_spec.rb | 49 + .../representation/collaborator_spec.rb | 39 + spec/lib/gitlab/i18n/pluralization_spec.rb | 53 + spec/lib/gitlab/i18n_spec.rb | 17 +- spec/lib/gitlab/import/errors_spec.rb | 48 + spec/lib/gitlab/import/metrics_spec.rb | 130 +- spec/lib/gitlab/import_export/all_models.yml | 110 +- .../attribute_configuration_spec.rb | 2 +- .../import_export/attributes_finder_spec.rb | 15 +- .../attributes_permitter_spec.rb | 22 +- .../base/relation_object_saver_spec.rb | 30 +- .../import_export/command_line_util_spec.rb | 59 +- spec/lib/gitlab/import_export/config_spec.rb | 10 +- .../fast_hash_serializer_spec.rb | 12 +- .../group/relation_tree_restorer_spec.rb | 79 +- .../import_failure_service_spec.rb | 2 +- .../import_export/json/legacy_writer_spec.rb | 3 +- .../import_export/model_configuration_spec.rb | 2 +- .../import_export/project/import_task_spec.rb | 2 +- .../project/object_builder_spec.rb | 7 +- .../project/relation_tree_restorer_spec.rb | 1 + .../project/tree_restorer_spec.rb | 19 +- .../import_export/project/tree_saver_spec.rb | 33 +- .../references_configuration_spec.rb | 2 +- .../import_export/safe_model_attributes.yml | 107 +- .../gitlab/instrumentation/redis_base_spec.rb | 12 + .../instrumentation/redis_interceptor_spec.rb | 34 +- .../internal_post_receive/response_spec.rb | 2 +- spec/lib/gitlab/issuable_sorter_spec.rb | 42 +- .../jira_import/issues_importer_spec.rb | 2 +- spec/lib/gitlab/kas/user_access_spec.rb | 96 + spec/lib/gitlab/kroki_spec.rb | 2 +- spec/lib/gitlab/kubernetes/config_map_spec.rb | 16 +- spec/lib/gitlab/kubernetes/helm/pod_spec.rb | 2 +- .../legacy_github_import/importer_spec.rb | 31 +- spec/lib/gitlab/loggable_spec.rb | 68 + .../watchdog/monitor/rss_memory_limit_spec.rb | 3 +- .../gitlab/metrics/boot_time_tracker_spec.rb | 4 +- .../metrics/subscribers/rack_attack_spec.rb | 27 - .../metrics/subscribers/rails_cache_spec.rb | 31 +- spec/lib/gitlab/monitor/demo_projects_spec.rb | 6 +- .../gitlab/multi_collection_paginator_spec.rb | 7 + spec/lib/gitlab/nav/top_nav_menu_item_spec.rb | 3 +- spec/lib/gitlab/net_http_adapter_spec.rb | 3 +- spec/lib/gitlab/observability_spec.rb | 188 +- spec/lib/gitlab/optimistic_locking_spec.rb | 13 + spec/lib/gitlab/pages/random_domain_spec.rb | 44 + .../gitlab/pages/virtual_host_finder_spec.rb | 214 ++ spec/lib/gitlab/patch/node_loader_spec.rb | 80 + .../queries/knative_invocation_query_spec.rb | 31 - .../instrumented_cache_store_spec.rb | 89 - spec/lib/gitlab/rack_attack/store_spec.rb | 113 + spec/lib/gitlab/redis/cache_spec.rb | 17 - spec/lib/gitlab/redis/multi_store_spec.rb | 219 +- spec/lib/gitlab/redis/rate_limiting_spec.rb | 15 +- .../lib/gitlab/redis/repository_cache_spec.rb | 15 - spec/lib/gitlab/regex_spec.rb | 31 + spec/lib/gitlab/safe_device_detector_spec.rb | 2 +- .../sanitizers/exception_message_spec.rb | 3 +- .../ci/runner/runner_fleet_seeder_spec.rb | 24 + spec/lib/gitlab/serverless/service_spec.rb | 136 - .../sidekiq_middleware/server_metrics_spec.rb | 2 +- .../worker_context/client_spec.rb | 8 +- .../worker_context/server_spec.rb | 6 +- spec/lib/gitlab/sidekiq_queue_spec.rb | 10 +- spec/lib/gitlab/slug/path_spec.rb | 2 +- spec/lib/gitlab/url_blocker_spec.rb | 99 +- spec/lib/gitlab/url_builder_spec.rb | 22 - ...count_bulk_imports_entities_metric_spec.rb | 119 +- ...count_ci_internal_pipelines_metric_spec.rb | 26 +- ...reated_manually_from_alerts_metric_spec.rb | 6 +- .../gitlab_dedicated_metric_spec.rb | 9 + .../index_inconsistencies_metric_spec.rb | 30 + .../installation_creation_date_metric_spec.rb | 20 + .../code_review_events_spec.rb | 16 +- .../container_registry_event_counter_spec.rb | 11 + .../editor_unique_counter_spec.rb | 21 + ...gitlab_cli_activity_unique_counter_spec.rb | 13 +- .../hll_redis_counter_spec.rb | 142 +- .../issue_activity_unique_counter_spec.rb | 2 +- ...ge_request_activity_unique_counter_spec.rb | 2 - .../track_unique_events_spec.rb | 72 - spec/lib/gitlab/usage_data_spec.rb | 70 +- spec/lib/gitlab/utils/error_message_spec.rb | 23 + spec/lib/gitlab/utils/strong_memoize_spec.rb | 2 +- .../gitlab/utils}/uniquify_spec.rb | 10 +- spec/lib/gitlab/utils/usage_data_spec.rb | 4 +- .../username_and_email_generator_spec.rb | 24 + spec/lib/object_storage/config_spec.rb | 9 +- spec/lib/security/weak_passwords_spec.rb | 2 +- .../concerns/super_sidebar_panel_spec.rb | 139 + .../menus/group_information_menu_spec.rb | 6 +- .../menus/invite_team_members_menu_spec.rb | 55 - .../sidebars/groups/menus/issues_menu_spec.rb | 15 +- .../groups/menus/kubernetes_menu_spec.rb | 11 +- .../groups/menus/merge_requests_menu_spec.rb | 14 +- .../groups/menus/observability_menu_spec.rb | 60 +- .../menus/packages_registries_menu_spec.rb | 4 +- .../sidebars/groups/menus/scope_menu_spec.rb | 16 +- .../groups/super_sidebar_panel_spec.rb | 44 + spec/lib/sidebars/menu_spec.rb | 79 +- spec/lib/sidebars/panel_spec.rb | 28 +- .../projects/menus/deployments_menu_spec.rb | 6 +- .../menus/infrastructure_menu_spec.rb | 72 +- .../menus/invite_team_members_menu_spec.rb | 52 - .../projects/menus/issues_menu_spec.rb | 15 +- .../menus/merge_requests_menu_spec.rb | 15 +- .../menus/packages_registries_menu_spec.rb | 6 +- .../menus/project_information_menu_spec.rb | 6 +- .../projects/menus/repository_menu_spec.rb | 2 +- .../projects/menus/scope_menu_spec.rb | 14 +- .../menus/security_compliance_menu_spec.rb | 4 +- .../projects/menus/snippets_menu_spec.rb | 13 +- .../sidebars/projects/menus/wiki_menu_spec.rb | 12 +- spec/lib/sidebars/projects/panel_spec.rb | 2 +- .../operations_menu_spec.rb | 12 + .../super_sidebar_menus/plan_menu_spec.rb | 12 + .../projects/super_sidebar_panel_spec.rb | 45 + spec/lib/sidebars/static_menu_spec.rb | 38 + spec/lib/sidebars/uncategorized_menu_spec.rb | 12 + .../user_profile/menus/activity_menu_spec.rb | 11 + .../menus/contributed_projects_menu_spec.rb | 11 + .../user_profile/menus/followers_menu_spec.rb | 13 + .../user_profile/menus/following_menu_spec.rb | 13 + .../user_profile/menus/groups_menu_spec.rb | 11 + .../user_profile/menus/overview_menu_spec.rb | 11 + .../menus/personal_projects_menu_spec.rb | 11 + .../user_profile/menus/snippets_menu_spec.rb | 11 + .../menus/starred_projects_menu_spec.rb | 11 + spec/lib/sidebars/user_profile/panel_spec.rb | 24 + .../menus/access_tokens_menu_spec.rb | 65 + .../user_settings/menus/account_menu_spec.rb | 13 + .../menus/active_sessions_menu_spec.rb | 13 + .../menus/applications_menu_spec.rb | 13 + .../menus/authentication_log_menu_spec.rb | 13 + .../user_settings/menus/chat_menu_spec.rb | 13 + .../user_settings/menus/emails_menu_spec.rb | 13 + .../user_settings/menus/gpg_keys_menu_spec.rb | 13 + .../menus/notifications_menu_spec.rb | 13 + .../user_settings/menus/password_menu_spec.rb | 38 + .../menus/preferences_menu_spec.rb | 13 + .../user_settings/menus/profile_menu_spec.rb | 13 + .../menus/saved_replies_menu_spec.rb | 65 + .../user_settings/menus/ssh_keys_menu_spec.rb | 13 + spec/lib/sidebars/user_settings/panel_spec.rb | 15 + spec/lib/sidebars/your_work/panel_spec.rb | 15 + spec/lib/unnested_in_filters/rewriter_spec.rb | 26 +- .../emails/in_product_marketing_spec.rb | 6 +- spec/mailers/emails/issues_spec.rb | 36 +- spec/mailers/emails/profile_spec.rb | 9 +- spec/mailers/emails/work_items_spec.rb | 17 + ...ns_and_triggers_for_ci_build_needs_spec.rb | 2 +- ...t4_column_for_ci_sources_pipelines_spec.rb | 2 +- ...igrate_remaining_u2f_registrations_spec.rb | 2 +- ...44_reschedule_expire_o_auth_tokens_spec.rb | 2 +- ...ess_index_to_authentication_events_spec.rb | 2 +- ...58_remove_orphan_group_token_users_spec.rb | 2 +- ...access_tokens_with_null_expires_in_spec.rb | 2 +- ...schedule_migration_for_remediation_spec.rb | 25 + ...eue_backfill_compliance_violations_spec.rb | 32 + ...eate_vulnerability_links_migration_spec.rb | 30 + ...0202211434_migrate_redis_slot_keys_spec.rb | 54 + ...25736_schedule_migration_for_links_spec.rb | 31 + ..._ci_build_needs_big_int_conversion_spec.rb | 43 + ..._ci_build_needs_big_int_conversion_spec.rb | 60 + ...ndex_on_vulnerability_report_types_spec.rb | 22 + ...amespaces_from_onboarding_progress_spec.rb | 59 + ...fy_creator_id_of_orphaned_projects_spec.rb | 93 + ...43_update_issues_internal_id_scope_spec.rb | 28 + ...igrate_evidences_from_raw_metadata_spec.rb | 31 + ...add_notifications_work_item_widget_spec.rb | 27 + ...fix_vulnerability_reads_has_issues_spec.rb | 27 + ...2811133_re_migrate_redis_slot_keys_spec.rb | 77 + ...ete_orphaned_packages_dependencies_spec.rb | 26 + ...backfill_project_wiki_repositories_spec.rb | 26 + ...2_delete_security_policy_bot_users_spec.rb | 24 + ...schedule_migration_for_remediation_spec.rb | 31 + ...tegrations_enable_ssl_verification_spec.rb | 2 +- ...tegrations_enable_ssl_verification_spec.rb | 2 +- ...ill_is_finished_for_gitlab_dot_com_spec.rb | 37 + ...ill_is_finished_for_gitlab_dot_com_spec.rb | 37 + ...e_scope_for_personal_access_tokens_spec.rb | 2 +- .../queue_backfill_prepared_at_data_spec.rb | 24 + ...cs_id_to_bigint_for_gitlab_dot_com_spec.rb | 76 + ...te_id_to_bigint_for_gitlab_dot_com_spec.rb | 66 + ...plication_settings_protected_paths_spec.rb | 2 +- spec/models/abuse_report_spec.rb | 36 + .../achievements/user_achievement_spec.rb | 29 +- spec/models/airflow/dags_spec.rb | 17 - .../alert_management/alert_assignee_spec.rb | 6 +- spec/models/alert_management/alert_spec.rb | 10 +- .../alert_user_mention_spec.rb | 6 +- spec/models/application_setting_spec.rb | 113 +- spec/models/audit_event_spec.rb | 4 + spec/models/board_spec.rb | 8 +- spec/models/bulk_import_spec.rb | 29 +- .../models/bulk_imports/batch_tracker_spec.rb | 16 + spec/models/bulk_imports/entity_spec.rb | 66 +- spec/models/bulk_imports/export_batch_spec.rb | 17 + spec/models/bulk_imports/export_spec.rb | 3 +- .../file_transfer/project_config_spec.rb | 12 + spec/models/bulk_imports/tracker_spec.rb | 5 +- spec/models/chat_name_spec.rb | 7 - spec/models/ci/build_metadata_spec.rb | 1 - spec/models/ci/build_pending_state_spec.rb | 7 +- spec/models/ci/build_spec.rb | 160 +- spec/models/ci/build_trace_chunk_spec.rb | 6 + spec/models/ci/catalog/listing_spec.rb | 65 + .../daily_build_group_report_result_spec.rb | 6 +- spec/models/ci/group_variable_spec.rb | 2 +- spec/models/ci/job_artifact_spec.rb | 25 +- spec/models/ci/job_token/scope_spec.rb | 8 - spec/models/ci/job_variable_spec.rb | 2 +- spec/models/ci/pipeline_schedule_spec.rb | 17 +- spec/models/ci/pipeline_spec.rb | 217 +- spec/models/ci/processable_spec.rb | 2 +- spec/models/ci/runner_machine_build_spec.rb | 100 + spec/models/ci/runner_machine_spec.rb | 206 +- spec/models/ci/runner_spec.rb | 239 +- spec/models/ci/runner_version_spec.rb | 11 + spec/models/ci/sources/pipeline_spec.rb | 5 + spec/models/ci/variable_spec.rb | 2 +- .../clusters/applications/crossplane_spec.rb | 62 - .../clusters/applications/knative_spec.rb | 25 - .../clusters/applications/prometheus_spec.rb | 349 --- spec/models/clusters/cluster_spec.rb | 20 +- .../clusters/platforms/kubernetes_spec.rb | 9 + spec/models/commit_collection_spec.rb | 15 +- spec/models/commit_status_spec.rb | 39 +- .../concerns/atomic_internal_id_spec.rb | 99 +- spec/models/concerns/ci/maskable_spec.rb | 2 +- .../partitionable/partitioned_filter_spec.rb | 80 - spec/models/concerns/ci/partitionable_spec.rb | 10 +- spec/models/concerns/each_batch_spec.rb | 32 + spec/models/concerns/has_user_type_spec.rb | 4 +- spec/models/concerns/redis_cacheable_spec.rb | 52 + spec/models/concerns/routable_spec.rb | 11 + spec/models/concerns/subscribable_spec.rb | 26 + .../base_spec.rb | 37 +- .../encrypted_spec.rb | 155 +- .../encryption_helper_spec.rb | 92 +- .../concerns/web_hooks/has_web_hooks_spec.rb | 41 + .../data_repair_detail_spec.rb | 11 + spec/models/container_registry/event_spec.rb | 22 + spec/models/container_repository_spec.rb | 31 +- spec/models/design_management/design_spec.rb | 5 +- .../project_error_tracking_setting_spec.rb | 38 +- spec/models/group_spec.rb | 14 + spec/models/hooks/web_hook_spec.rb | 22 +- spec/models/import_export_upload_spec.rb | 2 +- spec/models/import_failure_spec.rb | 16 +- .../integrations/apple_app_store_spec.rb | 5 +- spec/models/integrations/campfire_spec.rb | 14 +- spec/models/integrations/google_play_spec.rb | 81 + spec/models/integrations/jira_spec.rb | 6 +- .../mattermost_slash_commands_spec.rb | 9 +- .../integrations/slack_slash_commands_spec.rb | 9 +- spec/models/integrations/squash_tm_spec.rb | 117 + spec/models/internal_id_spec.rb | 12 +- spec/models/issue_spec.rb | 136 +- spec/models/member_spec.rb | 109 +- spec/models/members/member_role_spec.rb | 107 - spec/models/members/project_member_spec.rb | 2 +- spec/models/merge_request_spec.rb | 41 +- spec/models/namespace_spec.rb | 412 ++- .../namespaces/randomized_suffix_path_spec.rb | 2 +- spec/models/note_spec.rb | 10 + spec/models/oauth_access_token_spec.rb | 4 +- spec/models/onboarding/completion_spec.rb | 73 +- .../packages/debian/file_metadatum_spec.rb | 1 + spec/models/packages/package_file_spec.rb | 1 + spec/models/pages/lookup_path_spec.rb | 69 +- spec/models/pages_domain_spec.rb | 39 - spec/models/personal_access_token_spec.rb | 24 +- .../runner_machine_policy_preloader_spec.rb | 38 + ...x_access_level_in_groups_preloader_spec.rb | 16 - spec/models/project_ci_cd_setting_spec.rb | 18 +- spec/models/project_feature_spec.rb | 34 + spec/models/project_setting_spec.rb | 38 + spec/models/project_spec.rb | 375 ++- spec/models/projects/data_transfer_spec.rb | 6 + ...ergence_counts_spec.rb => details_spec.rb} | 78 +- .../import_export/relation_export_spec.rb | 22 +- spec/models/protected_branch_spec.rb | 85 +- spec/models/repository_spec.rb | 119 +- spec/models/serverless/domain_cluster_spec.rb | 75 - spec/models/serverless/domain_spec.rb | 97 - spec/models/serverless/function_spec.rb | 21 - .../custom_email_verification_spec.rb | 109 + spec/models/service_desk_setting_spec.rb | 57 +- spec/models/user_spec.rb | 229 +- spec/models/wiki_directory_spec.rb | 9 +- spec/models/wiki_page_spec.rb | 14 + spec/models/work_item_spec.rb | 24 + .../work_items/widget_definition_spec.rb | 3 +- .../work_items/widgets/notifications_spec.rb | 19 + .../ci/pipeline_schedule_policy_spec.rb | 2 +- .../policies/ci/runner_machine_policy_spec.rb | 176 ++ .../design_management/design_policy_spec.rb | 4 +- spec/policies/global_policy_spec.rb | 116 +- spec/policies/group_policy_spec.rb | 155 +- .../dashboard/annotation_policy_spec.rb | 16 +- .../namespaces/user_namespace_policy_spec.rb | 28 +- .../project_group_link_policy_spec.rb | 2 +- spec/policies/project_hook_policy_spec.rb | 6 +- spec/policies/project_policy_spec.rb | 119 +- spec/presenters/blob_presenter_spec.rb | 10 +- .../ci/build_runner_presenter_spec.rb | 78 +- spec/presenters/commit_presenter_spec.rb | 13 +- spec/presenters/issue_presenter_spec.rb | 20 - .../merge_request_presenter_spec.rb | 9 +- .../packages/detail/package_presenter_spec.rb | 3 +- spec/rails_autoload.rb | 56 + .../admin/abuse_reports_controller_spec.rb | 45 + .../admin/applications_controller_spec.rb | 2 +- .../broadcast_messages_controller_spec.rb | 5 +- .../impersonation_tokens_controller_spec.rb | 2 +- .../admin/projects_controller_spec.rb | 58 + .../admin/version_check_controller_spec.rb | 2 +- spec/requests/api/access_requests_spec.rb | 2 +- .../batched_background_migrations_spec.rb | 93 +- spec/requests/api/admin/ci/variables_spec.rb | 119 +- .../api/admin/instance_clusters_spec.rb | 137 +- spec/requests/api/admin/plan_limits_spec.rb | 58 +- spec/requests/api/admin/sidekiq_spec.rb | 25 +- .../api_guard/admin_mode_middleware_spec.rb | 2 +- .../response_coercer_middleware_spec.rb | 2 +- spec/requests/api/api_spec.rb | 2 +- spec/requests/api/appearance_spec.rb | 4 +- spec/requests/api/applications_spec.rb | 8 +- spec/requests/api/avatar_spec.rb | 1 + spec/requests/api/award_emoji_spec.rb | 2 +- spec/requests/api/ci/job_artifacts_spec.rb | 6 +- .../api/ci/pipeline_schedules_spec.rb | 4 +- spec/requests/api/ci/pipelines_spec.rb | 114 +- spec/requests/api/ci/runner/jobs_put_spec.rb | 11 + .../api/ci/runner/jobs_request_post_spec.rb | 13 - .../api/ci/runner/runners_verify_post_spec.rb | 30 +- .../runners_reset_registration_token_spec.rb | 15 +- spec/requests/api/ci/runners_spec.rb | 203 +- spec/requests/api/ci/variables_spec.rb | 2 +- spec/requests/api/commits_spec.rb | 62 +- spec/requests/api/composer_packages_spec.rb | 6 +- .../api/debian_group_packages_spec.rb | 40 +- .../api/debian_project_packages_spec.rb | 42 +- spec/requests/api/doorkeeper_access_spec.rb | 2 +- spec/requests/api/draft_notes_spec.rb | 171 +- .../error_tracking/project_settings_spec.rb | 244 +- spec/requests/api/files_spec.rb | 35 +- spec/requests/api/freeze_periods_spec.rb | 196 +- .../user_achievements_query_spec.rb | 83 + .../api/graphql/ci/config_variables_spec.rb | 2 +- .../api/graphql/ci/group_variables_spec.rb | 2 +- .../api/graphql/ci/instance_variables_spec.rb | 2 +- spec/requests/api/graphql/ci/jobs_spec.rb | 62 + .../api/graphql/ci/manual_variables_spec.rb | 2 +- .../api/graphql/ci/project_variables_spec.rb | 2 +- spec/requests/api/graphql/ci/runner_spec.rb | 80 +- spec/requests/api/graphql/ci/runners_spec.rb | 31 +- .../graphql/current_user/todos_query_spec.rb | 2 +- .../api/graphql/current_user_query_spec.rb | 2 +- .../api/graphql/custom_emoji_query_spec.rb | 2 +- spec/requests/api/graphql/issues_spec.rb | 34 + .../api/graphql/multiplexed_queries_spec.rb | 2 +- .../mutations/achievements/award_spec.rb | 106 + .../mutations/achievements/revoke_spec.rb | 91 + .../admin/sidekiq_queues/delete_jobs_spec.rb | 2 +- .../mutations/award_emojis/add_spec.rb | 2 +- .../mutations/award_emojis/remove_spec.rb | 2 +- .../mutations/award_emojis/toggle_spec.rb | 2 +- .../cancel_spec.rb} | 4 +- .../ci/{job_play_spec.rb => job/play_spec.rb} | 4 +- .../{job_retry_spec.rb => job/retry_spec.rb} | 8 +- .../unschedule_spec.rb} | 2 +- .../ci/job_artifact/bulk_destroy_spec.rb | 197 ++ .../ci/project_ci_cd_settings_update_spec.rb | 15 - .../mutations/ci/runner/create_spec.rb | 121 + .../mutations/custom_emoji/create_spec.rb | 2 +- .../mutations/custom_emoji/destroy_spec.rb | 2 +- .../design_management/update_spec.rb | 77 + .../mutations/issues/bulk_update_spec.rb | 68 +- .../members/groups/bulk_update_spec.rb | 128 +- .../members/projects/bulk_update_spec.rb | 18 + .../dashboard/annotations/create_spec.rb | 2 +- .../dashboard/annotations/delete_spec.rb | 2 +- .../mutations/notes/create/note_spec.rb | 16 +- .../mutations/projects/sync_fork_spec.rb | 131 + .../graphql/mutations/snippets/update_spec.rb | 3 - .../work_items/create_from_task_spec.rb | 2 +- .../mutations/work_items/create_spec.rb | 54 +- .../mutations/work_items/export_spec.rb | 67 + .../mutations/work_items/update_spec.rb | 137 +- .../mutations/work_items/update_task_spec.rb | 2 +- .../api/graphql/namespace/projects_spec.rb | 2 +- .../api/graphql/packages/package_spec.rb | 25 + .../api/graphql/project/base_service_spec.rb | 2 +- .../project/container_repositories_spec.rb | 4 +- .../api/graphql/project/flow_metrics_spec.rb | 23 + .../api/graphql/project/fork_details_spec.rb | 35 +- .../graphql/project/merge_requests_spec.rb | 3 +- .../api/graphql/project/work_items_spec.rb | 28 + spec/requests/api/graphql/query_spec.rb | 2 +- .../user/user_achievements_query_spec.rb | 91 + spec/requests/api/graphql/work_item_spec.rb | 26 + spec/requests/api/graphql_spec.rb | 2 +- spec/requests/api/group_milestones_spec.rb | 80 +- spec/requests/api/group_variables_spec.rb | 2 +- spec/requests/api/helm_packages_spec.rb | 15 +- spec/requests/api/helpers_spec.rb | 2 +- spec/requests/api/internal/base_spec.rb | 12 +- spec/requests/api/internal/kubernetes_spec.rb | 147 + spec/requests/api/internal/pages_spec.rb | 394 +-- spec/requests/api/internal/workhorse_spec.rb | 2 +- .../api/issues/get_group_issues_spec.rb | 30 +- .../api/issues/get_project_issues_spec.rb | 42 +- spec/requests/api/issues/issues_spec.rb | 67 +- .../api/issues/post_projects_issues_spec.rb | 90 +- .../api/issues/put_projects_issues_spec.rb | 62 +- spec/requests/api/keys_spec.rb | 2 +- spec/requests/api/lint_spec.rb | 10 +- spec/requests/api/maven_packages_spec.rb | 37 +- spec/requests/api/merge_requests_spec.rb | 11 + spec/requests/api/metadata_spec.rb | 2 +- .../api/npm_instance_packages_spec.rb | 34 +- .../requests/api/npm_project_packages_spec.rb | 4 + .../requests/api/nuget_group_packages_spec.rb | 12 +- .../api/nuget_project_packages_spec.rb | 11 +- spec/requests/api/oauth_tokens_spec.rb | 4 +- .../api/pages/internal_access_spec.rb | 68 +- spec/requests/api/pages/pages_spec.rb | 12 +- .../requests/api/pages/private_access_spec.rb | 68 +- spec/requests/api/pages/public_access_spec.rb | 68 +- spec/requests/api/pages_domains_spec.rb | 40 +- .../self_information_spec.rb | 2 +- .../api/personal_access_tokens_spec.rb | 2 +- spec/requests/api/project_milestones_spec.rb | 91 +- spec/requests/api/projects_spec.rb | 105 +- spec/requests/api/protected_branches_spec.rb | 9 + spec/requests/api/pypi_packages_spec.rb | 30 +- spec/requests/api/release/links_spec.rb | 24 + spec/requests/api/repositories_spec.rb | 1 - .../api/resource_access_tokens_spec.rb | 2 +- spec/requests/api/rubygem_packages_spec.rb | 30 +- spec/requests/api/search_spec.rb | 17 + spec/requests/api/settings_spec.rb | 10 +- spec/requests/api/sidekiq_metrics_spec.rb | 2 +- .../api/terraform/modules/v1/packages_spec.rb | 7 +- spec/requests/api/terraform/state_spec.rb | 9 +- .../api/terraform/state_version_spec.rb | 8 + spec/requests/api/unleash_spec.rb | 8 + spec/requests/api/users_spec.rb | 12 +- spec/requests/dashboard_controller_spec.rb | 2 +- spec/requests/git_http_spec.rb | 24 +- .../groups/email_campaigns_controller_spec.rb | 6 +- .../groups/observability_controller_spec.rb | 18 +- .../settings/access_tokens_controller_spec.rb | 2 +- .../settings/applications_controller_spec.rb | 2 +- spec/requests/ide_controller_spec.rb | 120 +- .../import/gitlab_projects_controller_spec.rb | 12 + .../oauth_application_ids_controller_spec.rb | 6 +- .../public_keys_controller_spec.rb | 21 +- spec/requests/jwks_controller_spec.rb | 2 +- spec/requests/jwt_controller_spec.rb | 10 +- .../oauth/applications_controller_spec.rb | 2 +- .../oauth/authorizations_controller_spec.rb | 2 +- spec/requests/oauth/tokens_controller_spec.rb | 2 +- spec/requests/oauth_tokens_spec.rb | 2 +- spec/requests/openid_connect_spec.rb | 2 +- .../projects/airflow/dags_controller_spec.rb | 105 - .../histograms_controller_spec.rb | 2 +- .../deployments_controller_spec.rb | 126 +- .../projects/issue_links_controller_spec.rb | 16 - .../projects/issues_controller_spec.rb | 29 +- .../merge_requests_discussions_spec.rb | 335 ++- .../settings/access_tokens_controller_spec.rb | 2 +- spec/requests/projects/uploads_spec.rb | 2 +- .../projects/wikis_controller_spec.rb | 73 + spec/requests/rack_attack_global_spec.rb | 2 +- spec/requests/sandbox_controller_spec.rb | 2 +- spec/requests/sessions_spec.rb | 2 +- spec/requests/users_controller_spec.rb | 100 +- spec/requests/verifies_with_email_spec.rb | 2 +- spec/routing/import_routing_spec.rb | 4 + spec/routing/user_routing_spec.rb | 2 +- .../missing_dictionary_file_spec.rb | 137 + spec/rubocop/cop/gitlab/doc_url_spec.rb | 2 +- .../gitlab/mark_used_feature_flags_spec.rb | 10 - .../cop/lint/last_keyword_argument_spec.rb | 2 +- .../rubocop/cop/rspec/avoid_test_prof_spec.rb | 2 +- .../create_merge_request_discussion_spec.rb | 40 + .../api/get_package_and_test_job_spec.rb | 47 + .../scripts/database/schema_validator_spec.rb | 67 + ...failed_package_and_test_mr_message_spec.rb | 79 + spec/scripts/generate_rspec_pipeline_spec.rb | 198 ++ spec/scripts/lib/glfm/shared_spec.rb | 3 +- .../create_test_failure_issues_spec.rb | 145 + .../pipeline_test_report_builder_spec.rb | 5 + .../review_apps/automated_cleanup_spec.rb | 261 ++ .../admin/abuse_report_entity_spec.rb | 32 + .../admin/abuse_report_serializer_spec.rb | 23 + spec/serializers/build_details_entity_spec.rb | 2 +- .../cluster_application_entity_spec.rb | 81 - spec/serializers/cluster_entity_spec.rb | 14 - spec/serializers/cluster_serializer_spec.rb | 4 +- spec/serializers/entity_date_helper_spec.rb | 10 +- ...group_issuable_autocomplete_entity_spec.rb | 3 +- spec/serializers/issue_board_entity_spec.rb | 10 - spec/serializers/issue_entity_spec.rb | 12 +- .../linked_project_issue_entity_spec.rb | 10 - .../pipeline_details_entity_spec.rb | 28 +- spec/serializers/profile/event_entity_spec.rb | 149 + .../serializers/project_import_entity_spec.rb | 30 +- .../access_token_validation_service_spec.rb | 2 +- .../achievements/award_service_spec.rb | 73 + .../achievements/revoke_service_spec.rb | 66 + .../admin/set_feature_flag_service_spec.rb | 2 +- .../alerts/todo/create_service_spec.rb | 2 +- .../alerts/update_service_spec.rb | 2 +- .../create_alert_issue_service_spec.rb | 2 +- .../http_integrations/create_service_spec.rb | 2 +- .../http_integrations/destroy_service_spec.rb | 2 +- .../http_integrations/update_service_spec.rb | 2 +- .../metric_images/upload_service_spec.rb | 2 +- .../process_prometheus_alert_service_spec.rb | 2 +- .../stages/list_service_spec.rb | 2 +- .../update_service_spec.rb | 6 +- spec/services/audit_event_service_spec.rb | 2 +- .../audit_events/build_service_spec.rb | 2 +- ...er_registry_authentication_service_spec.rb | 2 +- ...dency_proxy_authentication_service_spec.rb | 2 +- ...nd_records_due_for_refresh_service_spec.rb | 2 +- .../periodic_recalculate_service_spec.rb | 2 +- .../project_access_changed_service_spec.rb | 2 +- ...oject_recalculate_per_user_service_spec.rb | 2 +- .../project_recalculate_service_spec.rb | 2 +- spec/services/auto_merge/base_service_spec.rb | 2 +- ...rge_when_pipeline_succeeds_service_spec.rb | 2 +- spec/services/auto_merge_service_spec.rb | 2 +- .../services/award_emojis/add_service_spec.rb | 2 +- .../award_emojis/base_service_spec.rb | 2 +- .../collect_user_emoji_service_spec.rb | 2 +- .../award_emojis/copy_service_spec.rb | 2 +- .../award_emojis/destroy_service_spec.rb | 2 +- .../award_emojis/toggle_service_spec.rb | 2 +- spec/services/base_container_service_spec.rb | 2 +- spec/services/base_count_service_spec.rb | 2 +- spec/services/boards/create_service_spec.rb | 2 +- spec/services/boards/destroy_service_spec.rb | 2 +- .../boards/issues/create_service_spec.rb | 2 +- .../boards/issues/list_service_spec.rb | 2 +- .../boards/issues/move_service_spec.rb | 2 +- .../boards/lists/create_service_spec.rb | 2 +- .../boards/lists/destroy_service_spec.rb | 2 +- .../boards/lists/list_service_spec.rb | 2 +- .../boards/lists/move_service_spec.rb | 2 +- .../boards/lists/update_service_spec.rb | 2 +- .../boards/visits/create_service_spec.rb | 2 +- spec/services/branches/create_service_spec.rb | 4 +- .../branches/delete_merged_service_spec.rb | 2 +- spec/services/branches/delete_service_spec.rb | 2 +- .../diverging_commit_counts_service_spec.rb | 2 +- .../branches/validate_new_service_spec.rb | 2 +- .../bulk_create_integration_service_spec.rb | 2 +- .../archive_extraction_service_spec.rb | 2 +- .../bulk_imports/export_service_spec.rb | 2 +- .../file_decompression_service_spec.rb | 2 +- .../file_download_service_spec.rb | 2 +- .../bulk_imports/file_export_service_spec.rb | 2 +- .../lfs_objects_export_service_spec.rb | 2 +- .../relation_export_service_spec.rb | 2 +- .../repository_bundle_export_service_spec.rb | 2 +- .../bulk_imports/tree_export_service_spec.rb | 2 +- .../uploads_export_service_spec.rb | 2 +- .../bulk_push_event_payload_service_spec.rb | 2 +- .../bulk_update_integration_service_spec.rb | 2 +- .../captcha_verification_service_spec.rb | 2 +- .../chat_names/find_user_service_spec.rb | 2 +- .../ci/abort_pipelines_service_spec.rb | 2 +- .../ci/append_build_trace_service_spec.rb | 2 +- spec/services/ci/build_cancel_service_spec.rb | 2 +- spec/services/ci/build_erase_service_spec.rb | 2 +- .../ci/build_report_result_service_spec.rb | 2 +- .../ci/build_unschedule_service_spec.rb | 2 +- .../ci/catalog/add_resource_service_spec.rb | 55 + .../catalog/validate_resource_service_spec.rb | 57 + .../ci/change_variable_service_spec.rb | 2 +- .../ci/change_variables_service_spec.rb | 2 +- ...pare_accessibility_reports_service_spec.rb | 2 +- ...ompare_codequality_reports_service_spec.rb | 2 +- .../ci/compare_reports_base_service_spec.rb | 2 +- .../ci/compare_test_reports_service_spec.rb | 2 +- .../ci/components/fetch_service_spec.rb | 2 +- ...ross_database_associations_service_spec.rb | 2 +- .../create_pipeline_service/artifacts_spec.rb | 2 +- .../ci/create_pipeline_service/cache_spec.rb | 3 +- .../creation_errors_and_warnings_spec.rb | 2 +- .../cross_project_pipeline_spec.rb | 3 +- .../custom_config_content_spec.rb | 2 +- .../custom_yaml_tags_spec.rb | 3 +- .../create_pipeline_service/dry_run_spec.rb | 3 +- .../environment_spec.rb | 3 +- .../evaluate_runner_tags_spec.rb | 3 +- .../create_pipeline_service/include_spec.rb | 2 +- .../limit_active_jobs_spec.rb | 3 +- .../ci/create_pipeline_service/logger_spec.rb | 2 +- .../merge_requests_spec.rb | 3 +- .../ci/create_pipeline_service/needs_spec.rb | 3 +- .../create_pipeline_service/parallel_spec.rb | 3 +- .../parameter_content_spec.rb | 3 +- .../parent_child_pipeline_spec.rb | 3 +- .../pre_post_stages_spec.rb | 3 +- .../rate_limit_spec.rb | 3 +- .../ci/create_pipeline_service/rules_spec.rb | 36 +- .../create_pipeline_service/scripts_spec.rb | 28 +- .../ci/create_pipeline_service/tags_spec.rb | 2 +- .../create_pipeline_service/variables_spec.rb | 3 +- .../create_web_ide_terminal_service_spec.rb | 2 +- ..._build_group_report_result_service_spec.rb | 2 +- .../ci/delete_objects_service_spec.rb | 2 +- .../ci/delete_unit_tests_service_spec.rb | 2 +- .../ci/deployments/destroy_service_spec.rb | 2 +- .../ci/destroy_pipeline_service_spec.rb | 2 +- .../ci/destroy_secure_file_service_spec.rb | 2 +- ...le_user_pipeline_schedules_service_spec.rb | 2 +- .../services/ci/drop_pipeline_service_spec.rb | 2 +- spec/services/ci/ensure_stage_service_spec.rb | 2 +- .../ci/expire_pipeline_cache_service_spec.rb | 2 +- .../create_pipeline_service_spec.rb | 2 +- .../ci/find_exposed_artifacts_service_spec.rb | 2 +- ...codequality_mr_diff_report_service_spec.rb | 2 +- .../generate_coverage_reports_service_spec.rb | 2 +- .../ci/generate_kubeconfig_service_spec.rb | 2 +- ...generate_terraform_reports_service_spec.rb | 2 +- .../bulk_delete_by_project_service_spec.rb | 121 + .../ci/job_artifacts/create_service_spec.rb | 145 +- .../delete_project_artifacts_service_spec.rb | 2 +- .../ci/job_artifacts/delete_service_spec.rb | 2 +- .../destroy_all_expired_service_spec.rb | 38 +- .../destroy_associations_service_spec.rb | 31 +- .../destroy_batch_service_spec.rb | 15 +- ...re_project_build_artifacts_service_spec.rb | 2 +- .../track_artifact_report_service_spec.rb | 2 +- ...date_unknown_locked_status_service_spec.rb | 3 +- .../ci/list_config_variables_service_spec.rb | 2 +- .../coverage_report_service_spec.rb | 2 +- ...ode_quality_mr_diff_report_service_spec.rb | 2 +- .../destroy_all_expired_service_spec.rb | 3 +- .../ci/pipeline_bridge_status_service_spec.rb | 2 +- .../start_pipeline_service_spec.rb | 2 +- .../status_collection_spec.rb | 25 +- .../take_ownership_service_spec.rb | 2 +- .../ci/pipeline_trigger_service_spec.rb | 2 +- .../ci/pipelines/add_job_service_spec.rb | 2 +- .../ci/pipelines/hook_service_spec.rb | 2 +- spec/services/ci/play_bridge_service_spec.rb | 2 +- spec/services/ci/play_build_service_spec.rb | 2 +- .../ci/play_manual_stage_service_spec.rb | 2 +- .../services/ci/prepare_build_service_spec.rb | 2 +- .../services/ci/process_build_service_spec.rb | 2 +- .../ci/process_pipeline_service_spec.rb | 2 +- .../ci/process_sync_events_service_spec.rb | 2 +- .../observe_histograms_service_spec.rb | 2 +- .../ci/queue/pending_builds_strategy_spec.rb | 2 +- spec/services/ci/register_job_service_spec.rb | 1506 +++++----- ...source_from_resource_group_service_spec.rb | 2 +- .../ci/retry_pipeline_service_spec.rb | 2 +- .../ci/run_scheduled_build_service_spec.rb | 2 +- .../ci/runners/create_runner_service_spec.rb | 43 + ...cess_runner_version_update_service_spec.rb | 13 + .../stuck_builds/drop_pending_service_spec.rb | 2 +- .../stuck_builds/drop_running_service_spec.rb | 2 +- .../drop_scheduled_service_spec.rb | 2 +- .../ci/test_failure_history_service_spec.rb | 2 +- .../ci/track_failed_build_service_spec.rb | 2 +- .../ci/unlock_artifacts_service_spec.rb | 10 +- .../ci/update_build_queue_service_spec.rb | 2 +- .../update_instance_variables_service_spec.rb | 2 +- .../ci/update_pending_build_service_spec.rb | 2 +- .../agent_tokens/create_service_spec.rb | 8 +- .../agent_tokens/revoke_service_spec.rb | 77 + .../agent_tokens/track_usage_service_spec.rb | 2 +- .../authorize_proxy_user_service_spec.rb | 68 + .../create_activity_event_service_spec.rb | 13 +- .../clusters/agents/create_service_spec.rb | 2 +- .../delete_expired_events_service_spec.rb | 2 +- .../clusters/agents/delete_service_spec.rb | 2 +- ...build_kubernetes_namespace_service_spec.rb | 2 +- spec/services/clusters/build_service_spec.rb | 2 +- .../cleanup/project_namespace_service_spec.rb | 2 +- .../cleanup/service_account_service_spec.rb | 2 +- spec/services/clusters/create_service_spec.rb | 2 +- .../services/clusters/destroy_service_spec.rb | 2 +- .../integrations/create_service_spec.rb | 2 +- .../prometheus_health_check_service_spec.rb | 2 +- ...create_or_update_namespace_service_spec.rb | 2 +- ..._or_update_service_account_service_spec.rb | 2 +- .../fetch_kubernetes_token_service_spec.rb | 2 +- spec/services/clusters/kubernetes_spec.rb | 2 +- ...gement_project_permissions_service_spec.rb | 2 +- spec/services/clusters/update_service_spec.rb | 2 +- spec/services/cohorts_service_spec.rb | 2 +- .../commits/cherry_pick_service_spec.rb | 2 +- .../commits/commit_patch_service_spec.rb | 2 +- spec/services/commits/tag_service_spec.rb | 2 +- spec/services/compare_service_spec.rb | 2 +- .../concerns/audit_event_save_type_spec.rb | 2 +- .../concerns/exclusive_lease_guard_spec.rb | 2 +- .../assigns_merge_params_spec.rb | 2 +- .../concerns/rate_limited_service_spec.rb | 2 +- .../cleanup_service_spec.rb | 3 +- .../update_service_spec.rb | 2 +- .../contacts/create_service_spec.rb | 2 +- .../contacts/update_service_spec.rb | 2 +- .../organizations/create_service_spec.rb | 2 +- .../organizations/update_service_spec.rb | 2 +- .../database/consistency_fix_service_spec.rb | 2 +- .../auth_token_service_spec.rb | 2 +- .../find_cached_manifest_service_spec.rb | 2 +- .../group_settings/update_service_spec.rb | 2 +- .../head_manifest_service_spec.rb | 2 +- .../update_service_spec.rb | 2 +- .../request_token_service_spec.rb | 2 +- .../deploy_keys/create_service_spec.rb | 2 +- .../archive_in_project_service_spec.rb | 2 +- .../create_for_build_service_spec.rb | 2 +- .../deployments/create_service_spec.rb | 2 +- .../link_merge_requests_service_spec.rb | 2 +- .../older_deployments_drop_service_spec.rb | 2 +- .../update_environment_service_spec.rb | 2 +- .../deployments/update_service_spec.rb | 2 +- .../copy_service_spec.rb | 3 +- .../queue_service_spec.rb | 3 +- .../delete_designs_service_spec.rb | 2 +- .../design_user_notes_count_service_spec.rb | 2 +- .../generate_image_versions_service_spec.rb | 2 +- .../move_designs_service_spec.rb | 2 +- ...capture_diff_note_position_service_spec.rb | 2 +- ...apture_diff_note_positions_service_spec.rb | 2 +- .../update_diff_position_service_spec.rb | 2 +- .../draft_notes/create_service_spec.rb | 2 +- .../draft_notes/destroy_service_spec.rb | 2 +- .../draft_notes/publish_service_spec.rb | 2 +- spec/services/emails/confirm_service_spec.rb | 2 +- spec/services/emails/create_service_spec.rb | 2 +- spec/services/emails/destroy_service_spec.rb | 2 +- .../environments/auto_stop_service_spec.rb | 3 +- .../canary_ingress/update_service_spec.rb | 3 +- .../create_for_build_service_spec.rb | 2 +- .../reset_auto_stop_service_spec.rb | 2 +- ...dule_to_delete_review_apps_service_spec.rb | 2 +- .../environments/stop_service_spec.rb | 2 +- .../error_tracking/base_service_spec.rb | 2 +- .../collect_error_service_spec.rb | 2 +- .../issue_details_service_spec.rb | 2 +- .../issue_latest_event_service_spec.rb | 2 +- .../issue_update_service_spec.rb | 2 +- .../list_issues_service_spec.rb | 2 +- spec/services/event_create_service_spec.rb | 59 +- spec/services/events/destroy_service_spec.rb | 2 +- spec/services/events/render_service_spec.rb | 2 +- .../feature_flags/create_service_spec.rb | 10 +- .../feature_flags/destroy_service_spec.rb | 5 +- .../feature_flags/hook_service_spec.rb | 2 +- .../feature_flags/update_service_spec.rb | 7 +- spec/services/files/create_service_spec.rb | 2 +- spec/services/files/delete_service_spec.rb | 6 +- spec/services/files/multi_service_spec.rb | 16 +- spec/services/files/update_service_spec.rb | 6 +- spec/services/git/base_hooks_service_spec.rb | 2 +- .../services/git/branch_hooks_service_spec.rb | 2 +- spec/services/git/branch_push_service_spec.rb | 2 +- .../git/process_ref_changes_service_spec.rb | 2 +- spec/services/git/tag_hooks_service_spec.rb | 2 +- spec/services/git/tag_push_service_spec.rb | 2 +- .../git/wiki_push_service/change_spec.rb | 2 +- .../create_cloudsql_instance_service_spec.rb | 2 +- .../create_service_accounts_service_spec.rb | 2 +- .../enable_cloud_run_service_spec.rb | 2 +- .../enable_cloudsql_service_spec.rb | 2 +- .../gcp_region_add_or_replace_service_spec.rb | 2 +- .../generate_pipeline_service_spec.rb | 2 +- .../get_cloudsql_instances_service_spec.rb | 2 +- .../service_accounts_service_spec.rb | 2 +- .../setup_cloudsql_instance_service_spec.rb | 2 +- spec/services/gpg_keys/create_service_spec.rb | 2 +- spec/services/grafana/proxy_service_spec.rb | 2 +- spec/services/gravatar_service_spec.rb | 2 +- .../groups/auto_devops_service_spec.rb | 2 +- .../groups/autocomplete_service_spec.rb | 2 +- .../deploy_tokens/create_service_spec.rb | 2 +- .../deploy_tokens/destroy_service_spec.rb | 2 +- .../deploy_tokens/revoke_service_spec.rb | 2 +- .../groups/group_links/create_service_spec.rb | 2 +- .../group_links/destroy_service_spec.rb | 2 +- .../groups/group_links/update_service_spec.rb | 4 +- .../import_export/export_service_spec.rb | 2 +- .../import_export/import_service_spec.rb | 2 +- .../merge_requests_count_service_spec.rb | 2 +- .../groups/nested_create_service_spec.rb | 2 +- .../groups/open_issues_count_service_spec.rb | 2 +- .../groups/participants_service_spec.rb | 2 +- spec/services/groups/update_service_spec.rb | 2 +- .../update_shared_runners_service_spec.rb | 2 +- .../groups/update_statistics_service_spec.rb | 2 +- spec/services/ide/base_config_service_spec.rb | 2 +- .../ide/schemas_config_service_spec.rb | 2 +- .../ide/terminal_config_service_spec.rb | 2 +- .../import/bitbucket_server_service_spec.rb | 4 +- spec/services/import/fogbugz_service_spec.rb | 4 +- .../cancel_project_import_service_spec.rb | 14 +- .../github/notes/create_service_spec.rb | 2 +- spec/services/import/github_service_spec.rb | 4 +- .../create_project_service_spec.rb | 11 +- .../file_upload_spec.rb | 2 +- .../remote_file_s3_spec.rb | 2 +- spec/services/import/prepare_service_spec.rb | 2 +- ...lidate_remote_git_endpoint_service_spec.rb | 24 +- spec/services/import_csv/base_service_spec.rb | 81 +- .../import_export_clean_up_service_spec.rb | 2 +- .../incidents/create_service_spec.rb | 2 +- .../after_update_service_spec.rb | 3 +- .../build_service_spec.rb | 2 +- .../create_service_spec.rb | 2 +- .../prepare_update_service_spec.rb | 3 +- .../create_incident_issue_service_spec.rb | 2 +- .../process_webhook_service_spec.rb | 2 +- .../create_service_spec.rb | 2 +- .../timeline_events/create_service_spec.rb | 4 +- .../timeline_events/destroy_service_spec.rb | 3 +- .../timeline_events/update_service_spec.rb | 1 - .../integrations/propagate_service_spec.rb | 2 +- .../integrations/test/project_service_spec.rb | 2 +- .../issuable/bulk_update_service_spec.rb | 2 +- .../common_system_notes_service_spec.rb | 2 +- .../destroy_label_links_service_spec.rb | 2 +- .../services/issuable/destroy_service_spec.rb | 2 +- .../issuable/discussions_list_service_spec.rb | 2 +- .../issuable/process_assignees_spec.rb | 2 +- .../issue_links/create_service_spec.rb | 3 +- .../issue_links/destroy_service_spec.rb | 3 +- .../services/issue_links/list_service_spec.rb | 2 +- .../issues/after_create_service_spec.rb | 2 +- spec/services/issues/base_service_spec.rb | 9 + spec/services/issues/build_service_spec.rb | 2 +- spec/services/issues/clone_service_spec.rb | 2 +- spec/services/issues/close_service_spec.rb | 3 +- spec/services/issues/create_service_spec.rb | 2 +- .../services/issues/duplicate_service_spec.rb | 2 +- .../issues/import_csv_service_spec.rb | 3 +- .../issues/issuable_base_service_spec.rb | 9 + .../issues/prepare_import_csv_service_spec.rb | 2 +- .../referenced_merge_requests_service_spec.rb | 2 +- .../issues/related_branches_service_spec.rb | 2 +- ...ative_position_rebalancing_service_spec.rb | 2 +- spec/services/issues/reopen_service_spec.rb | 3 +- spec/services/issues/reorder_service_spec.rb | 2 +- .../issues/resolve_discussions_spec.rb | 14 +- .../issues/set_crm_contacts_service_spec.rb | 2 +- spec/services/issues/update_service_spec.rb | 4 +- .../services/issues/zoom_link_service_spec.rb | 3 +- .../requests/projects/list_service_spec.rb | 2 +- .../jira_connect/sync_service_spec.rb | 2 +- .../destroy_service_spec.rb | 2 +- .../proxy_lifecycle_event_service_spec.rb | 6 +- .../create_service_spec.rb | 2 +- .../cloud_users_mapper_service_spec.rb | 2 +- .../server_users_mapper_service_spec.rb | 2 +- .../jira_import/start_import_service_spec.rb | 2 +- .../jira_import/users_importer_spec.rb | 2 +- spec/services/keys/create_service_spec.rb | 2 +- spec/services/keys/destroy_service_spec.rb | 2 +- .../keys/expiry_notification_service_spec.rb | 2 +- spec/services/keys/last_used_service_spec.rb | 2 +- spec/services/keys/revoke_service_spec.rb | 13 - .../labels/available_labels_service_spec.rb | 2 +- spec/services/labels/create_service_spec.rb | 2 +- .../labels/find_or_create_service_spec.rb | 2 +- spec/services/labels/promote_service_spec.rb | 2 +- spec/services/labels/transfer_service_spec.rb | 2 +- spec/services/labels/update_service_spec.rb | 2 +- spec/services/lfs/lock_file_service_spec.rb | 2 +- .../services/lfs/locks_finder_service_spec.rb | 2 +- spec/services/lfs/push_service_spec.rb | 2 +- spec/services/lfs/unlock_file_service_spec.rb | 2 +- .../batch_cleaner_service_spec.rb | 2 +- .../cleaner_service_spec.rb | 2 +- .../process_deleted_records_service_spec.rb | 2 +- .../markdown_content_rewriter_service_spec.rb | 2 +- .../services/markup/rendering_service_spec.rb | 19 +- .../mattermost/create_team_service_spec.rb | 28 + .../approve_access_request_service_spec.rb | 2 +- spec/services/members/create_service_spec.rb | 3 +- spec/services/members/creator_service_spec.rb | 2 +- .../members/groups/creator_service_spec.rb | 2 +- .../import_project_team_service_spec.rb | 2 +- .../invitation_reminder_email_service_spec.rb | 2 +- .../members/invite_member_builder_spec.rb | 2 +- spec/services/members/invite_service_spec.rb | 3 +- .../members/projects/creator_service_spec.rb | 2 +- .../members/request_access_service_spec.rb | 2 +- .../members/standard_member_builder_spec.rb | 2 +- .../unassign_issuables_service_spec.rb | 2 +- spec/services/members/update_service_spec.rb | 2 +- .../add_context_service_spec.rb | 2 +- .../add_spent_time_service_spec.rb | 2 +- .../add_todo_when_build_fails_service_spec.rb | 2 +- .../merge_requests/approval_service_spec.rb | 2 +- .../assign_issues_service_spec.rb | 2 +- .../merge_requests/base_service_spec.rb | 4 + .../cleanup_refs_service_spec.rb | 2 +- .../merge_requests/close_service_spec.rb | 6 +- .../conflicts/list_service_spec.rb | 2 +- .../conflicts/resolve_service_spec.rb | 2 +- .../create_approval_event_service_spec.rb | 2 +- .../create_pipeline_service_spec.rb | 2 +- .../merge_requests/create_service_spec.rb | 7 +- .../delete_non_latest_diffs_service_spec.rb | 3 +- .../execute_approval_hooks_service_spec.rb | 2 +- .../merge_requests/ff_merge_service_spec.rb | 2 +- .../merge_requests/get_urls_service_spec.rb | 2 +- .../handle_assignees_change_service_spec.rb | 2 +- .../mark_reviewer_reviewed_service_spec.rb | 2 +- .../merge_orchestration_service_spec.rb | 2 +- .../merge_requests/merge_service_spec.rb | 2 +- .../merge_to_ref_service_spec.rb | 2 +- .../mergeability/check_base_service_spec.rb | 2 +- .../check_broken_status_service_spec.rb | 2 +- .../check_ci_status_service_spec.rb | 2 +- .../check_discussions_status_service_spec.rb | 2 +- .../check_draft_status_service_spec.rb | 2 +- .../check_open_status_service_spec.rb | 2 +- .../detailed_merge_status_service_spec.rb | 2 +- .../mergeability/logger_spec.rb | 2 +- .../mergeability/run_checks_service_spec.rb | 2 +- .../mergeability_check_service_spec.rb | 2 +- .../migrate_external_diffs_service_spec.rb | 2 +- .../merge_requests/post_merge_service_spec.rb | 8 +- .../push_options_handler_service_spec.rb | 2 +- .../merge_requests/refresh_service_spec.rb | 8 + .../reload_diffs_service_spec.rb | 3 +- .../reload_merge_head_diff_service_spec.rb | 2 +- .../merge_requests/reopen_service_spec.rb | 8 +- .../request_review_service_spec.rb | 2 +- .../resolve_todos_service_spec.rb | 2 +- ...ed_discussion_notification_service_spec.rb | 2 +- .../merge_requests/squash_service_spec.rb | 2 +- .../update_assignees_service_spec.rb | 2 +- .../update_reviewers_service_spec.rb | 2 +- .../annotations/create_service_spec.rb | 2 +- .../annotations/delete_service_spec.rb | 2 +- .../dashboard/clone_dashboard_service_spec.rb | 2 +- .../cluster_dashboard_service_spec.rb | 3 +- .../cluster_metrics_embed_service_spec.rb | 3 +- .../custom_dashboard_service_spec.rb | 3 +- .../custom_metric_embed_service_spec.rb | 2 +- .../dashboard/default_embed_service_spec.rb | 3 +- .../dashboard/dynamic_embed_service_spec.rb | 3 +- .../gitlab_alert_embed_service_spec.rb | 2 +- .../grafana_metric_embed_service_spec.rb | 2 +- .../dashboard/panel_preview_service_spec.rb | 2 +- .../dashboard/pod_dashboard_service_spec.rb | 3 +- .../self_monitoring_dashboard_service_spec.rb | 3 +- .../system_dashboard_service_spec.rb | 3 +- .../dashboard/transient_embed_service_spec.rb | 3 +- .../update_dashboard_service_spec.rb | 2 +- .../metrics/sample_metrics_service_spec.rb | 2 +- .../create_service_spec.rb | 2 +- .../delete_service_spec.rb | 2 +- .../services/milestones/close_service_spec.rb | 2 +- .../closed_issues_count_service_spec.rb | 3 +- .../milestones/create_service_spec.rb | 2 +- .../milestones/destroy_service_spec.rb | 2 +- .../milestones/find_or_create_service_spec.rb | 2 +- .../milestones/issues_count_service_spec.rb | 3 +- .../merge_requests_count_service_spec.rb | 3 +- .../milestones/promote_service_spec.rb | 2 +- .../milestones/transfer_service_spec.rb | 2 +- .../milestones/update_service_spec.rb | 2 +- .../candidate_repository_spec.rb | 2 +- .../experiment_repository_spec.rb | 2 +- .../namespace_settings/update_service_spec.rb | 2 +- ...n_product_marketing_emails_service_spec.rb | 2 +- .../package_settings/update_service_spec.rb | 2 +- .../statistics_refresher_service_spec.rb | 2 +- spec/services/note_summary_spec.rb | 2 +- spec/services/notes/build_service_spec.rb | 2 +- spec/services/notes/copy_service_spec.rb | 2 +- spec/services/notes/create_service_spec.rb | 5 - spec/services/notes/destroy_service_spec.rb | 2 +- .../notes/post_process_service_spec.rb | 2 +- .../notes/quick_actions_service_spec.rb | 86 +- spec/services/notes/render_service_spec.rb | 2 +- spec/services/notes/resolve_service_spec.rb | 2 +- spec/services/notes/update_service_spec.rb | 2 +- .../build_service_spec.rb | 2 +- .../builder/default_spec.rb | 2 +- .../builder/new_note_spec.rb | 2 +- .../onboarding/progress_service_spec.rb | 2 +- .../cleanup/execute_policy_service_spec.rb | 2 +- .../cleanup/update_policy_service_spec.rb | 2 +- .../composer/composer_json_service_spec.rb | 2 +- .../composer/create_package_service_spec.rb | 2 +- .../composer/version_parser_service_spec.rb | 2 +- .../conan/create_package_file_service_spec.rb | 2 +- .../conan/create_package_service_spec.rb | 2 +- .../create_dependency_service_spec.rb | 2 +- .../packages/create_event_service_spec.rb | 2 +- .../create_package_file_service_spec.rb | 2 +- .../create_temporary_package_service_spec.rb | 2 +- .../create_package_file_service_spec.rb | 2 +- .../extract_changes_metadata_service_spec.rb | 2 +- .../debian/extract_metadata_service_spec.rb | 86 +- .../generate_distribution_service_spec.rb | 28 +- .../debian/parse_debian822_service_spec.rb | 20 +- .../debian/process_changes_service_spec.rb | 2 +- .../process_package_file_service_spec.rb | 5 +- .../create_package_file_service_spec.rb | 2 +- .../find_or_create_package_service_spec.rb | 2 +- .../go/create_package_service_spec.rb | 2 +- .../packages/go/sync_packages_service_spec.rb | 2 +- .../extract_file_metadata_service_spec.rb | 2 +- .../helm/process_file_service_spec.rb | 2 +- ...kage_files_for_destruction_service_spec.rb | 3 +- ...rk_package_for_destruction_service_spec.rb | 8 +- ...k_packages_for_destruction_service_spec.rb | 7 +- .../maven/create_package_service_spec.rb | 2 +- .../find_or_create_package_service_spec.rb | 51 +- .../append_package_file_service_spec.rb | 2 +- .../create_plugins_xml_service_spec.rb | 2 +- .../create_versions_xml_service_spec.rb | 2 +- .../maven/metadata/sync_service_spec.rb | 2 +- .../npm/create_package_service_spec.rb | 2 +- .../packages/npm/create_tag_service_spec.rb | 2 +- .../nuget/create_dependency_service_spec.rb | 2 +- .../nuget/metadata_extraction_service_spec.rb | 2 +- .../packages/nuget/search_service_spec.rb | 2 +- .../nuget/sync_metadatum_service_spec.rb | 2 +- ...date_package_from_metadata_service_spec.rb | 2 +- .../pypi/create_package_service_spec.rb | 2 +- .../packages/remove_tag_service_spec.rb | 2 +- .../rpm/parse_package_service_spec.rb | 2 +- .../build_filelist_xml_service_spec.rb | 2 +- .../build_other_xml_service_spec.rb | 2 +- .../build_primary_xml_service_spec.rb | 2 +- .../build_repomd_xml_service_spec.rb | 2 +- .../update_xml_service_spec.rb | 2 +- .../create_dependencies_service_spec.rb | 2 +- .../rubygems/create_gemspec_service_spec.rb | 2 +- .../dependency_resolver_service_spec.rb | 2 +- .../metadata_extraction_service_spec.rb | 2 +- .../rubygems/process_gem_service_spec.rb | 2 +- .../create_package_service_spec.rb | 2 +- .../update_package_file_service_spec.rb | 2 +- .../packages/update_tags_service_spec.rb | 2 +- spec/services/pages/delete_service_spec.rb | 2 +- ...gacy_storage_to_deployment_service_spec.rb | 2 +- .../pages/zip_directory_service_spec.rb | 2 +- .../create_acme_order_service_spec.rb | 2 +- ...n_lets_encrypt_certificate_service_spec.rb | 2 +- .../create_service_spec.rb | 20 +- .../last_used_service_spec.rb | 2 +- .../revoke_service_spec.rb | 2 +- spec/services/post_receive_service_spec.rb | 2 +- .../services/preview_markdown_service_spec.rb | 2 +- .../build_activity_graph_service_spec.rb | 2 +- .../build_graph_service_spec.rb | 2 +- .../projects/after_rename_service_spec.rb | 2 +- .../projects/alerting/notify_service_spec.rb | 2 +- .../projects/all_issues_count_service_spec.rb | 2 +- .../all_merge_requests_count_service_spec.rb | 2 +- ...d_target_platform_detector_service_spec.rb | 2 +- ...e_target_platform_detector_service_spec.rb | 2 +- .../auto_devops/disable_service_spec.rb | 2 +- .../projects/autocomplete_service_spec.rb | 2 +- .../batch_open_issues_count_service_spec.rb | 2 +- ..._open_merge_requests_count_service_spec.rb | 32 + spec/services/projects/blame_service_spec.rb | 2 +- .../projects/branches_by_mode_service_spec.rb | 2 +- .../services/projects/cleanup_service_spec.rb | 2 +- .../cleanup_tags_service_spec.rb | 7 +- .../delete_tags_service_spec.rb | 2 +- .../destroy_service_spec.rb | 2 +- .../gitlab/cleanup_tags_service_spec.rb | 20 +- .../gitlab/delete_tags_service_spec.rb | 2 +- .../third_party/cleanup_tags_service_spec.rb | 2 +- .../third_party/delete_tags_service_spec.rb | 2 +- spec/services/projects/count_service_spec.rb | 2 +- .../create_from_template_service_spec.rb | 2 +- spec/services/projects/create_service_spec.rb | 17 + .../deploy_tokens/create_service_spec.rb | 2 +- .../deploy_tokens/destroy_service_spec.rb | 2 +- ...etect_repository_languages_service_spec.rb | 2 +- .../projects/download_service_spec.rb | 2 +- .../enable_deploy_key_service_spec.rb | 2 +- ...fetch_statistics_increment_service_spec.rb | 2 +- spec/services/projects/fork_service_spec.rb | 2 +- .../projects/forks/sync_service_spec.rb | 185 ++ .../projects/forks_count_service_spec.rb | 2 +- .../git_deduplication_service_spec.rb | 2 +- .../gitlab_projects_import_service_spec.rb | 2 +- .../group_links/create_service_spec.rb | 2 +- .../group_links/destroy_service_spec.rb | 2 +- .../group_links/update_service_spec.rb | 2 +- .../base_attachment_service_spec.rb | 2 +- .../migrate_attachments_service_spec.rb | 2 +- .../migrate_repository_service_spec.rb | 2 +- .../hashed_storage/migration_service_spec.rb | 2 +- .../rollback_attachments_service_spec.rb | 2 +- .../rollback_repository_service_spec.rb | 2 +- .../hashed_storage/rollback_service_spec.rb | 2 +- .../projects/import_error_filter_spec.rb | 2 +- .../relation_export_service_spec.rb | 4 +- ..._marketing_campaign_emails_service_spec.rb | 2 +- .../lfs_download_link_list_service_spec.rb | 2 +- .../lfs_pointers/lfs_download_service_spec.rb | 2 +- .../lfs_pointers/lfs_import_service_spec.rb | 2 +- .../lfs_pointers/lfs_link_service_spec.rb | 21 +- .../lfs_object_download_list_service_spec.rb | 2 +- .../projects/move_access_service_spec.rb | 2 +- .../move_deploy_keys_projects_service_spec.rb | 2 +- .../projects/move_forks_service_spec.rb | 2 +- .../move_lfs_objects_projects_service_spec.rb | 2 +- ...move_notification_settings_service_spec.rb | 2 +- ...ove_project_authorizations_service_spec.rb | 2 +- .../move_project_group_links_service_spec.rb | 2 +- .../move_project_members_service_spec.rb | 2 +- .../move_users_star_projects_service_spec.rb | 2 +- .../open_issues_count_service_spec.rb | 2 +- .../open_merge_requests_count_service_spec.rb | 2 +- .../operations/update_service_spec.rb | 2 +- .../overwrite_project_service_spec.rb | 2 +- .../projects/participants_service_spec.rb | 2 +- .../prometheus/alerts/notify_service_spec.rb | 2 +- .../metrics/destroy_service_spec.rb | 2 +- .../protect_default_branch_service_spec.rb | 2 +- .../projects/readme_renderer_service_spec.rb | 2 +- .../record_target_platforms_service_spec.rb | 2 +- ..._artifacts_size_statistics_service_spec.rb | 2 +- .../repository_languages_service_spec.rb | 2 +- ...ulk_repository_shard_moves_service_spec.rb | 2 +- .../projects/transfer_service_spec.rb | 2 +- .../projects/unlink_fork_service_spec.rb | 2 +- .../projects/update_pages_service_spec.rb | 2 +- .../update_remote_mirror_service_spec.rb | 2 +- .../update_repository_storage_service_spec.rb | 2 +- spec/services/projects/update_service_spec.rb | 154 +- .../update_statistics_service_spec.rb | 2 +- .../services/prometheus/proxy_service_spec.rb | 2 +- ...roxy_variable_substitution_service_spec.rb | 2 +- .../protected_branches/api_service_spec.rb | 2 +- .../protected_branches/cache_service_spec.rb | 2 +- .../destroy_service_spec.rb | 2 +- .../protected_branches/update_service_spec.rb | 2 +- .../protected_tags/create_service_spec.rb | 2 +- .../protected_tags/destroy_service_spec.rb | 2 +- .../protected_tags/update_service_spec.rb | 2 +- .../push_event_payload_service_spec.rb | 2 +- .../quick_actions/interpret_service_spec.rb | 4 +- .../quick_actions/target_service_spec.rb | 2 +- .../releases/create_evidence_service_spec.rb | 2 +- .../services/releases/destroy_service_spec.rb | 2 +- .../releases/links/create_service_spec.rb | 84 + .../releases/links/destroy_service_spec.rb | 72 + .../releases/links/update_service_spec.rb | 89 + .../repositories/changelog_service_spec.rb | 2 +- .../repositories/destroy_service_spec.rb | 2 +- ...epository_archive_clean_up_service_spec.rb | 2 +- .../reset_project_cache_service_spec.rb | 2 +- .../create_service_spec.rb | 56 +- .../revoke_service_spec.rb | 2 +- .../change_labels_service_spec.rb | 2 +- .../change_milestone_service_spec.rb | 2 +- .../change_state_service_spec.rb | 2 +- .../merge_into_notes_service_spec.rb | 2 +- ...thetic_label_notes_builder_service_spec.rb | 2 +- ...ic_milestone_notes_builder_service_spec.rb | 2 +- ...thetic_state_notes_builder_service_spec.rb | 2 +- spec/services/search/global_service_spec.rb | 2 +- spec/services/search/group_service_spec.rb | 2 +- spec/services/search/snippet_service_spec.rb | 2 +- .../container_scanning_create_service_spec.rb | 2 +- .../sast_iac_create_service_spec.rb | 2 +- .../sast_parser_service_spec.rb | 2 +- .../secret_detection_create_service_spec.rb | 2 +- .../security/merge_reports_service_spec.rb | 2 +- .../associate_domain_service_spec.rb | 91 - .../update_service_spec.rb | 2 +- .../submit_service_ping_service_spec.rb | 2 +- spec/services/service_response_spec.rb | 2 +- .../snippets/bulk_destroy_service_spec.rb | 2 +- spec/services/snippets/count_service_spec.rb | 2 +- spec/services/snippets/create_service_spec.rb | 2 +- .../services/snippets/destroy_service_spec.rb | 2 +- .../repository_validation_service_spec.rb | 2 +- ...ulk_repository_shard_moves_service_spec.rb | 2 +- .../update_repository_storage_service_spec.rb | 2 +- spec/services/snippets/update_service_spec.rb | 2 +- .../update_statistics_service_spec.rb | 2 +- .../spam/akismet_mark_as_spam_service_spec.rb | 2 +- spec/services/spam/akismet_service_spec.rb | 2 +- spec/services/spam/ham_service_spec.rb | 2 +- .../services/spam/spam_action_service_spec.rb | 2 +- spec/services/spam/spam_params_spec.rb | 2 +- .../spam/spam_verdict_service_spec.rb | 2 +- .../submodules/update_service_spec.rb | 2 +- .../suggestions/apply_service_spec.rb | 2 +- .../suggestions/create_service_spec.rb | 2 +- .../suggestions/outdate_service_spec.rb | 2 +- spec/services/system_hooks_service_spec.rb | 2 +- .../alert_management_service_spec.rb | 2 +- .../system_notes/base_service_spec.rb | 2 +- .../system_notes/commit_service_spec.rb | 82 +- .../design_management_service_spec.rb | 2 +- .../system_notes/incident_service_spec.rb | 2 +- .../system_notes/incidents_service_spec.rb | 2 +- .../system_notes/issuables_service_spec.rb | 2 +- .../merge_requests_service_spec.rb | 2 +- .../time_tracking_service_spec.rb | 2 +- .../system_notes/zoom_service_spec.rb | 2 +- spec/services/tags/create_service_spec.rb | 2 +- spec/services/tags/destroy_service_spec.rb | 2 +- .../services/task_list_toggle_service_spec.rb | 2 +- .../tasks_to_be_done/base_service_spec.rb | 2 +- .../terraform/remote_state_handler_spec.rb | 2 +- .../terraform/states/destroy_service_spec.rb | 2 +- .../states/trigger_destroy_service_spec.rb | 2 +- .../test_hooks/project_service_spec.rb | 2 +- .../test_hooks/system_service_spec.rb | 2 +- spec/services/timelogs/delete_service_spec.rb | 2 +- spec/services/todo_service_spec.rb | 3 +- .../allowed_target_filter_service_spec.rb | 2 +- .../confidential_issue_service_spec.rb | 2 +- .../todos/destroy/design_service_spec.rb | 2 +- .../destroyed_issuable_service_spec.rb | 2 +- .../destroy/project_private_service_spec.rb | 2 +- .../unauthorized_features_service_spec.rb | 2 +- spec/services/topics/merge_service_spec.rb | 2 +- .../two_factor/destroy_service_spec.rb | 2 +- ...te_container_registry_info_service_spec.rb | 2 +- ...date_merge_request_metrics_service_spec.rb | 2 +- spec/services/upload_service_spec.rb | 2 +- spec/services/uploads/destroy_service_spec.rb | 2 +- .../user_preferences/update_service_spec.rb | 2 +- ...ser_project_access_changed_service_spec.rb | 2 +- spec/services/users/activity_service_spec.rb | 2 +- spec/services/users/approve_service_spec.rb | 2 +- .../users/authorized_build_service_spec.rb | 2 +- spec/services/users/ban_service_spec.rb | 2 +- .../users/banned_user_base_service_spec.rb | 2 +- .../batch_status_cleaner_service_spec.rb | 2 +- spec/services/users/block_service_spec.rb | 2 +- spec/services/users/build_service_spec.rb | 2 +- spec/services/users/create_service_spec.rb | 2 +- spec/services/users/destroy_service_spec.rb | 2 +- .../users/dismiss_callout_service_spec.rb | 2 +- .../dismiss_group_callout_service_spec.rb | 2 +- .../dismiss_project_callout_service_spec.rb | 2 +- .../generate_token_service_spec.rb | 2 +- .../validate_token_service_spec.rb | 2 +- ...in_product_marketing_email_records_spec.rb | 2 +- .../services/users/keys_count_service_spec.rb | 2 +- .../users/last_push_event_service_spec.rb | 2 +- ...s_to_ghost_user_in_batches_service_spec.rb | 2 +- ...rate_records_to_ghost_user_service_spec.rb | 2 +- ...efresh_authorized_projects_service_spec.rb | 2 +- .../users/registrations_build_service_spec.rb | 2 +- spec/services/users/reject_service_spec.rb | 2 +- .../users/repair_ldap_blocked_service_spec.rb | 2 +- .../users/respond_to_terms_service_spec.rb | 2 +- .../saved_replies/create_service_spec.rb | 2 +- .../saved_replies/destroy_service_spec.rb | 2 +- .../saved_replies/update_service_spec.rb | 2 +- .../services/users/set_status_service_spec.rb | 2 +- spec/services/users/signup_service_spec.rb | 8 +- spec/services/users/unban_service_spec.rb | 2 +- spec/services/users/unblock_service_spec.rb | 2 +- .../update_canonical_email_service_spec.rb | 2 +- ...update_highest_member_role_service_spec.rb | 2 +- spec/services/users/update_service_spec.rb | 2 +- .../update_todo_count_cache_service_spec.rb | 2 +- ...ert_credit_card_validation_service_spec.rb | 2 +- .../users/validate_manual_otp_service_spec.rb | 33 +- .../users/validate_push_otp_service_spec.rb | 2 +- .../verify_pages_domain_service_spec.rb | 2 +- .../web_hooks/destroy_service_spec.rb | 2 +- .../web_hooks/log_destroy_service_spec.rb | 2 +- .../web_hooks/log_execution_service_spec.rb | 2 +- .../webauthn/authenticate_service_spec.rb | 2 +- .../webauthn/register_service_spec.rb | 2 +- spec/services/wiki_pages/base_service_spec.rb | 2 +- .../wiki_pages/create_service_spec.rb | 2 +- .../wiki_pages/destroy_service_spec.rb | 2 +- .../wiki_pages/event_create_service_spec.rb | 2 +- .../wiki_pages/update_service_spec.rb | 2 +- .../wikis/create_attachment_service_spec.rb | 2 +- .../services/work_items/build_service_spec.rb | 2 +- .../create_from_task_service_spec.rb | 2 +- .../work_items/create_service_spec.rb | 2 +- .../work_items/delete_service_spec.rb | 2 +- .../work_items/delete_task_service_spec.rb | 2 +- .../work_items/export_csv_service_spec.rb | 5 +- .../work_items/import_csv_service_spec.rb | 122 + .../parent_links/create_service_spec.rb | 34 + .../parent_links/destroy_service_spec.rb | 2 +- ...ask_list_reference_removal_service_spec.rb | 2 +- ...list_reference_replacement_service_spec.rb | 2 +- .../work_items/update_service_spec.rb | 2 +- .../assignees_service/update_service_spec.rb | 2 +- .../update_service_spec.rb | 2 +- .../hierarchy_service/create_service_spec.rb | 31 + .../milestone_service/create_service_spec.rb | 2 +- .../milestone_service/update_service_spec.rb | 2 +- .../update_service_spec.rb | 117 + .../update_service_spec.rb | 2 +- .../x509_certificate_revoke_service_spec.rb | 2 +- spec/simplecov_env.rb | 1 + spec/spec_helper.rb | 40 +- spec/support/ability_check.rb | 73 + spec/support/ability_check_todo.yml | 73 + spec/support/helpers/ci/template_helpers.rb | 4 + .../support/helpers/content_editor_helpers.rb | 58 + spec/support/helpers/fake_u2f_device.rb | 47 - .../helpers/features/two_factor_helpers.rb | 41 +- .../helpers/filtered_search_helpers.rb | 11 +- spec/support/helpers/fixture_helpers.rb | 2 +- spec/support/helpers/gitaly_setup.rb | 17 +- spec/support/helpers/graphql_helpers.rb | 4 +- spec/support/helpers/login_helpers.rb | 14 +- .../helpers/navbar_structure_helper.rb | 8 + spec/support/helpers/query_recorder.rb | 4 + spec/support/helpers/repo_helpers.rb | 4 + spec/support/helpers/stub_configuration.rb | 2 +- spec/support/helpers/stub_object_storage.rb | 4 +- spec/support/helpers/test_env.rb | 1 + spec/support/helpers/usage_data_helpers.rb | 2 - .../background_migrations_matchers.rb | 14 + .../matchers/exceed_redis_call_limit.rb | 57 + .../matchers/request_urgency_matcher.rb | 29 + spec/support/permissions_check.rb | 18 + .../access_control_ce_shared_examples.rb | 27 +- spec/support/rspec.rb | 7 + spec/support/rspec_order_todo.yml | 12 - .../import_csv_service_shared_examples.rb | 38 + ...able_import_csv_service_shared_examples.rb | 37 +- .../integrations_shared_context.rb | 6 + .../navbar_structure_context.rb | 52 +- .../policies/group_policy_shared_context.rb | 5 +- .../policies/project_policy_shared_context.rb | 15 +- .../rack_attack_shared_context.rb | 3 +- .../api/debian_repository_shared_context.rb | 3 + ...d_compliance_permissions_shared_context.rb | 4 +- .../cycle_analytics/flow_metrics_examples.rb | 464 ++++ .../request_params_examples.rb | 127 + .../multiple_issue_boards_shared_examples.rb | 2 +- ...ubish_import_controller_shared_examples.rb | 13 + ...mport_controller_status_shared_examples.rb | 22 + .../git_http_controller_shared_examples.rb | 27 +- .../features/2fa_shared_examples.rb | 2 - .../features/abuse_report_shared_examples.rb | 14 + .../content_editor_shared_examples.rb | 97 +- ...ncident_details_routing_shared_examples.rb | 14 +- ...ash_command_integration_shared_examples.rb | 2 +- ...issuable_invite_members_shared_examples.rb | 2 - .../manage_applications_shared_examples.rb | 113 +- ...rotected_tags_with_deploy_keys_examples.rb | 61 + ...re_oauth_authorizations_shared_examples.rb | 2 +- .../trial_email_validation_shared_example.rb | 67 +- ...ariable_list_pagination_shared_examples.rb | 66 + .../user_updates_wiki_page_shared_examples.rb | 1 + ...user_views_wiki_sidebar_shared_examples.rb | 24 + .../features/work_items_shared_examples.rb | 47 +- .../members/bulk_update_shared_examples.rb | 123 + .../notes_on_noteables_shared_examples.rb | 2 +- ..._actions_for_work_items_shared_examples.rb | 154 ++ ...quest_interactions_type_shared_examples.rb | 1 + .../helpers/callouts_for_web_hooks.rb | 49 + .../integrations/integration_settings_form.rb | 1 - ...terraform_state_enabled_shared_examples.rb | 29 + ..._constraints_validation_shared_examples.rb | 131 + .../index_validators_shared_examples.rb | 38 + .../schema_objects_shared_examples.rb | 20 + .../trigger_validators_shared_examples.rb | 33 + .../search_language_filter_shared_examples.rb | 25 - .../issuable_activity_shared_examples.rb | 12 - ...ame_and_email_generator_shared_examples.rb | 104 + .../lib/menus_shared_examples.rb | 24 + .../user_profile_menus_shared_examples.rb | 89 + .../user_settings_menus_shared_examples.rb | 52 + .../mailers/export_csv_shared_examples.rb | 37 + .../active_record_enum_shared_examples.rb | 10 + .../models/ci/token_format_shared_examples.rb | 29 + .../auto_disabling_hooks_shared_examples.rb | 98 +- ...ading_namespace_setting_shared_examples.rb | 56 +- .../counter_attribute_shared_examples.rb | 48 +- ...base_slack_notification_shared_examples.rb | 1 - .../unstoppable_hooks_shared_examples.rb | 6 +- .../has_web_hooks_shared_examples.rb | 4 +- .../cycle_analytics_stage_shared_examples.rb | 9 +- .../base_slash_commands_shared_examples.rb | 3 +- .../debian/component_file_shared_example.rb | 16 + .../project_ci_cd_settings_shared_examples.rb | 4 +- .../observability/csp_shared_examples.rb | 25 +- .../embed_observabilities_examples.rb | 61 + .../project_policy_shared_examples.rb | 21 + .../requests/admin_mode_shared_examples.rb | 71 +- .../api/debian_packages_shared_examples.rb | 26 + .../api/discussions_shared_examples.rb | 12 - .../requests/api/hooks_shared_examples.rb | 2 +- .../api/npm_packages_shared_examples.rb | 451 +-- .../api/nuget_endpoints_shared_examples.rb | 5 + .../api/pypi_packages_shared_examples.rb | 9 +- .../requests/api/status_shared_examples.rb | 17 + ...applications_controller_shared_examples.rb | 30 +- .../generate_distribution_shared_examples.rb | 141 +- ...ository_storage_service_shared_examples.rb | 29 - .../create_service_shared_examples.rb | 4 +- .../snowplow_tracking_shared_examples.rb | 1 - spec/support/stub_dot_com_check.rb | 20 + spec/support_specs/ability_check_spec.rb | 148 + .../helpers/packages/npm_spec.rb | 133 + .../matchers/exceed_redis_call_limit_spec.rb | 59 + .../decomposition/connection_status_spec.rb | 61 + spec/tasks/gitlab/db_rake_spec.rb | 145 +- .../gitlab/feature_categories_rake_spec.rb | 2 +- .../update_banned_ssh_keys_rake_spec.rb | 2 +- spec/tooling/danger/sidekiq_args_spec.rb | 125 + spec/tooling/danger/specs_spec.rb | 10 +- spec/tooling/danger/stable_branch_spec.rb | 26 +- .../js_to_system_specs_mappings_spec.rb | 14 + spec/uploaders/gitlab_uploader_spec.rb | 17 +- spec/uploaders/object_storage/cdn_spec.rb | 94 +- spec/uploaders/object_storage_spec.rb | 2 +- .../addressable_url_validator_spec.rb | 70 +- .../ci_cd.html.haml_spec.rb | 5 +- .../network.html.haml_spec.rb | 33 + .../sessions/two_factor.html.haml_spec.rb | 10 +- .../almost_there.html.haml_spec.rb | 17 +- .../devise/sessions/new.html.haml_spec.rb | 3 +- .../shared/_error_messages.html.haml_spec.rb | 43 + .../shared/_signup_box.html.haml_spec.rb | 1 + .../events/event/_common.html.haml_spec.rb | 13 - .../group_members/index.html.haml_spec.rb | 1 - spec/views/layouts/group.html.haml_spec.rb | 30 + .../layouts/header/_new_dropdown.haml_spec.rb | 27 +- .../nav/sidebar/_project.html.haml_spec.rb | 14 +- spec/views/layouts/project.html.haml_spec.rb | 29 + .../import_issues_csv_email.html.haml_spec.rb | 4 +- ...ort_work_items_csv_email.html.haml_spec.rb | 133 + .../profiles/keys/_key.html.haml_spec.rb | 21 +- spec/views/projects/edit.html.haml_spec.rb | 24 + spec/views/projects/empty.html.haml_spec.rb | 4 - .../_pipeline_schedule.html.haml_spec.rb | 4 +- .../projects/pipelines/show.html.haml_spec.rb | 19 +- .../project_members/index.html.haml_spec.rb | 1 - spec/workers/admin_email_worker_spec.rb | 2 +- .../count_job_trigger_worker_spec.rb | 2 +- .../usage_trends/counter_job_worker_spec.rb | 2 +- ...cked_pending_approval_users_worker_spec.rb | 2 +- spec/workers/authorized_keys_worker_spec.rb | 2 +- .../periodic_recalculate_worker_spec.rb | 2 +- ...roject_recalculate_per_user_worker_spec.rb | 2 +- .../project_recalculate_worker_spec.rb | 2 +- .../user_refresh_from_replica_worker_spec.rb | 2 +- ...ser_refresh_over_user_range_worker_spec.rb | 2 +- ...er_refresh_with_low_urgency_worker_spec.rb | 2 +- .../authorized_projects_worker_spec.rb | 2 +- .../auto_devops/disable_worker_spec.rb | 2 +- .../workers/auto_merge_process_worker_spec.rb | 2 +- .../ci_database_worker_spec.rb | 2 +- .../background_migration_worker_spec.rb | 2 +- spec/workers/build_hooks_worker_spec.rb | 2 +- spec/workers/build_queue_worker_spec.rb | 2 +- spec/workers/build_success_worker_spec.rb | 2 +- .../bulk_imports/entity_worker_spec.rb | 2 +- .../relation_export_worker_spec.rb | 2 +- .../bulk_imports/stuck_import_worker_spec.rb | 2 +- spec/workers/chat_notification_worker_spec.rb | 2 +- spec/workers/ci/archive_trace_worker_spec.rb | 2 +- .../ci/archive_traces_cron_worker_spec.rb | 14 - spec/workers/ci/build_finished_worker_spec.rb | 2 +- spec/workers/ci/build_prepare_worker_spec.rb | 2 +- spec/workers/ci/build_schedule_worker_spec.rb | 2 +- .../ci/build_trace_chunk_flush_worker_spec.rb | 2 +- .../workers/ci/cancel_pipeline_worker_spec.rb | 2 +- ...eate_cross_project_pipeline_worker_spec.rb | 2 +- .../create_downstream_pipeline_worker_spec.rb | 2 +- ..._build_group_report_results_worker_spec.rb | 2 +- spec/workers/ci/delete_objects_worker_spec.rb | 2 +- .../ci/delete_unit_tests_worker_spec.rb | 2 +- spec/workers/ci/drop_pipeline_worker_spec.rb | 2 +- ...ire_project_build_artifacts_worker_spec.rb | 2 +- .../track_artifact_report_worker_spec.rb | 2 +- .../add_todo_when_build_fails_worker_spec.rb | 2 +- .../parse_secure_file_metadata_worker_spec.rb | 2 +- .../update_group_worker_spec.rb | 2 +- .../update_project_worker_spec.rb | 2 +- .../coverage_report_worker_spec.rb | 2 +- .../create_quality_report_worker_spec.rb | 2 +- .../expire_artifacts_worker_spec.rb | 2 +- .../ci/pipeline_bridge_status_worker_spec.rb | 2 +- ...ne_success_unlock_artifacts_worker_spec.rb | 2 +- ...ref_delete_unlock_artifacts_worker_spec.rb | 2 +- ...esource_from_resource_group_worker_spec.rb | 2 +- spec/workers/ci/retry_pipeline_worker_spec.rb | 2 +- ...chedule_delete_objects_cron_worker_spec.rb | 2 +- .../stuck_builds/drop_running_worker_spec.rb | 2 +- .../drop_scheduled_worker_spec.rb | 2 +- .../ci/test_failure_history_worker_spec.rb | 2 +- .../ci/track_failed_build_worker_spec.rb | 2 +- ...te_locked_unknown_artifacts_worker_spec.rb | 2 +- ...latform_metrics_update_cron_worker_spec.rb | 2 +- ...leanup_container_repository_worker_spec.rb | 2 +- .../delete_expired_events_worker_spec.rb | 2 +- .../activate_integration_worker_spec.rb | 2 +- .../deactivate_integration_worker_spec.rb | 2 +- .../cleanup/project_namespace_worker_spec.rb | 2 +- .../cleanup/service_account_worker_spec.rb | 2 +- .../check_prometheus_health_worker_spec.rb | 2 +- .../concerns/application_worker_spec.rb | 2 +- .../concerns/cluster_agent_queue_spec.rb | 3 +- spec/workers/concerns/cluster_queue_spec.rb | 21 - spec/workers/concerns/cronjob_queue_spec.rb | 6 +- .../github_import/object_importer_spec.rb | 86 +- .../gitlab/github_import/queue_spec.rb | 18 - .../rescheduling_methods_spec.rb | 2 +- .../github_import/stage_methods_spec.rb | 2 +- .../concerns/gitlab/notify_upon_death_spec.rb | 2 +- .../limited_capacity/job_tracker_spec.rb | 2 +- .../concerns/limited_capacity/worker_spec.rb | 2 +- .../packages/cleanup_artifact_worker_spec.rb | 2 +- .../pipeline_background_queue_spec.rb | 21 - spec/workers/concerns/pipeline_queue_spec.rb | 21 - .../concerns/project_import_options_spec.rb | 2 +- spec/workers/concerns/reenqueuer_spec.rb | 2 +- .../concerns/repository_check_queue_spec.rb | 6 +- spec/workers/concerns/waitable_worker_spec.rb | 2 +- .../concerns/worker_attributes_spec.rb | 2 +- spec/workers/concerns/worker_context_spec.rb | 2 +- ...leanup_container_repository_worker_spec.rb | 30 +- ...container_expiration_policy_worker_spec.rb | 12 +- .../container_registry/cleanup_worker_spec.rb | 2 +- ...delete_container_repository_worker_spec.rb | 2 +- .../migration/enqueuer_worker_spec.rb | 3 +- .../migration/guard_worker_spec.rb | 2 +- .../migration/observer_worker_spec.rb | 2 +- .../counters/cleanup_refresh_worker_spec.rb | 2 +- .../create_commit_signature_worker_spec.rb | 2 +- .../create_note_diff_file_worker_spec.rb | 2 +- spec/workers/create_pipeline_worker_spec.rb | 2 +- .../ci_database_worker_spec.rb | 2 +- ...atched_background_migration_worker_spec.rb | 2 +- ...e_mirrors_consistency_check_worker_spec.rb | 2 +- ...t_mirrors_consistency_check_worker_spec.rb | 2 +- .../drop_detached_partitions_worker_spec.rb | 2 +- .../partition_management_worker_spec.rb | 2 +- ...delete_container_repository_worker_spec.rb | 2 +- spec/workers/delete_diff_files_worker_spec.rb | 2 +- .../delete_merged_branches_worker_spec.rb | 2 +- spec/workers/delete_user_worker_spec.rb | 2 +- .../cleanup_blob_worker_spec.rb | 2 +- .../cleanup_dependency_proxy_worker_spec.rb | 2 +- .../cleanup_manifest_worker_spec.rb | 2 +- .../image_ttl_group_policy_worker_spec.rb | 2 +- .../archive_in_project_worker_spec.rb | 2 +- .../drop_older_deployments_worker_spec.rb | 2 +- spec/workers/deployments/hooks_worker_spec.rb | 2 +- .../link_merge_request_worker_spec.rb | 2 +- .../update_environment_worker_spec.rb | 2 +- .../copy_design_collection_worker_spec.rb | 2 +- .../new_version_worker_spec.rb | 2 +- .../destroy_pages_deployments_worker_spec.rb | 2 +- ...detect_repository_languages_worker_spec.rb | 2 +- ...sallow_two_factor_for_group_worker_spec.rb | 2 +- ...ow_two_factor_for_subgroups_worker_spec.rb | 2 +- spec/workers/email_receiver_worker_spec.rb | 2 +- spec/workers/emails_on_push_worker_spec.rb | 10 +- .../auto_delete_cron_worker_spec.rb | 2 +- .../auto_stop_cron_worker_spec.rb | 2 +- .../environments/auto_stop_worker_spec.rb | 2 +- .../canary_ingress/update_worker_spec.rb | 2 +- .../error_tracking_issue_link_worker_spec.rb | 2 +- spec/workers/every_sidekiq_worker_spec.rb | 4 +- .../expire_build_artifacts_worker_spec.rb | 2 +- spec/workers/export_csv_worker_spec.rb | 2 +- ...al_service_reactive_caching_worker_spec.rb | 2 +- spec/workers/file_hook_worker_spec.rb | 2 +- .../flush_counter_increments_worker_spec.rb | 2 +- .../advance_stage_worker_spec.rb | 2 +- .../attachments/import_issue_worker_spec.rb | 2 +- .../import_merge_request_worker_spec.rb | 2 +- .../attachments/import_note_worker_spec.rb | 2 +- .../attachments/import_release_worker_spec.rb | 2 +- .../import_collaborator_worker_spec.rb | 38 + .../import_diff_note_worker_spec.rb | 2 +- .../import_issue_event_worker_spec.rb | 2 +- .../github_import/import_issue_worker_spec.rb | 2 +- .../github_import/import_note_worker_spec.rb | 2 +- .../import_protected_branch_worker_spec.rb | 2 +- ...port_pull_request_merged_by_worker_spec.rb | 2 +- .../import_pull_request_review_worker_spec.rb | 2 +- .../import_pull_request_worker_spec.rb | 2 +- .../import_release_attachments_worker_spec.rb | 2 +- .../import_review_request_worker_spec.rb | 2 +- .../refresh_import_jid_worker_spec.rb | 2 +- .../stage/finish_import_worker_spec.rb | 2 +- .../stage/import_attachments_worker_spec.rb | 2 +- .../stage/import_base_data_worker_spec.rb | 2 +- .../stage/import_collaborators_worker_spec.rb | 73 + .../stage/import_issue_events_worker_spec.rb | 2 +- ...mport_issues_and_diff_notes_worker_spec.rb | 2 +- .../stage/import_lfs_objects_worker_spec.rb | 2 +- .../stage/import_notes_worker_spec.rb | 2 +- .../import_protected_branches_worker_spec.rb | 2 +- ...ort_pull_requests_merged_by_worker_spec.rb | 2 +- ...ll_requests_review_requests_worker_spec.rb | 2 +- ...mport_pull_requests_reviews_worker_spec.rb | 2 +- .../stage/import_pull_requests_worker_spec.rb | 4 +- .../stage/import_repository_worker_spec.rb | 10 +- .../gitlab/import/stuck_import_job_spec.rb | 2 +- .../stuck_project_import_jobs_worker_spec.rb | 2 +- .../jira_import/import_issue_worker_spec.rb | 2 +- .../stage/finish_import_worker_spec.rb | 2 +- .../stage/import_attachments_worker_spec.rb | 2 +- .../stage/import_issues_worker_spec.rb | 2 +- .../stage/import_labels_worker_spec.rb | 2 +- .../stage/import_notes_worker_spec.rb | 2 +- .../stage/start_import_worker_spec.rb | 2 +- .../stuck_jira_import_jobs_worker_spec.rb | 2 +- .../phabricator_import/base_worker_spec.rb | 2 +- .../import_tasks_worker_spec.rb | 2 +- ...itlab_performance_bar_stats_worker_spec.rb | 2 +- .../gitlab_service_ping_worker_spec.rb | 8 +- spec/workers/gitlab_shell_worker_spec.rb | 2 +- .../create_cloudsql_instance_worker_spec.rb | 2 +- spec/workers/group_destroy_worker_spec.rb | 23 +- spec/workers/group_export_worker_spec.rb | 2 +- spec/workers/group_import_worker_spec.rb | 2 +- .../groups/update_statistics_worker_spec.rb | 2 +- ...tor_requirement_for_members_worker_spec.rb | 2 +- .../hashed_storage/migrator_worker_spec.rb | 2 +- .../project_migrate_worker_spec.rb | 2 +- .../project_rollback_worker_spec.rb | 2 +- .../hashed_storage/rollbacker_worker_spec.rb | 2 +- spec/workers/import_issues_csv_worker_spec.rb | 2 +- .../add_severity_system_note_worker_spec.rb | 2 +- .../close_incident_worker_spec.rb | 2 +- .../process_incident_worker_spec.rb | 2 +- .../process_alert_worker_v2_spec.rb | 2 +- ...te_external_cross_reference_worker_spec.rb | 2 +- .../integrations/execute_worker_spec.rb | 2 +- .../workers/integrations/irker_worker_spec.rb | 2 +- ...nvalid_gpg_signature_update_worker_spec.rb | 2 +- .../label_links_destroy_worker_spec.rb | 2 +- .../issuable_export_csv_worker_spec.rb | 45 +- .../clear_groups_issue_counter_worker_spec.rb | 2 +- .../issue_due_scheduler_worker_spec.rb | 2 +- spec/workers/issues/close_worker_spec.rb | 2 +- spec/workers/issues/placement_worker_spec.rb | 2 +- .../workers/issues/rebalancing_worker_spec.rb | 2 +- ...dule_stuck_issue_rebalances_worker_spec.rb | 2 +- .../jira_connect/forward_event_worker_spec.rb | 2 +- .../jira_connect/retry_request_worker_spec.rb | 2 +- .../jira_connect/sync_branch_worker_spec.rb | 2 +- .../jira_connect/sync_builds_worker_spec.rb | 2 +- .../sync_deployments_worker_spec.rb | 2 +- .../sync_feature_flags_worker_spec.rb | 2 +- .../sync_merge_request_worker_spec.rb | 2 +- .../jira_connect/sync_project_worker_spec.rb | 2 +- .../loose_foreign_keys/cleanup_worker_spec.rb | 2 +- .../mail_scheduler/issue_due_worker_spec.rb | 2 +- .../notification_service_worker_spec.rb | 2 +- ..._invitation_reminder_emails_worker_spec.rb | 2 +- .../unassign_issuables_worker_spec.rb | 2 +- .../merge_request_cleanup_refs_worker_spec.rb | 8 +- ..._request_mergeability_check_worker_spec.rb | 2 +- .../merge_requests/close_issue_worker_spec.rb | 2 +- .../create_approval_event_worker_spec.rb | 2 +- .../create_approval_note_worker_spec.rb | 2 +- .../delete_source_branch_worker_spec.rb | 2 +- .../execute_approval_hooks_worker_spec.rb | 2 +- .../handle_assignees_change_worker_spec.rb | 2 +- ...esolve_todos_after_approval_worker_spec.rb | 2 +- .../resolve_todos_worker_spec.rb | 2 +- .../update_head_pipeline_worker_spec.rb | 2 +- spec/workers/merge_worker_spec.rb | 2 +- .../prune_old_annotations_worker_spec.rb | 2 +- .../schedule_annotations_prune_worker_spec.rb | 2 +- .../dashboard/sync_dashboards_worker_spec.rb | 2 +- .../migrate_external_diffs_worker_spec.rb | 2 +- ...in_product_marketing_emails_worker_spec.rb | 2 +- .../process_sync_events_worker_spec.rb | 2 +- ...prune_aggregation_schedules_worker_spec.rb | 2 +- .../namespaces/root_statistics_worker_spec.rb | 2 +- .../schedule_aggregation_worker_spec.rb | 2 +- .../update_root_statistics_worker_spec.rb | 2 +- spec/workers/new_issue_worker_spec.rb | 2 +- spec/workers/new_merge_request_worker_spec.rb | 12 - spec/workers/new_note_worker_spec.rb | 2 +- .../workers/object_pool/create_worker_spec.rb | 2 +- .../object_pool/destroy_worker_spec.rb | 2 +- spec/workers/object_pool/join_worker_spec.rb | 2 +- .../onboarding/issue_created_worker_spec.rb | 2 +- .../pipeline_created_worker_spec.rb | 2 +- .../onboarding/progress_worker_spec.rb | 2 +- .../onboarding/user_added_worker_spec.rb | 2 +- .../cleanup/execute_policy_worker_spec.rb | 2 +- .../cleanup_package_file_worker_spec.rb | 2 +- .../cleanup_package_registry_worker_spec.rb | 2 +- .../composer/cache_cleanup_worker_spec.rb | 2 +- .../composer/cache_update_worker_spec.rb | 2 +- .../generate_distribution_worker_spec.rb | 10 +- .../debian/process_changes_worker_spec.rb | 6 +- .../process_package_file_worker_spec.rb | 1 + .../packages/go/sync_packages_worker_spec.rb | 2 +- .../packages/helm/extraction_worker_spec.rb | 2 +- ...ckage_files_for_destruction_worker_spec.rb | 2 +- .../packages/nuget/extraction_worker_spec.rb | 2 +- .../rubygems/extraction_worker_spec.rb | 2 +- .../pages_domain_removal_cron_worker_spec.rb | 2 +- ...ges_domain_ssl_renewal_cron_worker_spec.rb | 2 +- .../pages_domain_ssl_renewal_worker_spec.rb | 2 +- ...es_domain_verification_cron_worker_spec.rb | 2 +- .../pages_domain_verification_worker_spec.rb | 2 +- spec/workers/pages_worker_spec.rb | 2 +- .../workers/partition_creation_worker_spec.rb | 2 +- .../expired_notification_worker_spec.rb | 2 +- .../expiring_worker_spec.rb | 2 +- spec/workers/pipeline_hooks_worker_spec.rb | 2 +- spec/workers/pipeline_metrics_worker_spec.rb | 2 +- .../pipeline_notification_worker_spec.rb | 2 +- spec/workers/pipeline_process_worker_spec.rb | 2 +- spec/workers/post_receive_spec.rb | 3 +- spec/workers/process_commit_worker_spec.rb | 2 +- spec/workers/project_cache_worker_spec.rb | 2 +- spec/workers/project_destroy_worker_spec.rb | 25 +- spec/workers/project_export_worker_spec.rb | 2 +- .../projects/after_import_worker_spec.rb | 2 +- ..._project_statistics_refresh_worker_spec.rb | 2 +- .../create_relation_exports_worker_spec.rb | 67 + .../relation_export_worker_spec.rb | 51 +- .../wait_relation_exports_worker_spec.rb | 123 + ...tive_projects_deletion_cron_worker_spec.rb | 2 +- ...jects_deletion_notification_worker_spec.rb | 2 +- .../projects/post_creation_worker_spec.rb | 2 +- .../process_sync_events_worker_spec.rb | 2 +- .../record_target_platforms_worker_spec.rb | 2 +- ...d_artifacts_size_statistics_worker_spec.rb | 2 +- ...bulk_repository_shard_moves_worker_spec.rb | 2 +- ...d_artifacts_size_statistics_worker_spec.rb | 2 +- .../update_repository_storage_worker_spec.rb | 2 +- ...propagate_integration_group_worker_spec.rb | 2 +- ...egration_inherit_descendant_worker_spec.rb | 2 +- ...opagate_integration_inherit_worker_spec.rb | 2 +- .../propagate_integration_worker_spec.rb | 2 +- spec/workers/prune_old_events_worker_spec.rb | 14 +- ...urge_dependency_proxy_cache_worker_spec.rb | 2 +- spec/workers/reactive_caching_worker_spec.rb | 2 +- spec/workers/rebase_worker_spec.rb | 2 +- .../releases/create_evidence_worker_spec.rb | 2 +- .../releases/manage_evidence_worker_spec.rb | 2 +- .../remote_mirror_notification_worker_spec.rb | 2 +- .../remove_expired_group_links_worker_spec.rb | 2 +- .../remove_expired_members_worker_spec.rb | 2 +- ...e_unaccepted_member_invites_worker_spec.rb | 2 +- ...ve_unreferenced_lfs_objects_worker_spec.rb | 2 +- .../repository_check/batch_worker_spec.rb | 2 +- .../repository_check/clear_worker_spec.rb | 2 +- .../repository_check/dispatch_worker_spec.rb | 2 +- .../single_repository_worker_spec.rb | 2 +- .../workers/repository_cleanup_worker_spec.rb | 2 +- spec/workers/repository_fork_worker_spec.rb | 2 +- ...sitory_update_remote_mirror_worker_spec.rb | 2 +- ..._merge_request_cleanup_refs_worker_spec.rb | 2 +- ...dule_migrate_external_diffs_worker_spec.rb | 2 +- ...f_monitoring_project_create_worker_spec.rb | 2 +- ...f_monitoring_project_delete_worker_spec.rb | 2 +- ...service_desk_email_receiver_worker_spec.rb | 2 +- ...bulk_repository_shard_moves_worker_spec.rb | 2 +- .../update_repository_storage_worker_spec.rb | 2 +- .../expired_notification_worker_spec.rb | 3 +- .../expiring_soon_notification_worker_spec.rb | 3 +- spec/workers/stage_update_worker_spec.rb | 2 +- spec/workers/stuck_ci_jobs_worker_spec.rb | 2 +- spec/workers/stuck_export_jobs_worker_spec.rb | 2 +- spec/workers/stuck_merge_jobs_worker_spec.rb | 2 +- spec/workers/system_hook_push_worker_spec.rb | 2 +- .../tasks_to_be_done/create_worker_spec.rb | 2 +- .../terraform/states/destroy_worker_spec.rb | 2 +- .../confidential_issue_worker_spec.rb | 2 +- .../destroyed_designs_worker_spec.rb | 2 +- .../destroyed_issuable_worker_spec.rb | 2 +- .../entity_leave_worker_spec.rb | 2 +- .../group_private_worker_spec.rb | 2 +- .../private_features_worker_spec.rb | 2 +- .../project_private_worker_spec.rb | 2 +- spec/workers/trending_projects_worker_spec.rb | 2 +- ...ate_container_registry_info_worker_spec.rb | 2 +- ...date_external_pull_requests_worker_spec.rb | 2 +- ..._pipeline_for_merge_request_worker_spec.rb | 2 +- .../update_highest_role_worker_spec.rb | 2 +- .../update_merge_requests_worker_spec.rb | 2 +- .../update_project_statistics_worker_spec.rb | 2 +- spec/workers/upload_checksum_worker_spec.rb | 2 +- .../user_status_cleanup/batch_worker_spec.rb | 2 +- .../users/create_statistics_worker_spec.rb | 2 +- .../deactivate_dormant_users_worker_spec.rb | 5 +- ...ds_to_ghost_user_in_batches_worker_spec.rb | 2 +- spec/workers/web_hook_worker_spec.rb | 2 +- .../web_hooks/log_destroy_worker_spec.rb | 2 +- .../x509_certificate_revoke_worker_spec.rb | 2 +- .../x509_issuer_crl_check_worker_spec.rb | 2 +- tooling/danger/sidekiq_args.rb | 59 + tooling/danger/sidekiq_queues.rb | 2 +- tooling/danger/specs.rb | 14 +- tooling/danger/stable_branch.rb | 16 +- tooling/lib/tooling/find_codeowners.rb | 6 +- tooling/lib/tooling/kubernetes_client.rb | 26 +- .../mappings/js_to_system_specs_mappings.rb | 1 + tooling/lib/tooling/test_map_generator.rb | 4 +- vendor/assets/javascripts/u2f.js | 750 ----- .../src/components/RecycleScroller.vue | 4 + .../gems/cloud_profiler_agent/.gitlab-ci.yml | 32 + vendor/gems/cloud_profiler_agent/Gemfile | 4 + vendor/gems/cloud_profiler_agent/Gemfile.lock | 126 + vendor/gems/cloud_profiler_agent/LICENSE | 23 + vendor/gems/cloud_profiler_agent/README.md | 30 + .../cloud_profiler_agent.gemspec | 29 + .../lib/cloud_profiler_agent.rb | 12 + .../lib/cloud_profiler_agent/agent.rb | 147 + .../lib/cloud_profiler_agent/looper.rb | 100 + .../lib/cloud_profiler_agent/pprof_builder.rb | 198 ++ .../cloud_profiler_agent/lib/profile_pb.rb | 85 + .../script/generate_profile.rb | 17 + .../spec/cloud_profiler_agent/cpu.stackprof | Bin 0 -> 1733 bytes .../spec/cloud_profiler_agent/looper_spec.rb | 157 ++ .../cloud_profiler_agent/object.stackprof | Bin 0 -> 11714 bytes .../pprof_builder_spec.rb | 122 + .../spec/cloud_profiler_agent/wall.stackprof | Bin 0 -> 110819 bytes .../cloud_profiler_agent/spec/spec_helper.rb | 21 + vendor/gems/kubeclient/.gitignore | 16 - vendor/gems/kubeclient/CHANGELOG.md | 247 -- vendor/gems/kubeclient/Gemfile | 7 - vendor/gems/kubeclient/LICENSE.txt | 22 - vendor/gems/kubeclient/README.md | 889 ------ vendor/gems/kubeclient/RELEASING.md | 69 - vendor/gems/kubeclient/Rakefile | 9 - vendor/gems/kubeclient/kubeclient.gemspec | 39 - vendor/gems/kubeclient/lib/kubeclient.rb | 35 - .../lib/kubeclient/aws_eks_credentials.rb | 46 - .../gems/kubeclient/lib/kubeclient/common.rb | 661 ----- .../gems/kubeclient/lib/kubeclient/config.rb | 202 -- .../kubeclient/lib/kubeclient/entity_list.rb | 21 - .../lib/kubeclient/exec_credentials.rb | 89 - .../lib/kubeclient/gcp_auth_provider.rb | 19 - .../lib/kubeclient/gcp_command_credentials.rb | 31 - .../google_application_default_credentials.rb | 31 - .../kubeclient/lib/kubeclient/http_error.rb | 25 - .../kubeclient/missing_kind_compatibility.rb | 68 - .../lib/kubeclient/oidc_auth_provider.rb | 52 - .../kubeclient/lib/kubeclient/resource.rb | 11 - .../kubeclient/resource_not_found_error.rb | 4 - .../gems/kubeclient/lib/kubeclient/version.rb | 4 - .../kubeclient/lib/kubeclient/watch_stream.rb | 97 - .../test/cassettes/kubernetes_guestbook.yml | 879 ------ .../test/config/allinone.kubeconfig | 21 - .../kubeclient/test/config/another-ca1.pem | 19 - .../kubeclient/test/config/another-ca2.pem | 19 - .../test/config/concatenated-ca.kubeconfig | 20 - .../test/config/concatenated-ca.pem | 57 - .../test/config/execauth.kubeconfig | 61 - .../kubeclient/test/config/external-ca.pem | 19 - .../kubeclient/test/config/external-cert.pem | 20 - .../kubeclient/test/config/external-key.rsa | 27 - .../config/external-without-ca.kubeconfig | 21 - .../test/config/external.kubeconfig | 20 - .../kubeclient/test/config/gcpauth.kubeconfig | 21 - .../test/config/gcpcmdauth.kubeconfig | 25 - .../test/config/insecure-custom-ca.kubeconfig | 22 - .../test/config/insecure.kubeconfig | 25 - .../kubeclient/test/config/nouser.kubeconfig | 15 - .../test/config/oidcauth.kubeconfig | 24 - .../test/config/secure-without-ca.kubeconfig | 22 - .../kubeclient/test/config/secure.kubeconfig | 21 - .../test/config/timestamps.kubeconfig | 25 - .../test/config/update_certs_k0s.rb | 53 - .../test/config/userauth.kubeconfig | 27 - .../kubeclient/test/json/bindings_list.json | 10 - .../test/json/component_status.json | 17 - .../test/json/component_status_list.json | 52 - .../config.istio.io_api_resource_list.json | 679 ----- .../kubeclient/test/json/config_map_list.json | 9 - .../test/json/core_api_resource_list.json | 181 -- .../core_api_resource_list_without_kind.json | 129 - .../core_oapi_resource_list_without_kind.json | 197 -- .../test/json/created_endpoint.json | 28 - .../test/json/created_namespace.json | 20 - .../kubeclient/test/json/created_secret.json | 16 - .../created_security_context_constraint.json | 65 - .../kubeclient/test/json/created_service.json | 31 - .../kubeclient/test/json/empty_pod_list.json | 9 - .../kubeclient/test/json/endpoint_list.json | 48 - .../kubeclient/test/json/entity_list.json | 56 - .../gems/kubeclient/test/json/event_list.json | 35 - .../extensions_v1beta1_api_resource_list.json | 217 -- .../kubeclient/test/json/limit_range.json | 23 - .../test/json/limit_range_list.json | 31 - .../gems/kubeclient/test/json/namespace.json | 13 - .../test/json/namespace_exception.json | 8 - .../kubeclient/test/json/namespace_list.json | 32 - vendor/gems/kubeclient/test/json/node.json | 29 - .../gems/kubeclient/test/json/node_list.json | 37 - .../kubeclient/test/json/node_notice.json | 160 -- .../test/json/persistent_volume.json | 37 - .../test/json/persistent_volume_claim.json | 32 - .../json/persistent_volume_claim_list.json | 40 - .../persistent_volume_claims_nil_items.json | 8 - .../test/json/persistent_volume_list.json | 45 - vendor/gems/kubeclient/test/json/pod.json | 92 - .../gems/kubeclient/test/json/pod_list.json | 79 - .../test/json/pod_template_list.json | 9 - vendor/gems/kubeclient/test/json/pods_1.json | 265 -- vendor/gems/kubeclient/test/json/pods_2.json | 102 - .../gems/kubeclient/test/json/pods_410.json | 9 - .../test/json/processed_template.json | 27 - .../test/json/replication_controller.json | 57 - .../json/replication_controller_list.json | 66 - .../kubeclient/test/json/resource_quota.json | 46 - .../test/json/resource_quota_list.json | 54 - .../kubeclient/test/json/secret_list.json | 44 - ...curity.openshift.io_api_resource_list.json | 69 - .../security_context_constraint_list.json | 375 --- vendor/gems/kubeclient/test/json/service.json | 33 - .../kubeclient/test/json/service_account.json | 25 - .../test/json/service_account_list.json | 82 - .../test/json/service_illegal_json_404.json | 1 - .../test/json/service_json_patch.json | 26 - .../kubeclient/test/json/service_list.json | 97 - .../test/json/service_merge_patch.json | 26 - .../kubeclient/test/json/service_patch.json | 25 - .../kubeclient/test/json/service_update.json | 22 - .../gems/kubeclient/test/json/template.json | 27 - ...mplate.openshift.io_api_resource_list.json | 75 - .../kubeclient/test/json/template_list.json | 35 - .../kubeclient/test/json/versions_list.json | 6 - .../kubeclient/test/json/watch_stream.json | 3 - vendor/gems/kubeclient/test/test_common.rb | 95 - .../test/test_common_url_handling.rb | 160 -- .../kubeclient/test/test_component_status.rb | 29 - vendor/gems/kubeclient/test/test_config.rb | 271 -- vendor/gems/kubeclient/test/test_endpoint.rb | 54 - .../kubeclient/test/test_exec_credentials.rb | 225 -- .../test/test_gcp_command_credentials.rb | 27 - ..._google_application_default_credentials.rb | 15 - .../gems/kubeclient/test/test_guestbook_go.rb | 237 -- vendor/gems/kubeclient/test/test_helper.rb | 28 - .../gems/kubeclient/test/test_kubeclient.rb | 881 ------ .../gems/kubeclient/test/test_limit_range.rb | 25 - .../kubeclient/test/test_missing_methods.rb | 80 - vendor/gems/kubeclient/test/test_namespace.rb | 59 - vendor/gems/kubeclient/test/test_node.rb | 70 - .../test/test_oidc_auth_provider.rb | 103 - .../kubeclient/test/test_persistent_volume.rb | 29 - .../test/test_persistent_volume_claim.rb | 28 - vendor/gems/kubeclient/test/test_pod.rb | 81 - vendor/gems/kubeclient/test/test_pod_log.rb | 157 -- .../kubeclient/test/test_process_template.rb | 80 - .../gems/kubeclient/test/test_real_cluster.rb | 162 -- .../test/test_replication_controller.rb | 47 - .../test/test_resource_list_without_kind.rb | 78 - .../kubeclient/test/test_resource_quota.rb | 23 - vendor/gems/kubeclient/test/test_secret.rb | 62 - .../test/test_security_context_constraint.rb | 62 - vendor/gems/kubeclient/test/test_service.rb | 357 --- .../kubeclient/test/test_service_account.rb | 26 - vendor/gems/kubeclient/test/test_watch.rb | 195 -- vendor/gems/kubeclient/test/txt/pod_log.txt | 6 - vendor/gems/kubeclient/test/valid_token_file | 1 - vendor/gems/omniauth-salesforce/README.md | 8 +- .../learn_gitlab_ultimate.tar.gz | Bin 115431 -> 0 bytes workhorse/go.mod | 68 +- workhorse/go.sum | 563 ++-- yarn.lock | 1641 +++++------ 8259 files changed, 229525 insertions(+), 112146 deletions(-) create mode 100644 .gitleaksignore create mode 100644 .rubocop_todo/background_migration/missing_dictionary_file.yml delete mode 100644 .rubocop_todo/performance/string_include.yml delete mode 100644 .rubocop_todo/rspec/invalid_feature_category.yml create mode 100644 app/assets/images/learn_gitlab/section_code.svg create mode 100644 app/assets/javascripts/admin/abuse_reports/components/abuse_report_row.vue create mode 100644 app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue create mode 100644 app/assets/javascripts/admin/abuse_reports/components/app.vue create mode 100644 app/assets/javascripts/admin/abuse_reports/constants.js create mode 100644 app/assets/javascripts/admin/abuse_reports/index.js create mode 100644 app/assets/javascripts/admin/abuse_reports/utils.js create mode 100644 app/assets/javascripts/admin/application_settings/network_outbound.js delete mode 100644 app/assets/javascripts/airflow/dags/components/dags.vue rename app/assets/javascripts/{flash.js => alert.js} (98%) create mode 100644 app/assets/javascripts/analytics/shared/components/value_streams_dashboard_link.vue create mode 100644 app/assets/javascripts/artifacts/components/artifacts_bulk_delete.vue create mode 100644 app/assets/javascripts/artifacts/components/job_checkbox.vue create mode 100644 app/assets/javascripts/artifacts/graphql/mutations/bulk_destroy_job_artifacts.mutation.graphql delete mode 100644 app/assets/javascripts/authentication/u2f/authenticate.js delete mode 100644 app/assets/javascripts/authentication/u2f/error.js delete mode 100644 app/assets/javascripts/authentication/u2f/index.js delete mode 100644 app/assets/javascripts/authentication/u2f/register.js delete mode 100644 app/assets/javascripts/authentication/u2f/util.js create mode 100644 app/assets/javascripts/authentication/webauthn/components/registration.vue create mode 100644 app/assets/javascripts/authentication/webauthn/constants.js create mode 100644 app/assets/javascripts/authentication/webauthn/registration.js create mode 100644 app/assets/javascripts/blame/streaming/index.js create mode 100644 app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/image_item.vue create mode 100644 app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/job_setup_item.vue create mode 100644 app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/utils.js create mode 100644 app/assets/javascripts/ci/pipeline_editor/event_hub.js create mode 100644 app/assets/javascripts/ci/pipeline_editor/store/index.js create mode 100644 app/assets/javascripts/ci/pipeline_editor/store/mutation_types.js create mode 100644 app/assets/javascripts/ci/pipeline_editor/store/mutations.js create mode 100644 app/assets/javascripts/ci/pipeline_editor/store/state.js create mode 100644 app/assets/javascripts/ci/runner/admin_register_runner/admin_register_runner_app.vue create mode 100644 app/assets/javascripts/ci/runner/admin_register_runner/index.js create mode 100644 app/assets/javascripts/ci/runner/components/registration/cli_command.vue create mode 100644 app/assets/javascripts/ci/runner/components/registration/platforms_drawer.vue create mode 100644 app/assets/javascripts/ci/runner/components/registration/registration_instructions.vue create mode 100644 app/assets/javascripts/ci/runner/components/registration/scripts/linux/install.sh create mode 100644 app/assets/javascripts/ci/runner/components/registration/scripts/osx/install.sh create mode 100644 app/assets/javascripts/ci/runner/components/registration/scripts/windows/install.ps1 create mode 100644 app/assets/javascripts/ci/runner/components/registration/utils.js create mode 100644 app/assets/javascripts/ci/runner/components/runner_create_form.vue create mode 100644 app/assets/javascripts/ci/runner/graphql/new/runner_create.mutation.graphql create mode 100644 app/assets/javascripts/ci/runner/graphql/register/runner_for_registration.query.graphql delete mode 100644 app/assets/javascripts/clusters/constants.js create mode 100644 app/assets/javascripts/commit/components/signature_badge.vue create mode 100644 app/assets/javascripts/commit/components/x509_certificate_details.vue create mode 100644 app/assets/javascripts/commit/constants.js create mode 100644 app/assets/javascripts/content_editor/extensions/drawio_diagram.js create mode 100644 app/assets/javascripts/design_management/graphql/mutations/destroy_note.mutation.graphql delete mode 100644 app/assets/javascripts/diffs/workers/tree_worker.js create mode 100644 app/assets/javascripts/drawio/constants.js create mode 100644 app/assets/javascripts/drawio/content_editor_facade.js create mode 100644 app/assets/javascripts/drawio/drawio_editor.js create mode 100644 app/assets/javascripts/drawio/markdown_field_editor_facade.js create mode 100644 app/assets/javascripts/entrypoints/super_sidebar.js create mode 100644 app/assets/javascripts/environments/components/kubernetes_agent_info.vue create mode 100644 app/assets/javascripts/environments/components/kubernetes_overview.vue create mode 100644 app/assets/javascripts/environments/graphql/queries/k8s_cluster_agent.query.graphql delete mode 100644 app/assets/javascripts/graphql_shared/queries/get_users_by_usernames.query.graphql create mode 100644 app/assets/javascripts/import_entities/import_projects/graphql/queries/search_namespaces_where_user_can_import_projects.query.graphql create mode 100644 app/assets/javascripts/integrations/edit/components/sections/apple_app_store.vue create mode 100644 app/assets/javascripts/integrations/edit/components/sections/google_play.vue create mode 100644 app/assets/javascripts/integrations/edit/components/upload_dropzone_field.vue delete mode 100644 app/assets/javascripts/issuable/popover/constants.js create mode 100644 app/assets/javascripts/issues/show/components/incidents/router.js create mode 100644 app/assets/javascripts/jobs/components/job/graphql/fragments/ci_job.fragment.graphql create mode 100644 app/assets/javascripts/jobs/components/job/graphql/fragments/ci_variable.fragment.graphql create mode 100644 app/assets/javascripts/jobs/components/job/graphql/mutations/job_play_with_variables.mutation.graphql create mode 100644 app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs_count.query.graphql create mode 100644 app/assets/javascripts/lib/utils/error_message.js create mode 100644 app/assets/javascripts/lib/utils/ref_validator.js create mode 100644 app/assets/javascripts/lib/utils/vue3compat/compat_functional_mixin.js create mode 100644 app/assets/javascripts/lib/utils/vue3compat/mark_raw.js create mode 100644 app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/index.js rename app/assets/javascripts/ml/experiment_tracking/{components/ml_candidate.vue => routes/candidates/show/ml_candidates_show.vue} (68%) create mode 100644 app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/translations.js create mode 100644 app/assets/javascripts/ml/experiment_tracking/routes/experiments/show/constants.js create mode 100644 app/assets/javascripts/ml/experiment_tracking/routes/experiments/show/index.js rename app/assets/javascripts/ml/experiment_tracking/{components/ml_experiment.vue => routes/experiments/show/ml_experiments_show.vue} (51%) create mode 100644 app/assets/javascripts/ml/experiment_tracking/routes/experiments/show/translations.js create mode 100644 app/assets/javascripts/notebook/cells/output/error.vue create mode 100644 app/assets/javascripts/observability/components/skeleton/embed.vue create mode 100644 app/assets/javascripts/pages/admin/application_settings/network/index.js create mode 100644 app/assets/javascripts/pages/admin/runners/register/index.js delete mode 100644 app/assets/javascripts/pages/projects/airflow/dags/index/index.js create mode 100644 app/assets/javascripts/profile/components/activity_calendar.vue create mode 100644 app/assets/javascripts/profile/components/graphql/get_user_achievements.query.graphql create mode 100644 app/assets/javascripts/profile/components/user_achievements.vue create mode 100644 app/assets/javascripts/profile/constants.js create mode 100644 app/assets/javascripts/profile/utils.js create mode 100644 app/assets/javascripts/projects/settings/mount_ref_switcher_badges.js create mode 100644 app/assets/javascripts/repository/components/fork_sync_conflicts_modal.vue create mode 100644 app/assets/javascripts/repository/mutations/sync_fork.mutation.graphql create mode 100644 app/assets/javascripts/saved_replies/components/form.vue create mode 100644 app/assets/javascripts/saved_replies/pages/edit.vue create mode 100644 app/assets/javascripts/saved_replies/queries/create_saved_reply.mutation.graphql create mode 100644 app/assets/javascripts/saved_replies/queries/delete_saved_reply.mutation.graphql create mode 100644 app/assets/javascripts/saved_replies/queries/get_saved_reply.query.graphql create mode 100644 app/assets/javascripts/saved_replies/queries/update_saved_reply.mutation.graphql rename app/assets/javascripts/sentry/{constants.js => legacy_constants.js} (87%) create mode 100644 app/assets/javascripts/streaming/chunk_writer.js create mode 100644 app/assets/javascripts/streaming/constants.js create mode 100644 app/assets/javascripts/streaming/handle_streamed_anchor_link.js create mode 100644 app/assets/javascripts/streaming/html_stream.js create mode 100644 app/assets/javascripts/streaming/polyfills.js create mode 100644 app/assets/javascripts/streaming/rate_limit_stream_requests.js create mode 100644 app/assets/javascripts/streaming/render_balancer.js create mode 100644 app/assets/javascripts/streaming/render_html_streams.js create mode 100644 app/assets/javascripts/super_sidebar/components/frequent_items_list.vue create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/components/global_search.vue create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/components/global_search_autocomplete_items.vue create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/components/global_search_default_items.vue create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/components/global_search_scoped_items.vue create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/constants.js create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/store/actions.js create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/store/getters.js create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/store/index.js create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/store/mutation_types.js create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/store/mutations.js create mode 100644 app/assets/javascripts/super_sidebar/components/global_search/store/state.js create mode 100644 app/assets/javascripts/super_sidebar/components/groups_list.vue create mode 100644 app/assets/javascripts/super_sidebar/components/items_list.vue create mode 100644 app/assets/javascripts/super_sidebar/components/projects_list.vue create mode 100644 app/assets/javascripts/super_sidebar/components/search_results.vue create mode 100644 app/assets/javascripts/super_sidebar/components/sidebar_menu.vue create mode 100644 app/assets/javascripts/super_sidebar/components/sidebar_portal.vue create mode 100644 app/assets/javascripts/super_sidebar/components/sidebar_portal_target.vue create mode 100644 app/assets/javascripts/super_sidebar/components/user_menu.vue create mode 100644 app/assets/javascripts/super_sidebar/components/user_name_group.vue create mode 100644 app/assets/javascripts/super_sidebar/constants.js create mode 100644 app/assets/javascripts/super_sidebar/graphql/queries/search_user_groups_and_projects.query.graphql create mode 100644 app/assets/javascripts/super_sidebar/super_sidebar_collapsed_state_manager.js create mode 100644 app/assets/javascripts/super_sidebar/utils.js rename app/assets/javascripts/{pages/sessions/new => validators}/length_validator.js (67%) rename app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/{approved_by.query.graphql => approvals.query.graphql} (60%) create mode 100644 app/assets/javascripts/vue_shared/components/markdown/drawio_toolbar_button.vue create mode 100644 app/assets/javascripts/vue_shared/components/markdown/saved_replies.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/markdown/saved_replies_dropdown.vue delete mode 100644 app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue create mode 100644 app/assets/javascripts/vue_shared/global_search/constants.js delete mode 100644 app/assets/javascripts/work_items/components/notes/activity_filter.vue create mode 100644 app/assets/javascripts/work_items/components/notes/work_item_activity_sort_filter.vue create mode 100644 app/assets/javascripts/work_items/components/notes/work_item_history_only_filter_note.vue create mode 100644 app/assets/javascripts/work_items/components/notes/work_item_notes_activity_header.vue create mode 100644 app/assets/javascripts/work_items/graphql/notes/work_item_note_add_award_emoji.mutation.graphql rename app/assets/stylesheets/page_bundles/admin/{geo_nodes.scss => geo_sites.scss} (76%) rename app/assets/stylesheets/{pages => page_bundles}/ml_experiment_tracking.scss (54%) create mode 100644 app/controllers/concerns/kas_cookie.rb delete mode 100644 app/controllers/profiles/u2f_registrations_controller.rb delete mode 100644 app/controllers/projects/airflow/dags_controller.rb create mode 100644 app/finders/concerns/updated_at_filter.rb create mode 100644 app/finders/groups/accepting_project_imports_finder.rb delete mode 100644 app/finders/serverless_domain_finder.rb create mode 100644 app/graphql/mutations/achievements/award.rb create mode 100644 app/graphql/mutations/achievements/revoke.rb create mode 100644 app/graphql/mutations/ci/job_artifact/bulk_destroy.rb create mode 100644 app/graphql/mutations/ci/runner/common_mutation_arguments.rb create mode 100644 app/graphql/mutations/ci/runner/create.rb create mode 100644 app/graphql/mutations/design_management/update.rb create mode 100644 app/graphql/mutations/members/bulk_update_base.rb create mode 100644 app/graphql/mutations/members/projects/bulk_update.rb create mode 100644 app/graphql/mutations/projects/sync_fork.rb create mode 100644 app/graphql/mutations/work_items/export.rb create mode 100644 app/graphql/resolvers/achievements/achievements_resolver.rb create mode 100644 app/graphql/resolvers/achievements/user_achievements_resolver.rb create mode 100644 app/graphql/resolvers/analytics/cycle_analytics/base_issue_resolver.rb create mode 100644 app/graphql/resolvers/analytics/cycle_analytics/deployment_count_resolver.rb create mode 100644 app/graphql/resolvers/analytics/cycle_analytics/issue_count_resolver.rb create mode 100644 app/graphql/resolvers/concerns/work_items/shared_filter_arguments.rb create mode 100644 app/graphql/types/achievements/user_achievement_type.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/flow_metrics.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/link_type.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/metric_type.rb create mode 100644 app/graphql/types/ci/runner_machine_type.rb create mode 100644 app/graphql/types/issuable_subscription_event_enum.rb create mode 100644 app/graphql/types/work_items/available_export_fields_enum.rb create mode 100644 app/graphql/types/work_items/widgets/notifications_type.rb create mode 100644 app/graphql/types/work_items/widgets/notifications_update_input_type.rb create mode 100644 app/helpers/admin/abuse_reports_helper.rb delete mode 100644 app/helpers/analytics/cycle_analytics_helper.rb create mode 100644 app/helpers/ci/catalog/resources_helper.rb create mode 100644 app/helpers/device_registration_helper.rb create mode 100644 app/helpers/plan_limits_helper.rb create mode 100644 app/helpers/projects/settings/branch_rules_helper.rb create mode 100644 app/mailers/emails/shared.rb create mode 100644 app/mailers/emails/work_items.rb delete mode 100644 app/models/airflow/dags.rb create mode 100644 app/models/bulk_imports/batch_tracker.rb create mode 100644 app/models/bulk_imports/export_batch.rb create mode 100644 app/models/ci/catalog/listing.rb create mode 100644 app/models/ci/catalog/resource.rb create mode 100644 app/models/ci/runner_machine_build.rb delete mode 100644 app/models/clusters/applications/crossplane.rb delete mode 100644 app/models/clusters/applications/prometheus.rb delete mode 100644 app/models/concerns/ci/partitionable/partitioned_filter.rb delete mode 100644 app/models/concerns/enum_with_nil.rb delete mode 100644 app/models/concerns/uniquify.rb delete mode 100644 app/models/concerns/web_hooks/unstoppable.rb create mode 100644 app/models/container_registry/data_repair_detail.rb create mode 100644 app/models/integrations/google_play.rb create mode 100644 app/models/integrations/squash_tm.rb delete mode 100644 app/models/members/member_role.rb create mode 100644 app/models/namespaces/ldap_setting.rb create mode 100644 app/models/preloaders/runner_machine_policy_preloader.rb rename app/models/projects/forks/{divergence_counts.rb => details.rb} (61%) delete mode 100644 app/models/serverless/domain.rb delete mode 100644 app/models/serverless/domain_cluster.rb delete mode 100644 app/models/serverless/function.rb delete mode 100644 app/models/serverless/lookup_path.rb delete mode 100644 app/models/serverless/virtual_domain.rb rename app/models/{airflow.rb => service_desk.rb} (63%) create mode 100644 app/models/service_desk/custom_email_verification.rb create mode 100644 app/models/work_items/widgets/notifications.rb create mode 100644 app/policies/achievements/user_achievement_policy.rb create mode 100644 app/policies/ci/runner_machine_policy.rb create mode 100644 app/serializers/admin/abuse_report_entity.rb create mode 100644 app/serializers/admin/abuse_report_serializer.rb delete mode 100644 app/serializers/cluster_application_entity.rb create mode 100644 app/serializers/profile/event_entity.rb create mode 100644 app/serializers/profile/event_serializer.rb create mode 100644 app/services/achievements/award_service.rb create mode 100644 app/services/achievements/revoke_service.rb create mode 100644 app/services/ci/catalog/add_resource_service.rb create mode 100644 app/services/ci/catalog/validate_resource_service.rb create mode 100644 app/services/ci/job_artifacts/bulk_delete_by_project_service.rb create mode 100644 app/services/clusters/agent_tokens/revoke_service.rb create mode 100644 app/services/clusters/agents/authorize_proxy_user_service.rb create mode 100644 app/services/projects/batch_open_merge_requests_count_service.rb create mode 100644 app/services/projects/forks/sync_service.rb create mode 100644 app/services/releases/links/base_service.rb create mode 100644 app/services/releases/links/create_service.rb create mode 100644 app/services/releases/links/destroy_service.rb create mode 100644 app/services/releases/links/update_service.rb delete mode 100644 app/services/serverless/associate_domain_service.rb create mode 100644 app/services/work_items/import_csv_service.rb create mode 100644 app/services/work_items/widgets/notifications_service/update_service.rb create mode 100644 app/validators/json_schemas/google_service_account_key.json create mode 100644 app/validators/json_schemas/import_failure_external_identifiers.json create mode 100644 app/views/admin/application_settings/_projects_api_limits.html.haml delete mode 100644 app/views/admin/broadcast_messages/_preview.html.haml create mode 100644 app/views/admin/projects/_form.html.haml create mode 100644 app/views/admin/projects/edit.html.haml create mode 100644 app/views/admin/runners/register.html.haml create mode 100644 app/views/devise/shared/_error_messages.html.haml delete mode 100644 app/views/groups/_invite_members_side_nav_link.html.haml create mode 100644 app/views/groups/_invite_members_top_nav_link.html.haml create mode 100644 app/views/layouts/nav/sidebar/_explore.html.haml create mode 100644 app/views/layouts/nav/sidebar/_user_profile.html.haml create mode 100644 app/views/notify/_issuable_csv_export.text.erb create mode 100644 app/views/notify/export_work_items_csv_email.html.haml create mode 100644 app/views/notify/export_work_items_csv_email.text.erb create mode 100644 app/views/notify/import_work_items_csv_email.html.haml create mode 100644 app/views/notify/import_work_items_csv_email.text.erb delete mode 100644 app/views/projects/_invite_members_side_nav_link.html.haml create mode 100644 app/views/projects/_invite_members_top_nav_link.html.haml create mode 100644 app/views/projects/_self_monitoring_deprecation_notice.html.haml delete mode 100644 app/views/projects/airflow/dags/index.html.haml create mode 100644 app/views/projects/branches/_branch_rules_info.haml delete mode 100644 app/views/projects/ml/experiments/_experiment.html.haml delete mode 100644 app/views/projects/ml/experiments/_experiment_list.html.haml delete mode 100644 app/views/projects/ml/experiments/_incubation_banner.html.haml create mode 100644 app/views/projects/pipelines/_pipeline_stats_text.html.haml create mode 100644 app/views/shared/doorkeeper/applications/_update_form.html.haml delete mode 100644 app/views/shared/icons/_mr_widget_empty_state.svg create mode 100644 app/views/shared/integrations/_slack_notifications_deprecation_alert.html.haml create mode 100644 app/views/shared/nav/_explore_scope_header.html.haml create mode 100644 app/views/shared/nav/_user_settings_scope_header.html.haml create mode 100644 app/workers/gitlab/github_import/import_collaborator_worker.rb create mode 100644 app/workers/gitlab/github_import/stage/import_collaborators_worker.rb create mode 100644 app/workers/projects/forks/sync_worker.rb create mode 100644 app/workers/projects/import_export/create_relation_exports_worker.rb create mode 100644 app/workers/projects/import_export/wait_relation_exports_worker.rb create mode 100644 config/audit_events/types/feature_flag_created.yml create mode 100644 config/audit_events/types/feature_flag_deleted.yml create mode 100644 config/audit_events/types/feature_flag_updated.yml create mode 100644 config/events/1676085590_Admin__AuditLogsController_visit_instance_compliance_audit_events.yml create mode 100644 config/events/1676085625_Admin__CredentialsController_visit_compliance_credential_inventory.yml create mode 100644 config/events/1676085737_Groups__AuditEventsController_visit_group_compliance_audit_events.yml create mode 100644 config/events/1676085856_API__AuditEvents_admin_audit_event_request.yml create mode 100644 config/events/1676085891_EE__API__Groups_group_audit_event_request.yml create mode 100644 config/events/1676085919_EE__API__Projects_project_audit_event_request.yml create mode 100644 config/events/20230228151130_invite_members_modal_click_cancel.yml create mode 100644 config/events/20230228151130_invite_members_modal_click_x.yml create mode 100644 config/events/20230228151130_invite_members_modal_invite_successful.yml create mode 100644 config/events/20230228151130_invite_members_modal_render.yml rename config/feature_flags/development/{notes_create_service_tracking.yml => abuse_reports_list.yml} (55%) create mode 100644 config/feature_flags/development/always_perform_delayed_deletion.yml rename config/feature_flags/development/{repack_after_shard_migration.yml => blame_page_streaming.yml} (72%) rename config/feature_flags/development/{ci_hooks_pre_get_sources_script.yml => ci_batch_project_includes_context.yml} (71%) delete mode 100644 config/feature_flags/development/ci_destroy_unlocked_job_artifacts.yml rename config/feature_flags/development/{improved_spread_parallel_import.yml => ci_fix_max_includes.yml} (62%) delete mode 100644 config/feature_flags/development/ci_inbound_job_token_scope.yml create mode 100644 config/feature_flags/development/ci_job_artifact_bulk_destroy.yml rename config/feature_flags/development/{ci_includes_count_duplicates.yml => ci_private_catalog_beta.yml} (71%) create mode 100644 config/feature_flags/development/ci_variables_pages.yml rename config/feature_flags/development/{airflow_dags.yml => cloudseed_aws.yml} (75%) rename config/feature_flags/development/{add_refresh_pull_mirror_worker.yml => codeowners_default_owners.yml} (71%) rename config/feature_flags/development/{create_runner_workflow.yml => create_runner_workflow_for_admin.yml} (85%) create mode 100644 config/feature_flags/development/create_runner_workflow_for_namespace.yml delete mode 100644 config/feature_flags/development/delayed_repository_update_mirror_worker.yml rename config/feature_flags/development/{limited_capacity_seat_refresh_worker_low.yml => disable_update_max_seats_worker.yml} (71%) delete mode 100644 config/feature_flags/development/environments_search_logging.yml delete mode 100644 config/feature_flags/development/github_client_fetch_repos_via_graphql.yml rename config/feature_flags/development/{apple_app_store_integration.yml => google_play_integration.yml} (72%) delete mode 100644 config/feature_flags/development/hash_oauth_secrets.yml delete mode 100644 config/feature_flags/development/include_memberships_from_group_shares_in_preloader.yml delete mode 100644 config/feature_flags/development/integration_slack_app_notifications.yml create mode 100644 config/feature_flags/development/kas_user_access.yml create mode 100644 config/feature_flags/development/kas_user_access_project.yml rename config/feature_flags/development/{bulk_import_projects.yml => large_ipynb_diffs.yml} (65%) rename config/feature_flags/development/{deduplicate_archive_traces_cron_worker.yml => lazy_load_pipeline_dropdown_actions.yml} (70%) delete mode 100644 config/feature_flags/development/limited_capacity_seat_refresh_worker_medium.yml delete mode 100644 config/feature_flags/development/linear_project_ancestors.yml delete mode 100644 config/feature_flags/development/linear_user_manageable_groups.yml rename config/feature_flags/development/{limited_capacity_seat_refresh_worker_high.yml => log_user_git_push_activity.yml} (68%) create mode 100644 config/feature_flags/development/npm_allow_packages_in_multiple_projects.yml create mode 100644 config/feature_flags/development/pages_unique_domain.yml delete mode 100644 config/feature_flags/development/permit_all_shared_groups_for_approval.yml rename config/feature_flags/development/{disabled_mr_discussions_redis_cache.yml => pipeline_trigger_merge_status.yml} (70%) create mode 100644 config/feature_flags/development/rate_limit_for_unauthenticated_projects_api_access.yml create mode 100644 config/feature_flags/development/reduce_sub_batch_size_on_timeouts.yml rename config/feature_flags/development/{remove_job_token_on_completion.yml => refactor_ci_minutes_consumption.yml} (71%) rename config/feature_flags/development/{enforce_max_attachment_size_upload_api.yml => resolve_ambiguous_archives.yml} (69%) create mode 100644 config/feature_flags/development/restrict_special_characters_in_namespace_path.yml delete mode 100644 config/feature_flags/development/route_hll_to_snowplow_phase2.yml rename config/feature_flags/development/{license_from_gitaly.yml => runner_machine_heartbeat.yml} (64%) rename config/feature_flags/development/{search_blobs_language_aggregation.yml => search_index_integrity.yml} (71%) rename config/feature_flags/development/{code_basic_search_files_by_regexp.yml => search_index_partitioning_notes.yml} (70%) delete mode 100644 config/feature_flags/development/sec_mark_dropped_findings_as_resolved_scheduler.yml delete mode 100644 config/feature_flags/development/set_traversal_ids_on_save.yml rename config/feature_flags/development/{revoke_ssh_signatures.yml => show_tags_on_commits_view.yml} (72%) rename config/feature_flags/development/{rely_on_protected_branches_cache.yml => synchronize_fork.yml} (71%) delete mode 100644 config/feature_flags/development/trial_email_validation.yml delete mode 100644 config/feature_flags/development/unlink_fork_network_upon_visibility_decrease.yml delete mode 100644 config/feature_flags/development/use_iid_in_work_items_path.yml delete mode 100644 config/feature_flags/development/use_response_url_for_chat_responder.yml create mode 100644 config/feature_flags/development/use_sub_repositories_api.yml delete mode 100644 config/feature_flags/experiment/generic_explore_groups.yml delete mode 100644 config/feature_flags/experiment/invite_members_in_side_nav.yml delete mode 100644 config/feature_flags/ops/advanced_user_index.yml delete mode 100644 config/feature_flags/ops/advanced_user_search.yml create mode 100644 config/feature_flags/ops/auto_disabling_web_hooks.yml delete mode 100644 config/feature_flags/ops/dynamic_nonce.yml create mode 100644 config/feature_flags/ops/ops_prune_old_events.yml create mode 100644 config/initializers/0_1_yaml_safe_load_file_patch.rb create mode 100644 config/initializers/google_cloud_profiler.rb create mode 100644 config/initializers/mail_starttls_patch.rb create mode 100644 config/initializers/safe_session_store_patch.rb create mode 100644 config/metrics/counts_28d/20230215180530_p_ci_templates_security_api_discovery_monthly.yml create mode 100644 config/metrics/counts_28d/20230217215050_ci_internal_pipelines.yml create mode 100644 config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_with_failures.yml create mode 100644 config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_without_failures.yml create mode 100644 config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_with_failures.yml create mode 100644 config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_without_failures.yml create mode 100644 config/metrics/counts_28d/20230306134018_github_import_project_cancelled_monthly.yml create mode 100644 config/metrics/counts_28d/20230306134609_github_import_project_partially_completed_monthly.yml create mode 100644 config/metrics/counts_7d/20230215180530_p_ci_templates_security_api_discovery_weekly.yml create mode 100644 config/metrics/counts_7d/20230306133608_github_import_project_cancelled_weekly.yml create mode 100644 config/metrics/counts_7d/20230306134308_github_import_project_partially_completed_weekly.yml create mode 100644 config/metrics/counts_all/20230210184724_projects_inheriting_google_play_active.yml create mode 100644 config/metrics/counts_all/20230222192643_projects_google_play_active.yml create mode 100644 config/metrics/counts_all/20230222193011_instances_google_play_active.yml create mode 100644 config/metrics/counts_all/20230222193151_groups_inheriting_google_play_active.yml create mode 100644 config/metrics/counts_all/20230222193255_groups_google_play_active.yml create mode 100644 config/metrics/counts_all/20230303131933_groups_inheriting_squash_tm_active.yml create mode 100644 config/metrics/counts_all/20230303131936_groups_squash_tm_active.yml create mode 100644 config/metrics/counts_all/20230303132041_instances_squash_tm_active.yml create mode 100644 config/metrics/counts_all/20230303132048_projects_inheriting_squash_tm_active.yml create mode 100644 config/metrics/counts_all/20230303132352_projects_squash_tm_active.yml create mode 100644 config/metrics/counts_all/20230306191328_i_container_registry_delete_manifest.yml create mode 100644 config/metrics/license/20230228110448_installation_creation_date.yml create mode 100644 config/metrics/license/20230314161014_gitlab_dedicated.yml create mode 100644 config/metrics/objects_schemas/index_inconsistencies_metric.json create mode 100644 config/metrics/settings/20230203164341_index_inconsistencies_metric.yml create mode 100644 config/vue3migration/compiler.js create mode 100644 danger/plugins/sidekiq_args.rb create mode 100644 danger/sidekiq_args/Dangerfile delete mode 100644 data/deprecations/14-7-deprecate-merged_by-api-field.yml delete mode 100644 data/deprecations/14-8-runner-api-active-field-replaced-with-paused-breaking-change.yml delete mode 100644 data/deprecations/14-8-runner-api-status-filter-does-accept-active-or-paused.yml delete mode 100644 data/deprecations/15-1-deprecate-maintainer_note.yml create mode 100644 data/deprecations/15-10-consul-legacy-metrics-disable.yml create mode 100644 data/deprecations/15-10-gitaly-legacy-config.yml create mode 100644 data/deprecations/15-10-omniauth-dingtalk.yml delete mode 100644 data/deprecations/15-6-deprecate-merge_status-api-field.yml delete mode 100644 data/deprecations/15-7-deprecate-single-merge-request-changes-api-endpoint.yml delete mode 100644 data/deprecations/15-8-deprecate-merge-request-approvals-fields.yml create mode 100644 data/deprecations/15-9-ci-builds-column-validations.yml create mode 100644 data/deprecations/15-9-deprecate-ci-pre-clone-script.yml create mode 100644 data/deprecations/15-9-env-search-char-limit.yml create mode 100644 data/deprecations/15-9-managed-licenses-api.yml create mode 100644 data/removals/15_10/15_10-non-public-artifacts.yml create mode 100644 data/removals/15_9/15-9-live-preview.yml create mode 100644 data/whats_new/20230222001_15_09.yml create mode 100644 db/docs/bulk_import_batch_trackers.yml create mode 100644 db/docs/bulk_import_export_batches.yml create mode 100644 db/docs/catalog_resources.yml create mode 100644 db/docs/ci_cost_settings.yml create mode 100644 db/docs/container_registry_data_repair_details.yml create mode 100644 db/docs/container_repository_states.yml rename db/docs/{ => deleted_tables}/airflow_dags.yml (74%) create mode 100644 db/docs/namespace_ldap_settings.yml create mode 100644 db/docs/p_ci_runner_machine_builds.yml create mode 100644 db/docs/service_desk_custom_email_verifications.yml create mode 100644 db/fixtures/development/36_achievements.rb create mode 100644 db/fixtures/development/heart.png create mode 100644 db/fixtures/development/rocket.jpg create mode 100644 db/migrate/20230113164245_create_namespace_ldap_settings.rb create mode 100644 db/migrate/20230118135145_add_service_desk_custom_email_verifications.rb create mode 100644 db/migrate/20230127030015_add_deny_all_outgoing_requests_to_application_settings.rb create mode 100644 db/migrate/20230201165656_create_container_repository_states.rb create mode 100644 db/migrate/20230202094723_add_default_syntax_highlighting_theme_to_application_settings.rb create mode 100644 db/migrate/20230210152109_add_bulk_import_export_batches.rb create mode 100644 db/migrate/20230210153420_add_batched_column_to_bulk_import_exports.rb create mode 100644 db/migrate/20230210155715_add_batch_id_to_bulk_import_export_uploads.rb create mode 100644 db/migrate/20230210160037_add_batch_foreign_key_to_bulk_import_export_uploads.rb create mode 100644 db/migrate/20230210160351_add_bulk_import_batch_trackers.rb create mode 100644 db/migrate/20230210161002_add_batched_column_to_bulk_import_trackers.rb create mode 100644 db/migrate/20230210171012_add_batch_id_index_to_bulk_import_export_uploads.rb create mode 100644 db/migrate/20230213213559_add_index_on_project_id_and_scanner_id_and_vulnerability_id_on_vulnerability_reads.rb create mode 100644 db/migrate/20230215074223_add_ci_runner_machine_builds_partitioned_table.rb create mode 100644 db/migrate/20230215124011_add_provisioned_by_group_at_to_user_details.rb create mode 100644 db/migrate/20230215131026_add_has_failures_column_to_bulk_imports.rb create mode 100644 db/migrate/20230215180605_index_sbom_occurrences_on_project_id_and_id.rb create mode 100644 db/migrate/20230216040505_add_status_and_resolved_at_to_abuse_reports.rb create mode 100644 db/migrate/20230216071312_add_status_category_and_id_index_to_abuse_reports.rb create mode 100644 db/migrate/20230216142836_update_vulnerability_reads_trigger_to_set_has_issue.rb create mode 100644 db/migrate/20230216144719_drop_table_airflow_dags.rb create mode 100644 db/migrate/20230216152912_add_has_failures_column_to_bulk_import_entities.rb create mode 100644 db/migrate/20230216171309_create_ci_runner_cost_settings.rb create mode 100644 db/migrate/20230217065736_add_projects_api_rate_limit_unauthenticated_to_application_settings.rb create mode 100644 db/migrate/20230217144421_add_check_type_to_pre_scan_step.rb create mode 100644 db/migrate/20230217232554_add_state_changed_in_to_vulnerability_state_transitions.rb create mode 100644 db/migrate/20230220035034_add_status_and_id_index_to_abuse_reports.rb create mode 100644 db/migrate/20230220163141_create_catalog_resources_table.rb create mode 100644 db/migrate/20230221110256_create_initial_partition_for_ci_runner_machine_builds.rb create mode 100644 db/migrate/20230222153048_add_registry_size_estimated_to_namespace_root_storage_statistics.rb create mode 100644 db/migrate/20230222193845_change_public_projects_minutes_cost_factor_default_to_1.rb create mode 100644 db/migrate/20230224130315_add_constraint_type_to_postgres_async_constraint_validation.rb create mode 100644 db/migrate/20230224161346_add_saml_group_lock_to_application_settings.rb create mode 100644 db/migrate/20230228092612_add_index_next_over_limit_check_at_asc_order_synchronously.rb create mode 100644 db/migrate/20230228133011_add_design_description.rb create mode 100644 db/migrate/20230228135034_add_design_description_limit.rb create mode 100644 db/migrate/20230228142350_add_notifications_work_item_widget.rb create mode 100644 db/migrate/20230228212427_add_index_user_details_on_user_id_for_enterprise_users_without_date.rb create mode 100644 db/migrate/20230228212905_add_index_user_details_on_user_id_for_enterprise_users_with_date.rb create mode 100644 db/migrate/20230303144424_unique_index_on_catalog_resources_project.rb create mode 100644 db/migrate/20230306145230_add_product_analytics_data_collector_host_to_application_settings.rb create mode 100644 db/migrate/20230307091216_add_status_reporter_id_and_id_index_to_abuse_reports.rb create mode 100644 db/migrate/20230307122838_add_text_limit_to_application_settings_product_analytics_data_collector_host.rb create mode 100644 db/migrate/20230307233631_add_public_runner_release_version_fetch_setting.rb create mode 100644 db/migrate/20230308163018_create_container_registry_data_repair_details.rb create mode 100644 db/migrate/20230309000957_add_external_identifiers_to_import_failures.rb create mode 100644 db/migrate/20230313054226_add_status_created_at_and_updated_at_indexes_to_abuse_reports.rb create mode 100644 db/migrate/20230313100920_add_gitlab_dedicated_instance_to_application_settings.rb create mode 100644 db/post_migrate/20230113201308_backfill_namespace_ldap_settings.rb create mode 100644 db/post_migrate/20230118144623_schedule_migration_for_remediation.rb create mode 100644 db/post_migrate/20230125195503_queue_backfill_compliance_violations.rb create mode 100644 db/post_migrate/20230126101907_add_partition_index_to_web_hook_logs.rb create mode 100644 db/post_migrate/20230130182412_schedule_create_vulnerability_links_migration.rb create mode 100644 db/post_migrate/20230131184319_update_billable_users_index_for_service_accounts.rb create mode 100644 db/post_migrate/20230202135758_queue_backfill_prepared_at_data.rb create mode 100644 db/post_migrate/20230202211434_migrate_redis_slot_keys.rb create mode 100644 db/post_migrate/20230208125736_schedule_migration_for_links.rb create mode 100644 db/post_migrate/20230213103019_add_index_for_next_over_limit_check_at.rb create mode 100644 db/post_migrate/20230214181633_finalize_ci_build_needs_big_int_conversion.rb create mode 100644 db/post_migrate/20230215213349_add_sync_index_on_packages_package_file_filename.rb create mode 100644 db/post_migrate/20230216060333_prepare_async_foreign_key_validation_for_ci_build_trace_metadata.rb create mode 100644 db/post_migrate/20230216191507_delete_incorrectly_onboarded_namespaces.rb create mode 100644 db/post_migrate/20230216222956_add_sync_index_on_lfs_objects_file.rb create mode 100644 db/post_migrate/20230216232404_add_sync_index_on_merge_request_diffs_external_diff.rb create mode 100644 db/post_migrate/20230216233937_remove_application_settings_send_user_confirmation_email_column.rb create mode 100644 db/post_migrate/20230218145930_add_index_users_on_updated_at.rb create mode 100644 db/post_migrate/20230218145940_add_index_namespaces_on_updated_at.rb create mode 100644 db/post_migrate/20230218152729_validate_fk_on_ci_job_artifacts_partition_id_and_job_id.rb create mode 100644 db/post_migrate/20230218152730_remove_fk_to_ci_builds_ci_job_artifacts_on_job_id.rb create mode 100644 db/post_migrate/20230219191034_add_pipeline_fk_to_vulnerability_state_transitions.rb create mode 100644 db/post_migrate/20230220102212_swap_columns_ci_build_needs_big_int_conversion.rb create mode 100644 db/post_migrate/20230220112930_replace_uniq_index_on_postgres_async_foreign_key_validations.rb create mode 100644 db/post_migrate/20230220132409_validate_fk_on_ci_build_report_results_partition_id_and_build_id.rb create mode 100644 db/post_migrate/20230220132410_remove_fk_to_ci_builds_ci_build_report_results_on_build_id.rb create mode 100644 db/post_migrate/20230220134145_validate_fk_on_ci_build_needs_partition_id_and_build_id.rb create mode 100644 db/post_migrate/20230220134146_remove_fk_to_ci_builds_ci_build_needs_on_build_id.rb create mode 100644 db/post_migrate/20230220165240_add_index_to_approval_rules_on_scan_result_policy_id.rb create mode 100644 db/post_migrate/20230221010522_prepare_async_foreign_key_validation_for_ci_sources_pipelines.rb create mode 100644 db/post_migrate/20230221011750_prepare_async_foreign_key_validation_for_ci_job_variables.rb create mode 100644 db/post_migrate/20230221093533_add_tmp_partial_index_on_vulnerability_report_types.rb create mode 100644 db/post_migrate/20230221125148_add_fk_to_p_ci_builds_metadata_partitions_on_partition_id_and_build_id.rb create mode 100644 db/post_migrate/20230221162222_raise_ci_variable_limits_on_gitlab_com.rb create mode 100644 db/post_migrate/20230221214519_remove_incorrectly_onboarded_namespaces_from_onboarding_progress.rb create mode 100644 db/post_migrate/20230222035805_prepare_async_index_removal_of_token_for_ci_builds.rb create mode 100644 db/post_migrate/20230222055510_remove_concurrent_index_on_token_encrypted_for_ci_builds.rb create mode 100644 db/post_migrate/20230222101420_remove_fk_to_ci_build_ci_pending_build_on_build_id.rb create mode 100644 db/post_migrate/20230222102421_remove_fk_to_ci_build_ci_running_build_on_build_id.rb create mode 100644 db/post_migrate/20230223014251_validate_not_null_constraint_on_oauth_access_tokens_expires_in.rb create mode 100644 db/post_migrate/20230223065753_finalize_nullify_creator_id_of_orphaned_projects.rb create mode 100644 db/post_migrate/20230223082752_schedule_fk_validation_for_p_ci_builds_metadata_partitions_and_ci_builds.rb create mode 100644 db/post_migrate/20230223093704_add_foreign_key_on_creator_id_on_projects.rb create mode 100644 db/post_migrate/20230224085743_update_issues_internal_id_scope.rb create mode 100644 db/post_migrate/20230224144233_migrate_evidences_from_raw_metadata.rb create mode 100644 db/post_migrate/20230227123949_validate_fk_on_ci_sources_pipelines_source_partition_id_and_source_job_id.rb create mode 100644 db/post_migrate/20230227123950_remove_fk_to_ci_builds_ci_sources_pipelines_on_source_job_id.rb create mode 100644 db/post_migrate/20230227151608_validate_fk_on_ci_build_trace_metadata_partition_id_and_build_id.rb create mode 100644 db/post_migrate/20230227151609_remove_fk_to_ci_builds_ci_build_trace_metadata_on_build_id.rb create mode 100644 db/post_migrate/20230227153231_validate_fk_on_ci_job_variables_partition_id_and_job_id.rb create mode 100644 db/post_migrate/20230227153232_remove_fk_to_ci_builds_ci_job_variables_on_job_id.rb create mode 100644 db/post_migrate/20230228021910_ensure_timelogs_note_id_bigint_backfill_is_finished_for_gitlab_dot_com.rb create mode 100644 db/post_migrate/20230228023014_swap_timelogs_note_id_to_bigint_for_gitlab_dot_com.rb create mode 100644 db/post_migrate/20230301065107_add_index_on_expired_unlocked_non_trace_job_artifacts.rb create mode 100644 db/post_migrate/20230302090155_add_async_index_on_unlocked_non_trace_job_artifacts_expire_at.rb create mode 100644 db/post_migrate/20230302123258_drop_runner_machines_constraint_on_ci_builds_metadata.rb create mode 100644 db/post_migrate/20230302123259_ensure_ci_runner_machines_is_empty.rb create mode 100644 db/post_migrate/20230302123301_add_index_on_runner_machine_id_on_runner_machine_builds.rb create mode 100644 db/post_migrate/20230302163339_add_index_to_oauth_access_grants_application_id.rb create mode 100644 db/post_migrate/20230302185739_queue_fix_vulnerability_reads_has_issues.rb create mode 100644 db/post_migrate/20230303105806_queue_delete_orphaned_packages_dependencies.rb create mode 100644 db/post_migrate/20230303120531_schedule_temporary_partitioning_indexes_removal.rb create mode 100644 db/post_migrate/20230303154314_add_user_type_migration_indexes.rb create mode 100644 db/post_migrate/20230304184416_drop_revokable_from_achievements.rb create mode 100644 db/post_migrate/20230306071456_validate_partitioning_fk_on_p_ci_builds_metadata_partitions.rb create mode 100644 db/post_migrate/20230306072532_add_partitioned_fk_to_p_ci_builds_metadata_on_partition_id_and_build_id.rb create mode 100644 db/post_migrate/20230306082852_remove_fk_to_ci_builds_p_ci_builds_metadata_on_build_id.rb create mode 100644 db/post_migrate/20230306143322_prepare_ci_builds_primary_key_for_partitioning.rb create mode 100644 db/post_migrate/20230306195007_queue_backfill_project_wiki_repositories.rb create mode 100644 db/post_migrate/20230307085644_track_ci_runner_machine_record_changes.rb create mode 100644 db/post_migrate/20230307160251_rename_constraint_fk_rails_f601258b28_on_events_table.rb create mode 100644 db/post_migrate/20230309010000_add_unique_index_mr_user_mentions_note_id_convert_to_bigint.rb create mode 100644 db/post_migrate/20230309010931_add_fk_on_mr_user_mentions_note_id_convert_to_id_bigint.rb create mode 100644 db/post_migrate/20230309020422_validate_fk_on_mr_user_mentions_note_id_convert_to_id_bigint.rb create mode 100644 db/post_migrate/20230309071242_delete_security_policy_bot_users.rb create mode 100644 db/post_migrate/20230309103016_drop_id_partition_id_index_from_p_ci_build_metadata.rb create mode 100644 db/post_migrate/20230310111859_recreate_user_type_migration_indexes.rb create mode 100644 db/post_migrate/20230310213308_sync_security_policy_rule_schedules_that_may_have_been_deleted_by_a_bug.rb create mode 100644 db/post_migrate/20230313133001_ensure_merge_request_metrics_id_bigint_backfill_is_finished_for_gitlab_dot_com.rb create mode 100644 db/post_migrate/20230313143033_swap_merge_request_metrics_id_to_bigint_for_gitlab_dot_com.rb create mode 100644 db/post_migrate/20230313150531_reschedule_migration_for_remediation.rb create mode 100644 db/post_migrate/20230313184306_add_temp_index_for_software_license_cleanup.rb create mode 100644 db/post_migrate/20230313185145_cleanup_orphan_software_licenses.rb create mode 100644 db/post_migrate/20230316014650_remove_index_on_events_action_async.rb create mode 100644 db/post_migrate/20230328111013_re_migrate_redis_slot_keys.rb create mode 100644 db/schema_migrations/20230113164245 create mode 100644 db/schema_migrations/20230113201308 create mode 100644 db/schema_migrations/20230118135145 create mode 100644 db/schema_migrations/20230118144623 create mode 100644 db/schema_migrations/20230125195503 create mode 100644 db/schema_migrations/20230126101907 create mode 100644 db/schema_migrations/20230127030015 create mode 100644 db/schema_migrations/20230130182412 create mode 100644 db/schema_migrations/20230131184319 create mode 100644 db/schema_migrations/20230201165656 create mode 100644 db/schema_migrations/20230202094723 create mode 100644 db/schema_migrations/20230202135758 create mode 100644 db/schema_migrations/20230202211434 create mode 100644 db/schema_migrations/20230208125736 create mode 100644 db/schema_migrations/20230210152109 create mode 100644 db/schema_migrations/20230210153420 create mode 100644 db/schema_migrations/20230210155715 create mode 100644 db/schema_migrations/20230210160037 create mode 100644 db/schema_migrations/20230210160351 create mode 100644 db/schema_migrations/20230210161002 create mode 100644 db/schema_migrations/20230210171012 create mode 100644 db/schema_migrations/20230213103019 create mode 100644 db/schema_migrations/20230213213559 create mode 100644 db/schema_migrations/20230214181633 create mode 100644 db/schema_migrations/20230215074223 create mode 100644 db/schema_migrations/20230215124011 create mode 100644 db/schema_migrations/20230215131026 create mode 100644 db/schema_migrations/20230215180605 create mode 100644 db/schema_migrations/20230215213349 create mode 100644 db/schema_migrations/20230216040505 create mode 100644 db/schema_migrations/20230216060333 create mode 100644 db/schema_migrations/20230216071312 create mode 100644 db/schema_migrations/20230216142836 create mode 100644 db/schema_migrations/20230216144719 create mode 100644 db/schema_migrations/20230216152912 create mode 100644 db/schema_migrations/20230216171309 create mode 100644 db/schema_migrations/20230216191507 create mode 100644 db/schema_migrations/20230216222956 create mode 100644 db/schema_migrations/20230216232404 create mode 100644 db/schema_migrations/20230216233937 create mode 100644 db/schema_migrations/20230217065736 create mode 100644 db/schema_migrations/20230217144421 create mode 100644 db/schema_migrations/20230217232554 create mode 100644 db/schema_migrations/20230218145930 create mode 100644 db/schema_migrations/20230218145940 create mode 100644 db/schema_migrations/20230218152729 create mode 100644 db/schema_migrations/20230218152730 create mode 100644 db/schema_migrations/20230219191034 create mode 100644 db/schema_migrations/20230220035034 create mode 100644 db/schema_migrations/20230220102212 create mode 100644 db/schema_migrations/20230220112930 create mode 100644 db/schema_migrations/20230220132409 create mode 100644 db/schema_migrations/20230220132410 create mode 100644 db/schema_migrations/20230220134145 create mode 100644 db/schema_migrations/20230220134146 create mode 100644 db/schema_migrations/20230220163141 create mode 100644 db/schema_migrations/20230220165240 create mode 100644 db/schema_migrations/20230221010522 create mode 100644 db/schema_migrations/20230221011750 create mode 100644 db/schema_migrations/20230221093533 create mode 100644 db/schema_migrations/20230221110256 create mode 100644 db/schema_migrations/20230221125148 create mode 100644 db/schema_migrations/20230221162222 create mode 100644 db/schema_migrations/20230221214519 create mode 100644 db/schema_migrations/20230222035805 create mode 100644 db/schema_migrations/20230222055510 create mode 100644 db/schema_migrations/20230222101420 create mode 100644 db/schema_migrations/20230222102421 create mode 100644 db/schema_migrations/20230222153048 create mode 100644 db/schema_migrations/20230222193845 create mode 100644 db/schema_migrations/20230223014251 create mode 100644 db/schema_migrations/20230223065753 create mode 100644 db/schema_migrations/20230223082752 create mode 100644 db/schema_migrations/20230223093704 create mode 100644 db/schema_migrations/20230224085743 create mode 100644 db/schema_migrations/20230224130315 create mode 100644 db/schema_migrations/20230224144233 create mode 100644 db/schema_migrations/20230224161346 create mode 100644 db/schema_migrations/20230227123949 create mode 100644 db/schema_migrations/20230227123950 create mode 100644 db/schema_migrations/20230227151608 create mode 100644 db/schema_migrations/20230227151609 create mode 100644 db/schema_migrations/20230227153231 create mode 100644 db/schema_migrations/20230227153232 create mode 100644 db/schema_migrations/20230228021910 create mode 100644 db/schema_migrations/20230228023014 create mode 100644 db/schema_migrations/20230228092612 create mode 100644 db/schema_migrations/20230228133011 create mode 100644 db/schema_migrations/20230228135034 create mode 100644 db/schema_migrations/20230228142350 create mode 100644 db/schema_migrations/20230228212427 create mode 100644 db/schema_migrations/20230228212905 create mode 100644 db/schema_migrations/20230301065107 create mode 100644 db/schema_migrations/20230302090155 create mode 100644 db/schema_migrations/20230302123258 create mode 100644 db/schema_migrations/20230302123259 create mode 100644 db/schema_migrations/20230302123301 create mode 100644 db/schema_migrations/20230302163339 create mode 100644 db/schema_migrations/20230302185739 create mode 100644 db/schema_migrations/20230303105806 create mode 100644 db/schema_migrations/20230303120531 create mode 100644 db/schema_migrations/20230303144424 create mode 100644 db/schema_migrations/20230303154314 create mode 100644 db/schema_migrations/20230304184416 create mode 100644 db/schema_migrations/20230306071456 create mode 100644 db/schema_migrations/20230306072532 create mode 100644 db/schema_migrations/20230306082852 create mode 100644 db/schema_migrations/20230306143322 create mode 100644 db/schema_migrations/20230306145230 create mode 100644 db/schema_migrations/20230306195007 create mode 100644 db/schema_migrations/20230307085644 create mode 100644 db/schema_migrations/20230307091216 create mode 100644 db/schema_migrations/20230307122838 create mode 100644 db/schema_migrations/20230307160251 create mode 100644 db/schema_migrations/20230307233631 create mode 100644 db/schema_migrations/20230308163018 create mode 100644 db/schema_migrations/20230309000957 create mode 100644 db/schema_migrations/20230309010000 create mode 100644 db/schema_migrations/20230309010931 create mode 100644 db/schema_migrations/20230309020422 create mode 100644 db/schema_migrations/20230309071242 create mode 100644 db/schema_migrations/20230309103016 create mode 100644 db/schema_migrations/20230310111859 create mode 100644 db/schema_migrations/20230310213308 create mode 100644 db/schema_migrations/20230313054226 create mode 100644 db/schema_migrations/20230313100920 create mode 100644 db/schema_migrations/20230313133001 create mode 100644 db/schema_migrations/20230313143033 create mode 100644 db/schema_migrations/20230313150531 create mode 100644 db/schema_migrations/20230313184306 create mode 100644 db/schema_migrations/20230313185145 create mode 100644 db/schema_migrations/20230316014650 create mode 100644 db/schema_migrations/20230328111013 delete mode 100644 doc/administration/auth/authentiq.md create mode 100644 doc/administration/geo/replication/img/adding_a_secondary_v15_8.png delete mode 100644 doc/api/feature_flag_specs.md create mode 100644 doc/api/group_protected_branches.md create mode 100644 doc/api/rest/deprecations.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-admin-area.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-agent-for-kubernetes.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-backups.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-ci-runners.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-container-registry.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-contributions-forks.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-dashboard.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-data-migration.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-database-sequences.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-git-access.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-gitlab-pages.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-global-search.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-graphql.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-organizations.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-personal-namespaces.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-router-endpoints-classification.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-schema-changes.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-secrets.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-snippets.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-template.md create mode 100644 doc/architecture/blueprints/cells/cells-feature-uploads.md rename doc/architecture/blueprints/{pods => cells}/images/iteration0-organizations-introduction.png (100%) rename doc/architecture/blueprints/{pods => cells}/images/pods-and-fulfillment.png (100%) create mode 100644 doc/architecture/blueprints/cells/images/term-cell.png create mode 100644 doc/architecture/blueprints/cells/images/term-cluster.png create mode 100644 doc/architecture/blueprints/cells/images/term-organization.png rename doc/architecture/blueprints/{pods => cells}/images/term-top-level-namespace.png (100%) create mode 100644 doc/architecture/blueprints/cells/index.md rename doc/{user/admin_area/monitoring/background_migrations.md => architecture/blueprints/cells/pods-feature-admin-area.md} (58%) rename doc/{administration/sidekiq/extra_sidekiq_routing.md => architecture/blueprints/cells/pods-feature-agent-for-kubernetes.md} (57%) rename doc/{development/directory_structure.md => architecture/blueprints/cells/pods-feature-backups.md} (62%) create mode 100644 doc/architecture/blueprints/cells/pods-feature-ci-runners.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-container-registry.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-contributions-forks.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-dashboard.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-data-migration.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-database-sequences.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-git-access.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-gitlab-pages.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-global-search.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-graphql.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-organizations.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-personal-namespaces.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-router-endpoints-classification.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-schema-changes.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-secrets.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-snippets.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-template.md create mode 100644 doc/architecture/blueprints/cells/pods-feature-uploads.md create mode 100644 doc/architecture/blueprints/cells/proposal-stateless-router-with-buffering-requests.md create mode 100644 doc/architecture/blueprints/cells/proposal-stateless-router-with-routes-learning.md create mode 100644 doc/architecture/blueprints/ci_pipeline_components/dev_workflow.md create mode 100644 doc/architecture/blueprints/ci_pipeline_components/img/new_release.png create mode 100644 doc/architecture/blueprints/ci_pipeline_components/img/pipeline_main.png create mode 100644 doc/architecture/blueprints/ci_pipeline_components/img/pipeline_tag.png create mode 100644 doc/architecture/blueprints/clickhouse_usage/index.md rename doc/architecture/blueprints/{search/code_search_with_zoekt.md => code_search_with_zoekt/index.md} (99%) delete mode 100644 doc/architecture/blueprints/pods/images/term-cluster.png delete mode 100644 doc/architecture/blueprints/pods/images/term-organization.png delete mode 100644 doc/architecture/blueprints/pods/images/term-pod.png delete mode 100644 doc/ci/chatops/img/gitlab-chatops-icon-small.png delete mode 100644 doc/ci/pipelines/img/multi_project_pipeline_graph_v14_3.png delete mode 100644 doc/ci/pipelines/img/pipeline_mini_graph_v15_0.png create mode 100644 doc/ci/runners/register_runner.md create mode 100644 doc/ci/testing/img/code_quality_summary_15_9.png rename doc/development/{elasticsearch.md => advanced_search.md} (58%) rename doc/development/application_slis/{rails_request_apdex.md => rails_request.md} (89%) create mode 100644 doc/development/cicd/cicd_tables.md create mode 100644 doc/development/code_owners/index.md create mode 100644 doc/development/database/clickhouse/merge_request_analytics.md create mode 100644 doc/development/database/clickhouse/tiered_storage.md create mode 100644 doc/development/distribution/index.md create mode 100644 doc/development/documentation/alpha_beta.md create mode 100644 doc/development/documentation/contribute.md delete mode 100644 doc/development/integrations/codesandbox.md create mode 100644 doc/development/labels/index.md create mode 100644 doc/development/navigation_sidebar.md create mode 100644 doc/development/organization/index.md create mode 100644 doc/development/search/advanced_search_migration_styleguide.md create mode 100644 doc/development/stage_group_observability/img/error_budgets_kibana_dashboard_v15_10.png create mode 100644 doc/development/ux/index.md delete mode 100644 doc/integration/jira/img/jira_dev_panel_jira_setup_3.png delete mode 100644 doc/integration/jira/img/jira_dev_panel_jira_setup_4.png delete mode 100644 doc/integration/jira/img/jira_dev_panel_jira_setup_5.png delete mode 100644 doc/operations/img/copy-group-id.png delete mode 100644 doc/operations/img/create-gitlab-application.png delete mode 100644 doc/operations/img/error_tracking_setting_dsn_v14_4.png delete mode 100644 doc/operations/img/error_tracking_setting_v14_3.png delete mode 100644 doc/operations/img/listing_groups.png delete mode 100644 doc/operations/quickstart-guide.md create mode 100644 doc/topics/autodevops/cloud_deployments/auto_devops_with_eks.md delete mode 100644 doc/topics/git/merge_conflicts.md create mode 100644 doc/tutorials/convert_personal_namespace_into_group.md delete mode 100644 doc/update/mysql_to_postgresql.md delete mode 100644 doc/update/restore_after_failure.md delete mode 100644 doc/update/upgrading_postgresql_using_slony.md create mode 100644 doc/user/admin_area/settings/rate_limit_on_projects_api.md create mode 100644 doc/user/application_security/api_security/api_discovery/index.md create mode 100644 doc/user/application_security/api_security/index.md delete mode 100644 doc/user/application_security/policies/img/policy_rule_mode_v14_9.png create mode 100644 doc/user/application_security/policies/img/policy_rule_mode_v15_9.png delete mode 100644 doc/user/application_security/policies/img/policy_yaml_mode_v14_9.png create mode 100644 doc/user/application_security/policies/img/policy_yaml_mode_v15_9.png delete mode 100644 doc/user/application_security/policies/img/scan_execution_policy_rule_mode_v15_5.png create mode 100644 doc/user/application_security/policies/img/scan_execution_policy_rule_mode_v15_9.png create mode 100644 doc/user/application_security/policies/img/scheduled_scan_execution_policies_diagram.png delete mode 100644 doc/user/application_security/security_dashboard/img/security_center_dashboard_v13_4.png create mode 100644 doc/user/application_security/security_dashboard/img/security_center_dashboard_v15_10.png create mode 100644 doc/user/clusters/agent/gitops/flux.md create mode 100644 doc/user/clusters/agent/gitops/flux_tutorial.md delete mode 100644 doc/user/discussions/img/index_notes_filters.png delete mode 100644 doc/user/group/contribution_analytics/img/group_stats_cal.png delete mode 100644 doc/user/group/contribution_analytics/img/group_stats_table.png delete mode 100644 doc/user/group/epics/img/epic_board_epic_create_v14_1.png create mode 100644 doc/user/group/epics/img/epic_board_epic_create_v15_10.png delete mode 100644 doc/user/group/epics/img/epic_board_v14_1.png create mode 100644 doc/user/group/epics/img/epic_board_v15_10.png delete mode 100644 doc/user/group/settings/import_export.md create mode 100644 doc/user/group/value_stream_analytics/img/object_hierarchy_example_V14_10.png create mode 100644 doc/user/img/observability_copy_shortened_link.png create mode 100644 doc/user/organization/index.md create mode 100644 doc/user/profile/img/saved_replies_dropdown_v15_10.png create mode 100644 doc/user/profile/saved_replies.md create mode 100644 doc/user/project/img/codeowners_in_UI_v15_10.png create mode 100644 doc/user/project/img/multi_approvals_code_owners_sections_v15_9.png delete mode 100644 doc/user/project/import/img/bitbucket_import_select_project_v12_3.png delete mode 100644 doc/user/project/import/img/fogbugz_import_finished.png delete mode 100644 doc/user/project/import/img/manifest_status_v13_3.png create mode 100644 doc/user/project/integrations/google_play.md create mode 100644 doc/user/project/integrations/squash_tm.md delete mode 100644 doc/user/project/merge_requests/commits.md delete mode 100644 doc/user/project/merge_requests/img/remove_source_branch_status.png delete mode 100644 doc/user/project/merge_requests/reviews/img/apply_suggestion_v13_9.png delete mode 100644 doc/user/project/merge_requests/reviews/img/make_suggestion_v13_9.png delete mode 100644 doc/user/project/merge_requests/reviews/img/suggestion_button_v13_9.png delete mode 100644 doc/user/project/merge_requests/reviews/img/suggestions_custom_commit_messages_v14_7.png delete mode 100644 doc/user/project/repository/branches/img/branch_filter_search_box_v13_12.png delete mode 100644 doc/user/project/repository/branches/img/compare_branches_v13_12.png delete mode 100644 doc/user/project/repository/branches/img/repository_filter_search_box_v13_12.png delete mode 100644 doc/user/project/repository/branches/img/swap_revisions_after_v13_12.png delete mode 100644 doc/user/project/repository/branches/img/swap_revisions_before_v13_12.png create mode 100644 doc/user/project/repository/branches/img/view_branch_protections_v15_10.png create mode 100644 doc/user/project/repository/tags/img/tag-display_v15_9.png create mode 100644 doc/user/project/repository/tags/img/tags_commits_view_v15_10.png create mode 100644 doc/user/project/repository/tags/index.md delete mode 100644 doc/user/search/global_search/advanced_search_syntax.md delete mode 100644 lib/bulk_imports/features.rb create mode 100644 lib/bulk_imports/projects/pipelines/commit_notes_pipeline.rb create mode 100644 lib/generators/batched_background_migration/USAGE create mode 100644 lib/generators/batched_background_migration/batched_background_migration_generator.rb create mode 100644 lib/generators/batched_background_migration/templates/batched_background_migration_dictionary.template create mode 100644 lib/generators/batched_background_migration/templates/batched_background_migration_job.template create mode 100644 lib/generators/batched_background_migration/templates/batched_background_migration_job_spec.template create mode 100644 lib/generators/batched_background_migration/templates/queue_batched_background_migration.template create mode 100644 lib/generators/batched_background_migration/templates/queue_batched_background_migration_spec.template create mode 100644 lib/gitlab/auth/otp/duo_auth.rb create mode 100644 lib/gitlab/auth/otp/strategies/duo_auth/manual_otp.rb create mode 100644 lib/gitlab/background_migration/backfill_compliance_violations.rb create mode 100644 lib/gitlab/background_migration/backfill_namespace_ldap_settings.rb create mode 100644 lib/gitlab/background_migration/backfill_prepared_at_merge_requests.rb create mode 100644 lib/gitlab/background_migration/backfill_project_wiki_repositories.rb create mode 100644 lib/gitlab/background_migration/create_vulnerability_links.rb create mode 100644 lib/gitlab/background_migration/delete_orphaned_packages_dependencies.rb create mode 100644 lib/gitlab/background_migration/fix_vulnerability_reads_has_issues.rb create mode 100644 lib/gitlab/background_migration/issues_internal_id_scope_updater.rb create mode 100644 lib/gitlab/background_migration/migrate_evidences_for_vulnerability_findings.rb create mode 100644 lib/gitlab/background_migration/migrate_links_for_vulnerability_findings.rb create mode 100644 lib/gitlab/background_migration/migrate_remediations_for_vulnerability_findings.rb create mode 100644 lib/gitlab/cache/client.rb create mode 100644 lib/gitlab/ci/components/header.rb create mode 100644 lib/gitlab/ci/config/header/input.rb create mode 100644 lib/gitlab/ci/config/header/root.rb create mode 100644 lib/gitlab/ci/config/header/spec.rb create mode 100644 lib/gitlab/ci/config/yaml/result.rb create mode 100644 lib/gitlab/ci/input/arguments/base.rb create mode 100644 lib/gitlab/ci/input/arguments/default.rb create mode 100644 lib/gitlab/ci/input/arguments/options.rb create mode 100644 lib/gitlab/ci/input/arguments/required.rb create mode 100644 lib/gitlab/ci/input/arguments/unknown.rb create mode 100644 lib/gitlab/ci/input/inputs.rb delete mode 100644 lib/gitlab/ci/reports/security/vulnerability_reports_comparer.rb create mode 100644 lib/gitlab/ci/resource_groups/logger.rb create mode 100644 lib/gitlab/ci/templates/Security/API-Discovery.gitlab-ci.yml rename lib/gitlab/database/{async_foreign_keys.rb => async_constraints.rb} (62%) rename lib/gitlab/database/{async_foreign_keys => async_constraints}/migration_helpers.rb (51%) create mode 100644 lib/gitlab/database/async_constraints/postgres_async_constraint_validation.rb create mode 100644 lib/gitlab/database/async_constraints/validators.rb create mode 100644 lib/gitlab/database/async_constraints/validators/base.rb create mode 100644 lib/gitlab/database/async_constraints/validators/check_constraint.rb create mode 100644 lib/gitlab/database/async_constraints/validators/foreign_key.rb delete mode 100644 lib/gitlab/database/async_foreign_keys/foreign_key_validator.rb delete mode 100644 lib/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb create mode 100644 lib/gitlab/database/background_migration/sub_batch_timeout_error.rb create mode 100644 lib/gitlab/database/migration_helpers/convert_to_bigint.rb create mode 100644 lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb delete mode 100644 lib/gitlab/database/schema_validation/index.rb delete mode 100644 lib/gitlab/database/schema_validation/indexes.rb create mode 100644 lib/gitlab/database/schema_validation/runner.rb create mode 100644 lib/gitlab/database/schema_validation/schema_objects/base.rb create mode 100644 lib/gitlab/database/schema_validation/schema_objects/index.rb create mode 100644 lib/gitlab/database/schema_validation/schema_objects/trigger.rb create mode 100644 lib/gitlab/database/schema_validation/validators/base_validator.rb create mode 100644 lib/gitlab/database/schema_validation/validators/different_definition_indexes.rb create mode 100644 lib/gitlab/database/schema_validation/validators/different_definition_triggers.rb create mode 100644 lib/gitlab/database/schema_validation/validators/extra_indexes.rb create mode 100644 lib/gitlab/database/schema_validation/validators/extra_triggers.rb create mode 100644 lib/gitlab/database/schema_validation/validators/missing_indexes.rb create mode 100644 lib/gitlab/database/schema_validation/validators/missing_triggers.rb delete mode 100644 lib/gitlab/email/hook/validate_addresses_interceptor.rb create mode 100644 lib/gitlab/github_import/importer/collaborator_importer.rb create mode 100644 lib/gitlab/github_import/importer/collaborators_importer.rb create mode 100644 lib/gitlab/github_import/project_relation_type.rb create mode 100644 lib/gitlab/github_import/representation/collaborator.rb create mode 100644 lib/gitlab/i18n/pluralization.rb create mode 100644 lib/gitlab/import/errors.rb create mode 100644 lib/gitlab/instrumentation/zoekt.rb create mode 100644 lib/gitlab/kas/user_access.rb create mode 100644 lib/gitlab/loggable.rb create mode 100644 lib/gitlab/pages/random_domain.rb create mode 100644 lib/gitlab/pages/virtual_host_finder.rb create mode 100644 lib/gitlab/patch/node_loader.rb delete mode 100644 lib/gitlab/prometheus/queries/knative_invocation_query.rb delete mode 100644 lib/gitlab/rack_attack/instrumented_cache_store.rb create mode 100644 lib/gitlab/rack_attack/store.rb delete mode 100644 lib/gitlab/serverless/service.rb create mode 100644 lib/gitlab/usage/metrics/instrumentations/gitlab_dedicated_metric.rb create mode 100644 lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric.rb create mode 100644 lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric.rb create mode 100644 lib/gitlab/usage_data_counters/container_registry_event_counter.rb delete mode 100644 lib/gitlab/usage_data_counters/track_unique_events.rb create mode 100644 lib/gitlab/utils/error_message.rb create mode 100644 lib/gitlab/utils/uniquify.rb create mode 100644 lib/gitlab/utils/username_and_email_generator.rb create mode 100644 lib/sidebars/concerns/render_if_logged_in.rb create mode 100644 lib/sidebars/concerns/super_sidebar_panel.rb create mode 100644 lib/sidebars/explore/menus/groups_menu.rb create mode 100644 lib/sidebars/explore/menus/projects_menu.rb create mode 100644 lib/sidebars/explore/menus/snippets_menu.rb create mode 100644 lib/sidebars/explore/menus/topics_menu.rb create mode 100644 lib/sidebars/explore/panel.rb delete mode 100644 lib/sidebars/groups/menus/invite_team_members_menu.rb create mode 100644 lib/sidebars/groups/super_sidebar_menus/operations_menu.rb create mode 100644 lib/sidebars/groups/super_sidebar_menus/plan_menu.rb create mode 100644 lib/sidebars/groups/super_sidebar_panel.rb delete mode 100644 lib/sidebars/projects/menus/invite_team_members_menu.rb create mode 100644 lib/sidebars/projects/super_sidebar_menus/operations_menu.rb create mode 100644 lib/sidebars/projects/super_sidebar_menus/plan_menu.rb create mode 100644 lib/sidebars/projects/super_sidebar_panel.rb create mode 100644 lib/sidebars/static_menu.rb create mode 100644 lib/sidebars/uncategorized_menu.rb create mode 100644 lib/sidebars/user_profile/base_menu.rb create mode 100644 lib/sidebars/user_profile/menus/activity_menu.rb create mode 100644 lib/sidebars/user_profile/menus/contributed_projects_menu.rb create mode 100644 lib/sidebars/user_profile/menus/followers_menu.rb create mode 100644 lib/sidebars/user_profile/menus/following_menu.rb create mode 100644 lib/sidebars/user_profile/menus/groups_menu.rb create mode 100644 lib/sidebars/user_profile/menus/overview_menu.rb create mode 100644 lib/sidebars/user_profile/menus/personal_projects_menu.rb create mode 100644 lib/sidebars/user_profile/menus/snippets_menu.rb create mode 100644 lib/sidebars/user_profile/menus/starred_projects_menu.rb create mode 100644 lib/sidebars/user_profile/panel.rb create mode 100644 lib/sidebars/user_settings/menus/access_tokens_menu.rb create mode 100644 lib/sidebars/user_settings/menus/account_menu.rb create mode 100644 lib/sidebars/user_settings/menus/active_sessions_menu.rb create mode 100644 lib/sidebars/user_settings/menus/applications_menu.rb create mode 100644 lib/sidebars/user_settings/menus/authentication_log_menu.rb create mode 100644 lib/sidebars/user_settings/menus/chat_menu.rb create mode 100644 lib/sidebars/user_settings/menus/emails_menu.rb create mode 100644 lib/sidebars/user_settings/menus/gpg_keys_menu.rb create mode 100644 lib/sidebars/user_settings/menus/notifications_menu.rb create mode 100644 lib/sidebars/user_settings/menus/password_menu.rb create mode 100644 lib/sidebars/user_settings/menus/preferences_menu.rb create mode 100644 lib/sidebars/user_settings/menus/profile_menu.rb create mode 100644 lib/sidebars/user_settings/menus/saved_replies_menu.rb create mode 100644 lib/sidebars/user_settings/menus/ssh_keys_menu.rb create mode 100644 lib/sidebars/user_settings/panel.rb create mode 100644 lib/tasks/gitlab/db/decomposition/connection_status.rake create mode 100644 patches/@vue+compiler-sfc+3.2.47.patch create mode 100644 patches/@vue+vue3-jest+29.2.3.patch create mode 100644 patches/vue-loader-vue3+17.0.1.patch delete mode 100644 qa/qa/fixtures/kubernetes_agent/agentk-manifest.yaml.erb create mode 100644 qa/qa/fixtures/package_managers/maven/group/consumer/request_forwarding/gitlab_ci.yaml.erb create mode 100644 qa/qa/fixtures/package_managers/maven/group/consumer/request_forwarding/settings.xml.erb create mode 100644 qa/qa/page/project/monitor/alerts/show.rb create mode 100644 qa/qa/resource/ci_cd_settings.rb create mode 100644 qa/qa/resource/integrations/web_hook/smockerable.rb create mode 100644 qa/qa/resource/web_hook_base.rb delete mode 100644 qa/qa/specs/features/browser_ui/3_create/web_ide/open_fork_in_web_ide_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_parent_child_pipelines_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/8_monitor/incident_management/recovery_alert_closes_correct_incident.rb create mode 100644 qa/qa/specs/features/shared_contexts/sends_and_resolves_test_alerts.rb delete mode 100644 qa/qa/vendor/smocker/event_payload.rb rename config/feature_flags/development/increase_page_size_exponentially.yml => qa/spec/fixtures/ff/async_commit_diff_files.yml (71%) delete mode 100644 qa/spec/fixtures/ff/bulk_import_projects.yml create mode 100644 qa/spec/resource/project_web_hook_spec.rb create mode 100644 qa/spec/vendor/smocker_api_spec.rb create mode 100644 rubocop/cop/background_migration/missing_dictionary_file.rb create mode 100644 rubocop/rubocop-ruby31.yml create mode 100644 scripts/api/base.rb create mode 100644 scripts/api/create_merge_request_discussion.rb create mode 100644 scripts/api/get_package_and_test_job.rb create mode 100644 scripts/api/update_issue.rb create mode 100755 scripts/construct-release-environments-versions.rb create mode 100644 scripts/database/schema_validator.rb create mode 100755 scripts/generate-failed-package-and-test-mr-message.rb delete mode 100755 scripts/generate-rspec-foss-impact-pipeline create mode 100755 scripts/generate_rspec_pipeline.rb create mode 100755 scripts/pipeline/create_test_failure_issues.rb create mode 100755 scripts/validate_schema_changes create mode 100644 spec/controllers/concerns/kas_cookie_spec.rb create mode 100644 spec/deprecation_warnings.rb create mode 100644 spec/factories/achievements/user_achievements.rb delete mode 100644 spec/factories/airflow/dags.rb create mode 100644 spec/factories/bulk_import/batch_trackers.rb create mode 100644 spec/factories/bulk_import/export_batches.rb create mode 100644 spec/factories/ci/catalog/resources.rb create mode 100644 spec/factories/ci/runner_machine_builds.rb create mode 100644 spec/factories/gitlab/database/async_foreign_keys/postgres_async_constraint_validation.rb delete mode 100644 spec/factories/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb delete mode 100644 spec/factories/serverless/domain.rb delete mode 100644 spec/factories/serverless/domain_cluster.rb create mode 100644 spec/factories/service_desk/custom_email_verification.rb create mode 100644 spec/factories/users/banned_users.rb create mode 100644 spec/features/admin/broadcast_messages_spec.rb create mode 100644 spec/features/explore/navbar_spec.rb create mode 100644 spec/features/incidents/user_views_alert_details_spec.rb create mode 100644 spec/features/merge_request/user_sees_real_time_reviewers_spec.rb create mode 100644 spec/features/profiles/user_creates_saved_reply_spec.rb create mode 100644 spec/features/profiles/user_deletes_saved_reply_spec.rb create mode 100644 spec/features/profiles/user_updates_saved_reply_spec.rb create mode 100644 spec/features/profiles/user_uses_saved_reply_spec.rb create mode 100644 spec/features/projects/integrations/apple_app_store_spec.rb create mode 100644 spec/features/projects/integrations/google_play_spec.rb rename spec/features/{ => projects}/work_items/work_item_children_spec.rb (77%) create mode 100644 spec/features/projects/work_items/work_item_spec.rb delete mode 100644 spec/features/u2f_spec.rb delete mode 100644 spec/features/work_items/work_item_spec.rb create mode 100644 spec/finders/groups/accepting_project_imports_finder_spec.rb delete mode 100644 spec/finders/serverless_domain_finder_spec.rb create mode 100644 spec/fixtures/auth_key.p8 create mode 100644 spec/fixtures/diagram.drawio.svg create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/commit_notes.ndjson create mode 100644 spec/fixtures/packages/debian/sample-ddeb_1.2.3~alpha2_amd64.ddeb create mode 100644 spec/fixtures/service_account.json create mode 100644 spec/fixtures/work_items_invalid_types.csv create mode 100644 spec/fixtures/work_items_missing_header.csv create mode 100644 spec/fixtures/work_items_valid.csv create mode 100644 spec/fixtures/work_items_valid_types.csv create mode 100644 spec/frontend/__helpers__/create_mock_source_editor_extension.js create mode 100644 spec/frontend/__helpers__/gon_helper.js create mode 100644 spec/frontend/admin/abuse_reports/components/abuse_report_row_spec.js create mode 100644 spec/frontend/admin/abuse_reports/components/abuse_reports_filtered_search_bar_spec.js create mode 100644 spec/frontend/admin/abuse_reports/components/app_spec.js create mode 100644 spec/frontend/admin/abuse_reports/mock_data.js create mode 100644 spec/frontend/admin/abuse_reports/utils_spec.js create mode 100644 spec/frontend/admin/application_settings/network_outbound_spec.js delete mode 100644 spec/frontend/airflow/dags/components/dags_spec.js delete mode 100644 spec/frontend/airflow/dags/components/mock_data.js rename spec/frontend/{flash_spec.js => alert_spec.js} (99%) create mode 100644 spec/frontend/approvals/mock_data.js create mode 100644 spec/frontend/artifacts/components/artifacts_bulk_delete_spec.js create mode 100644 spec/frontend/artifacts/components/job_checkbox_spec.js delete mode 100644 spec/frontend/authentication/u2f/authenticate_spec.js delete mode 100644 spec/frontend/authentication/u2f/mock_u2f_device.js delete mode 100644 spec/frontend/authentication/u2f/register_spec.js delete mode 100644 spec/frontend/authentication/u2f/util_spec.js create mode 100644 spec/frontend/authentication/webauthn/components/registration_spec.js create mode 100644 spec/frontend/blame/streaming/index_spec.js create mode 100644 spec/frontend/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/image_item_spec.js create mode 100644 spec/frontend/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/job_setup_item_spec.js create mode 100644 spec/frontend/ci/runner/admin_register_runner/admin_register_runner_app_spec.js create mode 100644 spec/frontend/ci/runner/components/registration/__snapshots__/utils_spec.js.snap create mode 100644 spec/frontend/ci/runner/components/registration/cli_command_spec.js create mode 100644 spec/frontend/ci/runner/components/registration/platforms_drawer_spec.js create mode 100644 spec/frontend/ci/runner/components/registration/registration_instructions_spec.js create mode 100644 spec/frontend/ci/runner/components/registration/utils_spec.js create mode 100644 spec/frontend/ci/runner/components/runner_create_form_spec.js create mode 100644 spec/frontend/commit/components/signature_badge_spec.js create mode 100644 spec/frontend/commit/components/x509_certificate_details_spec.js create mode 100644 spec/frontend/content_editor/extensions/drawio_diagram_spec.js create mode 100644 spec/frontend/design_management/mock_data/project.js create mode 100644 spec/frontend/drawio/content_editor_facade_spec.js create mode 100644 spec/frontend/drawio/drawio_editor_spec.js create mode 100644 spec/frontend/drawio/markdown_field_editor_facade_spec.js create mode 100644 spec/frontend/editor/schema/ci/yaml_tests/negative_tests/services.yml create mode 100644 spec/frontend/editor/schema/ci/yaml_tests/positive_tests/services.yml create mode 100644 spec/frontend/environments/kubernetes_agent_info_spec.js create mode 100644 spec/frontend/environments/kubernetes_overview_spec.js delete mode 100644 spec/frontend/fixtures/u2f.rb create mode 100644 spec/frontend/fixtures/users.rb create mode 100644 spec/frontend/integrations/edit/components/sections/apple_app_store_spec.js create mode 100644 spec/frontend/integrations/edit/components/sections/google_play_spec.js create mode 100644 spec/frontend/integrations/edit/components/upload_dropzone_field_spec.js create mode 100644 spec/frontend/lib/utils/error_message_spec.js create mode 100644 spec/frontend/lib/utils/ref_validator_spec.js rename spec/frontend/ml/experiment_tracking/{components/__snapshots__/ml_candidate_spec.js.snap => routes/candidates/show/__snapshots__/ml_candidates_show_spec.js.snap} (92%) rename spec/frontend/ml/experiment_tracking/{components/ml_candidate_spec.js => routes/candidates/show/ml_candidates_show_spec.js} (81%) rename spec/frontend/ml/experiment_tracking/{components/ml_experiment_spec.js => routes/experiments/show/ml_experiments_show_spec.js} (74%) create mode 100644 spec/frontend/ml/experiment_tracking/routes/experiments/show/mock_data.js create mode 100644 spec/frontend/notebook/cells/output/error_spec.js create mode 100644 spec/frontend/observability/index_spec.js create mode 100644 spec/frontend/profile/components/activity_calendar_spec.js create mode 100644 spec/frontend/profile/components/user_achievements_spec.js create mode 100644 spec/frontend/profile/mock_data.js create mode 100644 spec/frontend/profile/utils_spec.js delete mode 100644 spec/frontend/ref/components/__snapshots__/ref_selector_spec.js.snap create mode 100644 spec/frontend/repository/components/fork_sync_conflicts_modal_spec.js delete mode 100644 spec/frontend/repository/components/preview/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/saved_replies/components/form_spec.js create mode 100644 spec/frontend/saved_replies/pages/index_spec.js rename spec/frontend/search/sidebar/components/{language_filters_spec.js => language_filter_spec.js} (76%) create mode 100644 spec/frontend/security_configuration/constants.js create mode 100644 spec/frontend/snippets/mock_data.js create mode 100644 spec/frontend/streaming/chunk_writer_spec.js create mode 100644 spec/frontend/streaming/handle_streamed_anchor_link_spec.js create mode 100644 spec/frontend/streaming/html_stream_spec.js create mode 100644 spec/frontend/streaming/rate_limit_stream_requests_spec.js create mode 100644 spec/frontend/streaming/render_balancer_spec.js create mode 100644 spec/frontend/streaming/render_html_streams_spec.js create mode 100644 spec/frontend/super_sidebar/components/context_switcher_spec.js create mode 100644 spec/frontend/super_sidebar/components/context_switcher_toggle_spec.js create mode 100644 spec/frontend/super_sidebar/components/frequent_items_list_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/components/global_search_autocomplete_items_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/components/global_search_default_items_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/components/global_search_scoped_items_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/components/global_search_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/mock_data.js create mode 100644 spec/frontend/super_sidebar/components/global_search/store/actions_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/store/getters_spec.js create mode 100644 spec/frontend/super_sidebar/components/global_search/store/mutations_spec.js create mode 100644 spec/frontend/super_sidebar/components/groups_list_spec.js create mode 100644 spec/frontend/super_sidebar/components/items_list_spec.js create mode 100644 spec/frontend/super_sidebar/components/nav_item_spec.js create mode 100644 spec/frontend/super_sidebar/components/projects_list_spec.js create mode 100644 spec/frontend/super_sidebar/components/search_results_spec.js create mode 100644 spec/frontend/super_sidebar/components/sidebar_portal_spec.js create mode 100644 spec/frontend/super_sidebar/components/user_menu_spec.js create mode 100644 spec/frontend/super_sidebar/components/user_name_group_spec.js create mode 100644 spec/frontend/super_sidebar/super_sidebar_collapsed_state_manager_spec.js create mode 100644 spec/frontend/super_sidebar/utils_spec.js create mode 100644 spec/frontend/validators/length_validator_spec.js create mode 100644 spec/frontend/vue_compat_test_setup.js delete mode 100644 spec/frontend/vue_shared/components/__snapshots__/file_row_header_spec.js.snap create mode 100644 spec/frontend/vue_shared/components/markdown/drawio_toolbar_button_spec.js create mode 100644 spec/frontend/vue_shared/components/markdown/saved_replies_dropdown_spec.js delete mode 100644 spec/frontend/vue_shared/components/resizable_chart/__snapshots__/resizable_chart_container_spec.js.snap delete mode 100644 spec/frontend/vue_shared/components/resizable_chart/resizable_chart_container_spec.js delete mode 100644 spec/frontend/work_items/components/notes/activity_filter_spec.js create mode 100644 spec/frontend/work_items/components/notes/work_item_activity_sort_filter_spec.js create mode 100644 spec/frontend/work_items/components/notes/work_item_history_only_filter_note_spec.js create mode 100644 spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js create mode 100644 spec/graphql/mutations/achievements/award_spec.rb create mode 100644 spec/graphql/mutations/achievements/revoke_spec.rb create mode 100644 spec/graphql/mutations/members/bulk_update_base_spec.rb create mode 100644 spec/graphql/resolvers/achievements/achievements_resolver_spec.rb create mode 100644 spec/graphql/types/achievements/user_achievement_type_spec.rb create mode 100644 spec/graphql/types/ci/runner_machine_type_spec.rb create mode 100644 spec/graphql/types/work_items/available_export_fields_enum_spec.rb create mode 100644 spec/graphql/types/work_items/widgets/notifications_type_spec.rb create mode 100644 spec/graphql/types/work_items/widgets/notifications_update_input_type_spec.rb create mode 100644 spec/helpers/admin/abuse_reports_helper_spec.rb delete mode 100644 spec/helpers/analytics/cycle_analytics_helper_spec.rb create mode 100644 spec/helpers/ci/catalog/resources_helper_spec.rb create mode 100644 spec/helpers/device_registration_helper_spec.rb create mode 100644 spec/helpers/plan_limits_helper_spec.rb create mode 100644 spec/helpers/projects/settings/branch_rules_helper_spec.rb create mode 100644 spec/initializers/google_cloud_profiler_spec.rb create mode 100644 spec/initializers/mail_starttls_patch_spec.rb create mode 100644 spec/initializers/safe_session_store_patch_spec.rb create mode 100644 spec/lib/api/helpers/internal_helpers_spec.rb delete mode 100644 spec/lib/bulk_imports/features_spec.rb create mode 100644 spec/lib/bulk_imports/projects/pipelines/commit_notes_pipeline_spec.rb create mode 100644 spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb create mode 100644 spec/lib/generators/batched_background_migration/expected_files/my_batched_migration.txt create mode 100644 spec/lib/generators/batched_background_migration/expected_files/my_batched_migration_dictionary_matcher.txt create mode 100644 spec/lib/generators/batched_background_migration/expected_files/my_batched_migration_spec_matcher.txt create mode 100644 spec/lib/generators/batched_background_migration/expected_files/queue_my_batched_migration.txt create mode 100644 spec/lib/generators/batched_background_migration/expected_files/queue_my_batched_migration_spec.txt create mode 100644 spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb create mode 100644 spec/lib/gitlab/auth/otp/strategies/duo_auth/manual_otp_spec.rb create mode 100644 spec/lib/gitlab/background_migration/backfill_prepared_at_merge_requests_spec.rb create mode 100644 spec/lib/gitlab/background_migration/backfill_project_wiki_repositories_spec.rb create mode 100644 spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb create mode 100644 spec/lib/gitlab/background_migration/fix_vulnerability_reads_has_issues_spec.rb create mode 100644 spec/lib/gitlab/background_migration/issues_internal_id_scope_updater_spec.rb create mode 100644 spec/lib/gitlab/background_migration/migrate_evidences_for_vulnerability_findings_spec.rb create mode 100644 spec/lib/gitlab/background_migration/migrate_links_for_vulnerability_findings_spec.rb create mode 100644 spec/lib/gitlab/background_migration/migrate_remediations_for_vulnerability_findings_spec.rb create mode 100644 spec/lib/gitlab/cache/client_spec.rb create mode 100644 spec/lib/gitlab/ci/components/header_spec.rb create mode 100644 spec/lib/gitlab/ci/config/header/input_spec.rb create mode 100644 spec/lib/gitlab/ci/config/header/root_spec.rb create mode 100644 spec/lib/gitlab/ci/config/header/spec_spec.rb create mode 100644 spec/lib/gitlab/ci/config/yaml/result_spec.rb create mode 100644 spec/lib/gitlab/ci/input/arguments/base_spec.rb create mode 100644 spec/lib/gitlab/ci/input/arguments/default_spec.rb create mode 100644 spec/lib/gitlab/ci/input/arguments/options_spec.rb create mode 100644 spec/lib/gitlab/ci/input/arguments/required_spec.rb create mode 100644 spec/lib/gitlab/ci/input/arguments/unknown_spec.rb create mode 100644 spec/lib/gitlab/ci/input/inputs_spec.rb delete mode 100644 spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb create mode 100644 spec/lib/gitlab/database/async_constraints/migration_helpers_spec.rb create mode 100644 spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb create mode 100644 spec/lib/gitlab/database/async_constraints/validators/check_constraint_spec.rb create mode 100644 spec/lib/gitlab/database/async_constraints/validators/foreign_key_spec.rb create mode 100644 spec/lib/gitlab/database/async_constraints/validators_spec.rb create mode 100644 spec/lib/gitlab/database/async_constraints_spec.rb delete mode 100644 spec/lib/gitlab/database/async_foreign_keys/foreign_key_validator_spec.rb delete mode 100644 spec/lib/gitlab/database/async_foreign_keys/migration_helpers_spec.rb delete mode 100644 spec/lib/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation_spec.rb delete mode 100644 spec/lib/gitlab/database/async_foreign_keys_spec.rb create mode 100644 spec/lib/gitlab/database/migration_helpers/convert_to_bigint_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning/ci_sliding_list_strategy_spec.rb delete mode 100644 spec/lib/gitlab/database/schema_validation/index_spec.rb delete mode 100644 spec/lib/gitlab/database/schema_validation/indexes_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/runner_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/schema_objects/index_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/schema_objects/trigger_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/different_definition_indexes_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/different_definition_triggers_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/extra_triggers_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/missing_indexes_spec.rb create mode 100644 spec/lib/gitlab/database/schema_validation/validators/missing_triggers_spec.rb delete mode 100644 spec/lib/gitlab/email/hook/validate_addresses_interceptor_spec.rb create mode 100644 spec/lib/gitlab/github_import/importer/collaborator_importer_spec.rb create mode 100644 spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb create mode 100644 spec/lib/gitlab/github_import/project_relation_type_spec.rb create mode 100644 spec/lib/gitlab/github_import/representation/collaborator_spec.rb create mode 100644 spec/lib/gitlab/i18n/pluralization_spec.rb create mode 100644 spec/lib/gitlab/import/errors_spec.rb create mode 100644 spec/lib/gitlab/kas/user_access_spec.rb create mode 100644 spec/lib/gitlab/loggable_spec.rb create mode 100644 spec/lib/gitlab/pages/random_domain_spec.rb create mode 100644 spec/lib/gitlab/pages/virtual_host_finder_spec.rb create mode 100644 spec/lib/gitlab/patch/node_loader_spec.rb delete mode 100644 spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb delete mode 100644 spec/lib/gitlab/rack_attack/instrumented_cache_store_spec.rb create mode 100644 spec/lib/gitlab/rack_attack/store_spec.rb delete mode 100644 spec/lib/gitlab/serverless/service_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/gitlab_dedicated_metric_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric_spec.rb create mode 100644 spec/lib/gitlab/usage_data_counters/container_registry_event_counter_spec.rb delete mode 100644 spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb create mode 100644 spec/lib/gitlab/utils/error_message_spec.rb rename spec/{models/concerns => lib/gitlab/utils}/uniquify_spec.rb (79%) create mode 100644 spec/lib/gitlab/utils/username_and_email_generator_spec.rb create mode 100644 spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb delete mode 100644 spec/lib/sidebars/groups/menus/invite_team_members_menu_spec.rb create mode 100644 spec/lib/sidebars/groups/super_sidebar_panel_spec.rb delete mode 100644 spec/lib/sidebars/projects/menus/invite_team_members_menu_spec.rb create mode 100644 spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb create mode 100644 spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb create mode 100644 spec/lib/sidebars/projects/super_sidebar_panel_spec.rb create mode 100644 spec/lib/sidebars/static_menu_spec.rb create mode 100644 spec/lib/sidebars/uncategorized_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/activity_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/contributed_projects_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/followers_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/following_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/overview_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/personal_projects_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/snippets_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/menus/starred_projects_menu_spec.rb create mode 100644 spec/lib/sidebars/user_profile/panel_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/account_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/active_sessions_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/applications_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/authentication_log_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/chat_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/emails_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/gpg_keys_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/notifications_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/password_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/preferences_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/saved_replies_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/menus/ssh_keys_menu_spec.rb create mode 100644 spec/lib/sidebars/user_settings/panel_spec.rb create mode 100644 spec/lib/sidebars/your_work/panel_spec.rb create mode 100644 spec/mailers/emails/work_items_spec.rb create mode 100644 spec/migrations/20230118144623_schedule_migration_for_remediation_spec.rb create mode 100644 spec/migrations/20230125195503_queue_backfill_compliance_violations_spec.rb create mode 100644 spec/migrations/20230130182412_schedule_create_vulnerability_links_migration_spec.rb create mode 100644 spec/migrations/20230202211434_migrate_redis_slot_keys_spec.rb create mode 100644 spec/migrations/20230208125736_schedule_migration_for_links_spec.rb create mode 100644 spec/migrations/20230214181633_finalize_ci_build_needs_big_int_conversion_spec.rb create mode 100644 spec/migrations/20230220102212_swap_columns_ci_build_needs_big_int_conversion_spec.rb create mode 100644 spec/migrations/20230221093533_add_tmp_partial_index_on_vulnerability_report_types_spec.rb create mode 100644 spec/migrations/20230221214519_remove_incorrectly_onboarded_namespaces_from_onboarding_progress_spec.rb create mode 100644 spec/migrations/20230223065753_finalize_nullify_creator_id_of_orphaned_projects_spec.rb create mode 100644 spec/migrations/20230224085743_update_issues_internal_id_scope_spec.rb create mode 100644 spec/migrations/20230224144233_migrate_evidences_from_raw_metadata_spec.rb create mode 100644 spec/migrations/20230228142350_add_notifications_work_item_widget_spec.rb create mode 100644 spec/migrations/20230302185739_queue_fix_vulnerability_reads_has_issues_spec.rb create mode 100644 spec/migrations/20230302811133_re_migrate_redis_slot_keys_spec.rb create mode 100644 spec/migrations/20230303105806_queue_delete_orphaned_packages_dependencies_spec.rb create mode 100644 spec/migrations/20230306195007_queue_backfill_project_wiki_repositories_spec.rb create mode 100644 spec/migrations/20230309071242_delete_security_policy_bot_users_spec.rb create mode 100644 spec/migrations/20230313150531_reschedule_migration_for_remediation_spec.rb create mode 100644 spec/migrations/ensure_merge_request_metrics_id_bigint_backfill_is_finished_for_gitlab_dot_com_spec.rb create mode 100644 spec/migrations/ensure_timelogs_note_id_bigint_backfill_is_finished_for_gitlab_dot_com_spec.rb create mode 100644 spec/migrations/queue_backfill_prepared_at_data_spec.rb create mode 100644 spec/migrations/swap_merge_request_metrics_id_to_bigint_for_gitlab_dot_com_spec.rb create mode 100644 spec/migrations/swap_timelogs_note_id_to_bigint_for_gitlab_dot_com_spec.rb delete mode 100644 spec/models/airflow/dags_spec.rb create mode 100644 spec/models/bulk_imports/batch_tracker_spec.rb create mode 100644 spec/models/bulk_imports/export_batch_spec.rb create mode 100644 spec/models/ci/catalog/listing_spec.rb create mode 100644 spec/models/ci/runner_machine_build_spec.rb delete mode 100644 spec/models/clusters/applications/crossplane_spec.rb delete mode 100644 spec/models/clusters/applications/prometheus_spec.rb delete mode 100644 spec/models/concerns/ci/partitionable/partitioned_filter_spec.rb create mode 100644 spec/models/concerns/web_hooks/has_web_hooks_spec.rb create mode 100644 spec/models/container_registry/data_repair_detail_spec.rb create mode 100644 spec/models/integrations/google_play_spec.rb create mode 100644 spec/models/integrations/squash_tm_spec.rb delete mode 100644 spec/models/members/member_role_spec.rb create mode 100644 spec/models/preloaders/runner_machine_policy_preloader_spec.rb rename spec/models/projects/forks/{divergence_counts_spec.rb => details_spec.rb} (50%) delete mode 100644 spec/models/serverless/domain_cluster_spec.rb delete mode 100644 spec/models/serverless/domain_spec.rb delete mode 100644 spec/models/serverless/function_spec.rb create mode 100644 spec/models/service_desk/custom_email_verification_spec.rb create mode 100644 spec/models/work_items/widgets/notifications_spec.rb create mode 100644 spec/policies/ci/runner_machine_policy_spec.rb create mode 100644 spec/rails_autoload.rb create mode 100644 spec/requests/admin/abuse_reports_controller_spec.rb create mode 100644 spec/requests/admin/projects_controller_spec.rb create mode 100644 spec/requests/api/graphql/achievements/user_achievements_query_spec.rb create mode 100644 spec/requests/api/graphql/mutations/achievements/award_spec.rb create mode 100644 spec/requests/api/graphql/mutations/achievements/revoke_spec.rb rename spec/requests/api/graphql/mutations/ci/{job_cancel_spec.rb => job/cancel_spec.rb} (96%) rename spec/requests/api/graphql/mutations/ci/{job_play_spec.rb => job/play_spec.rb} (97%) rename spec/requests/api/graphql/mutations/ci/{job_retry_spec.rb => job/retry_spec.rb} (96%) rename spec/requests/api/graphql/mutations/ci/{job_unschedule_spec.rb => job/unschedule_spec.rb} (98%) create mode 100644 spec/requests/api/graphql/mutations/ci/job_artifact/bulk_destroy_spec.rb create mode 100644 spec/requests/api/graphql/mutations/ci/runner/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/design_management/update_spec.rb create mode 100644 spec/requests/api/graphql/mutations/members/projects/bulk_update_spec.rb create mode 100644 spec/requests/api/graphql/mutations/projects/sync_fork_spec.rb create mode 100644 spec/requests/api/graphql/mutations/work_items/export_spec.rb create mode 100644 spec/requests/api/graphql/project/flow_metrics_spec.rb create mode 100644 spec/requests/api/graphql/user/user_achievements_query_spec.rb delete mode 100644 spec/requests/projects/airflow/dags_controller_spec.rb create mode 100644 spec/requests/projects/wikis_controller_spec.rb create mode 100644 spec/rubocop/cop/background_migration/missing_dictionary_file_spec.rb create mode 100644 spec/scripts/api/create_merge_request_discussion_spec.rb create mode 100644 spec/scripts/api/get_package_and_test_job_spec.rb create mode 100644 spec/scripts/database/schema_validator_spec.rb create mode 100644 spec/scripts/generate_failed_package_and_test_mr_message_spec.rb create mode 100644 spec/scripts/generate_rspec_pipeline_spec.rb create mode 100644 spec/scripts/pipeline/create_test_failure_issues_spec.rb create mode 100644 spec/scripts/review_apps/automated_cleanup_spec.rb create mode 100644 spec/serializers/admin/abuse_report_entity_spec.rb create mode 100644 spec/serializers/admin/abuse_report_serializer_spec.rb delete mode 100644 spec/serializers/cluster_application_entity_spec.rb create mode 100644 spec/serializers/profile/event_entity_spec.rb create mode 100644 spec/services/achievements/award_service_spec.rb create mode 100644 spec/services/achievements/revoke_service_spec.rb create mode 100644 spec/services/ci/catalog/add_resource_service_spec.rb create mode 100644 spec/services/ci/catalog/validate_resource_service_spec.rb create mode 100644 spec/services/ci/job_artifacts/bulk_delete_by_project_service_spec.rb create mode 100644 spec/services/clusters/agent_tokens/revoke_service_spec.rb create mode 100644 spec/services/clusters/agents/authorize_proxy_user_service_spec.rb create mode 100644 spec/services/issues/base_service_spec.rb create mode 100644 spec/services/issues/issuable_base_service_spec.rb create mode 100644 spec/services/mattermost/create_team_service_spec.rb create mode 100644 spec/services/projects/batch_open_merge_requests_count_service_spec.rb create mode 100644 spec/services/projects/forks/sync_service_spec.rb create mode 100644 spec/services/releases/links/create_service_spec.rb create mode 100644 spec/services/releases/links/destroy_service_spec.rb create mode 100644 spec/services/releases/links/update_service_spec.rb delete mode 100644 spec/services/serverless/associate_domain_service_spec.rb create mode 100644 spec/services/work_items/import_csv_service_spec.rb create mode 100644 spec/services/work_items/widgets/hierarchy_service/create_service_spec.rb create mode 100644 spec/services/work_items/widgets/notifications_service/update_service_spec.rb create mode 100644 spec/support/ability_check.rb create mode 100644 spec/support/ability_check_todo.yml create mode 100644 spec/support/helpers/content_editor_helpers.rb delete mode 100644 spec/support/helpers/fake_u2f_device.rb create mode 100644 spec/support/matchers/exceed_redis_call_limit.rb create mode 100644 spec/support/matchers/request_urgency_matcher.rb create mode 100644 spec/support/permissions_check.rb create mode 100644 spec/support/services/import_csv_service_shared_examples.rb create mode 100644 spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb create mode 100644 spec/support/shared_examples/analytics/cycle_analytics/request_params_examples.rb create mode 100644 spec/support/shared_examples/features/abuse_report_shared_examples.rb create mode 100644 spec/support/shared_examples/features/protected_tags_with_deploy_keys_examples.rb create mode 100644 spec/support/shared_examples/features/variable_list_pagination_shared_examples.rb create mode 100644 spec/support/shared_examples/graphql/mutations/members/bulk_update_shared_examples.rb create mode 100644 spec/support/shared_examples/graphql/notes_quick_actions_for_work_items_shared_examples.rb create mode 100644 spec/support/shared_examples/helpers/callouts_for_web_hooks.rb create mode 100644 spec/support/shared_examples/lib/api/terraform_state_enabled_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/database/async_constraints_validation_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/database/index_validators_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/database/schema_objects_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/database/trigger_validators_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/utils/username_and_email_generator_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/sidebars/user_profile/user_profile_menus_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/sidebars/user_settings/menus/user_settings_menus_shared_examples.rb create mode 100644 spec/support/shared_examples/mailers/export_csv_shared_examples.rb create mode 100644 spec/support/shared_examples/models/ci/token_format_shared_examples.rb create mode 100644 spec/support/shared_examples/observability/embed_observabilities_examples.rb create mode 100644 spec/support/stub_dot_com_check.rb create mode 100644 spec/support_specs/ability_check_spec.rb create mode 100644 spec/support_specs/helpers/packages/npm_spec.rb create mode 100644 spec/support_specs/matchers/exceed_redis_call_limit_spec.rb create mode 100644 spec/tasks/gitlab/db/decomposition/connection_status_spec.rb create mode 100644 spec/tooling/danger/sidekiq_args_spec.rb create mode 100644 spec/views/admin/application_settings/network.html.haml_spec.rb create mode 100644 spec/views/devise/shared/_error_messages.html.haml_spec.rb create mode 100644 spec/views/layouts/group.html.haml_spec.rb create mode 100644 spec/views/layouts/project.html.haml_spec.rb create mode 100644 spec/views/notify/import_work_items_csv_email.html.haml_spec.rb delete mode 100644 spec/workers/concerns/cluster_queue_spec.rb delete mode 100644 spec/workers/concerns/gitlab/github_import/queue_spec.rb delete mode 100644 spec/workers/concerns/pipeline_background_queue_spec.rb delete mode 100644 spec/workers/concerns/pipeline_queue_spec.rb create mode 100644 spec/workers/gitlab/github_import/import_collaborator_worker_spec.rb create mode 100644 spec/workers/gitlab/github_import/stage/import_collaborators_worker_spec.rb create mode 100644 spec/workers/projects/import_export/create_relation_exports_worker_spec.rb create mode 100644 spec/workers/projects/import_export/wait_relation_exports_worker_spec.rb create mode 100644 tooling/danger/sidekiq_args.rb delete mode 100644 vendor/assets/javascripts/u2f.js create mode 100644 vendor/gems/cloud_profiler_agent/.gitlab-ci.yml create mode 100644 vendor/gems/cloud_profiler_agent/Gemfile create mode 100644 vendor/gems/cloud_profiler_agent/Gemfile.lock create mode 100644 vendor/gems/cloud_profiler_agent/LICENSE create mode 100644 vendor/gems/cloud_profiler_agent/README.md create mode 100644 vendor/gems/cloud_profiler_agent/cloud_profiler_agent.gemspec create mode 100644 vendor/gems/cloud_profiler_agent/lib/cloud_profiler_agent.rb create mode 100644 vendor/gems/cloud_profiler_agent/lib/cloud_profiler_agent/agent.rb create mode 100644 vendor/gems/cloud_profiler_agent/lib/cloud_profiler_agent/looper.rb create mode 100644 vendor/gems/cloud_profiler_agent/lib/cloud_profiler_agent/pprof_builder.rb create mode 100644 vendor/gems/cloud_profiler_agent/lib/profile_pb.rb create mode 100755 vendor/gems/cloud_profiler_agent/script/generate_profile.rb create mode 100644 vendor/gems/cloud_profiler_agent/spec/cloud_profiler_agent/cpu.stackprof create mode 100644 vendor/gems/cloud_profiler_agent/spec/cloud_profiler_agent/looper_spec.rb create mode 100644 vendor/gems/cloud_profiler_agent/spec/cloud_profiler_agent/object.stackprof create mode 100644 vendor/gems/cloud_profiler_agent/spec/cloud_profiler_agent/pprof_builder_spec.rb create mode 100644 vendor/gems/cloud_profiler_agent/spec/cloud_profiler_agent/wall.stackprof create mode 100644 vendor/gems/cloud_profiler_agent/spec/spec_helper.rb delete mode 100644 vendor/gems/kubeclient/.gitignore delete mode 100644 vendor/gems/kubeclient/CHANGELOG.md delete mode 100644 vendor/gems/kubeclient/Gemfile delete mode 100644 vendor/gems/kubeclient/LICENSE.txt delete mode 100644 vendor/gems/kubeclient/README.md delete mode 100644 vendor/gems/kubeclient/RELEASING.md delete mode 100644 vendor/gems/kubeclient/Rakefile delete mode 100644 vendor/gems/kubeclient/kubeclient.gemspec delete mode 100644 vendor/gems/kubeclient/lib/kubeclient.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/aws_eks_credentials.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/common.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/config.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/entity_list.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/exec_credentials.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/gcp_auth_provider.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/gcp_command_credentials.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/google_application_default_credentials.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/http_error.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/missing_kind_compatibility.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/oidc_auth_provider.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/resource.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/resource_not_found_error.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/version.rb delete mode 100644 vendor/gems/kubeclient/lib/kubeclient/watch_stream.rb delete mode 100644 vendor/gems/kubeclient/test/cassettes/kubernetes_guestbook.yml delete mode 100644 vendor/gems/kubeclient/test/config/allinone.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/another-ca1.pem delete mode 100644 vendor/gems/kubeclient/test/config/another-ca2.pem delete mode 100644 vendor/gems/kubeclient/test/config/concatenated-ca.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/concatenated-ca.pem delete mode 100644 vendor/gems/kubeclient/test/config/execauth.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/external-ca.pem delete mode 100644 vendor/gems/kubeclient/test/config/external-cert.pem delete mode 100644 vendor/gems/kubeclient/test/config/external-key.rsa delete mode 100644 vendor/gems/kubeclient/test/config/external-without-ca.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/external.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/gcpauth.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/gcpcmdauth.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/insecure-custom-ca.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/insecure.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/nouser.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/oidcauth.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/secure-without-ca.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/secure.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/config/timestamps.kubeconfig delete mode 100755 vendor/gems/kubeclient/test/config/update_certs_k0s.rb delete mode 100644 vendor/gems/kubeclient/test/config/userauth.kubeconfig delete mode 100644 vendor/gems/kubeclient/test/json/bindings_list.json delete mode 100644 vendor/gems/kubeclient/test/json/component_status.json delete mode 100644 vendor/gems/kubeclient/test/json/component_status_list.json delete mode 100644 vendor/gems/kubeclient/test/json/config.istio.io_api_resource_list.json delete mode 100644 vendor/gems/kubeclient/test/json/config_map_list.json delete mode 100644 vendor/gems/kubeclient/test/json/core_api_resource_list.json delete mode 100644 vendor/gems/kubeclient/test/json/core_api_resource_list_without_kind.json delete mode 100644 vendor/gems/kubeclient/test/json/core_oapi_resource_list_without_kind.json delete mode 100644 vendor/gems/kubeclient/test/json/created_endpoint.json delete mode 100644 vendor/gems/kubeclient/test/json/created_namespace.json delete mode 100644 vendor/gems/kubeclient/test/json/created_secret.json delete mode 100644 vendor/gems/kubeclient/test/json/created_security_context_constraint.json delete mode 100644 vendor/gems/kubeclient/test/json/created_service.json delete mode 100644 vendor/gems/kubeclient/test/json/empty_pod_list.json delete mode 100644 vendor/gems/kubeclient/test/json/endpoint_list.json delete mode 100644 vendor/gems/kubeclient/test/json/entity_list.json delete mode 100644 vendor/gems/kubeclient/test/json/event_list.json delete mode 100644 vendor/gems/kubeclient/test/json/extensions_v1beta1_api_resource_list.json delete mode 100644 vendor/gems/kubeclient/test/json/limit_range.json delete mode 100644 vendor/gems/kubeclient/test/json/limit_range_list.json delete mode 100644 vendor/gems/kubeclient/test/json/namespace.json delete mode 100644 vendor/gems/kubeclient/test/json/namespace_exception.json delete mode 100644 vendor/gems/kubeclient/test/json/namespace_list.json delete mode 100644 vendor/gems/kubeclient/test/json/node.json delete mode 100644 vendor/gems/kubeclient/test/json/node_list.json delete mode 100644 vendor/gems/kubeclient/test/json/node_notice.json delete mode 100644 vendor/gems/kubeclient/test/json/persistent_volume.json delete mode 100644 vendor/gems/kubeclient/test/json/persistent_volume_claim.json delete mode 100644 vendor/gems/kubeclient/test/json/persistent_volume_claim_list.json delete mode 100644 vendor/gems/kubeclient/test/json/persistent_volume_claims_nil_items.json delete mode 100644 vendor/gems/kubeclient/test/json/persistent_volume_list.json delete mode 100644 vendor/gems/kubeclient/test/json/pod.json delete mode 100644 vendor/gems/kubeclient/test/json/pod_list.json delete mode 100644 vendor/gems/kubeclient/test/json/pod_template_list.json delete mode 100644 vendor/gems/kubeclient/test/json/pods_1.json delete mode 100644 vendor/gems/kubeclient/test/json/pods_2.json delete mode 100644 vendor/gems/kubeclient/test/json/pods_410.json delete mode 100644 vendor/gems/kubeclient/test/json/processed_template.json delete mode 100644 vendor/gems/kubeclient/test/json/replication_controller.json delete mode 100644 vendor/gems/kubeclient/test/json/replication_controller_list.json delete mode 100644 vendor/gems/kubeclient/test/json/resource_quota.json delete mode 100644 vendor/gems/kubeclient/test/json/resource_quota_list.json delete mode 100644 vendor/gems/kubeclient/test/json/secret_list.json delete mode 100644 vendor/gems/kubeclient/test/json/security.openshift.io_api_resource_list.json delete mode 100644 vendor/gems/kubeclient/test/json/security_context_constraint_list.json delete mode 100644 vendor/gems/kubeclient/test/json/service.json delete mode 100644 vendor/gems/kubeclient/test/json/service_account.json delete mode 100644 vendor/gems/kubeclient/test/json/service_account_list.json delete mode 100644 vendor/gems/kubeclient/test/json/service_illegal_json_404.json delete mode 100644 vendor/gems/kubeclient/test/json/service_json_patch.json delete mode 100644 vendor/gems/kubeclient/test/json/service_list.json delete mode 100644 vendor/gems/kubeclient/test/json/service_merge_patch.json delete mode 100644 vendor/gems/kubeclient/test/json/service_patch.json delete mode 100644 vendor/gems/kubeclient/test/json/service_update.json delete mode 100644 vendor/gems/kubeclient/test/json/template.json delete mode 100644 vendor/gems/kubeclient/test/json/template.openshift.io_api_resource_list.json delete mode 100644 vendor/gems/kubeclient/test/json/template_list.json delete mode 100644 vendor/gems/kubeclient/test/json/versions_list.json delete mode 100644 vendor/gems/kubeclient/test/json/watch_stream.json delete mode 100644 vendor/gems/kubeclient/test/test_common.rb delete mode 100644 vendor/gems/kubeclient/test/test_common_url_handling.rb delete mode 100644 vendor/gems/kubeclient/test/test_component_status.rb delete mode 100644 vendor/gems/kubeclient/test/test_config.rb delete mode 100644 vendor/gems/kubeclient/test/test_endpoint.rb delete mode 100644 vendor/gems/kubeclient/test/test_exec_credentials.rb delete mode 100644 vendor/gems/kubeclient/test/test_gcp_command_credentials.rb delete mode 100644 vendor/gems/kubeclient/test/test_google_application_default_credentials.rb delete mode 100644 vendor/gems/kubeclient/test/test_guestbook_go.rb delete mode 100644 vendor/gems/kubeclient/test/test_helper.rb delete mode 100644 vendor/gems/kubeclient/test/test_kubeclient.rb delete mode 100644 vendor/gems/kubeclient/test/test_limit_range.rb delete mode 100644 vendor/gems/kubeclient/test/test_missing_methods.rb delete mode 100644 vendor/gems/kubeclient/test/test_namespace.rb delete mode 100644 vendor/gems/kubeclient/test/test_node.rb delete mode 100644 vendor/gems/kubeclient/test/test_oidc_auth_provider.rb delete mode 100644 vendor/gems/kubeclient/test/test_persistent_volume.rb delete mode 100644 vendor/gems/kubeclient/test/test_persistent_volume_claim.rb delete mode 100644 vendor/gems/kubeclient/test/test_pod.rb delete mode 100644 vendor/gems/kubeclient/test/test_pod_log.rb delete mode 100644 vendor/gems/kubeclient/test/test_process_template.rb delete mode 100644 vendor/gems/kubeclient/test/test_real_cluster.rb delete mode 100644 vendor/gems/kubeclient/test/test_replication_controller.rb delete mode 100644 vendor/gems/kubeclient/test/test_resource_list_without_kind.rb delete mode 100644 vendor/gems/kubeclient/test/test_resource_quota.rb delete mode 100644 vendor/gems/kubeclient/test/test_secret.rb delete mode 100644 vendor/gems/kubeclient/test/test_security_context_constraint.rb delete mode 100644 vendor/gems/kubeclient/test/test_service.rb delete mode 100644 vendor/gems/kubeclient/test/test_service_account.rb delete mode 100644 vendor/gems/kubeclient/test/test_watch.rb delete mode 100644 vendor/gems/kubeclient/test/txt/pod_log.txt delete mode 100644 vendor/gems/kubeclient/test/valid_token_file delete mode 100644 vendor/project_templates/learn_gitlab_ultimate.tar.gz diff --git a/.eslintrc.yml b/.eslintrc.yml index 4a7197e3bd..906eeaeecc 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -117,6 +117,10 @@ rules: message: 'Migrate to GlSkeletonLoader, or import GlDeprecatedSkeletonLoading.' - selector: ImportSpecifier[imported.name='GlSafeHtmlDirective'] message: 'Use directive at ~/vue_shared/directives/safe_html.js instead.' + # TODO: Remove this rule once GitLab UI no longer exports the deprecated alias. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/382424. + - selector: ImportSpecifier[imported.name='GlListbox'] + message: 'Import GlCollapsibleListbox instead. The GlListbox name is deprecated.' # See https://gitlab.com/gitlab-org/gitlab/-/issues/360551 vue/multi-word-component-names: off unicorn/prefer-dom-node-dataset: @@ -174,8 +178,7 @@ overrides: - '@graphql-eslint' parserOptions: parser: '@graphql-eslint/eslint-plugin' - operations: - - '{,ee/,jh/}app/**/*.graphql' + operations: '{,ee/,jh/}app/**/*.graphql' schema: './tmp/tests/graphql/gitlab_schema_apollo.graphql' rules: filenames/match-regex: off diff --git a/.gitignore b/.gitignore index 1dd9f4ef8a..04d5ec06bf 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,7 @@ eslint-report.html /tags /vendor/bundle/* /vendor/gitaly-ruby +/vendor/package_metadata_db/ /builds* /.gitlab_workhorse_secret /.gitlab_pages_secret diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b5519726d..10823a4ac2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -36,11 +36,12 @@ default: OMNIBUS_GITLAB_RUBY2_BUILD: "true" OMNIBUS_GITLAB_CACHE_EDITION: "GITLAB_RUBY2" -.default-branch-incident-variables: &default-branch-incident-variables +.default-branch-pipeline-failure-variables: &default-branch-pipeline-failure-variables CREATE_INCIDENT_FOR_PIPELINE_FAILURE: "true" NOTIFY_PIPELINE_FAILURE_CHANNEL: "master-broken" BROKEN_BRANCH_INCIDENTS_PROJECT: "gitlab-org/quality/engineering-productivity/master-broken-incidents" BROKEN_BRANCH_INCIDENTS_PROJECT_TOKEN: "${BROKEN_MASTER_INCIDENTS_PROJECT_TOKEN}" + CREATE_ISSUES_FOR_FAILING_TESTS: "true" workflow: name: '$PIPELINE_NAME' @@ -48,8 +49,8 @@ workflow: # If `$FORCE_GITLAB_CI` is set, create a pipeline. - if: '$FORCE_GITLAB_CI' variables: - <<: *ruby2-variables - PIPELINE_NAME: 'Ruby 2 forced pipeline' + <<: *ruby3-variables + PIPELINE_NAME: 'Ruby 3 forced pipeline' # As part of the process of creating RCs automatically, we update stable # branches with the changes of the most recent production deployment. The # merge requests used for this merge a branch release-tools/X into a stable @@ -62,21 +63,24 @@ workflow: variables: <<: *ruby2-variables PIPELINE_NAME: 'Ruby 2 $CI_MERGE_REQUEST_EVENT_TYPE MR pipeline' + NO_SOURCEMAPS: 'true' - if: '$CI_MERGE_REQUEST_LABELS =~ /Community contribution/' variables: - <<: *ruby2-variables + <<: *ruby3-variables GITLAB_DEPENDENCY_PROXY_ADDRESS: "" - PIPELINE_NAME: 'Ruby 2 $CI_MERGE_REQUEST_EVENT_TYPE MR pipeline (community contribution)' + PIPELINE_NAME: 'Ruby 3 $CI_MERGE_REQUEST_EVENT_TYPE MR pipeline (community contribution)' + NO_SOURCEMAPS: 'true' # For (detached) merge request pipelines. - if: '$CI_MERGE_REQUEST_IID' variables: - <<: *ruby2-variables - PIPELINE_NAME: 'Ruby 2 $CI_MERGE_REQUEST_EVENT_TYPE MR pipeline' + <<: *ruby3-variables + PIPELINE_NAME: 'Ruby 3 $CI_MERGE_REQUEST_EVENT_TYPE MR pipeline' + NO_SOURCEMAPS: 'true' # For the scheduled pipelines, we set specific variables. - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule"' variables: <<: *ruby3-variables - <<: *default-branch-incident-variables + <<: *default-branch-pipeline-failure-variables CRYSTALBALL: "true" PIPELINE_NAME: 'Scheduled Ruby 3 $CI_COMMIT_BRANCH branch pipeline' # Run pipelines for ruby2 branch @@ -90,44 +94,44 @@ workflow: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $GITLAB_USER_LOGIN =~ /project_\d+_bot\d*/' variables: <<: *ruby3-variables - <<: *default-branch-incident-variables + <<: *default-branch-pipeline-failure-variables GITLAB_DEPENDENCY_PROXY_ADDRESS: "" PIPELINE_NAME: 'Ruby 3 $CI_COMMIT_BRANCH branch pipeline (triggered by a project token)' # For `$CI_DEFAULT_BRANCH` branch, create a pipeline (this includes on schedules, pushes, merges, etc.). - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' variables: <<: *ruby3-variables - <<: *default-branch-incident-variables + <<: *default-branch-pipeline-failure-variables PIPELINE_NAME: 'Ruby 3 $CI_COMMIT_BRANCH branch pipeline' # For tags, create a pipeline. - if: '$CI_COMMIT_TAG' variables: - <<: *ruby2-variables - PIPELINE_NAME: 'Ruby 2 $CI_COMMIT_TAG tag pipeline' + <<: *ruby3-variables + PIPELINE_NAME: 'Ruby 3 $CI_COMMIT_TAG tag pipeline' # If `$GITLAB_INTERNAL` isn't set, don't create a pipeline. - if: '$GITLAB_INTERNAL == null' when: never # For stable, auto-deploy, and security branches, create a pipeline. - if: '$CI_COMMIT_BRANCH =~ /^[\d-]+-stable(-ee)?$/' variables: - <<: *ruby2-variables + <<: *ruby3-variables NOTIFY_PIPELINE_FAILURE_CHANNEL: "releases" - PIPELINE_NAME: 'Ruby 2 $CI_COMMIT_BRANCH branch pipeline' + PIPELINE_NAME: 'Ruby 3 $CI_COMMIT_BRANCH branch pipeline' CREATE_INCIDENT_FOR_PIPELINE_FAILURE: "true" BROKEN_BRANCH_INCIDENTS_PROJECT: "gitlab-org/release/tasks" BROKEN_BRANCH_INCIDENTS_PROJECT_TOKEN: "${BROKEN_STABLE_INCIDENTS_PROJECT_TOKEN}" - if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/' variables: - <<: *ruby2-variables - PIPELINE_NAME: 'Ruby 2 $CI_COMMIT_BRANCH branch pipeline' + <<: *ruby3-variables + PIPELINE_NAME: 'Ruby 3 $CI_COMMIT_BRANCH branch pipeline' - if: '$CI_COMMIT_BRANCH =~ /^security\//' variables: - <<: *ruby2-variables - PIPELINE_NAME: 'Ruby 2 $CI_COMMIT_BRANCH branch pipeline' + <<: *ruby3-variables + PIPELINE_NAME: 'Ruby 3 $CI_COMMIT_BRANCH branch pipeline' variables: PG_VERSION: "12" - DEFAULT_CI_IMAGE: "${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}.patched-golang-${GO_VERSION}-rust-${RUST_VERSION}-node-16.14-postgresql-${PG_VERSION}:rubygems-3.2-git-2.36-lfs-2.9-chrome-${CHROME_VERSION}-yarn-1.22-graphicsmagick-1.3.36" + DEFAULT_CI_IMAGE: "${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}.patched-golang-${GO_VERSION}-rust-${RUST_VERSION}-node-16.14-postgresql-${PG_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-2.36-lfs-2.9-chrome-${CHROME_VERSION}-yarn-1.22-graphicsmagick-1.3.36" # We set $GITLAB_DEPENDENCY_PROXY to another variable (since it's set at the group level and has higher precedence than .gitlab-ci.yml) # so that we can override $GITLAB_DEPENDENCY_PROXY_ADDRESS in workflow rules. GITLAB_DEPENDENCY_PROXY_ADDRESS: "${GITLAB_DEPENDENCY_PROXY}" @@ -137,7 +141,7 @@ variables: BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3" BUNDLE_FROZEN: "true" # we override the max_old_space_size to prevent OOM errors - NODE_OPTIONS: --max_old_space_size=3584 + NODE_OPTIONS: --max_old_space_size=4096 GIT_DEPTH: "20" # 'GIT_STRATEGY: clone' optimizes the pack-objects cache hit ratio GIT_STRATEGY: "clone" @@ -145,8 +149,9 @@ variables: GET_SOURCES_ATTEMPTS: "3" DEBIAN_VERSION: "bullseye" CHROME_VERSION: "109" - DOCKER_VERSION: "20.10.14" + DOCKER_VERSION: "23.0.1" RUBY_VERSION: "2.7" + RUBYGEMS_VERSION: "3.4" GO_VERSION: "1.18" RUST_VERSION: "1.65" @@ -157,7 +162,7 @@ variables: JUNIT_RETRY_FILE: rspec/junit_rspec-retry.xml KNAPSACK_RSPEC_SUITE_REPORT_PATH: knapsack/report-master.json RSPEC_CHANGED_FILES_PATH: rspec/changed_files.txt - RSPEC_FOSS_IMPACT_PIPELINE_YML: rspec-foss-impact-pipeline.yml + RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML: .gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb RSPEC_LAST_RUN_RESULTS_FILE: rspec/rspec_last_run_results.txt RSPEC_MATCHING_JS_FILES_PATH: rspec/js_matching_files.txt RSPEC_MATCHING_TESTS_PATH: rspec/matching_tests.txt diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 02258c366c..a7ecfebbaf 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -16,6 +16,7 @@ GITALY_SERVER_VERSION @project_278964_bot6 @gitlab-org/maintainers/rails-backend /.gitlab/merge_request_templates/*.md /doc/*.md /doc/**/*.md +/doc/**/*.jpg /doc/**/*.png /data/deprecations/*.yml /data/removals/**/*.yml @@ -415,6 +416,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/administration/compliance.md @eread /doc/administration/configure.md @axil /doc/administration/consul.md @axil +/doc/administration/dedicated/ @drcatherinepope /doc/administration/docs_self_host.md @axil /doc/administration/encrypted_configuration.md @axil /doc/administration/environment_variables.md @axil @@ -422,6 +424,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/administration/feature_flags.md @axil /doc/administration/file_hooks.md @ashrafkhamis /doc/administration/geo/ @axil +/doc/administration/get_started.md @kpaizee /doc/administration/git_protocol.md @aqualls /doc/administration/gitaly/ @eread /doc/administration/housekeeping.md @eread @@ -429,7 +432,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/administration/incoming_email.md @msedlakjakubowski /doc/administration/index.md @axil /doc/administration/instance_limits.md @axil -/doc/administration/instance_review.md @phillipwells /doc/administration/integration/kroki.md @msedlakjakubowski /doc/administration/integration/mailgun.md @msedlakjakubowski /doc/administration/integration/plantuml.md @aqualls @@ -458,11 +460,11 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/administration/operations/gitlab_sshd.md @aqualls /doc/administration/operations/moving_repositories.md @eread /doc/administration/package_information/ @axil -/doc/administration/packages/ @dianalogan +/doc/administration/packages/ @marcel.amirault /doc/administration/pages/ @ashrafkhamis /doc/administration/polling.md @axil /doc/administration/postgresql/ @aqualls -/doc/administration/postgresql/multiple_databases.md @jglassman1 +/doc/administration/postgresql/multiple_databases.md @lciutacu /doc/administration/raketasks/ @axil /doc/administration/raketasks/ldap.md @jglassman1 /doc/administration/raketasks/praefect.md @eread @@ -500,31 +502,29 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/award_emoji.md @msedlakjakubowski /doc/api/boards.md @msedlakjakubowski /doc/api/branches.md @aqualls -/doc/api/broadcast_messages.md @phillipwells /doc/api/bulk_imports.md @eread /doc/api/cluster_agents.md @phillipwells /doc/api/commits.md @aqualls -/doc/api/container_registry.md @dianalogan +/doc/api/container_registry.md @marcel.amirault /doc/api/custom_attributes.md @msedlakjakubowski /doc/api/dependencies.md @rdickenson -/doc/api/dependency_proxy.md @dianalogan -/doc/api/deploy_keys.md @rdickenson -/doc/api/deploy_tokens.md @rdickenson -/doc/api/deployments.md @rdickenson +/doc/api/dependency_proxy.md @marcel.amirault +/doc/api/deploy_keys.md @phillipwells +/doc/api/deploy_tokens.md @phillipwells +/doc/api/deployments.md @phillipwells /doc/api/discussions.md @aqualls /doc/api/dora/ @lciutacu /doc/api/draft_notes.md @aqualls -/doc/api/environments.md @rdickenson +/doc/api/environments.md @phillipwells /doc/api/epic_issues.md @msedlakjakubowski /doc/api/epic_links.md @msedlakjakubowski /doc/api/epics.md @msedlakjakubowski /doc/api/error_tracking.md @drcatherinepope /doc/api/events.md @eread -/doc/api/experiments.md @phillipwells -/doc/api/feature_flag_user_lists.md @rdickenson -/doc/api/feature_flags.md @rdickenson -/doc/api/features.md @rdickenson -/doc/api/freeze_periods.md @rdickenson +/doc/api/feature_flag_user_lists.md @phillipwells +/doc/api/feature_flags.md @phillipwells +/doc/api/features.md @phillipwells +/doc/api/freeze_periods.md @phillipwells /doc/api/geo_nodes.md @axil /doc/api/graphql/audit_report.md @eread /doc/api/graphql/branch_rules.md @aqualls @@ -546,9 +546,10 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/group_labels.md @msedlakjakubowski /doc/api/group_level_variables.md @marcel.amirault /doc/api/group_milestones.md @msedlakjakubowski -/doc/api/group_protected_environments.md @rdickenson +/doc/api/group_protected_branches.md @aqualls +/doc/api/group_protected_environments.md @phillipwells /doc/api/group_relations_export.md @eread -/doc/api/group_releases.md @rdickenson +/doc/api/group_releases.md @phillipwells /doc/api/group_repository_storage_moves.md @ashrafkhamis /doc/api/group_wikis.md @ashrafkhamis /doc/api/groups.md @lciutacu @@ -557,7 +558,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/instance_clusters.md @phillipwells /doc/api/instance_level_ci_variables.md @marcel.amirault /doc/api/integrations.md @ashrafkhamis -/doc/api/invitations.md @phillipwells /doc/api/issue_links.md @msedlakjakubowski /doc/api/issues.md @msedlakjakubowski /doc/api/issues_statistics.md @msedlakjakubowski @@ -586,8 +586,8 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/notification_settings.md @msedlakjakubowski /doc/api/oauth2.md @jglassman1 /doc/api/openapi/ @ashrafkhamis -/doc/api/packages.md @dianalogan -/doc/api/packages/ @dianalogan +/doc/api/packages.md @marcel.amirault +/doc/api/packages/ @marcel.amirault /doc/api/pages.md @ashrafkhamis /doc/api/pages_domains.md @ashrafkhamis /doc/api/personal_access_tokens.md @eread @@ -607,17 +607,17 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/project_snippets.md @aqualls /doc/api/project_statistics.md @aqualls /doc/api/project_templates.md @aqualls -/doc/api/project_vulnerabilities.md @aqualls +/doc/api/project_vulnerabilities.md @rdickenson /doc/api/projects.md @lciutacu /doc/api/protected_branches.md @aqualls -/doc/api/protected_environments.md @rdickenson +/doc/api/protected_environments.md @phillipwells /doc/api/protected_tags.md @aqualls -/doc/api/releases/ @rdickenson +/doc/api/releases/ @phillipwells /doc/api/remote_mirrors.md @aqualls /doc/api/repositories.md @aqualls /doc/api/repository_files.md @aqualls /doc/api/repository_submodules.md @aqualls -/doc/api/resource_groups.md @rdickenson +/doc/api/resource_groups.md @phillipwells /doc/api/resource_iteration_events.md @msedlakjakubowski /doc/api/resource_label_events.md @eread /doc/api/resource_milestone_events.md @msedlakjakubowski @@ -644,30 +644,30 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/templates/licenses.md @rdickenson /doc/api/todos.md @msedlakjakubowski /doc/api/topics.md @lciutacu -/doc/api/usage_data.md @dianalogan +/doc/api/usage_data.md @lciutacu /doc/api/users.md @jglassman1 /doc/api/version.md @phillipwells -/doc/api/visual_review_discussions.md @marcel.amirault -/doc/api/vulnerabilities.md @dianalogan -/doc/api/vulnerability_exports.md @dianalogan -/doc/api/vulnerability_findings.md @dianalogan +/doc/api/visual_review_discussions.md @drcatherinepope +/doc/api/vulnerabilities.md @rdickenson +/doc/api/vulnerability_exports.md @rdickenson +/doc/api/vulnerability_findings.md @rdickenson /doc/api/wikis.md @ashrafkhamis /doc/architecture/blueprints/database/scalability/patterns/ @aqualls /doc/architecture/blueprints/database_scaling/ @aqualls /doc/ci/ @drcatherinepope /doc/ci/caching/ @marcel.amirault /doc/ci/chatops/ @phillipwells -/doc/ci/cloud_deployment/ @rdickenson +/doc/ci/cloud_deployment/ @phillipwells /doc/ci/cloud_services/ @marcel.amirault /doc/ci/directed_acyclic_graph/ @marcel.amirault /doc/ci/docker/using_docker_images.md @fneill -/doc/ci/environments/ @rdickenson +/doc/ci/environments/ @phillipwells /doc/ci/examples/authenticating-with-hashicorp-vault/ @marcel.amirault -/doc/ci/examples/deployment/ @rdickenson -/doc/ci/examples/end_to_end_testing_webdriverio/ @marcel.amirault -/doc/ci/examples/semantic-release.md @dianalogan +/doc/ci/examples/deployment/ @phillipwells +/doc/ci/examples/semantic-release.md @marcel.amirault /doc/ci/interactive_web_terminal/ @fneill -/doc/ci/jobs/job_control.md @marcel.amirault +/doc/ci/introduction/ @marcel.amirault +/doc/ci/jobs/ @marcel.amirault /doc/ci/large_repositories/ @fneill /doc/ci/lint.md @marcel.amirault /doc/ci/migration/ @marcel.amirault @@ -675,19 +675,23 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/ci/pipelines/downstream_pipelines.md @marcel.amirault /doc/ci/pipelines/index.md @marcel.amirault /doc/ci/pipelines/job_artifacts.md @marcel.amirault +/doc/ci/pipelines/pipeline_architectures.md @marcel.amirault /doc/ci/pipelines/pipeline_artifacts.md @marcel.amirault /doc/ci/quick_start/ @marcel.amirault -/doc/ci/resource_groups/ @rdickenson -/doc/ci/review_apps/ @marcel.amirault +/doc/ci/resource_groups/ @phillipwells /doc/ci/runners/ @fneill /doc/ci/secrets/ @marcel.amirault /doc/ci/secure_files/ @marcel.amirault /doc/ci/services/ @fneill +/doc/ci/ssh_keys/ @marcel.amirault /doc/ci/test_cases/ @msedlakjakubowski -/doc/ci/testing/ @marcel.amirault /doc/ci/testing/code_quality.md @rdickenson +/doc/ci/triggers/ @marcel.amirault +/doc/ci/troubleshooting.md @marcel.amirault /doc/ci/variables/ @marcel.amirault /doc/ci/yaml/ @marcel.amirault +/doc/ci/yaml/artifacts_reports.md @drcatherinepope +/doc/development/advanced_search.md @ashrafkhamis /doc/development/application_limits.md @axil /doc/development/audit_event_guide/ @eread /doc/development/auto_devops.md @phillipwells @@ -699,27 +703,27 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/development/cascading_settings.md @jglassman1 /doc/development/chatops_on_gitlabcom.md @phillipwells /doc/development/cicd/ @marcel.amirault +/doc/development/cicd/cicd_tables.md @drcatherinepope /doc/development/cicd/index.md @drcatherinepope /doc/development/code_intelligence/ @aqualls +/doc/development/code_owners/ @aqualls /doc/development/contributing/ @sselhorn /doc/development/database/ @aqualls /doc/development/database/filtering_by_label.md @msedlakjakubowski -/doc/development/database/multiple_databases.md @jglassman1 +/doc/development/database/multiple_databases.md @lciutacu /doc/development/database_review.md @aqualls /doc/development/developing_with_solargraph.md @aqualls /doc/development/development_processes.md @sselhorn /doc/development/distributed_tracing.md @msedlakjakubowski /doc/development/documentation/ @sselhorn -/doc/development/elasticsearch.md @ashrafkhamis -/doc/development/experiment_guide/ @phillipwells /doc/development/export_csv.md @eread /doc/development/fe_guide/content_editor.md @ashrafkhamis /doc/development/fe_guide/customizable_dashboards.md @lciutacu /doc/development/fe_guide/dark_mode.md @sselhorn /doc/development/fe_guide/graphql.md @sselhorn /doc/development/fe_guide/merge_request_widget_extensions.md @aqualls -/doc/development/fe_guide/source_editor.md @ashrafkhamis -/doc/development/fe_guide/view_component.md @rdickenson +/doc/development/fe_guide/source_editor.md @aqualls +/doc/development/fe_guide/view_component.md @sselhorn /doc/development/feature_categorization/ @sselhorn /doc/development/feature_development.md @sselhorn /doc/development/feature_flags/ @sselhorn @@ -736,10 +740,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/development/image_scaling.md @lciutacu /doc/development/import_export.md @eread /doc/development/index.md @sselhorn -/doc/development/integrations/codesandbox.md @sselhorn -/doc/development/integrations/index.md @ashrafkhamis -/doc/development/integrations/jenkins.md @ashrafkhamis -/doc/development/integrations/jira_connect.md @ashrafkhamis +/doc/development/integrations/ @ashrafkhamis /doc/development/integrations/secure.md @rdickenson /doc/development/integrations/secure_partner_integration.md @rdickenson /doc/development/internal_api/ @aqualls @@ -747,25 +748,28 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/development/issuable-like-models.md @msedlakjakubowski /doc/development/issue_types.md @msedlakjakubowski /doc/development/kubernetes.md @phillipwells +/doc/development/labels/ @sselhorn /doc/development/lfs.md @aqualls /doc/development/logging.md @msedlakjakubowski /doc/development/maintenance_mode.md @axil /doc/development/merge_request_concepts/ @aqualls +/doc/development/migration_style_guide.md @aqualls +/doc/development/navigation_sidebar.md @sselhorn /doc/development/omnibus.md @axil -/doc/development/packages/ @dianalogan +/doc/development/organization/ @lciutacu +/doc/development/packages/ @marcel.amirault /doc/development/pages/ @ashrafkhamis /doc/development/permissions.md @jglassman1 /doc/development/policies.md @jglassman1 -/doc/development/product_qualified_lead_guide/ @phillipwells /doc/development/project_templates.md @aqualls /doc/development/prometheus_metrics.md @msedlakjakubowski /doc/development/real_time.md @msedlakjakubowski /doc/development/rubocop_development_guide.md @sselhorn +/doc/development/search/ @ashrafkhamis /doc/development/sec/ @rdickenson -/doc/development/sec/security_report_ingestion_overview.md @dianalogan /doc/development/secure_coding_guidelines.md @sselhorn -/doc/development/service_ping/ @dianalogan -/doc/development/snowplow/ @dianalogan +/doc/development/service_ping/ @lciutacu +/doc/development/snowplow/ @lciutacu /doc/development/spam_protection_and_captcha/ @phillipwells /doc/development/sql.md @aqualls /doc/development/testing_guide/ @sselhorn @@ -775,7 +779,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/development/work_items.md @msedlakjakubowski /doc/development/work_items_widgets.md @msedlakjakubowski /doc/development/workhorse/ @aqualls -/doc/development/workspace/ @sselhorn /doc/downgrade_ee_to_ce/ @axil /doc/drawers/ @ashrafkhamis /doc/gitlab-basics/ @aqualls @@ -794,6 +797,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/integration/jenkins.md @ashrafkhamis /doc/integration/jira/ @ashrafkhamis /doc/integration/mattermost/ @axil +/doc/integration/partner_marketplace.md @fneill /doc/integration/recaptcha.md @phillipwells /doc/integration/security_partners/ @rdickenson /doc/integration/slash_commands.md @ashrafkhamis @@ -801,7 +805,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/integration/trello_power_up.md @ashrafkhamis /doc/integration/vault.md @phillipwells /doc/operations/error_tracking.md @drcatherinepope -/doc/operations/feature_flags.md @rdickenson +/doc/operations/feature_flags.md @phillipwells /doc/operations/incident_management/ @msedlakjakubowski /doc/operations/index.md @msedlakjakubowski /doc/operations/metrics/ @msedlakjakubowski @@ -813,20 +817,19 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/raketasks/x509_signatures.md @aqualls /doc/security/ @jglassman1 /doc/subscriptions/ @fneill -/doc/subscriptions/gitlab_dedicated/ @axil +/doc/subscriptions/gitlab_dedicated/ @drcatherinepope /doc/topics/authentication/ @jglassman1 /doc/topics/autodevops/ @phillipwells -/doc/topics/awesome_co.md @rdickenson +/doc/topics/awesome_co.md @sselhorn /doc/topics/git/ @aqualls /doc/topics/gitlab_flow.md @aqualls /doc/topics/offline/ @axil /doc/topics/plan_and_track.md @msedlakjakubowski -/doc/topics/your_work.md @rdickenson +/doc/topics/your_work.md @sselhorn /doc/tutorials/ @kpaizee /doc/update/ @axil /doc/update/background_migrations.md @aqualls /doc/user/admin_area/analytics/ @lciutacu -/doc/user/admin_area/broadcast_messages.md @phillipwells /doc/user/admin_area/credentials_inventory.md @jglassman1 /doc/user/admin_area/custom_project_templates.md @eread /doc/user/admin_area/diff_limits.md @aqualls @@ -853,37 +856,37 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/admin_area/settings/incident_management_rate_limits.md @msedlakjakubowski /doc/user/admin_area/settings/index.md @aqualls /doc/user/admin_area/settings/instance_template_repository.md @aqualls -/doc/user/admin_area/settings/package_registry_rate_limits.md @dianalogan +/doc/user/admin_area/settings/package_registry_rate_limits.md @marcel.amirault /doc/user/admin_area/settings/project_integration_management.md @ashrafkhamis /doc/user/admin_area/settings/push_event_activities_limit.md @aqualls /doc/user/admin_area/settings/rate_limit_on_issues_creation.md @msedlakjakubowski /doc/user/admin_area/settings/rate_limit_on_notes_creation.md @msedlakjakubowski /doc/user/admin_area/settings/rate_limit_on_pipelines_creation.md @drcatherinepope +/doc/user/admin_area/settings/rate_limit_on_projects_api.md @lciutacu /doc/user/admin_area/settings/rate_limit_on_users_api.md @jglassman1 /doc/user/admin_area/settings/scim_setup.md @jglassman1 /doc/user/admin_area/settings/terraform_limits.md @phillipwells /doc/user/admin_area/settings/third_party_offers.md @lciutacu -/doc/user/admin_area/settings/usage_statistics.md @dianalogan +/doc/user/admin_area/settings/usage_statistics.md @lciutacu /doc/user/admin_area/settings/visibility_and_access_controls.md @aqualls /doc/user/analytics/ @lciutacu -/doc/user/analytics/ci_cd_analytics.md @rdickenson +/doc/user/analytics/ci_cd_analytics.md @phillipwells /doc/user/application_security/ @rdickenson -/doc/user/application_security/cve_id_request.md @dianalogan -/doc/user/application_security/generate_test_vulnerabilities/ @dianalogan /doc/user/application_security/policies/ @dianalogan -/doc/user/application_security/security_dashboard/ @dianalogan -/doc/user/application_security/vulnerabilities/ @dianalogan -/doc/user/application_security/vulnerability_report/ @dianalogan /doc/user/asciidoc.md @aqualls /doc/user/award_emojis.md @msedlakjakubowski /doc/user/clusters/ @phillipwells -/doc/user/compliance/ @eread +/doc/user/compliance/compliance_report/ @eread +/doc/user/compliance/index.md @eread +/doc/user/compliance/license_approval_policies.md @dianalogan +/doc/user/compliance/license_check_rules.md @dianalogan /doc/user/compliance/license_compliance/ @rdickenson +/doc/user/compliance/license_list.md @rdickenson +/doc/user/compliance/license_scanning_of_cyclonedx_files/ @rdickenson /doc/user/crm/ @msedlakjakubowski /doc/user/discussions/ @aqualls /doc/user/enterprise_user/ @jglassman1 /doc/user/feature_flags.md @sselhorn -/doc/user/free_user_limit.md @phillipwells /doc/user/group/ @lciutacu /doc/user/group/clusters/ @phillipwells /doc/user/group/compliance_frameworks.md @eread @@ -894,7 +897,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/group/iterations/ @msedlakjakubowski /doc/user/group/planning_hierarchy/ @msedlakjakubowski /doc/user/group/reporting/ @phillipwells -/doc/user/group/repositories_analytics/ @marcel.amirault +/doc/user/group/repositories_analytics/ @drcatherinepope /doc/user/group/roadmap/ @msedlakjakubowski /doc/user/group/saml_sso/ @jglassman1 /doc/user/group/settings/ @jglassman1 @@ -903,22 +906,27 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/markdown.md @msedlakjakubowski /doc/user/namespace/ @lciutacu /doc/user/okrs.md @msedlakjakubowski -/doc/user/operations_dashboard/ @rdickenson -/doc/user/packages/ @dianalogan +/doc/user/operations_dashboard/ @phillipwells +/doc/user/organization/ @lciutacu +/doc/user/packages/ @marcel.amirault /doc/user/permissions.md @jglassman1 /doc/user/product_analytics/ @lciutacu -/doc/user/profile/ @jglassman1 +/doc/user/profile/account/ @jglassman1 /doc/user/profile/contributions_calendar.md @lciutacu +/doc/user/profile/index.md @jglassman1 /doc/user/profile/notifications.md @msedlakjakubowski +/doc/user/profile/personal_access_tokens.md @jglassman1 +/doc/user/profile/saved_replies.md @aqualls +/doc/user/profile/user_passwords.md @jglassman1 /doc/user/project/autocomplete_characters.md @aqualls /doc/user/project/badges.md @lciutacu /doc/user/project/changelogs.md @aqualls /doc/user/project/clusters/ @phillipwells /doc/user/project/code_intelligence.md @aqualls /doc/user/project/code_owners.md @aqualls -/doc/user/project/deploy_boards.md @rdickenson -/doc/user/project/deploy_keys/ @rdickenson -/doc/user/project/deploy_tokens/ @rdickenson +/doc/user/project/deploy_boards.md @phillipwells +/doc/user/project/deploy_keys/ @phillipwells +/doc/user/project/deploy_tokens/ @phillipwells /doc/user/project/description_templates.md @msedlakjakubowski /doc/user/project/file_lock.md @aqualls /doc/user/project/git_attributes.md @aqualls @@ -945,7 +953,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/project/protected_tags.md @aqualls /doc/user/project/push_options.md @aqualls /doc/user/project/quick_actions.md @msedlakjakubowski -/doc/user/project/releases/ @rdickenson +/doc/user/project/releases/ @phillipwells /doc/user/project/remote_development/ @ashrafkhamis /doc/user/project/repository/ @aqualls /doc/user/project/repository/file_finder.md @ashrafkhamis @@ -965,7 +973,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/project/wiki/ @ashrafkhamis /doc/user/project/working_with_projects.md @lciutacu /doc/user/public_access.md @lciutacu -/doc/user/read_only_namespaces.md @phillipwells /doc/user/report_abuse.md @phillipwells /doc/user/reserved_names.md @lciutacu /doc/user/search/ @ashrafkhamis @@ -975,7 +982,6 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/user/tasks.md @msedlakjakubowski /doc/user/todos.md @msedlakjakubowski /doc/user/usage_quotas.md @fneill -/doc/user/workspace/ @lciutacu # End rake-managed-docs-block [Authentication and Authorization] @@ -1396,7 +1402,6 @@ ee/lib/ee/api/entities/project.rb @gitlab-org/manage/manage-workspace/backend-ap /ee/config/events/202108302307_profiles_controller_search_audit_event.yml @gitlab-org/govern/compliance /ee/config/events/202108302307_projects__audit_events_controller_search_audit_event.yml @gitlab-org/govern/compliance /ee/config/events/202111041910_admin__audit_logs_controller_search_audit_event.yml @gitlab-org/govern/compliance -/ee/config/feature_flags/development/audit_log_group_level.yml @gitlab-org/govern/compliance /ee/config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml @gitlab-org/govern/compliance /ee/config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml @gitlab-org/govern/compliance /ee/config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml @gitlab-org/govern/compliance @@ -1421,5 +1426,5 @@ ee/lib/ee/api/entities/project.rb @gitlab-org/manage/manage-workspace/backend-ap /ee/app/assets/javascripts/usage_quotas/storage/ @fulfillment-group/utilization-group/fe [Manage::Foundations] -/lib/sidebars/ @gitlab/ @gitlab-org/manage/foundations/engineering -/ee/lib/sidebars/ @gitlab-org/manage/foundations/engineering \ No newline at end of file +/lib/sidebars/ @gitlab-org/manage/foundations/engineering +/ee/lib/sidebars/ @gitlab-org/manage/foundations/engineering diff --git a/.gitlab/ci/as-if-jh.gitlab-ci.yml b/.gitlab/ci/as-if-jh.gitlab-ci.yml index 6bd46bee77..2c90112bbf 100644 --- a/.gitlab/ci/as-if-jh.gitlab-ci.yml +++ b/.gitlab/ci/as-if-jh.gitlab-ci.yml @@ -37,11 +37,19 @@ prepare-as-if-jh-branch: stage: prepare needs: - add-jh-files + variables: + # We can't apply --filter=tree:0 for runner to set up the repository, + # so instead we tell runner to not clone anything, and we set up the + # repository by ourselves. + GIT_STRATEGY: "none" script: - # Fetch for the history of the branch so it does not cause the following error: - # ! [remote rejected] ref -> ref (shallow update not allowed) - - git fetch --unshallow --filter=tree:0 origin "${CI_COMMIT_SHA}" - - git checkout -b "${AS_IF_JH_BRANCH}" + - git clone --filter=tree:0 "$CI_REPOSITORY_URL" gitlab + # We should checkout before moving/changing files + - cd gitlab + - git checkout -b "${AS_IF_JH_BRANCH}" "${CI_COMMIT_SHA}" + - cd .. + - mv $JH_FILES_TO_COMMIT gitlab/ + - cd gitlab - git add ${JH_FILES_TO_COMMIT} - git commit -m 'Add JH files' # TODO: Mark which SHA we add - git push -f "${SANDBOX_REPOSITORY}" "${AS_IF_JH_BRANCH}" diff --git a/.gitlab/ci/database.gitlab-ci.yml b/.gitlab/ci/database.gitlab-ci.yml index ace968ec24..941cb9224f 100644 --- a/.gitlab/ci/database.gitlab-ci.yml +++ b/.gitlab/ci/database.gitlab-ci.yml @@ -1,13 +1,43 @@ include: - local: .gitlab/ci/rails/shared.gitlab-ci.yml +db:rollback single-db-ci-connection: + extends: + - db:rollback + - .single-db-ci-connection + - .rails:rules:single-db-ci-connection + +db:migrate:reset single-db-ci-connection: + extends: + - db:migrate:reset + - .single-db-ci-connection + - .rails:rules:single-db-ci-connection + +db:check-schema-single-db-ci-connection: + extends: + - db:check-schema + - .single-db-ci-connection + - .rails:rules:single-db-ci-connection + +db:post_deployment_migrations_validator-single-db-ci-connection: + extends: + - db:post_deployment_migrations_validator + - .single-db-ci-connection + - .rails:rules:db:check-migrations-single-db-ci-connection + +db:backup_and_restore single-db-ci-connection: + extends: + - db:backup_and_restore + - .single-db-ci-connection + - .rails:rules:db-backup + db:rollback: extends: - .db-job-base - .rails:rules:db-rollback script: - - scripts/db_tasks db:migrate VERSION=20220502173045 # 14.10 (last 14.x version) - - scripts/db_tasks db:migrate + - bundle exec rake db:migrate VERSION=20220502173045 # 14.10 (last 14.x version) + - bundle exec rake db:migrate db:rollback single-db: extends: @@ -31,8 +61,7 @@ db:check-schema: - .db-job-base - .rails:rules:ee-mr-and-default-branch-only script: - - run_timed_command "bundle exec rake db:drop db:create" - - run_timed_command "scripts/db_tasks db:migrate" + - run_timed_command "bundle exec rake db:drop db:create db:migrate" db:check-schema-single-db: extends: @@ -97,7 +126,7 @@ db:backup_and_restore: GITLAB_ASSUME_YES: "1" script: - . scripts/prepare_build.sh - - bundle exec rake db:drop db:create db:structure:load db:seed_fu + - bundle exec rake db:drop db:create db:schema:load db:seed_fu - mkdir -p tmp/tests/public/uploads tmp/tests/{artifacts,pages,lfs-objects,terraform_state,registry,packages} - bundle exec rake gitlab:backup:create - date diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index b404444f81..a52372a7bb 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -42,7 +42,7 @@ review-docs-cleanup: docs-lint links: extends: - .docs:rules:docs-lint - image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-html:alpine-3.16-ruby-3.0.5-869cfc5d + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-html:alpine-3.17-ruby-3.2.1-f53af000 stage: lint needs: [] script: @@ -58,7 +58,7 @@ docs-lint links: .docs-markdown-lint-image: # When updating the image version here, update it in /scripts/lint-doc.sh too. - image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.16-vale-2.22.0-markdownlint-0.32.2-markdownlint2-0.6.0 + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.17-vale-2.24.0-markdownlint-0.33.0-markdownlint2-0.6.0 docs-lint markdown: extends: diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 2e0d83187c..c5d992cab6 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -3,7 +3,7 @@ - .default-retry - .default-before_script - .assets-compile-cache - image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-node-16.14:rubygems-3.2-git-2.33-lfs-2.9-yarn-1.22-graphicsmagick-1.3.36 + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-node-16.14:rubygems-${RUBYGEMS_VERSION}-git-2.33-lfs-2.9-yarn-1.22-graphicsmagick-1.3.36 variables: SETUP_DB: "false" WEBPACK_VENDOR_DLL: "true" @@ -49,6 +49,18 @@ compile-production-assets: after_script: - rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here +compile-production-assets-esbuild: + allow_failure: true + extends: + - .compile-assets-base + - .frontend:rules:compile-production-assets + variables: + NODE_ENV: "production" + RAILS_ENV: "production" + WEBPACK_USE_ESBUILD_LOADER: "true" + after_script: + - rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here + compile-test-assets: extends: - .compile-assets-base @@ -61,6 +73,14 @@ compile-test-assets: - "${WEBPACK_COMPILE_LOG_PATH}" when: always +compile-test-assets-esbuild: + allow_failure: true + extends: + - .compile-assets-base + - .frontend:rules:compile-test-assets + variables: + WEBPACK_USE_ESBUILD_LOADER: "true" + compile-test-assets as-if-foss: extends: - compile-test-assets @@ -141,6 +161,21 @@ rspec-all frontend_fixture as-if-foss: - !reference [.frontend-fixtures-base, needs] - "compile-test-assets as-if-foss" +# Uploads EE fixtures in the EE project. +# Uploads FOSS fixtures in the FOSS project. +upload-frontend-fixtures: + extends: + - .frontend-fixtures-base + - .frontend:rules:upload-frontend-fixtures + stage: fixtures + needs: ["rspec-all frontend_fixture"] + script: + - source scripts/gitlab_component_helpers.sh + - 'fixtures_archive_doesnt_exist || { echoinfo "INFO: Exiting early as package exists."; exit 0; }' + - run_timed_command "create_fixtures_package" + - run_timed_command "upload_fixtures_package" + artifacts: {} + graphql-schema-dump: variables: SETUP_DB: "false" diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index ba623ef4cb..14fa0fc367 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -229,14 +229,6 @@ - *node-modules-cache # We don't push this cache as it's already rebuilt by `update-assets-compile-*-cache` - *storybook-node-modules-cache-push -.use-pg11: - services: - - name: postgres:11.6 - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - - name: redis:5.0-alpine - variables: - POSTGRES_HOST_AUTH_METHOD: trust - PG_VERSION: "11" .use-pg12: services: @@ -256,21 +248,6 @@ POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "13" -.use-pg11-es7-ee: - services: - - name: postgres:11.6 - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - - name: redis:5.0-alpine - - name: elasticsearch:7.17.6 - command: ["elasticsearch", "-E", "discovery.type=single-node", "-E", "xpack.security.enabled=false"] - - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:zoekt-ci-image-1.0 - alias: zoekt-ci-image - variables: - POSTGRES_HOST_AUTH_METHOD: trust - PG_VERSION: "11" - ZOEKT_INDEX_BASE_URL: http://zoekt-ci-image:6060 - ZOEKT_SEARCH_BASE_URL: http://zoekt-ci-image:6070 - .use-pg12-es7-ee: services: - name: postgres:12 @@ -306,7 +283,7 @@ - name: postgres:12 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:6.0-alpine - - name: elasticsearch:8.5.3 + - name: elasticsearch:8.6.2 - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:zoekt-ci-image-1.0 alias: zoekt-ci-image variables: @@ -376,7 +353,7 @@ .use-buildx: extends: .use-docker-in-docker - image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-slim:docker-${DOCKER_VERSION}-buildx-0.8 + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-slim:docker-${DOCKER_VERSION} variables: QEMU_IMAGE: tonistiigi/binfmt:qemu-v7.0.0 before_script: diff --git a/.gitlab/ci/notify.gitlab-ci.yml b/.gitlab/ci/notify.gitlab-ci.yml index 20f1997802..90ae1813e5 100644 --- a/.gitlab/ci/notify.gitlab-ci.yml +++ b/.gitlab/ci/notify.gitlab-ci.yml @@ -70,3 +70,40 @@ notify-pipeline-failure: - ${FAILED_PIPELINE_SLACK_MESSAGE_FILE} when: always expire_in: 2 days + +create-issues-for-failing-tests: + extends: + - .notify-defaults + - .notify:rules:create-issues-for-failing-tests + image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION} + variables: + FAILED_TESTS_DIR: "${CI_PROJECT_DIR}/tmp/failed_tests" + FAILING_ISSUES_PROJECT: "gitlab-org/quality/engineering-productivity/flaky-tests-playground" + FAILING_ISSUE_JSON_DIR: "${CI_PROJECT_DIR}/tmp/issues" + before_script: + - source ./scripts/utils.sh + - source ./scripts/rspec_helpers.sh + - install_gitlab_gem + script: + - mkdir -p "${FAILING_ISSUE_JSON_DIR}" + - retrieve_failed_tests "${FAILED_TESTS_DIR}" "json" "latest" + - scripts/pipeline/create_test_failure_issues.rb --project "${FAILING_ISSUES_PROJECT}" --tests-report-file "${FAILED_TESTS_DIR}/rspec_failed_tests.json" --issues-json-folder "${FAILING_ISSUE_JSON_DIR}" --api-token "${FAILING_ISSUES_PROJECT_TOKEN}" + - scripts/pipeline/create_test_failure_issues.rb --project "${FAILING_ISSUES_PROJECT}" --tests-report-file "${FAILED_TESTS_DIR}/rspec_ee_failed_tests.json" --issues-json-folder "${FAILING_ISSUE_JSON_DIR}" --api-token "${FAILING_ISSUES_PROJECT_TOKEN}" + artifacts: + paths: + - ${FAILED_TESTS_DIR}/ + - ${FAILING_ISSUE_JSON_DIR}/ + when: always + expire_in: 2 days + +notify-package-and-test-failure: + extends: + - .notify-defaults + - .notify:rules:notify-package-and-test-failure + image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION} + before_script: + - source scripts/utils.sh + - apt-get update + - install_gitlab_gem + script: + - scripts/generate-failed-package-and-test-mr-message.rb diff --git a/.gitlab/ci/package-and-test/main.gitlab-ci.yml b/.gitlab/ci/package-and-test/main.gitlab-ci.yml index b1c04ba8a1..c830f541c9 100644 --- a/.gitlab/ci/package-and-test/main.gitlab-ci.yml +++ b/.gitlab/ci/package-and-test/main.gitlab-ci.yml @@ -8,7 +8,7 @@ include: - local: .gitlab/ci/package-and-test/rules.gitlab-ci.yml - local: .gitlab/ci/package-and-test/variables.gitlab-ci.yml - project: gitlab-org/quality/pipeline-common - ref: 2.0.0 + ref: 2.2.0 file: - /ci/base.gitlab-ci.yml - /ci/allure-report.yml @@ -41,7 +41,8 @@ stages: .update-script: script: - - export QA_COMMAND="bundle exec gitlab-qa Test::Omnibus::UpdateFromPrevious $RELEASE $GITLAB_VERSION $UPDATE_TYPE -- $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS" + - !reference [.bundle-prefix] + - export QA_COMMAND="$BUNDLE_PREFIX gitlab-qa Test::Omnibus::UpdateFromPrevious $RELEASE $GITLAB_SEMVER_VERSION $UPDATE_TYPE -- $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS" - echo "Running - '$QA_COMMAND'" - eval "$QA_COMMAND" @@ -59,15 +60,16 @@ stages: - job: download-knapsack-report artifacts: true optional: true + - job: check-release-set variables: QA_GENERATE_ALLURE_REPORT: "true" QA_CAN_TEST_PRAEFECT: "false" QA_INTERCEPT_REQUESTS: "true" - QA_RUN_TYPE: e2e-package-and-test + GITLAB_LICENSE_MODE: test + GITLAB_QA_ADMIN_ACCESS_TOKEN: $QA_ADMIN_ACCESS_TOKEN + # todo: remove in 16.1 milestone when not needed for backwards compatibility anymore EE_LICENSE: $QA_EE_LICENSE GITHUB_ACCESS_TOKEN: $QA_GITHUB_ACCESS_TOKEN - GITLAB_QA_ADMIN_ACCESS_TOKEN: $QA_ADMIN_ACCESS_TOKEN - GITLAB_LICENSE_MODE: test # ========================================== # Prepare stage @@ -122,6 +124,7 @@ trigger-omnibus-env: echo "OMNIBUS_GITLAB_CACHE_UPDATE=${OMNIBUS_GITLAB_CACHE_UPDATE:-false}" >> $BUILD_ENV for version_file in *_VERSION; do echo "$version_file=$(cat $version_file)" >> $BUILD_ENV; done echo "OMNIBUS_GITLAB_RUBY3_BUILD=${OMNIBUS_GITLAB_RUBY3_BUILD:-false}" >> $BUILD_ENV + echo "OMNIBUS_GITLAB_RUBY2_BUILD=${OMNIBUS_GITLAB_RUBY2_BUILD:-false}" >> $BUILD_ENV echo "OMNIBUS_GITLAB_CACHE_EDITION=${OMNIBUS_GITLAB_CACHE_EDITION:-GITLAB}" >> $BUILD_ENV echo "GITLAB_ASSETS_TAG=$(assets_image_tag)" >> $BUILD_ENV echo "EE=$([[ $FOSS_ONLY == '1' ]] && echo 'false' || echo 'true')" >> $BUILD_ENV @@ -155,8 +158,8 @@ trigger-omnibus: SECURITY_SOURCES: $SECURITY_SOURCES CACHE_UPDATE: $OMNIBUS_GITLAB_CACHE_UPDATE RUBY3_BUILD: $OMNIBUS_GITLAB_RUBY3_BUILD + RUBY2_BUILD: $OMNIBUS_GITLAB_RUBY2_BUILD CACHE_EDITION: $OMNIBUS_GITLAB_CACHE_EDITION - SKIP_QA_DOCKER: "true" SKIP_QA_TEST: "true" ee: $EE trigger: @@ -206,7 +209,7 @@ cache-gems: # Run manual quarantine job # this job requires passing QA_SCENARIO variable # and optionally QA_TESTS to run specific quarantined tests -_ee:quarantine: +_quarantine: extends: - .qa - .rules:test:manual @@ -217,12 +220,33 @@ _ee:quarantine: variables: QA_RSPEC_TAGS: --tag quarantine +# Temporary test job to support the effort of migrating to Super Sidebar +# https://gitlab.com/groups/gitlab-org/-/epics/9044 +_super-sidebar-nav: + extends: + - .qa + - .parallel + variables: + QA_SCENARIO: Test::Instance::Image + QA_KNAPSACK_REPORT_NAME: ee-instance + QA_TESTS: "" + QA_SUPER_SIDEBAR_ENABLED: "true" + QA_ALLURE_RESULTS_DIRECTORY: tmp/allure-results-super-sidebar + QA_EXPORT_TEST_METRICS: "false" + GITLAB_QA_OPTS: --set-feature-flags super_sidebar_nav=enabled + RSPEC_REPORT_OPTS: "--format documentation" + SKIP_REPORT_IN_ISSUES: "true" + allow_failure: true + rules: + - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH + - !reference [.rules:test:manual, rules] + # ------------------------------------------ # FF changes # ------------------------------------------ # Run specs with feature flags set to the opposite of the default state -ee:instance-ff-inverse: +instance-ff-inverse: extends: - .qa - .parallel @@ -236,23 +260,23 @@ ee:instance-ff-inverse: # ------------------------------------------ # Jobs with parallel variant # ------------------------------------------ -ee:instance-selective: +instance-selective: extends: .qa variables: QA_SCENARIO: Test::Instance::Image rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:instance: +instance: extends: - .parallel - - ee:instance-selective + - instance-selective rules: - - !reference [.rules:test:feature-flags-set, rules] # always run ee:instance to validate ff change + - !reference [.rules:test:feature-flags-set, rules] # always run instance to validate ff change - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:praefect-selective: +praefect-selective: extends: .qa variables: QA_SCENARIO: Test::Integration::Praefect @@ -260,30 +284,30 @@ ee:praefect-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:praefect: +praefect: extends: - .parallel - - ee:praefect-selective + - praefect-selective rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:relative-url-selective: +relative-url-selective: extends: .qa variables: QA_SCENARIO: Test::Instance::RelativeUrl rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:relative-url: +relative-url: extends: - .parallel - - ee:relative-url-selective + - relative-url-selective rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:decomposition-single-db-selective: +decomposition-single-db-selective: extends: .qa variables: QA_SCENARIO: Test::Instance::Image @@ -291,15 +315,15 @@ ee:decomposition-single-db-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:decomposition-single-db: +decomposition-single-db: extends: - .parallel - - ee:decomposition-single-db-selective + - decomposition-single-db-selective rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:decomposition-multiple-db-selective: +decomposition-multiple-db-selective: extends: .qa variables: QA_SCENARIO: Test::Instance::Image @@ -308,15 +332,15 @@ ee:decomposition-multiple-db-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:decomposition-multiple-db: +decomposition-multiple-db: extends: - .parallel - - ee:decomposition-multiple-db-selective + - decomposition-multiple-db-selective rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::All/ -ee:object-storage-selective: +object-storage-selective: extends: .qa variables: QA_SCENARIO: Test::Instance::Image @@ -325,42 +349,42 @@ ee:object-storage-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::ObjectStorage/ -ee:object-storage: - extends: ee:object-storage-selective +object-storage: + extends: object-storage-selective parallel: 2 rules: - !reference [.rules:test:qa-parallel, rules] - if: $QA_SUITES =~ /Test::Instance::ObjectStorage/ -ee:object-storage-aws-selective: - extends: ee:object-storage-selective +object-storage-aws-selective: + extends: object-storage-selective variables: AWS_S3_ACCESS_KEY: $QA_AWS_S3_ACCESS_KEY AWS_S3_BUCKET_NAME: $QA_AWS_S3_BUCKET_NAME AWS_S3_KEY_ID: $QA_AWS_S3_KEY_ID AWS_S3_REGION: $QA_AWS_S3_REGION GITLAB_QA_OPTS: --omnibus-config object_storage_aws -ee:object-storage-aws: - extends: ee:object-storage-aws-selective +object-storage-aws: + extends: object-storage-aws-selective parallel: 2 rules: - - !reference [ee:object-storage, rules] + - !reference [object-storage, rules] -ee:object-storage-gcs-selective: - extends: ee:object-storage-selective +object-storage-gcs-selective: + extends: object-storage-selective variables: GCS_BUCKET_NAME: $QA_GCS_BUCKET_NAME GOOGLE_PROJECT: $QA_GOOGLE_PROJECT GOOGLE_JSON_KEY: $QA_GOOGLE_JSON_KEY GOOGLE_CLIENT_EMAIL: $QA_GOOGLE_CLIENT_EMAIL GITLAB_QA_OPTS: --omnibus-config object_storage_gcs -ee:object-storage-gcs: - extends: ee:object-storage-gcs-selective +object-storage-gcs: + extends: object-storage-gcs-selective parallel: 2 rules: - - !reference [ee:object-storage, rules] + - !reference [object-storage, rules] -ee:packages-selective: +packages-selective: extends: .qa variables: QA_SCENARIO: Test::Instance::Image @@ -369,8 +393,8 @@ ee:packages-selective: rules: - !reference [.rules:test:qa-selective, rules] - if: $QA_SUITES =~ /Test::Instance::Packages/ -ee:packages: - extends: ee:packages-selective +packages: + extends: packages-selective parallel: 2 rules: - !reference [.rules:test:qa-parallel, rules] @@ -379,7 +403,7 @@ ee:packages: # ------------------------------------------ # Non parallel jobs # ------------------------------------------ -ee:update-minor: +update-minor: extends: - .qa - .update-script @@ -391,7 +415,7 @@ ee:update-minor: - if: $QA_SUITES =~ /Test::Instance::Smoke/ - !reference [.rules:test:manual, rules] -ee:update-major: +update-major: extends: - .qa - .update-script @@ -403,7 +427,7 @@ ee:update-major: - if: $QA_SUITES =~ /Test::Instance::Smoke/ - !reference [.rules:test:manual, rules] -ee:gitlab-pages: +gitlab-pages: extends: .qa variables: QA_SCENARIO: Test::Integration::GitlabPages @@ -412,7 +436,7 @@ ee:gitlab-pages: - if: $QA_SUITES =~ /Test::Instance::GitlabPages/ - !reference [.rules:test:manual, rules] -ee:gitaly-cluster: +gitaly-cluster: extends: .qa variables: QA_SCENARIO: Test::Integration::GitalyCluster @@ -421,16 +445,17 @@ ee:gitaly-cluster: - if: $QA_SUITES =~ /Test::Integration::GitalyCluster/ - !reference [.rules:test:manual, rules] -ee:group-saml: +group-saml: extends: .qa variables: QA_SCENARIO: Test::Integration::GroupSAML rules: + - !reference [.rules:test:ee-only, rules] - !reference [.rules:test:qa, rules] - if: $QA_SUITES =~ /Test::Integration::GroupSAML/ - !reference [.rules:test:manual, rules] -ee:instance-saml: +instance-saml: extends: .qa variables: QA_SCENARIO: Test::Integration::InstanceSAML @@ -439,7 +464,7 @@ ee:instance-saml: - if: $QA_SUITES =~ /Test::Integration::InstanceSAML/ - !reference [.rules:test:manual, rules] -ee:jira: +jira: extends: .qa variables: QA_SCENARIO: Test::Integration::Jira @@ -450,7 +475,7 @@ ee:jira: - if: $QA_SUITES =~ /Test::Integration::Jira/ - !reference [.rules:test:manual, rules] -ee:integrations: +integrations: extends: .qa variables: QA_SCENARIO: Test::Integration::Integrations @@ -459,7 +484,7 @@ ee:integrations: - if: $QA_SUITES =~ /Test::Integration::Integrations/ - !reference [.rules:test:manual, rules] -ee:ldap-no-server: +ldap-no-server: extends: .qa variables: QA_SCENARIO: Test::Integration::LDAPNoServer @@ -468,7 +493,7 @@ ee:ldap-no-server: - if: $QA_SUITES =~ /Test::Integration::LDAPNoServer/ - !reference [.rules:test:manual, rules] -ee:ldap-tls: +ldap-tls: extends: .qa variables: QA_SCENARIO: Test::Integration::LDAPTLS @@ -477,7 +502,7 @@ ee:ldap-tls: - if: $QA_SUITES =~ /Test::Integration::LDAPTLS/ - !reference [.rules:test:manual, rules] -ee:ldap-no-tls: +ldap-no-tls: extends: .qa variables: QA_SCENARIO: Test::Integration::LDAPNoTLS @@ -486,7 +511,7 @@ ee:ldap-no-tls: - if: $QA_SUITES =~ /Test::Integration::LDAPNoTLS/ - !reference [.rules:test:manual, rules] -ee:mtls: +mtls: extends: .qa variables: QA_SCENARIO: Test::Integration::MTLS @@ -495,7 +520,7 @@ ee:mtls: - if: $QA_SUITES =~ /Test::Integration::Mtls/ - !reference [.rules:test:manual, rules] -ee:mattermost: +mattermost: extends: .qa variables: QA_SCENARIO: Test::Integration::Mattermost @@ -504,7 +529,7 @@ ee:mattermost: - if: $QA_SUITES =~ /Test::Integration::Mattermost/ - !reference [.rules:test:manual, rules] -ee:registry: +registry: extends: .qa variables: QA_SCENARIO: Test::Integration::Registry @@ -513,7 +538,7 @@ ee:registry: - if: $QA_SUITES =~ /Test::Integration::Registry/ - !reference [.rules:test:manual, rules] -ee:registry-with-cdn: +registry-with-cdn: extends: .qa variables: QA_SCENARIO: Test::Integration::RegistryWithCDN @@ -530,7 +555,7 @@ ee:registry-with-cdn: - if: $QA_SUITES =~ /Test::Integration::RegistryWithCDN/ - !reference [.rules:test:manual, rules] -ee:repository-storage: +repository-storage: extends: .qa variables: QA_SCENARIO: Test::Instance::RepositoryStorage @@ -539,7 +564,7 @@ ee:repository-storage: - if: $QA_SUITES =~ /Test::Instance::RepositoryStorage/ - !reference [.rules:test:manual, rules] -ee:service-ping-disabled: +service-ping-disabled: extends: .qa variables: QA_SCENARIO: Test::Integration::ServicePingDisabled @@ -548,7 +573,7 @@ ee:service-ping-disabled: - if: $QA_SUITES =~ /Test::Integration::ServicePingDisabled/ - !reference [.rules:test:manual, rules] -ee:smtp: +smtp: extends: .qa variables: QA_SCENARIO: Test::Integration::SMTP @@ -557,7 +582,7 @@ ee:smtp: - if: $QA_SUITES =~ /Test::Integration::SMTP/ - !reference [.rules:test:manual, rules] -ee:cloud-activation: +cloud-activation: extends: .qa variables: QA_SCENARIO: Test::Instance::Image @@ -567,7 +592,7 @@ ee:cloud-activation: - if: $QA_SUITES =~ /Test::Instance::CloudActivation/ - !reference [.rules:test:manual, rules] -ee:large-setup: +large-setup: extends: .qa variables: QA_SCENARIO: Test::Instance::Image @@ -577,7 +602,7 @@ ee:large-setup: - if: $QA_SUITES =~ /Test::Instance::LargeSetup/ - !reference [.rules:test:manual, rules] -ee:metrics: +metrics: extends: .qa variables: QA_SCENARIO: Test::Integration::Metrics @@ -586,31 +611,31 @@ ee:metrics: - if: $QA_SUITES =~ /Test::Instance::Metrics/ - !reference [.rules:test:manual, rules] -ee:elasticsearch: +elasticsearch: extends: .qa variables: QA_SCENARIO: "Test::Integration::Elasticsearch" before_script: - !reference [.qa, before_script] rules: + - !reference [.rules:test:ee-only, rules] - !reference [.rules:test:qa, rules] - if: $QA_SUITES =~ /Test::Integration::Elasticsearch/ - !reference [.rules:test:manual, rules] -ee:registry-object-storage-tls: - extends: ee:object-storage-aws-selective +registry-object-storage-tls: + extends: object-storage-aws-selective variables: QA_SCENARIO: Test::Integration::RegistryTLS QA_RSPEC_TAGS: "" GITLAB_TLS_CERTIFICATE: $QA_GITLAB_TLS_CERTIFICATE GITLAB_QA_OPTS: --omnibus-config registry_object_storage -ee:importers: +importers: extends: .qa variables: QA_SCENARIO: Test::Integration::Import QA_MOCK_GITHUB: "true" - GITLAB_QA_OPTS: --set-feature-flags bulk_import_projects=enabled rules: - !reference [.rules:test:qa, rules] - if: $QA_SUITES =~ /Test::Integration::Import/ @@ -625,11 +650,26 @@ e2e-test-report: - .rules:report:allure-report stage: report variables: + ALLURE_JOB_NAME: e2e-package-and-test GITLAB_AUTH_TOKEN: $PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE ALLURE_PROJECT_PATH: $CI_PROJECT_PATH ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID - ALLURE_JOB_NAME: e2e-package-and-test - GIT_STRATEGY: none + +# Temporary separate test report for super-sidebar test job +# TODO: remove once super-sidebar is on by default and enabled in tests +# https://gitlab.com/groups/gitlab-org/-/epics/9044 +e2e-test-report-super-sidebar: + extends: + - .generate-allure-report-base + stage: report + needs: + - _super-sidebar-nav + variables: + ALLURE_JOB_NAME: e2e-super-sidebar + ALLURE_RESULTS_GLOB: gitlab-qa-run-*/**/allure-results-super-sidebar + rules: + - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH + - !reference [.rules:test:manual, rules] upload-knapsack-report: extends: diff --git a/.gitlab/ci/package-and-test/rules.gitlab-ci.yml b/.gitlab/ci/package-and-test/rules.gitlab-ci.yml index 50b0758904..4e597b042d 100644 --- a/.gitlab/ci/package-and-test/rules.gitlab-ci.yml +++ b/.gitlab/ci/package-and-test/rules.gitlab-ci.yml @@ -115,12 +115,18 @@ - *qa-run-all-tests - *feature-flags-set-manual +.rules:test:ee-only: + rules: + - if: $FOSS_ONLY == "true" + when: never + .rules:test:update: rules: - # skip upgrade jobs if gitlab version is not provided + # skip upgrade jobs if gitlab version is not in semver compatible format # these jobs need gitlab version because we can't reliably detect it from just the image - - if: $GITLAB_VERSION == null + - if: $GITLAB_SEMVER_VERSION !~ /^\d+\.\d+\.\d+/ when: never + - !reference [.rules:test:ee-only, rules] - !reference [.rules:test:qa, rules] # ------------------------------------------ diff --git a/.gitlab/ci/package-and-test/variables.gitlab-ci.yml b/.gitlab/ci/package-and-test/variables.gitlab-ci.yml index c45807e5a2..b7c4e5519c 100644 --- a/.gitlab/ci/package-and-test/variables.gitlab-ci.yml +++ b/.gitlab/ci/package-and-test/variables.gitlab-ci.yml @@ -6,7 +6,9 @@ variables: SKIP_REPORT_IN_ISSUES: "true" OMNIBUS_GITLAB_CACHE_UPDATE: "false" OMNIBUS_GITLAB_RUBY3_BUILD: "false" + OMNIBUS_GITLAB_RUBY2_BUILD: "false" OMNIBUS_GITLAB_CACHE_EDITION: "GITLAB" + ALLURE_JOB_NAME: $CI_PROJECT_NAME QA_LOG_LEVEL: "info" QA_TESTS: "" QA_FEATURE_FLAGS: "" diff --git a/.gitlab/ci/preflight.gitlab-ci.yml b/.gitlab/ci/preflight.gitlab-ci.yml index 05b05fde53..8c1cb44807 100644 --- a/.gitlab/ci/preflight.gitlab-ci.yml +++ b/.gitlab/ci/preflight.gitlab-ci.yml @@ -1,14 +1,63 @@ -rails-production-environment: +.preflight-job-base: + stage: preflight extends: + - .default-retry + needs: [] + +.qa-preflight-job: + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION} + extends: + - .preflight-job-base + - .qa-cache + variables: + USE_BUNDLE_INSTALL: "false" + SETUP_DB: "false" + before_script: + - !reference [.default-before_script, before_script] + - cd qa && bundle install + +rails-production-server-boot: + extends: + - .preflight-job-base - .default-before_script - .production - .ruby-cache - - .setup:rules:rails-production-environment + - .setup:rules:rails-production-server-boot - .use-pg12 - stage: preflight variables: BUNDLE_WITHOUT: "development:test" BUNDLE_WITH: "production" needs: [] script: - - bundle exec rails runner --environment=production 'puts Rails.env' + - source scripts/utils.sh + - bundle exec rails server -e production & + - sleep 40 # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114124#note_1309506358 + - retry_times_sleep 10 5 "curl http://0.0.0.0:3000" + - kill $(jobs -p) + +no-ee-check: + extends: + - .preflight-job-base + - .setup:rules:no-ee-check + script: + - scripts/no-dir-check ee + +no-jh-check: + extends: + - .preflight-job-base + - .setup:rules:no-jh-check + script: + - scripts/no-dir-check jh + +qa:selectors: + extends: + - .qa-preflight-job + - .qa:rules:ee-and-foss + script: + - bundle exec bin/qa Test::Sanity::Selectors + +qa:selectors-as-if-foss: + extends: + - qa:selectors + - .qa:rules:as-if-foss + - .as-if-foss diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index a72e6fc013..d935fecba0 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -25,13 +25,6 @@ qa:internal-as-if-foss: - .qa:rules:internal-as-if-foss - .as-if-foss -qa:selectors: - extends: - - .qa-job-base - - .qa:rules:ee-and-foss - script: - - bundle exec bin/qa Test::Sanity::Selectors - qa:master-auto-quarantine-dequarantine: extends: - .qa-job-base @@ -50,12 +43,6 @@ qa:nightly-auto-quarantine-dequarantine: - bundle exec confiner -r .confiner/nightly.yml allow_failure: true -qa:selectors-as-if-foss: - extends: - - qa:selectors - - .qa:rules:as-if-foss - - .as-if-foss - qa:update-qa-cache: extends: - .qa-job-base @@ -65,7 +52,7 @@ qa:update-qa-cache: script: - echo "Cache has been updated and ready to be uploaded." -e2e:package-and-test: +e2e:package-and-test-ee: extends: - .production # this makes sure GITLAB_ALLOW_SEPARATE_CI_DATABASE is passed to the child pipeline - .qa:rules:package-and-test @@ -82,6 +69,7 @@ e2e:package-and-test: GITLAB_QA_IMAGE: "${CI_REGISTRY_IMAGE}/gitlab-ee-qa:${CI_COMMIT_SHA}" RUN_WITH_BUNDLE: "true" # instructs pipeline to install and run gitlab-qa gem via bundler QA_PATH: qa # sets the optional path for bundler to run from + QA_RUN_TYPE: e2e-package-and-test inherit: variables: - CHROME_VERSION @@ -89,6 +77,9 @@ e2e:package-and-test: - DOCKER_VERSION - REGISTRY_GROUP - REGISTRY_HOST + - OMNIBUS_GITLAB_CACHE_EDITION + - OMNIBUS_GITLAB_RUBY3_BUILD + - OMNIBUS_GITLAB_RUBY2_BUILD trigger: strategy: depend forward: diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 23f38fddb8..9578011680 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -105,6 +105,18 @@ rspec background_migration pg12 single-db: - .single-db-rspec - .rails:rules:single-db +rspec migration pg12 single-db-ci-connection: + extends: + - rspec migration pg12 + - .single-db-ci-connection-rspec + - .rails:rules:single-db-ci-connection + +rspec background_migration pg12 single-db-ci-connection: + extends: + - rspec background_migration pg12 + - .single-db-ci-connection-rspec + - .rails:rules:single-db-ci-connection + rspec migration pg12 praefect: extends: - rspec migration pg12 @@ -191,16 +203,6 @@ rspec system pg12 praefect: - .praefect-with-db - .rails:rules:praefect-with-db -# Dedicated job to test DB library code against PG11. -# Note that these are already tested against PG12 in the `rspec unit pg12` / `rspec-ee unit pg12` jobs. -rspec db-library-code pg11: - extends: - - .rspec-base-pg11 - - .rails:rules:ee-and-foss-db-library-code - script: - - !reference [.base-script, script] - - rspec_db_library_code - rspec fast_spec_helper: extends: - .rspec-base-pg12 @@ -438,6 +440,18 @@ rspec background_migration pg12-as-if-foss single-db: - .single-db-rspec - .rails:rules:single-db +rspec migration pg12-as-if-foss single-db-ci-connection: + extends: + - rspec migration pg12-as-if-foss + - .single-db-ci-connection-rspec + - .rails:rules:single-db-ci-connection + +rspec background_migration pg12-as-if-foss single-db-ci-connection: + extends: + - rspec background_migration pg12-as-if-foss + - .single-db-ci-connection-rspec + - .rails:rules:single-db-ci-connection + rspec unit pg12-as-if-foss: extends: - .rspec-base-pg12-as-if-foss @@ -530,6 +544,18 @@ rspec-ee background_migration pg12 single-db: - .single-db-rspec - .rails:rules:single-db +rspec-ee migration pg12 single-db-ci-connection: + extends: + - rspec-ee migration pg12 + - .single-db-ci-connection-rspec + - .rails:rules:single-db-ci-connection + +rspec-ee background_migration pg12 single-db-ci-connection: + extends: + - rspec-ee background_migration pg12 + - .single-db-ci-connection-rspec + - .rails:rules:single-db-ci-connection + rspec-ee migration pg12 praefect: extends: - rspec migration pg12 @@ -616,39 +642,6 @@ rspec-ee system pg12 single-db: ########################################## # EE/FOSS: default branch nightly scheduled jobs # -# PG11 -rspec migration pg11: - extends: - - .rspec-base-pg11 - - .rspec-base-migration - - .rails:rules:rspec-on-pg11 - - .rspec-migration-parallel - -rspec background_migration pg11: - extends: - - .rspec-base-pg11 - - .rspec-base-migration - - .rails:rules:rspec-on-pg11 - - .rspec-background-migration-parallel - -rspec unit pg11: - extends: - - .rspec-base-pg11 - - .rails:rules:rspec-on-pg11 - - .rspec-unit-parallel - -rspec integration pg11: - extends: - - .rspec-base-pg11 - - .rails:rules:rspec-on-pg11 - - .rspec-integration-parallel - -rspec system pg11: - extends: - - .rspec-base-pg11 - - .rails:rules:rspec-on-pg11 - - .rspec-system-parallel - # PG13 rspec migration pg13: extends: @@ -687,75 +680,36 @@ rspec system pg13: ##################################### # EE: default branch nightly scheduled jobs # -# PG11 -rspec-ee migration pg11: - extends: - - .rspec-ee-base-pg11 - - .rspec-base-migration - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - - .rspec-ee-migration-parallel - -rspec-ee background_migration pg11: - extends: - - .rspec-ee-base-pg11 - - .rspec-base-migration - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - - .rspec-ee-background-migration-parallel - -rspec-ee unit pg11: - extends: - - .rspec-ee-base-pg11 - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - - .rspec-ee-unit-parallel - -rspec-ee integration pg11: - extends: - - .rspec-ee-base-pg11 - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - - .rspec-ee-integration-parallel - -rspec-ee system pg11: - extends: - - .rspec-ee-base-pg11 - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - - .rspec-ee-system-parallel - # PG12 rspec-ee unit pg12 opensearch1: extends: - .rspec-ee-base-pg12-opensearch1 - .rspec-ee-unit-parallel - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee unit pg12 opensearch2: extends: - .rspec-ee-base-pg12-opensearch2 - .rspec-ee-unit-parallel - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee integration pg12 opensearch1: extends: - .rspec-ee-base-pg12-opensearch1 - .rspec-ee-integration-parallel - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee integration pg12 opensearch2: extends: - .rspec-ee-base-pg12-opensearch2 - .rspec-ee-integration-parallel - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee system pg12 opensearch1: extends: - .rspec-ee-base-pg12-opensearch1 - .rspec-ee-system-parallel - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only rspec-ee system pg12 opensearch2: extends: - .rspec-ee-base-pg12-opensearch2 - .rspec-ee-system-parallel - - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only # PG13 rspec-ee migration pg13: @@ -821,13 +775,14 @@ rspec-foss-impact:pipeline-generate: extends: - .rails:rules:rspec-foss-impact stage: prepare - needs: ["detect-tests"] + needs: ["detect-tests", "retrieve-tests-metadata"] script: - - scripts/generate-rspec-foss-impact-pipeline "${RSPEC_MATCHING_TESTS_FOSS_PATH}" "${RSPEC_FOSS_IMPACT_PIPELINE_YML}" + - scripts/generate_rspec_pipeline.rb -f "${RSPEC_MATCHING_TESTS_FOSS_PATH}" -t "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}" -k "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" + - cat "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}.yml" artifacts: expire_in: 1 day paths: - - $RSPEC_FOSS_IMPACT_PIPELINE_YML + - "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}.yml" rspec-foss-impact:trigger: extends: @@ -850,7 +805,7 @@ rspec-foss-impact:trigger: yaml_variables: true pipeline_variables: true include: - - artifact: $RSPEC_FOSS_IMPACT_PIPELINE_YML + - artifact: "${RSPEC_FOSS_IMPACT_PIPELINE_TEMPLATE_YML}.yml" job: rspec-foss-impact:pipeline-generate fail-pipeline-early: diff --git a/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb b/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb index eb54fa2587..02b7d61a4f 100644 --- a/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb +++ b/.gitlab/ci/rails/rspec-foss-impact.gitlab-ci.yml.erb @@ -21,7 +21,7 @@ dont-interrupt-me: script: - echo "This jobs makes sure this pipeline won't be interrupted! See https://docs.gitlab.com/ee/ci/yaml/#interruptible." -rspec foss-impact: +.base-rspec-foss-impact: extends: .rspec-base-pg12-as-if-foss needs: - pipeline: $PARENT_PIPELINE_ID @@ -37,9 +37,6 @@ rspec foss-impact: variables: RSPEC_TESTS_FILTER_FILE: "${RSPEC_MATCHING_TESTS_FOSS_PATH}" RSPEC_TESTS_MAPPING_ENABLED: "true" -<% if Integer(parallel_value) > 1 %> - parallel: <%= parallel_value %> -<% end %> script: - !reference [.base-script, script] - rspec_paralellized_job "--tag ~quarantine --tag ~level:migration --tag ~zoekt" @@ -48,3 +45,46 @@ rspec foss-impact: paths: - "${RSPEC_MATCHING_TESTS_FOSS_PATH}" - tmp/capybara/ + +<% if rspec_files_per_test_level[:migration][:files].size > 0 %> +rspec migration foss-impact: + extends: .base-rspec-foss-impact +<% if rspec_files_per_test_level[:migration][:parallelization] > 1 %> + parallel: <%= rspec_files_per_test_level[:migration][:parallelization] %> +<% end %> + script: + - !reference [.base-script, script] + - rspec_paralellized_job "--tag ~quarantine --tag ~zoekt" +<% end %> + +<% if rspec_files_per_test_level[:background_migration][:files].size > 0 %> +rspec background_migration foss-impact: + extends: .base-rspec-foss-impact +<% if rspec_files_per_test_level[:background_migration][:parallelization] > 1 %> + parallel: <%= rspec_files_per_test_level[:background_migration][:parallelization] %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level[:unit][:files].size > 0 %> +rspec unit foss-impact: + extends: .base-rspec-foss-impact +<% if rspec_files_per_test_level[:unit][:parallelization] > 1 %> + parallel: <%= rspec_files_per_test_level[:unit][:parallelization] %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level[:integration][:files].size > 0 %> +rspec integration foss-impact: + extends: .base-rspec-foss-impact +<% if rspec_files_per_test_level[:integration][:parallelization] > 1 %> + parallel: <%= rspec_files_per_test_level[:integration][:parallelization] %> +<% end %> +<% end %> + +<% if rspec_files_per_test_level[:system][:files].size > 0 %> +rspec system foss-impact: + extends: .base-rspec-foss-impact +<% if rspec_files_per_test_level[:system][:parallelization] > 1 %> + parallel: <%= rspec_files_per_test_level[:system][:parallelization] %> +<% end %> +<% end %> diff --git a/.gitlab/ci/rails/shared.gitlab-ci.yml b/.gitlab/ci/rails/shared.gitlab-ci.yml index 4943f7c2e2..0fa65b0be9 100644 --- a/.gitlab/ci/rails/shared.gitlab-ci.yml +++ b/.gitlab/ci/rails/shared.gitlab-ci.yml @@ -36,9 +36,17 @@ include: variables: DECOMPOSED_DB: "false" +.single-db-ci-connection: + extends: .single-db + variables: + CI_CONNECTION_DB: "true" + .single-db-rspec: extends: .single-db +.single-db-ci-connection-rspec: + extends: .single-db-ci-connection + .praefect-with-db: variables: GITALY_PRAEFECT_WITH_DB: '1' @@ -92,11 +100,6 @@ include: - !reference [.base-script, script] - rspec_paralellized_job "--tag ~quarantine --tag ~zoekt" -.rspec-base-pg11: - extends: - - .rspec-base - - .use-pg11 - .rspec-base-pg12: extends: - .rspec-base @@ -119,11 +122,6 @@ include: - .rspec-base - .use-pg13 -.rspec-ee-base-pg11: - extends: - - .rspec-base - - .use-pg11-es7-ee - .rspec-ee-base-pg12: extends: - .rspec-base diff --git a/.gitlab/ci/release-environments/main.gitlab-ci.yml b/.gitlab/ci/release-environments/main.gitlab-ci.yml index e2fed0a6db..aa6afee57a 100644 --- a/.gitlab/ci/release-environments/main.gitlab-ci.yml +++ b/.gitlab/ci/release-environments/main.gitlab-ci.yml @@ -4,6 +4,7 @@ default: stages: - prepare + - deploy include: - local: .gitlab/ci/global.gitlab-ci.yml @@ -56,7 +57,38 @@ release-environments-build-cng: GITLAB_SHELL_VERSION: "${GITLAB_SHELL_VERSION}" GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}" RUBY_VERSION: "${FULL_RUBY_VERSION}" + IMAGE_TAG_EXT: "-${CI_COMMIT_SHORT_SHA}" trigger: project: gitlab-org/build/CNG-mirror branch: $TRIGGER_BRANCH strategy: depend + +release-environments-deploy-env: + allow_failure: true + stage: deploy + needs: ["release-environments-build-cng"] + variables: + DEPLOY_ENV: deploy.env + script: + - ./scripts/construct-release-environments-versions.rb > $DEPLOY_ENV + artifacts: + reports: + dotenv: $DEPLOY_ENV + paths: + - $DEPLOY_ENV + expire_in: 7 days + when: always + +release-environments-deploy: + allow_failure: true + stage: deploy + needs: ["release-environments-deploy-env"] + inherit: + variables: false + variables: + VERSIONS: "${VERSIONS}" + ENVIRONMENT: "${ENVIRONMENT}" + trigger: + project: gitlab-com/gl-infra/release-environments + branch: main + strategy: depend diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 3242ca29d7..c77ee0276c 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -3,7 +3,6 @@ include: - template: Jobs/SAST.gitlab-ci.yml - template: Jobs/Secret-Detection.gitlab-ci.yml - template: Jobs/Dependency-Scanning.gitlab-ci.yml - - template: Jobs/License-Scanning.gitlab-ci.yml code_quality: extends: @@ -126,11 +125,3 @@ package_hunter-bundler: - .reports:rules:package_hunter-bundler variables: PACKAGE_MANAGER: bundler - -license_scanning: - extends: .default-retry - stage: lint - needs: [] - artifacts: - expire_in: 1 week # GitLab-specific - rules: !reference [".reports:rules:license_scanning", rules] diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml index 369330f818..6bd7542bcd 100644 --- a/.gitlab/ci/review-apps/main.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml @@ -89,13 +89,13 @@ review-build-cng: strategy: depend .review-workflow-base: - extends: - - .default-retry image: ${REVIEW_APPS_IMAGE} + retry: + max: 2 # This is confusing but this means "3 runs at max" variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "afcef7854ac72c5ff958035ef210ba6c68ec800b" # 6.8.0: https://gitlab.com/gitlab-org/charts/gitlab/-/commit/afcef7854ac72c5ff958035ef210ba6c68ec800b + GITLAB_HELM_CHART_REF: "febc4ad69acb7bba0eeb4a62daa577d0b7c3ee71" # 6.9.1: https://gitlab.com/gitlab-org/charts/gitlab/-/commit/febc4ad69acb7bba0eeb4a62daa577d0b7c3ee71 environment: name: review/${CI_COMMIT_REF_SLUG}${SCHEDULE_TYPE} # No separator for SCHEDULE_TYPE so it's compatible as before and looks nice without it url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} diff --git a/.gitlab/ci/review-apps/qa.gitlab-ci.yml b/.gitlab/ci/review-apps/qa.gitlab-ci.yml index edca2cae1c..12a7ddebc4 100644 --- a/.gitlab/ci/review-apps/qa.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/qa.gitlab-ci.yml @@ -1,6 +1,6 @@ include: - project: gitlab-org/quality/pipeline-common - ref: 2.0.0 + ref: 2.2.0 file: - /ci/base.gitlab-ci.yml - /ci/allure-report.yml diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 2762b4e513..f4ca7c9b64 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -85,9 +85,6 @@ .if-merge-request-labels-run-review-app: &if-merge-request-labels-run-review-app if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-review-app/' -.if-merge-request-labels-run-on-pg11: &if-merge-request-labels-run-on-pg11 - if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-on-pg11/' - .if-merge-request-labels-skip-undercoverage: &if-merge-request-labels-skip-undercoverage if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:skip-undercoverage/' @@ -127,6 +124,9 @@ .if-foss-schedule: &if-foss-schedule if: '$CI_PROJECT_PATH == "gitlab-org/gitlab-foss" && $CI_PIPELINE_SOURCE == "schedule"' +.if-foss-default-branch: &if-foss-default-branch + if: '$CI_PROJECT_PATH == "gitlab-org/gitlab-foss" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' + .if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"' @@ -310,6 +310,9 @@ .models-patterns: &models-patterns - "{,ee/,jh/}{app/models}/**/*" +.decomposed-db-models-patterns: &decomposed-db-models-patterns + - "{,ee/,jh/}app/models/{ci,geo}/**/*" + .lib-gitlab-patterns: &lib-gitlab-patterns - "{,ee/,jh/}lib/{,ee/,jh/}gitlab/**/*" @@ -349,11 +352,13 @@ - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/background_migration/**/*" - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/database{,_spec}.rb" - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/database/**/*" + - "{,ee/,jh/}spec/support/db_cleaner.rb" - "{,ee/,jh/}spec/support/helpers/database/**/*" - "{,ee/,jh/}spec/support/helpers/migrations_helpers/**/*" - "lib/api/admin/batched_background_migrations.rb" - "lib/gitlab/markdown_cache/active_record/**/*" - "spec/requests/api/admin/batched_background_migrations_spec.rb" + - "spec/support/database_cleaner.rb" - "config/prometheus/common_metrics.yml" # Used by Gitlab::DatabaseImporters::CommonMetrics::Importer - "{,ee/,jh/}app/models/project_statistics.rb" # Used to calculate sizes in migration specs # Gitaly has interactions with background migrations: https://gitlab.com/gitlab-org/gitlab/-/issues/336538 @@ -618,6 +623,7 @@ .rails:rules:run-search-tests: rules: + - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-ee-only", rules] - <<: *if-merge-request-labels-group-global-search changes: *search-backend-patterns - <<: *if-merge-request-labels-group-global-search @@ -968,6 +974,7 @@ .frontend:rules:default-frontend-jobs: rules: - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request-labels-frontend-and-feature-flag - <<: *if-default-refs changes: *code-backstage-patterns @@ -992,6 +999,22 @@ - <<: *if-merge-request changes: *frontend-patterns-for-as-if-foss +.frontend:rules:upload-frontend-fixtures: + rules: + # The new strategy to upload fixtures as generic packages is experimental and can be disabled by removing the `REUSE_FRONTEND_FIXTURES_ENABLED` variable + - if: '$REUSE_FRONTEND_FIXTURES_ENABLED != "true"' + when: never + - <<: *if-dot-com-gitlab-org-default-branch + changes: *code-backstage-patterns + - <<: *if-foss-default-branch + changes: *code-backstage-patterns + - <<: *if-dot-com-gitlab-org-merge-request + changes: + - ".gitlab/ci/frontend.gitlab-ci.yml" + - "scripts/gitlab_component_helpers.sh" + when: manual + allow_failure: true + .frontend:rules:jest: rules: - <<: *if-fork-merge-request @@ -1108,6 +1131,22 @@ when: on_failure allow_failure: true +.notify:rules:create-issues-for-failing-tests: + rules: + # Don't report child pipeline failures + - if: '$CI_PIPELINE_SOURCE == "parent_pipeline"' + when: never + - if: '$CREATE_ISSUES_FOR_FAILING_TESTS == "true"' + when: on_failure + allow_failure: true + +.notify:rules:notify-package-and-test-failure: + rules: + - <<: *if-not-canonical-namespace + when: never + - <<: *if-merge-request-targeting-stable-branch + when: always + ############### # Pages rules # ############### @@ -1233,6 +1272,8 @@ - <<: *if-merge-request-labels-run-single-db - <<: *if-merge-request changes: *db-patterns + - <<: *if-merge-request + changes: *decomposed-db-models-patterns - <<: *if-default-branch-schedule-nightly .rails:rules:db:check-migrations-single-db: @@ -1240,6 +1281,25 @@ - <<: *if-merge-request-labels-run-single-db - <<: *if-merge-request changes: *db-patterns + - <<: *if-merge-request + changes: *decomposed-db-models-patterns + +.rails:rules:single-db-ci-connection: + rules: + - <<: *if-merge-request-labels-run-single-db + - <<: *if-merge-request + changes: *db-patterns + - <<: *if-merge-request + changes: *decomposed-db-models-patterns + - <<: *if-default-branch-schedule-nightly + +.rails:rules:db:check-migrations-single-db-ci-connection: + rules: + - <<: *if-merge-request-labels-run-single-db + - <<: *if-merge-request + changes: *db-patterns + - <<: *if-merge-request + changes: *decomposed-db-models-patterns .rails:rules:db-backup: rules: @@ -1326,6 +1386,8 @@ - !reference [".rails:rules:ee-and-foss-default-rules", rules] - <<: *if-default-refs changes: *backend-patterns + - <<: *if-default-refs + changes: *backstage-patterns .rails:rules:ee-and-foss-unit:predictive: rules: @@ -1335,6 +1397,8 @@ - !reference [".rails:rules:unit-integration:predictive-default-rules", rules] - <<: *if-merge-request changes: *backend-patterns + - <<: *if-merge-request + changes: *backstage-patterns .rails:rules:ee-and-foss-integration: rules: @@ -1605,7 +1669,6 @@ - <<: *if-default-refs changes: *db-library-patterns - <<: *if-merge-request-labels-run-all-rspec - - <<: *if-merge-request-labels-run-on-pg11 .rails:rules:ee-mr-and-default-branch-only: rules: @@ -1695,11 +1758,6 @@ - <<: *if-merge-request changes: *backend-patterns -.rails:rules:rspec-on-pg11: - rules: - - <<: *if-merge-request-labels-run-on-pg11 - - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-default-rules", rules] - .rails:rules:default-branch-schedule-nightly--code-backstage-default-rules: rules: - <<: *if-default-branch-schedule-nightly @@ -1892,6 +1950,12 @@ changes: ["vendor/gems/bundler-checksum/**/*"] - <<: *if-merge-request-labels-run-all-rspec +.vendor:rules:cloud_profiler_agent: + rules: + - <<: *if-merge-request + changes: ["vendor/gems/cloud_profiler_agent/**/*"] + - <<: *if-merge-request-labels-run-all-rspec + ################## # Releases rules # ################## @@ -2014,13 +2078,6 @@ - <<: *if-merge-request changes: ["Gemfile.lock"] -.reports:rules:license_scanning: - rules: - - if: '$LICENSE_MANAGEMENT_DISABLED || $GITLAB_FEATURES !~ /\blicense_scanning\b/' - when: never - - <<: *if-default-refs - changes: *dependency-patterns - ################ # Review rules # ################ @@ -2185,7 +2242,7 @@ - <<: *if-default-refs changes: *code-backstage-patterns -.setup:rules:rails-production-environment: +.setup:rules:rails-production-server-boot: rules: - <<: *if-default-refs changes: *code-patterns @@ -2242,6 +2299,7 @@ - <<: *if-default-refs changes: *workhorse-patterns - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request-labels-frontend-and-feature-flag .test-metadata:rules:update-tests-metadata: rules: diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index 298d5c4ae0..76c7af2753 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -51,22 +51,6 @@ gitlab_git_test: script: - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes -no-ee-check: - extends: - - .predictive-job - - .setup:rules:no-ee-check - stage: test - script: - - scripts/no-dir-check ee - -no-jh-check: - extends: - - .predictive-job - - .setup:rules:no-jh-check - stage: test - script: - - scripts/no-dir-check jh - verify-ruby-3.0: extends: - .absolutely-predictive-job diff --git a/.gitlab/ci/vendored-gems.gitlab-ci.yml b/.gitlab/ci/vendored-gems.gitlab-ci.yml index 1086d9074d..e1b4960b26 100644 --- a/.gitlab/ci/vendored-gems.gitlab-ci.yml +++ b/.gitlab/ci/vendored-gems.gitlab-ci.yml @@ -93,3 +93,11 @@ vendor gitlab_active_record: trigger: include: vendor/gems/gitlab_active_record/.gitlab-ci.yml strategy: depend + +vendor cloud_profiler_agent: + extends: + - .vendor:rules:cloud_profiler_agent + needs: [] + trigger: + include: vendor/gems/cloud_profiler_agent/.gitlab-ci.yml + strategy: depend diff --git a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md index eee989ed21..c33e5f8eb6 100644 --- a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md +++ b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md @@ -54,7 +54,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org ```ruby # frozen_string_literal: true - class CreateCoolWidgetRegistry < Gitlab::Database::Migration[2.0] + class CreateCoolWidgetRegistry < Gitlab::Database::Migration[2.1] def change create_table :cool_widget_registry, id: :bigserial, force: :cascade do |t| t.bigint :cool_widget_id, null: false @@ -80,11 +80,19 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org t.index :retry_at t.index :state # To optimize performance of CoolWidgetRegistry.verification_failed_batch - t.index :verification_retry_at, name: :cool_widget_registry_failed_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 3))" + t.index :verification_retry_at, + name: :cool_widget_registry_failed_verification, + order: "NULLS FIRST", + where: "((state = 2) AND (verification_state = 3))" # To optimize performance of CoolWidgetRegistry.needs_verification_count - t.index :verification_state, name: :cool_widget_registry_needs_verification, where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))" + t.index :verification_state, + name: :cool_widget_registry_needs_verification, + where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))" # To optimize performance of CoolWidgetRegistry.verification_pending_batch - t.index :verified_at, name: :cool_widget_registry_pending_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 0))" + t.index :verified_at, + name: :cool_widget_registry_pending_verification, + order: "NULLS FIRST", + where: "((state = 2) AND (verification_state = 0))" end end end @@ -92,7 +100,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org - [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md). -- [ ] Add the new table to the [database dictionary](database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs): +- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs): ```yaml table_name: cool_widget_registry @@ -129,7 +137,7 @@ The Geo primary site needs to checksum every replicable so secondaries can verif ```ruby # frozen_string_literal: true - class CreateCoolWidgetStates < Gitlab::Database::Migration[2.0] + class CreateCoolWidgetStates < Gitlab::Database::Migration[2.1] VERIFICATION_STATE_INDEX_NAME = "index_cool_widget_states_on_verification_state" PENDING_VERIFICATION_INDEX_NAME = "index_cool_widget_states_pending_verification" FAILED_VERIFICATION_INDEX_NAME = "index_cool_widget_states_failed_verification" @@ -149,9 +157,17 @@ The Geo primary site needs to checksum every replicable so secondaries can verif t.text :verification_failure, limit: 255 t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME - t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME - t.index :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME - t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME + t.index :verified_at, + where: "(verification_state = 0)", + order: { verified_at: 'ASC NULLS FIRST' }, + name: PENDING_VERIFICATION_INDEX_NAME + t.index :verification_retry_at, + where: "(verification_state = 3)", + order: { verification_retry_at: 'ASC NULLS FIRST' }, + name: FAILED_VERIFICATION_INDEX_NAME + t.index :verification_state, + where: "(verification_state = 0 OR verification_state = 3)", + name: NEEDS_VERIFICATION_INDEX_NAME end end @@ -163,17 +179,20 @@ The Geo primary site needs to checksum every replicable so secondaries can verif - [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md). -- [ ] Add the new table to the [database dictionary](database_dictionary.md) defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs): +- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method) + +- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs): ```yaml + --- table_name: cool_widget_states - description: Description example - introduced_by_url: Merge request link - milestone: Milestone example + description: Separate table for cool widget verification states + introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX + milestone: 'XX.Y' feature_categories: - - Feature category example + - geo_replication classes: - - Class example + - Geo::CoolWidgetState gitlab_schema: gitlab_main ``` @@ -185,20 +204,6 @@ The Geo primary site needs to checksum every replicable so secondaries can verif - [ ] Be sure to commit the relevant changes in `db/structure.sql` and the file under `db/schema_migrations` -- [ ] Add an entry for the state table in `db/docs/cool_widget_states.yml` - - ```yaml - --- - table_name: cool_widget_states - classes: - - Geo::CoolWidgetState - feature_categories: - - geo_replication - description: Separate table for cool widget verification states - introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX - milestone: 'XX.Y' - ``` - That's all of the required database changes. ### Implement Geo support of Cool Widgets behind a feature flag @@ -230,23 +235,30 @@ That's all of the required database changes. with_replicator Geo::CoolWidgetReplicator - mount_uploader :file, CoolWidgetUploader - has_one :cool_widget_state, autosave: false, inverse_of: :cool_widget, class_name: 'Geo::CoolWidgetState' after_save :save_verification_details - scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) } - scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) } - scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) } - - scope :available_verifiables, -> { joins(:cool_widget_state) } - # Override the `all` default if not all records can be replicated. For an # example of an existing Model that needs to do this, see # `EE::MergeRequestDiff`. # scope :available_replicables, -> { all } + scope :available_verifiables, -> { joins(:cool_widget_state) } + + scope :checksummed, -> { + joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil }) + } + + scope :not_checksummed, -> { + joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil }) + } + + scope :with_verification_state, ->(state) { + joins(:cool_widget_state) + .where(cool_widget_states: { verification_state: verification_state_value(state) }) + } + def verification_state_object cool_widget_state end @@ -257,7 +269,8 @@ That's all of the required database changes. ... # @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope - # @return [ActiveRecord::Relation] everything that should be synced to this node, restricted by primary key + # @return [ActiveRecord::Relation] everything that should be synced + # to this node, restricted by primary key def replicables_for_current_secondary(primary_key_in) # This issue template does not help you write this method. # @@ -265,7 +278,8 @@ That's all of the required database changes. # we want to know which records to replicate. This is not easy to automate # because for example: # - # * The "selective sync" feature allows admins to choose which namespaces # to replicate, per secondary site. Most Models are scoped to a + # * The "selective sync" feature allows admins to choose which namespaces + # to replicate, per secondary site. Most Models are scoped to a # namespace, but the nature of the relationship to a namespace varies # between Models. # * The "selective sync" feature allows admins to choose which shards to @@ -304,8 +318,8 @@ That's all of the required database changes. ```ruby include_examples 'a replicable model with a separate table for verification state' do - let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is included in `available_verifiables` - let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `available_verifiables` + let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is in `Geo::ReplicableModel.verifiables` scope + let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `Geo::ReplicableModel.verifiables` scope end ``` @@ -323,10 +337,6 @@ That's all of the required database changes. ::CoolWidget end - def repository - model_record.repository - end - def self.git_access_class ::Gitlab::GitAccessCoolWidget end @@ -353,6 +363,10 @@ That's all of the required database changes. # (see `RepositoryReplicatorStrategy#before_housekeeping`) false end + + def repository + model_record.repository + end end end ``` @@ -402,7 +416,7 @@ That's all of the required database changes. require 'spec_helper' - RSpec.describe Geo::CoolWidgetReplicator do + RSpec.describe Geo::CoolWidgetReplicator, feature_category: :geo_replication do let(:model_record) { build(:cool_widget) } include_examples 'a repository replicator' @@ -476,7 +490,7 @@ That's all of the required database changes. require 'spec_helper' - RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model do + RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model, feature_category: :geo_replication do let_it_be(:registry) { create(:geo_cool_widget_registry) } specify 'factory is valid' do @@ -491,17 +505,21 @@ That's all of the required database changes. - [ ] Add the following to `ee/spec/factories/cool_widgets.rb`: ```ruby - FactoryBot.modify do - trait :verification_succeeded do - with_file - verification_checksum { 'abc' } - verification_state { CoolWidget.verification_state_value(:verification_succeeded) } - end + # frozen_string_literal: true - trait :verification_failed do - with_file - verification_failure { 'Could not calculate the checksum' } - verification_state { CoolWidget.verification_state_value(:verification_failed) } + FactoryBot.modify do + factory :cool_widget do + trait :verification_succeeded do + with_file + verification_checksum { 'abc' } + verification_state { CoolWidget.verification_state_value(:verification_succeeded) } + end + + trait :verification_failed do + with_file + verification_failure { 'Could not calculate the checksum' } + verification_state { CoolWidget.verification_state_value(:verification_failed) } + end end end ``` @@ -549,7 +567,7 @@ That's all of the required database changes. end ``` -- [ ] Add `[:cool_widget, :remote_store]` and `[:geo_cool_widget_state, any]` to `skipped` in `spec/models/factories_spec.rb` +- [ ] Add `[:geo_cool_widget_state, any]` to `skipped` in `spec/models/factories_spec.rb` #### Step 2. Implement metrics gathering @@ -573,18 +591,18 @@ Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus` - [ ] Add the following fields to the `Sidekiq metrics` table in `doc/administration/monitoring/prometheus/gitlab_metrics.md`: ```markdown | `geo_cool_widgets` | Gauge | XX.Y | Number of Cool Widgets on primary | `url` | - | `geo_cool_widgets_checksum_total` | Gauge | XX.Y | Number of Cool Widgets checksummed successfully on primary | `url` | - | `geo_cool_widgets_checksummed` | Gauge | XX.Y | Number of Cool Widgets failed to calculate the checksum on primary | `url` | - | `geo_cool_widgets_checksum_failed` | Gauge | XX.Y | Number of Cool Widgets tried to checksum on primary | `url` | + | `geo_cool_widgets_checksum_total` | Gauge | XX.Y | Number of Cool Widgets to checksum on primary | `url` | + | `geo_cool_widgets_checksummed` | Gauge | XX.Y | Number of Cool Widgets that successfully calculated the checksum on primary | `url` | + | `geo_cool_widgets_checksum_failed` | Gauge | XX.Y | Number of Cool Widgets that failed to calculate the checksum on primary | `url` | | `geo_cool_widgets_synced` | Gauge | XX.Y | Number of syncable Cool Widgets synced on secondary | `url` | | `geo_cool_widgets_failed` | Gauge | XX.Y | Number of syncable Cool Widgets failed to sync on secondary | `url` | | `geo_cool_widgets_registry` | Gauge | XX.Y | Number of Cool Widgets in the registry | `url` | - | `geo_cool_widgets_verification_total` | Gauge | XX.Y | Number of Cool Widgets verified on secondary | `url` | - | `geo_cool_widgets_verified` | Gauge | XX.Y | Number of Cool Widgets' verifications failed on secondary | `url` | - | `geo_cool_widgets_verification_failed` | Gauge | XX.Y | Number of Cool Widgets' verifications tried on secondary | `url` | + | `geo_cool_widgets_verification_total` | Gauge | XX.Y | Number of Cool Widgets to attempt to verify on secondary | `url` | + | `geo_cool_widgets_verified` | Gauge | XX.Y | Number of Cool Widgets successfully verified on secondary | `url` | + | `geo_cool_widgets_verification_failed` | Gauge | XX.Y | Number of Cool Widgets that failed verification on secondary | `url` | ``` -Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Nodes` view, and Prometheus. +Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Sites` view, and Prometheus. #### Step 3. Implement the GraphQL API @@ -625,7 +643,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir require 'spec_helper' - RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver do + RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver, feature_category: :geo_replication do it_behaves_like 'a Geo registries resolver', :geo_cool_widget_registry end ``` @@ -649,7 +667,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir require 'spec_helper' - RSpec.describe Geo::CoolWidgetRegistryFinder do + RSpec.describe Geo::CoolWidgetRegistryFinder, feature_category: :geo_replication do it_behaves_like 'a framework registry finder', :geo_cool_widget_registry end ``` @@ -683,7 +701,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir require 'spec_helper' - RSpec.describe GitlabSchema.types['CoolWidgetRegistry'] do + RSpec.describe GitlabSchema.types['CoolWidgetRegistry'], feature_category: :geo_replication do it_behaves_like 'a Geo registry type' it 'has the expected fields (other than those included in RegistryType)' do diff --git a/.gitlab/issue_templates/Geo Replicate a new blob type.md b/.gitlab/issue_templates/Geo Replicate a new blob type.md index 88a7fad497..0c5dbaebac 100644 --- a/.gitlab/issue_templates/Geo Replicate a new blob type.md +++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md @@ -56,7 +56,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org ```ruby # frozen_string_literal: true - class CreateCoolWidgetRegistry < Gitlab::Database::Migration[2.0] + class CreateCoolWidgetRegistry < Gitlab::Database::Migration[2.1] def change create_table :cool_widget_registry, id: :bigserial, force: :cascade do |t| t.bigint :cool_widget_id, null: false @@ -80,11 +80,19 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org t.index :retry_at t.index :state # To optimize performance of CoolWidgetRegistry.verification_failed_batch - t.index :verification_retry_at, name: :cool_widget_registry_failed_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 3))" + t.index :verification_retry_at, + name: :cool_widget_registry_failed_verification, + order: "NULLS FIRST", + where: "((state = 2) AND (verification_state = 3))" # To optimize performance of CoolWidgetRegistry.needs_verification_count - t.index :verification_state, name: :cool_widget_registry_needs_verification, where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))" + t.index :verification_state, + name: :cool_widget_registry_needs_verification, + where: "((state = 2) AND (verification_state = ANY (ARRAY[0, 3])))" # To optimize performance of CoolWidgetRegistry.verification_pending_batch - t.index :verified_at, name: :cool_widget_registry_pending_verification, order: "NULLS FIRST", where: "((state = 2) AND (verification_state = 0))" + t.index :verified_at, + name: :cool_widget_registry_pending_verification, + order: "NULLS FIRST", + where: "((state = 2) AND (verification_state = 0))" end end end @@ -92,7 +100,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org - [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md). -- [ ] Add the new table to the [database dictionary](database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs): +- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs): ```yaml table_name: cool_widget_registry @@ -131,7 +139,7 @@ The Geo primary site needs to checksum every replicable so secondaries can verif ```ruby # frozen_string_literal: true - class CreateCoolWidgetStates < Gitlab::Database::Migration[2.0] + class CreateCoolWidgetStates < Gitlab::Database::Migration[2.1] VERIFICATION_STATE_INDEX_NAME = "index_cool_widget_states_on_verification_state" PENDING_VERIFICATION_INDEX_NAME = "index_cool_widget_states_pending_verification" FAILED_VERIFICATION_INDEX_NAME = "index_cool_widget_states_failed_verification" @@ -144,16 +152,28 @@ The Geo primary site needs to checksum every replicable so secondaries can verif t.datetime_with_timezone :verification_started_at t.datetime_with_timezone :verification_retry_at t.datetime_with_timezone :verified_at - t.references :cool_widget, primary_key: true, default: nil, index: false, foreign_key: { on_delete: :cascade } + t.references :cool_widget, + primary_key: true, + default: nil, + index: false, + foreign_key: { on_delete: :cascade } t.integer :verification_state, default: 0, limit: 2, null: false t.integer :verification_retry_count, default: 0, limit: 2, null: false t.binary :verification_checksum, using: 'verification_checksum::bytea' t.text :verification_failure, limit: 255 t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME - t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME - t.index :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME - t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME + t.index :verified_at, + where: "(verification_state = 0)", + order: { verified_at: 'ASC NULLS FIRST' }, + name: PENDING_VERIFICATION_INDEX_NAME + t.index :verification_retry_at, + where: "(verification_state = 3)", + order: { verification_retry_at: 'ASC NULLS FIRST' }, + name: FAILED_VERIFICATION_INDEX_NAME + t.index :verification_state, + where: "(verification_state = 0 OR verification_state = 3)", + name: NEEDS_VERIFICATION_INDEX_NAME end end @@ -165,17 +185,20 @@ The Geo primary site needs to checksum every replicable so secondaries can verif - [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md). -- [ ] Add the new table to the database dictionary defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs): +- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method) + +- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs): ```yaml + --- table_name: cool_widget_states - description: Description example - introduced_by_url: Merge request link - milestone: Milestone example + description: Separate table for cool widget verification states + introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX + milestone: 'XX.Y' feature_categories: - - Feature category example + - geo_replication classes: - - Class example + - Geo::CoolWidgetState gitlab_schema: gitlab_main ``` @@ -185,24 +208,8 @@ The Geo primary site needs to checksum every replicable so secondaries can verif bin/rake db:migrate ``` -- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method) - - [ ] Be sure to commit the relevant changes in `db/structure.sql` and the file under `db/schema_migrations` -- [ ] Add an entry for the state table in `db/docs/cool_widget_states.yml` - - ```yaml - --- - table_name: cool_widget_states - classes: - - Geo::CoolWidgetState - feature_categories: - - geo_replication - description: Separate table for cool widget verification states - introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX - milestone: 'XX.Y' - ``` - That's all of the required database changes. ### Implement Geo support of Cool Widgets behind a feature flag @@ -238,17 +245,26 @@ That's all of the required database changes. after_save :save_verification_details - scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) } - scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) } - scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) } - - scope :available_verifiables, -> { joins(:cool_widget_state) } - # Override the `all` default if not all records can be replicated. For an # example of an existing Model that needs to do this, see # `EE::MergeRequestDiff`. # scope :available_replicables, -> { all } + scope :available_verifiables, -> { joins(:cool_widget_state) } + + scope :checksummed, -> { + joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil }) + } + + scope :not_checksummed, -> { + joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil }) + } + + scope :with_verification_state, ->(state) { + joins(:cool_widget_state) + .where(cool_widget_states: { verification_state: verification_state_value(state) }) + } + def verification_state_object cool_widget_state end @@ -259,7 +275,8 @@ That's all of the required database changes. ... # @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope - # @return [ActiveRecord::Relation] everything that should be synced to this node, restricted by primary key + # @return [ActiveRecord::Relation] everything that should be synced + # to this node, restricted by primary key def replicables_for_current_secondary(primary_key_in) # This issue template does not help you write this method. # @@ -301,8 +318,8 @@ That's all of the required database changes. ```ruby include_examples 'a replicable model with a separate table for verification state' do - let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is included in `available_verifiables` - let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `available_verifiables` + let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is in `Geo::ReplicableModel.verifiables` scope + let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `Geo::ReplicableModel.verifiables` scope end ``` @@ -332,7 +349,6 @@ That's all of the required database changes. # (see `VerifiableReplicator.verification_enabled?`) true end - end end ``` @@ -360,7 +376,7 @@ That's all of the required database changes. require 'spec_helper' - RSpec.describe Geo::CoolWidgetReplicator do + RSpec.describe Geo::CoolWidgetReplicator, feature_category: :geo_replication do let(:model_record) { build(:cool_widget) } include_examples 'a blob replicator' @@ -434,7 +450,7 @@ That's all of the required database changes. require 'spec_helper' - RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model do + RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model, feature_category: :geo_replication do let_it_be(:registry) { create(:geo_cool_widget_registry) } specify 'factory is valid' do @@ -449,17 +465,21 @@ That's all of the required database changes. - [ ] Add the following to `spec/factories/cool_widgets.rb`: ```ruby - FactoryBot.modify do - trait :verification_succeeded do - with_file - verification_checksum { 'abc' } - verification_state { CoolWidget.verification_state_value(:verification_succeeded) } - end + # frozen_string_literal: true - trait :verification_failed do - with_file - verification_failure { 'Could not calculate the checksum' } - verification_state { CoolWidget.verification_state_value(:verification_failed) } + FactoryBot.modify do + factory :cool_widget do + trait :verification_succeeded do + with_file + verification_checksum { 'abc' } + verification_state { CoolWidget.verification_state_value(:verification_succeeded) } + end + + trait :verification_failed do + with_file + verification_failure { 'Could not calculate the checksum' } + verification_state { CoolWidget.verification_state_value(:verification_failed) } + end end end ``` @@ -539,18 +559,18 @@ Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus` ```markdown | `geo_cool_widgets` | Gauge | XX.Y | Number of Cool Widgets on primary | `url` | - | `geo_cool_widgets_checksum_total` | Gauge | XX.Y | Number of Cool Widgets checksummed successfully on primary | `url` | - | `geo_cool_widgets_checksummed` | Gauge | XX.Y | Number of Cool Widgets failed to calculate the checksum on primary | `url` | - | `geo_cool_widgets_checksum_failed` | Gauge | XX.Y | Number of Cool Widgets tried to checksum on primary | `url` | + | `geo_cool_widgets_checksum_total` | Gauge | XX.Y | Number of Cool Widgets to checksum on primary | `url` | + | `geo_cool_widgets_checksummed` | Gauge | XX.Y | Number of Cool Widgets that successfully calculated the checksum on primary | `url` | + | `geo_cool_widgets_checksum_failed` | Gauge | XX.Y | Number of Cool Widgets that failed to calculate the checksum on primary | `url` | | `geo_cool_widgets_synced` | Gauge | XX.Y | Number of syncable Cool Widgets synced on secondary | `url` | | `geo_cool_widgets_failed` | Gauge | XX.Y | Number of syncable Cool Widgets failed to sync on secondary | `url` | | `geo_cool_widgets_registry` | Gauge | XX.Y | Number of Cool Widgets in the registry | `url` | - | `geo_cool_widgets_verification_total` | Gauge | XX.Y | Number of Cool Widgets verified on secondary | `url` | - | `geo_cool_widgets_verified` | Gauge | XX.Y | Number of Cool Widgets' verifications failed on secondary | `url` | - | `geo_cool_widgets_verification_failed` | Gauge | XX.Y | Number of Cool Widgets' verifications tried on secondary | `url` | + | `geo_cool_widgets_verification_total` | Gauge | XX.Y | Number of Cool Widgets to attempt to verify on secondary | `url` | + | `geo_cool_widgets_verified` | Gauge | XX.Y | Number of Cool Widgets successfully verified on secondary | `url` | + | `geo_cool_widgets_verification_failed` | Gauge | XX.Y | Number of Cool Widgets that failed verification on secondary | `url` | ``` - Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Nodes` view, and Prometheus. + Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Sites` view, and Prometheus. #### Step 3. Implement the GraphQL API @@ -591,7 +611,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir require 'spec_helper' - RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver do + RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver, feature_category: :geo_replication do it_behaves_like 'a Geo registries resolver', :geo_cool_widget_registry end ``` @@ -615,7 +635,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir require 'spec_helper' - RSpec.describe Geo::CoolWidgetRegistryFinder do + RSpec.describe Geo::CoolWidgetRegistryFinder, feature_category: :geo_replication do it_behaves_like 'a framework registry finder', :geo_cool_widget_registry end ``` @@ -649,7 +669,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir require 'spec_helper' - RSpec.describe GitlabSchema.types['CoolWidgetRegistry'] do + RSpec.describe GitlabSchema.types['CoolWidgetRegistry'], feature_category: :geo_replication do it_behaves_like 'a Geo registry type' it 'has the expected fields (other than those included in RegistryType)' do diff --git a/.gitlab/issue_templates/UX Theme.md b/.gitlab/issue_templates/UX Theme.md index b015c3d44e..32e771735b 100644 --- a/.gitlab/issue_templates/UX Theme.md +++ b/.gitlab/issue_templates/UX Theme.md @@ -1,39 +1,25 @@ - +One of the advantages of working with UX themes is that it allows us to think and design holistically by designing the theme as a whole instead of a single issue at a time, trying to piece them together as we go. For more details, please refer to this section of the handbook when creating UX Themes: https://about.gitlab.com/handbook/product/ux/product-design/ux-roadmaps/#ux-theme-structure --> - - ---- -### Problem to solve - +### Theme statement + + +{`Need/outcome` } + {`Beneficiary`} + {`Job/Small Job`} -### Beneficiary - - -- **[Direct beneficiary]** - -#### Need & Primary JTBD - - -- **JTBD:** -- **Need:** - -#### Expected outcome - +#### Main Job story + #### Business objective - + #### Confidence @@ -42,43 +28,24 @@ One of the advantages of working with UX themes is that it allows us to think an | Confidence | Research | | --- | --- | -| [High/Medium/Low] | [research/insight issue](Link) | +| [High/Medium/Low] | [research/insight issue](Link) | -### User-stories - - -- [user-story here] -- [user-story here] -- [user-story here] -- [etc.] ### Requirements - +Note: This is not a backlog. If the issue can not be delivered in the theme timeframe, then the theme is too big and needs to be broken down into multiple themes. --> -The beneficieray needs to be able to: -- [need here] -- [need here] -- [need here] +>⚠️ Related feature and research issues should be linked in the related issues section (Delete this line when this is done) + +#### The beneficiary needs to be able to: +- [Small job statement] + - [Micro job statement] + - [Micro job statement] - [etc.] -#### Feature/solution issues - - -| Issue | UX Weight | -| ---------- | --------- | -| [Issue](link) | `0 - 10` | -| [Issue](link) | `0 - 10` | -| [Issue](link) | `0 - 10` | - #### Research - | Issue | Research type | Research status | @@ -87,16 +54,35 @@ Refer to https://about.gitlab.com/handbook/product/ux/product-designer/#ux-issue | [Issue]() | | | #### Ready for design checklist -The items are self-check suggestions; they could be contributed by designers, product managers or researchers -* [ ] The stated `Problem to solve` has high confidence (derived from research or other data-gathering techniques) -* [ ] Relevant issues, research, and other background information are linked to the Related issues section -* [ ] The stated `Beneficiary` has been defined -* [ ] There is high confidence in the stated `Need & Primary JTBD` (derived from research or other data gathering techniques) -* [ ] The `Expected outcome` has been defined +The items are self-check suggestions; they could be contributed by designers, product managers, or researchers +* [ ] The `theme` has high confidence (derived from research or other data-gathering techniques) +* [ ] The `Related issues`, features, research, and other background information are linked to the related issues section * [ ] The `Business objective` has been defined -* [ ] The theme `Confidence` has been defined as High -* [ ] `User-stories` have been defined -* [ ] The `Requirements` have been defined and the scope has been agreed upon -* [ ] This UX Theme contains everyhting necessary to complete a design solution and is ready for design +* [ ] The `Requirements` have been defined, and the scope has been agreed upon +* [ ] This UX Theme contains everything necessary to complete a design solution and is ready for design + +#### [Thematic design workflow checklist](https://about.gitlab.com/handbook/product/ux/product-design/ux-roadmaps/#suggested-workflow) + +* [ ] **Theme assessed** Ready for design checklist complete +* [ ] **Ideate and Iterate** + * [ ] User flow diagram generated + * [ ] Low-fidelity wireframes of the entire theme created + * [ ] [Feedback requested](https://about.gitlab.com/handbook/product/ux/product-designer/#design-reviews) and incorporated into flow diagram and wireframes +* [ ] **Validate** + * [ ] [Solution validation](https://about.gitlab.com/handbook/product/ux/ux-research/solution-validation-and-methods/) conducted on Low/mid-fidelity flow +* [ ] **Refine** + * [ ] Resaerch findings incorporated into design + * [ ] All micro-interactions are defined + * [ ] All edge-cases are accounted for and defined + * [ ] All copy has been reviewed by tech writing + * [ ] Accessibnility guidelines have been considered + * [ ] High-fidelity designs posted + * [ ] Feedback requested from counterparts + * [ ] (If necessary) Validate high-fidelity flow in a 2nd round of user testing + * [ ] Refine final design from feedback and user research +* [ ] **Hand-off** + * [ ] Designs broken down based on the their ability to stand alone and that they provide value to the user. + * [ ] MVC plan agreement reached + * [ ] Planning breakdown complete /label ~"UX" ~"UX Theme" diff --git a/.gitlab/merge_request_templates/New Static Analysis Check.md b/.gitlab/merge_request_templates/New Static Analysis Check.md index 6ad56cd5cd..9cf21fa49e 100644 --- a/.gitlab/merge_request_templates/New Static Analysis Check.md +++ b/.gitlab/merge_request_templates/New Static Analysis Check.md @@ -1,6 +1,6 @@ ## Description of the proposal diff --git a/.gitlab/merge_request_templates/Revert To Resolve Incident.md b/.gitlab/merge_request_templates/Revert To Resolve Incident.md index 4e77846575..c1980d7076 100644 --- a/.gitlab/merge_request_templates/Revert To Resolve Incident.md +++ b/.gitlab/merge_request_templates/Revert To Resolve Incident.md @@ -12,6 +12,7 @@ - [ ] Create an issue to reinstate the merge request and assign it to the author of the reverted merge request. - [ ] If the revert is to resolve a [broken 'master' incident](https://about.gitlab.com/handbook/engineering/workflow/#broken-master), please read through the [Responsibilities of the Broken `master` resolution DRI](https://about.gitlab.com/handbook/engineering/workflow/#responsibilities-of-the-resolution-dri). +- [ ] If the revert involves a database migration, please read through [Deleting existing migrations](https://docs.gitlab.com/ee/development/database/deleting_migrations.html). - [ ] Add the appropriate labels **before** the MR is created. We can skip CI/CD jobs only if the labels are added **before** the CI/CD pipeline is created. ### Milestone info diff --git a/.gitleaksignore b/.gitleaksignore new file mode 100644 index 0000000000..eab7926138 --- /dev/null +++ b/.gitleaksignore @@ -0,0 +1,2 @@ +7e07fe42d34916b276a7b068f4faa8bdc0ebc984:doc/architecture/blueprints/runner_tokens/index.md:gitlab-rrt:485 +f6504b498548380198ad38295d9caa71412115f0:doc/architecture/blueprints/runner_tokens/index.md:generic-api-key:506 diff --git a/.rubocop.yml b/.rubocop.yml index 3489c2e253..56c51bee0e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -19,6 +19,9 @@ inherit_from: <% if RUBY_VERSION[/^\d+\.\d+/, 0] == '3.0' %> - ./rubocop/rubocop-ruby30.yml <% end %> + <% if RUBY_VERSION[/^\d+\.\d+/, 0] == '3.1' %> + - ./rubocop/rubocop-ruby31.yml + <% end %> - ./rubocop/rubocop-migrations.yml - ./rubocop/rubocop-usage-data.yml - ./rubocop/rubocop-code_reuse.yml @@ -30,6 +33,7 @@ inherit_mode: merge: - Include - Exclude + - AllowedPatterns AllCops: # Target the current Ruby version. For example, "2.7" or "3.0". @@ -97,6 +101,9 @@ InternalAffairs/DeprecateCopHelper: Include: - spec/rubocop/**/*.rb +Layout/LineLength: + AllowedPatterns: ['^RSpec\.describe\s.*\sdo'] + Lint/LastKeywordArgument: Safe: false @@ -436,6 +443,12 @@ BackgroundMigration/FeatureCategory: Include: - 'lib/gitlab/background_migration/*.rb' +BackgroundMigration/MissingDictionaryFile: + Enabled: true + EnforcedSince: 20230307160251 + Include: + - 'db/post_migrate/*.rb' + # See https://gitlab.com/gitlab-org/gitlab/-/issues/373194 Gitlab/RSpec/AvoidSetup: Enabled: true diff --git a/.rubocop_todo/background_migration/missing_dictionary_file.yml b/.rubocop_todo/background_migration/missing_dictionary_file.yml new file mode 100644 index 0000000000..c065a1ac3a --- /dev/null +++ b/.rubocop_todo/background_migration/missing_dictionary_file.yml @@ -0,0 +1,4 @@ +--- +# Grace period will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/395354 +BackgroundMigration/MissingDictionaryFile: + Details: grace period diff --git a/.rubocop_todo/gitlab/namespaced_class.yml b/.rubocop_todo/gitlab/namespaced_class.yml index eec55aa7bb..d1257e3ffa 100644 --- a/.rubocop_todo/gitlab/namespaced_class.yml +++ b/.rubocop_todo/gitlab/namespaced_class.yml @@ -133,7 +133,6 @@ Gitlab/NamespacedClass: - 'app/models/commit_status.rb' - 'app/models/commit_user_mention.rb' - 'app/models/compare.rb' - - 'app/models/concerns/uniquify.rb' - 'app/models/container_expiration_policy.rb' - 'app/models/container_repository.rb' - 'app/models/context_commits_diff.rb' diff --git a/.rubocop_todo/gitlab/strong_memoize_attr.yml b/.rubocop_todo/gitlab/strong_memoize_attr.yml index 1eeb7c69a9..3ecc1ef6bf 100644 --- a/.rubocop_todo/gitlab/strong_memoize_attr.yml +++ b/.rubocop_todo/gitlab/strong_memoize_attr.yml @@ -127,7 +127,6 @@ Gitlab/StrongMemoizeAttr: - 'app/models/namespaces/traversal/linear.rb' - 'app/models/namespaces/traversal/recursive.rb' - 'app/models/note.rb' - - 'app/models/onboarding/completion.rb' - 'app/models/packages/go/module.rb' - 'app/models/packages/go/module_version.rb' - 'app/models/packages/package.rb' @@ -230,7 +229,6 @@ Gitlab/StrongMemoizeAttr: - 'app/services/packages/cleanup/update_policy_service.rb' - 'app/services/packages/composer/create_package_service.rb' - 'app/services/packages/debian/extract_changes_metadata_service.rb' - - 'app/services/packages/debian/extract_metadata_service.rb' - 'app/services/packages/debian/find_or_create_package_service.rb' - 'app/services/packages/debian/generate_distribution_key_service.rb' - 'app/services/packages/debian/generate_distribution_service.rb' @@ -596,7 +594,6 @@ Gitlab/StrongMemoizeAttr: - 'lib/gitlab/ci/reports/accessibility_reports_comparer.rb' - 'lib/gitlab/ci/reports/codequality_reports_comparer.rb' - 'lib/gitlab/ci/reports/security/locations/base.rb' - - 'lib/gitlab/ci/reports/security/vulnerability_reports_comparer.rb' - 'lib/gitlab/ci/reports/test_reports_comparer.rb' - 'lib/gitlab/ci/reports/test_suite_comparer.rb' - 'lib/gitlab/ci/reports/test_suite_summary.rb' @@ -647,7 +644,6 @@ Gitlab/StrongMemoizeAttr: - 'lib/gitlab/git_access_project.rb' - 'lib/gitlab/gitaly_client/with_feature_flag_actors.rb' - 'lib/gitlab/github_import/client.rb' - - 'lib/gitlab/github_import/importer/repository_importer.rb' - 'lib/gitlab/github_import/representation/diff_notes/suggestion_formatter.rb' - 'lib/gitlab/gl_repository/identifier.rb' - 'lib/gitlab/gpg/commit.rb' diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml index faa81abc0a..4c0f89e940 100644 --- a/.rubocop_todo/layout/argument_alignment.yml +++ b/.rubocop_todo/layout/argument_alignment.yml @@ -3,54 +3,6 @@ Layout/ArgumentAlignment: Details: grace period Exclude: - - 'app/controllers/admin/application_settings_controller.rb' - - 'app/controllers/admin/ci/variables_controller.rb' - - 'app/controllers/admin/groups_controller.rb' - - 'app/controllers/admin/spam_logs_controller.rb' - - 'app/controllers/admin/topics_controller.rb' - - 'app/controllers/application_controller.rb' - - 'app/controllers/chaos_controller.rb' - - 'app/controllers/concerns/authenticates_with_two_factor.rb' - - 'app/controllers/concerns/enforces_two_factor_authentication.rb' - - 'app/controllers/concerns/invisible_captcha_on_signup.rb' - - 'app/controllers/concerns/issuable_actions.rb' - - 'app/controllers/concerns/known_sign_in.rb' - - 'app/controllers/concerns/membership_actions.rb' - - 'app/controllers/concerns/observability/content_security_policy.rb' - - 'app/controllers/concerns/wiki_actions.rb' - - 'app/controllers/dashboard/todos_controller.rb' - - 'app/controllers/groups/children_controller.rb' - - 'app/controllers/groups/group_members_controller.rb' - - 'app/controllers/groups_controller.rb' - - 'app/controllers/metrics_controller.rb' - - 'app/controllers/oauth/authorizations_controller.rb' - - 'app/controllers/oauth/authorized_applications_controller.rb' - - 'app/controllers/oauth/jira_dvcs/authorizations_controller.rb' - - 'app/controllers/profiles/emails_controller.rb' - - 'app/controllers/projects/blob_controller.rb' - - 'app/controllers/projects/commit_controller.rb' - - 'app/controllers/projects/environments_controller.rb' - - 'app/controllers/projects/error_tracking_controller.rb' - - 'app/controllers/projects/feature_flags_controller.rb' - - 'app/controllers/projects/google_cloud/base_controller.rb' - - 'app/controllers/projects/jobs_controller.rb' - - 'app/controllers/projects/labels_controller.rb' - - 'app/controllers/projects/merge_requests/creations_controller.rb' - - 'app/controllers/projects/merge_requests_controller.rb' - - 'app/controllers/projects/pages_controller.rb' - - 'app/controllers/projects/pages_domains_controller.rb' - - 'app/controllers/projects/pipeline_schedules_controller.rb' - - 'app/controllers/projects/pipelines_controller.rb' - - 'app/controllers/projects/prometheus/metrics_controller.rb' - - 'app/controllers/projects/repositories_controller.rb' - - 'app/controllers/projects/security/configuration_controller.rb' - - 'app/controllers/projects/tree_controller.rb' - - 'app/controllers/projects/web_ide_terminals_controller.rb' - - 'app/controllers/repositories/lfs_api_controller.rb' - - 'app/controllers/repositories/lfs_locks_api_controller.rb' - - 'app/controllers/search_controller.rb' - - 'app/controllers/sessions_controller.rb' - - 'app/controllers/users_controller.rb' - 'app/finders/autocomplete/users_finder.rb' - 'app/finders/group_descendants_finder.rb' - 'app/graphql/mutations/achievements/create.rb' @@ -150,7 +102,6 @@ Layout/ArgumentAlignment: - 'app/graphql/mutations/jira_import/import_users.rb' - 'app/graphql/mutations/jira_import/start.rb' - 'app/graphql/mutations/labels/create.rb' - - 'app/graphql/mutations/members/groups/bulk_update.rb' - 'app/graphql/mutations/merge_requests/accept.rb' - 'app/graphql/mutations/merge_requests/base.rb' - 'app/graphql/mutations/merge_requests/create.rb' @@ -557,23 +508,6 @@ Layout/ArgumentAlignment: - 'app/graphql/types/work_items/widgets/start_and_due_date_update_input_type.rb' - 'app/graphql/types/x509_certificate_type.rb' - 'app/graphql/types/x509_issuer_type.rb' - - 'app/helpers/application_helper.rb' - - 'app/helpers/application_settings_helper.rb' - - 'app/helpers/blob_helper.rb' - - 'app/helpers/ci/status_helper.rb' - - 'app/helpers/commits_helper.rb' - - 'app/helpers/dashboard_helper.rb' - - 'app/helpers/events_helper.rb' - - 'app/helpers/feature_flags_helper.rb' - - 'app/helpers/issuables_helper.rb' - - 'app/helpers/mirror_helper.rb' - - 'app/helpers/notes_helper.rb' - - 'app/helpers/projects/error_tracking_helper.rb' - - 'app/helpers/snippets_helper.rb' - - 'app/helpers/todos_helper.rb' - - 'app/helpers/users/group_callouts_helper.rb' - - 'app/helpers/users_helper.rb' - - 'app/helpers/visibility_level_helper.rb' - 'app/mailers/emails/projects.rb' - 'app/mailers/notify.rb' - 'app/models/abuse_report.rb' @@ -673,11 +607,6 @@ Layout/ArgumentAlignment: - 'app/models/wiki_page.rb' - 'app/models/work_item.rb' - 'app/policies/project_snippet_policy.rb' - - 'app/presenters/ci/build_runner_presenter.rb' - - 'app/presenters/label_presenter.rb' - - 'app/presenters/merge_request_presenter.rb' - - 'app/presenters/project_presenter.rb' - - 'app/presenters/snippet_blob_presenter.rb' - 'app/serializers/build_details_entity.rb' - 'app/serializers/environment_serializer.rb' - 'app/serializers/error_tracking/detailed_error_entity.rb' @@ -924,22 +853,6 @@ Layout/ArgumentAlignment: - 'ee/app/components/namespaces/free_user_cap/base_alert_component.rb' - 'ee/app/components/namespaces/free_user_cap/enforcement_at_limit_alert_component.rb' - 'ee/app/components/namespaces/free_user_cap/shared.rb' - - 'ee/app/controllers/admin/credentials_controller.rb' - - 'ee/app/controllers/concerns/ee/analytics/cycle_analytics/stage_actions.rb' - - 'ee/app/controllers/ee/groups_controller.rb' - - 'ee/app/controllers/ee/passwords_controller.rb' - - 'ee/app/controllers/ee/registrations_controller.rb' - - 'ee/app/controllers/ee/search_controller.rb' - - 'ee/app/controllers/groups/analytics/ci_cd_analytics_controller.rb' - - 'ee/app/controllers/groups/analytics/cycle_analytics_controller.rb' - - 'ee/app/controllers/groups/saml_group_links_controller.rb' - - 'ee/app/controllers/groups/security/credentials_controller.rb' - - 'ee/app/controllers/groups/two_factor_auths_controller.rb' - - 'ee/app/controllers/omniauth_kerberos_controller.rb' - - 'ee/app/controllers/projects/integrations/zentao/issues_controller.rb' - - 'ee/app/controllers/registrations/groups_projects_controller.rb' - - 'ee/app/controllers/subscriptions_controller.rb' - - 'ee/app/controllers/trials_controller.rb' - 'ee/app/finders/security/findings_finder.rb' - 'ee/app/finders/security/training_providers/base_url_finder.rb' - 'ee/app/graphql/ee/mutations/alert_management/http_integration/create.rb' @@ -1225,9 +1138,6 @@ Layout/ArgumentAlignment: - 'ee/app/graphql/types/work_items/widgets/status_filter_input_type.rb' - 'ee/app/graphql/types/work_items/widgets/status_input_type.rb' - 'ee/app/graphql/types/work_items/widgets/weight_input_type.rb' - - 'ee/app/helpers/billing_plans_helper.rb' - - 'ee/app/helpers/ee/feature_flags_helper.rb' - - 'ee/app/helpers/ee/search_helper.rb' - 'ee/app/mailers/ee/emails/projects.rb' - 'ee/app/mailers/emails/namespace_storage_usage_mailer.rb' - 'ee/app/models/approval_wrapped_rule.rb' @@ -1445,7 +1355,6 @@ Layout/ArgumentAlignment: - 'ee/spec/features/admin/admin_emails_spec.rb' - 'ee/spec/features/admin/admin_settings_spec.rb' - 'ee/spec/features/billings/billing_plans_spec.rb' - - 'ee/spec/features/billings/extend_reactivate_trial_spec.rb' - 'ee/spec/features/boards/boards_spec.rb' - 'ee/spec/features/boards/swimlanes/epics_swimlanes_drag_drop_spec.rb' - 'ee/spec/features/burndown_charts_spec.rb' @@ -1663,7 +1572,6 @@ Layout/ArgumentAlignment: - 'ee/spec/policies/merge_request_policy_spec.rb' - 'ee/spec/policies/vulnerabilities/feedback_policy_spec.rb' - 'ee/spec/policies/vulnerabilities/merge_request_link_policy_spec.rb' - - 'ee/spec/presenters/ci/pipeline_presenter_spec.rb' - 'ee/spec/requests/admin/impersonation_tokens_controller_spec.rb' - 'ee/spec/requests/api/analytics/product_analytics_spec.rb' - 'ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb' @@ -2090,7 +1998,6 @@ Layout/ArgumentAlignment: - 'lib/gitlab/import_export/snippets_repo_restorer.rb' - 'lib/gitlab/import_export/snippets_repo_saver.rb' - 'lib/gitlab/issuable/clone/copy_resource_events_service.rb' - - 'lib/gitlab/legacy_github_import/importer.rb' - 'lib/gitlab/mail_room.rb' - 'lib/gitlab/markdown_cache/redis/store.rb' - 'lib/gitlab/memory/reports_uploader.rb' @@ -2248,69 +2155,6 @@ Layout/ArgumentAlignment: - '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/admin/spam_logs_controller_spec.rb' - - 'spec/controllers/admin/users_controller_spec.rb' - - 'spec/controllers/concerns/analytics/cycle_analytics/value_stream_actions_spec.rb' - - 'spec/controllers/concerns/continue_params_spec.rb' - - 'spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb' - - 'spec/controllers/concerns/product_analytics_tracking_spec.rb' - - 'spec/controllers/concerns/renders_commits_spec.rb' - - 'spec/controllers/confirmations_controller_spec.rb' - - 'spec/controllers/every_controller_spec.rb' - - 'spec/controllers/graphql_controller_spec.rb' - - 'spec/controllers/groups/group_members_controller_spec.rb' - - 'spec/controllers/groups/milestones_controller_spec.rb' - - 'spec/controllers/groups/variables_controller_spec.rb' - - 'spec/controllers/help_controller_spec.rb' - - 'spec/controllers/import/bitbucket_controller_spec.rb' - - 'spec/controllers/import/bulk_imports_controller_spec.rb' - - 'spec/controllers/import/fogbugz_controller_spec.rb' - - 'spec/controllers/oauth/authorizations_controller_spec.rb' - - 'spec/controllers/oauth/jira_dvcs/authorizations_controller_spec.rb' - - 'spec/controllers/omniauth_callbacks_controller_spec.rb' - - 'spec/controllers/passwords_controller_spec.rb' - - 'spec/controllers/profiles_controller_spec.rb' - - 'spec/controllers/projects/artifacts_controller_spec.rb' - - 'spec/controllers/projects/blame_controller_spec.rb' - - 'spec/controllers/projects/blob_controller_spec.rb' - - 'spec/controllers/projects/branches_controller_spec.rb' - - 'spec/controllers/projects/clusters_controller_spec.rb' - - 'spec/controllers/projects/commit_controller_spec.rb' - - 'spec/controllers/projects/commits_controller_spec.rb' - - 'spec/controllers/projects/cycle_analytics_controller_spec.rb' - - 'spec/controllers/projects/deploy_keys_controller_spec.rb' - - 'spec/controllers/projects/deployments_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/find_file_controller_spec.rb' - - 'spec/controllers/projects/forks_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/mattermosts_controller_spec.rb' - - 'spec/controllers/projects/merge_requests/conflicts_controller_spec.rb' - - 'spec/controllers/projects/merge_requests/creations_controller_spec.rb' - - 'spec/controllers/projects/merge_requests/diffs_controller_spec.rb' - - 'spec/controllers/projects/merge_requests/drafts_controller_spec.rb' - - 'spec/controllers/projects/merge_requests_controller_spec.rb' - - 'spec/controllers/projects/notes_controller_spec.rb' - - 'spec/controllers/projects/pipelines_controller_spec.rb' - - 'spec/controllers/projects/prometheus/alerts_controller_spec.rb' - - 'spec/controllers/projects/raw_controller_spec.rb' - - 'spec/controllers/projects/refs_controller_spec.rb' - - 'spec/controllers/projects/registry/repositories_controller_spec.rb' - - 'spec/controllers/projects/registry/tags_controller_spec.rb' - - 'spec/controllers/projects/settings/ci_cd_controller_spec.rb' - - 'spec/controllers/projects/settings/merge_requests_controller_spec.rb' - - 'spec/controllers/projects/snippets/blobs_controller_spec.rb' - - 'spec/controllers/projects/snippets_controller_spec.rb' - - 'spec/controllers/projects/tree_controller_spec.rb' - - 'spec/controllers/projects_controller_spec.rb' - - 'spec/controllers/registrations_controller_spec.rb' - - 'spec/controllers/search_controller_spec.rb' - - 'spec/controllers/sessions_controller_spec.rb' - - 'spec/controllers/snippets/blobs_controller_spec.rb' - 'spec/factories/ci/processable.rb' - 'spec/factories/draft_note.rb' - 'spec/factories/environments.rb' @@ -2476,7 +2320,6 @@ Layout/ArgumentAlignment: - 'spec/helpers/avatars_helper_spec.rb' - 'spec/helpers/emoji_helper_spec.rb' - 'spec/helpers/feature_flags_helper_spec.rb' - - 'spec/helpers/ide_helper_spec.rb' - 'spec/helpers/namespaces_helper_spec.rb' - 'spec/helpers/notify_helper_spec.rb' - 'spec/helpers/page_layout_helper_spec.rb' @@ -2842,10 +2685,6 @@ Layout/ArgumentAlignment: - 'spec/policies/ci/pipeline_schedule_policy_spec.rb' - 'spec/policies/environment_policy_spec.rb' - 'spec/policies/group_policy_spec.rb' - - 'spec/presenters/blob_presenter_spec.rb' - - 'spec/presenters/ci/build_runner_presenter_spec.rb' - - 'spec/presenters/merge_request_presenter_spec.rb' - - 'spec/presenters/packages/detail/package_presenter_spec.rb' - 'spec/requests/admin/applications_controller_spec.rb' - 'spec/requests/admin/impersonation_tokens_controller_spec.rb' - 'spec/requests/api/access_requests_spec.rb' diff --git a/.rubocop_todo/layout/empty_line_after_magic_comment.yml b/.rubocop_todo/layout/empty_line_after_magic_comment.yml index 9c7b9f2c1a..c96a0f4c0f 100644 --- a/.rubocop_todo/layout/empty_line_after_magic_comment.yml +++ b/.rubocop_todo/layout/empty_line_after_magic_comment.yml @@ -555,7 +555,6 @@ Layout/EmptyLineAfterMagicComment: - 'spec/components/previews/pajamas/card_component_preview.rb' - 'spec/components/previews/pajamas/spinner_component_preview.rb' - 'spec/controllers/application_controller_spec.rb' - - 'spec/controllers/concerns/analytics/cycle_analytics/value_stream_actions_spec.rb' - 'spec/controllers/projects/jobs_controller_spec.rb' - 'spec/controllers/projects/merge_requests/drafts_controller_spec.rb' - 'spec/factories/airflow/dags.rb' @@ -813,7 +812,6 @@ Layout/EmptyLineAfterMagicComment: - 'spec/services/packages/create_package_file_service_spec.rb' - 'spec/services/packages/debian/extract_changes_metadata_service_spec.rb' - 'spec/services/packages/debian/extract_deb_metadata_service_spec.rb' - - 'spec/services/packages/debian/extract_metadata_service_spec.rb' - 'spec/services/packages/debian/parse_debian822_service_spec.rb' - 'spec/services/packages/debian/process_changes_service_spec.rb' - 'spec/services/packages/debian/process_package_file_service_spec.rb' diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 772284a6ce..cc2252ce57 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -1582,7 +1582,6 @@ Layout/LineLength: - 'ee/spec/features/admin/groups/admin_subscription_alerts_spec.rb' - 'ee/spec/features/admin/subscriptions/admin_views_subscription_spec.rb' - 'ee/spec/features/billings/billing_plans_spec.rb' - - 'ee/spec/features/billings/extend_reactivate_trial_spec.rb' - 'ee/spec/features/boards/scoped_issue_board_spec.rb' - 'ee/spec/features/boards/sidebar_spec.rb' - 'ee/spec/features/boards/swimlanes/epics_swimlanes_drag_drop_spec.rb' @@ -3062,7 +3061,6 @@ Layout/LineLength: - 'lib/gitlab/kubernetes/helm/pod.rb' - 'lib/gitlab/kubernetes/kubectl_cmd.rb' - 'lib/gitlab/kubernetes/pod_cmd.rb' - - 'lib/gitlab/legacy_github_import/importer.rb' - 'lib/gitlab/legacy_github_import/project_creator.rb' - 'lib/gitlab/local_and_remote_storage_migration/base_migrater.rb' - 'lib/gitlab/lograge/custom_options.rb' @@ -4036,7 +4034,6 @@ Layout/LineLength: - 'spec/lib/error_tracking/sentry_client/projects_spec.rb' - 'spec/lib/event_filter_spec.rb' - 'spec/lib/feature_spec.rb' - - 'spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb' - 'spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb' - 'spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb' - 'spec/lib/generators/gitlab/usage_metric_generator_spec.rb' @@ -4150,7 +4147,6 @@ Layout/LineLength: - 'spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb' - 'spec/lib/gitlab/ci/reports/security/flag_spec.rb' - 'spec/lib/gitlab/ci/reports/security/scanner_spec.rb' - - 'spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb' - 'spec/lib/gitlab/ci/runner_upgrade_check_spec.rb' - 'spec/lib/gitlab/ci/status/bridge/factory_spec.rb' - 'spec/lib/gitlab/ci/status/build/manual_spec.rb' @@ -4930,7 +4926,6 @@ Layout/LineLength: - 'spec/requests/groups/milestones_controller_spec.rb' - 'spec/requests/groups/settings/access_tokens_controller_spec.rb' - 'spec/requests/groups_controller_spec.rb' - - 'spec/requests/ide_controller_spec.rb' - 'spec/requests/jwt_controller_spec.rb' - 'spec/requests/lfs_http_spec.rb' - 'spec/requests/oauth/tokens_controller_spec.rb' diff --git a/.rubocop_todo/layout/space_in_lambda_literal.yml b/.rubocop_todo/layout/space_in_lambda_literal.yml index 3abff1e878..362d9b20eb 100644 --- a/.rubocop_todo/layout/space_in_lambda_literal.yml +++ b/.rubocop_todo/layout/space_in_lambda_literal.yml @@ -400,7 +400,6 @@ Layout/SpaceInLambdaLiteral: - 'spec/models/ability_spec.rb' - 'spec/models/broadcast_message_spec.rb' - 'spec/models/concerns/participable_spec.rb' - - 'spec/models/concerns/uniquify_spec.rb' - 'spec/models/merge_request_spec.rb' - 'spec/support/shared_examples/lib/cache_helpers_shared_examples.rb' - 'spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb' diff --git a/.rubocop_todo/layout/space_inside_parens.yml b/.rubocop_todo/layout/space_inside_parens.yml index 131a56976a..de88cdc49b 100644 --- a/.rubocop_todo/layout/space_inside_parens.yml +++ b/.rubocop_todo/layout/space_inside_parens.yml @@ -128,7 +128,6 @@ Layout/SpaceInsideParens: - 'spec/lib/gitlab/ci/parsers/security/common_spec.rb' - 'spec/lib/gitlab/ci/parsers_spec.rb' - 'spec/lib/gitlab/ci/pipeline/seed/build_spec.rb' - - 'spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb' - 'spec/lib/gitlab/ci/reports/test_suite_spec.rb' - 'spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb' - 'spec/lib/gitlab/ci/templates/MATLAB_spec.rb' diff --git a/.rubocop_todo/lint/unused_block_argument.yml b/.rubocop_todo/lint/unused_block_argument.yml index f226f04445..b9013f03bf 100644 --- a/.rubocop_todo/lint/unused_block_argument.yml +++ b/.rubocop_todo/lint/unused_block_argument.yml @@ -138,7 +138,6 @@ Lint/UnusedBlockArgument: - 'ee/spec/factories/protected_environments.rb' - 'ee/spec/factories/slack_integrations.rb' - 'ee/spec/factories/users.rb' - - 'ee/spec/features/billings/extend_reactivate_trial_spec.rb' - 'ee/spec/features/groups/group_settings_spec.rb' - 'ee/spec/graphql/mutations/dast/profiles/update_spec.rb' - 'ee/spec/graphql/resolvers/analytics/contribution_analytics/contributions_resolver_spec.rb' @@ -376,7 +375,6 @@ Lint/UnusedBlockArgument: - 'spec/models/concerns/ci/partitionable/switch_spec.rb' - 'spec/models/concerns/ci/partitionable_spec.rb' - 'spec/models/concerns/each_batch_spec.rb' - - 'spec/models/concerns/uniquify_spec.rb' - 'spec/models/container_repository_spec.rb' - 'spec/models/network/graph_spec.rb' - 'spec/models/packages/debian/file_metadatum_spec.rb' diff --git a/.rubocop_todo/lint/unused_method_argument.yml b/.rubocop_todo/lint/unused_method_argument.yml index 8c23a6ae84..a4e48b3524 100644 --- a/.rubocop_todo/lint/unused_method_argument.yml +++ b/.rubocop_todo/lint/unused_method_argument.yml @@ -19,7 +19,6 @@ Lint/UnusedMethodArgument: - 'app/graphql/mutations/base_mutation.rb' - 'app/graphql/mutations/ci/runner/delete.rb' - 'app/graphql/mutations/concerns/mutations/assignable.rb' - - 'app/graphql/mutations/members/groups/bulk_update.rb' - 'app/graphql/mutations/notes/create/base.rb' - 'app/graphql/mutations/notes/create/diff_note.rb' - 'app/graphql/mutations/notes/create/image_diff_note.rb' diff --git a/.rubocop_todo/naming/heredoc_delimiter_naming.yml b/.rubocop_todo/naming/heredoc_delimiter_naming.yml index ae71e06b6d..b92d316b69 100644 --- a/.rubocop_todo/naming/heredoc_delimiter_naming.yml +++ b/.rubocop_todo/naming/heredoc_delimiter_naming.yml @@ -50,7 +50,6 @@ Naming/HeredocDelimiterNaming: - 'rubocop/cop/default_scope.rb' - 'rubocop/cop/file_decompression.rb' - 'rubocop/cop/gitlab/httparty.rb' - - 'rubocop/cop/gitlab/json.rb' - 'rubocop/cop/gitlab/module_with_instance_variables.rb' - 'rubocop/cop/gitlab/predicate_memoization.rb' - 'spec/controllers/projects/pipelines_controller_spec.rb' diff --git a/.rubocop_todo/performance/map_compact.yml b/.rubocop_todo/performance/map_compact.yml index ca0e8d604f..f47388609e 100644 --- a/.rubocop_todo/performance/map_compact.yml +++ b/.rubocop_todo/performance/map_compact.yml @@ -97,30 +97,17 @@ Performance/MapCompact: - '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/support/formatters/test_metrics_formatter.rb' - 'qa/qa/tools/ci/ff_changes.rb' diff --git a/.rubocop_todo/performance/string_include.yml b/.rubocop_todo/performance/string_include.yml deleted file mode 100644 index f2e17d3576..0000000000 --- a/.rubocop_todo/performance/string_include.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -# Cop supports --autocorrect. -Performance/StringInclude: - Details: grace period - Exclude: - - 'lib/gitlab/github_import/importer/repository_importer.rb' - - 'lib/gitlab/legacy_github_import/importer.rb' - - 'lib/gitlab/usage_data.rb' - - 'rubocop/cop/gitlab/json.rb' diff --git a/.rubocop_todo/rails/inverse_of.yml b/.rubocop_todo/rails/inverse_of.yml index 31535699d2..752b1d9b4d 100644 --- a/.rubocop_todo/rails/inverse_of.yml +++ b/.rubocop_todo/rails/inverse_of.yml @@ -1,21 +1,6 @@ --- Rails/InverseOf: Exclude: - - 'app/models/alert_management/alert.rb' - - 'app/models/alert_management/alert_assignee.rb' - - 'app/models/application_setting.rb' - - 'app/models/audit_event.rb' - - 'app/models/board.rb' - - 'app/models/bulk_imports/entity.rb' - - 'app/models/bulk_imports/tracker.rb' - - 'app/models/ci/build.rb' - - 'app/models/ci/build_pending_state.rb' - - 'app/models/ci/build_trace_chunk.rb' - - 'app/models/ci/daily_build_group_report_result.rb' - - 'app/models/ci/job_artifact.rb' - - 'app/models/ci/job_variable.rb' - - 'app/models/ci/pipeline.rb' - - 'app/models/ci/pipeline_schedule.rb' - 'app/models/ci/runner.rb' - 'app/models/ci/runner_namespace.rb' - 'app/models/ci/sources/pipeline.rb' @@ -44,7 +29,6 @@ Rails/InverseOf: - 'app/models/group_group_link.rb' - 'app/models/group_label.rb' - 'app/models/incident_management/timeline_event.rb' - - 'app/models/integrations/base_slash_commands.rb' - 'app/models/issue.rb' - 'app/models/jira_connect_subscription.rb' - 'app/models/members/group_member.rb' @@ -59,7 +43,6 @@ Rails/InverseOf: - 'app/models/project.rb' - 'app/models/project_label.rb' - 'app/models/resource_state_event.rb' - - 'app/models/serverless/domain_cluster.rb' - 'app/models/terraform/state_version.rb' - 'app/models/time_tracking/timelog_category.rb' - 'app/models/todo.rb' diff --git a/.rubocop_todo/rake/require.yml b/.rubocop_todo/rake/require.yml index e3cd483f05..b24dd1e654 100644 --- a/.rubocop_todo/rake/require.yml +++ b/.rubocop_todo/rake/require.yml @@ -2,19 +2,5 @@ Rake/Require: Details: grace period Exclude: - - 'lib/tasks/gitlab/assets.rake' - - 'lib/tasks/gitlab/docs/redirect.rake' - - 'lib/tasks/gitlab/graphql.rake' - - 'lib/tasks/gitlab/lfs/migrate.rake' - - 'lib/tasks/gitlab/metrics_exporter.rake' - - 'lib/tasks/gitlab/openapi.rake' - - 'lib/tasks/gitlab/packages/events.rake' - - 'lib/tasks/gitlab/packages/migrate.rake' - - 'lib/tasks/gitlab/pages.rake' - - 'lib/tasks/gitlab/refresh_project_statistics_build_artifacts_size.rake' - - 'lib/tasks/gitlab/terraform/migrate.rake' - - 'lib/tasks/gitlab/tw/codeowners.rake' - - 'lib/tasks/gitlab/x509/update.rake' - - 'lib/tasks/import.rake' - 'lib/tasks/tokens.rake' - 'qa/tasks/webdrivers.rake' diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index cb732ea307..ccbbc10ad4 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -1494,7 +1494,6 @@ RSpec/ContextWording: - 'spec/helpers/gitlab_routing_helper_spec.rb' - 'spec/helpers/groups/group_members_helper_spec.rb' - 'spec/helpers/groups_helper_spec.rb' - - 'spec/helpers/ide_helper_spec.rb' - 'spec/helpers/integrations_helper_spec.rb' - 'spec/helpers/jira_connect_helper_spec.rb' - 'spec/helpers/labels_helper_spec.rb' @@ -1636,7 +1635,6 @@ RSpec/ContextWording: - 'spec/lib/extracts_ref_spec.rb' - 'spec/lib/feature/definition_spec.rb' - 'spec/lib/feature_spec.rb' - - 'spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb' - 'spec/lib/gitlab/alert_management/fingerprint_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb' @@ -1732,7 +1730,6 @@ RSpec/ContextWording: - 'spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb' - 'spec/lib/gitlab/ci/reports/reports_comparer_spec.rb' - 'spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb' - - 'spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb' - 'spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb' - 'spec/lib/gitlab/ci/runner_instructions_spec.rb' - 'spec/lib/gitlab/ci/runner_upgrade_check_spec.rb' @@ -2576,7 +2573,6 @@ RSpec/ContextWording: - 'spec/requests/groups/settings/access_tokens_controller_spec.rb' - 'spec/requests/groups_controller_spec.rb' - 'spec/requests/health_controller_spec.rb' - - 'spec/requests/ide_controller_spec.rb' - 'spec/requests/jira_connect/installations_controller_spec.rb' - 'spec/requests/jira_connect/oauth_application_ids_controller_spec.rb' - 'spec/requests/jira_routing_spec.rb' @@ -2847,7 +2843,6 @@ RSpec/ContextWording: - 'spec/services/packages/conan/create_package_service_spec.rb' - 'spec/services/packages/create_package_file_service_spec.rb' - 'spec/services/packages/debian/create_distribution_service_spec.rb' - - 'spec/services/packages/debian/extract_metadata_service_spec.rb' - 'spec/services/packages/debian/find_or_create_incoming_service_spec.rb' - 'spec/services/packages/debian/process_changes_service_spec.rb' - 'spec/services/packages/helm/process_file_service_spec.rb' diff --git a/.rubocop_todo/rspec/invalid_feature_category.yml b/.rubocop_todo/rspec/invalid_feature_category.yml deleted file mode 100644 index 53ed05b881..0000000000 --- a/.rubocop_todo/rspec/invalid_feature_category.yml +++ /dev/null @@ -1,66 +0,0 @@ ---- -RSpec/InvalidFeatureCategory: - Exclude: - - 'ee/spec/controllers/admin/application_settings_controller_spec.rb' - - 'ee/spec/controllers/admin/applications_controller_spec.rb' - - 'ee/spec/controllers/admin/dashboard_controller_spec.rb' - - 'ee/spec/controllers/admin/emails_controller_spec.rb' - - 'ee/spec/controllers/countries_controller_spec.rb' - - 'ee/spec/controllers/country_states_controller_spec.rb' - - 'ee/spec/controllers/sitemap_controller_spec.rb' - - 'ee/spec/features/admin/admin_dashboard_spec.rb' - - 'ee/spec/features/dashboards/operations_spec.rb' - - 'ee/spec/requests/api/award_emoji_spec.rb' - - 'ee/spec/requests/api/settings_spec.rb' - - 'spec/config/inject_enterprise_edition_module_spec.rb' - - 'spec/config/object_store_settings_spec.rb' - - 'spec/config/smime_signature_settings_spec.rb' - - 'spec/contracts/provider_specs/helpers/provider/contract_source_helper_spec.rb' - - 'spec/controllers/concerns/content_security_policy_patch_spec.rb' - - 'spec/features/action_cable_logging_spec.rb' - - 'spec/features/admin/admin_abuse_reports_spec.rb' - - 'spec/features/admin/admin_appearance_spec.rb' - - 'spec/features/admin/admin_browse_spam_logs_spec.rb' - - 'spec/features/admin/admin_mode_spec.rb' - - 'spec/features/admin/admin_settings_spec.rb' - - 'spec/features/admin/admin_system_info_spec.rb' - - 'spec/features/breadcrumbs_schema_markup_spec.rb' - - 'spec/features/dashboard/root_explore_spec.rb' - - 'spec/features/dashboard/shortcuts_spec.rb' - - 'spec/features/display_system_header_and_footer_bar_spec.rb' - - 'spec/features/frequently_visited_projects_and_groups_spec.rb' - - 'spec/features/help_dropdown_spec.rb' - - 'spec/features/help_pages_spec.rb' - - 'spec/features/monitor_sidebar_link_spec.rb' - - 'spec/features/unsubscribe_links_spec.rb' - - 'spec/features/whats_new_spec.rb' - - 'spec/lib/api/helpers_spec.rb' - - 'spec/lib/gitlab/slug/path_spec.rb' - - 'spec/lib/gitlab/utils/strong_memoize_spec.rb' - - 'spec/models/application_setting_spec.rb' - - 'spec/models/namespaces/randomized_suffix_path_spec.rb' - - 'spec/requests/admin/version_check_controller_spec.rb' - - 'spec/requests/api/admin/plan_limits_spec.rb' - - 'spec/requests/api/admin/sidekiq_spec.rb' - - 'spec/requests/api/api_guard/admin_mode_middleware_spec.rb' - - 'spec/requests/api/api_guard/response_coercer_middleware_spec.rb' - - 'spec/requests/api/award_emoji_spec.rb' - - 'spec/requests/api/graphql/custom_emoji_query_spec.rb' - - 'spec/requests/api/graphql/multiplexed_queries_spec.rb' - - 'spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb' - - 'spec/requests/api/graphql/mutations/award_emojis/add_spec.rb' - - 'spec/requests/api/graphql/mutations/award_emojis/remove_spec.rb' - - 'spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb' - - 'spec/requests/api/graphql/mutations/custom_emoji/create_spec.rb' - - 'spec/requests/api/graphql/mutations/custom_emoji/destroy_spec.rb' - - 'spec/requests/api/graphql/query_spec.rb' - - 'spec/requests/api/graphql_spec.rb' - - 'spec/requests/api/internal/workhorse_spec.rb' - - 'spec/requests/api/metadata_spec.rb' - - 'spec/requests/api/settings_spec.rb' - - 'spec/requests/api/sidekiq_metrics_spec.rb' - - 'spec/requests/projects/uploads_spec.rb' - - 'spec/requests/sandbox_controller_spec.rb' - - 'spec/rubocop/cop/gitlab/doc_url_spec.rb' - - 'spec/rubocop/cop/lint/last_keyword_argument_spec.rb' - - 'spec/rubocop/cop/rspec/avoid_test_prof_spec.rb' diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml index fa24075c56..bbd6cccef0 100644 --- a/.rubocop_todo/rspec/missing_feature_category.yml +++ b/.rubocop_todo/rspec/missing_feature_category.yml @@ -1,7 +1,6 @@ --- RSpec/MissingFeatureCategory: Exclude: - - 'ee/spec/components/billing/plan_component_spec.rb' - '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' @@ -118,7 +117,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/finders/incident_management/oncall_users_finder_spec.rb' - 'ee/spec/finders/issues_finder_spec.rb' - 'ee/spec/finders/iterations/cadences_finder_spec.rb' - - 'ee/spec/finders/iterations_finder_spec.rb' - 'ee/spec/finders/license_template_finder_spec.rb' - 'ee/spec/finders/licenses_finder_spec.rb' - 'ee/spec/finders/merge_requests_finder_spec.rb' @@ -138,7 +136,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/finders/security/vulnerability_feedbacks_finder_spec.rb' - 'ee/spec/finders/security/vulnerability_reads_finder_spec.rb' - 'ee/spec/finders/snippets_finder_spec.rb' - - 'ee/spec/finders/software_license_policies_finder_spec.rb' - 'ee/spec/finders/status_page/incident_comments_finder_spec.rb' - 'ee/spec/finders/status_page/incidents_finder_spec.rb' - 'ee/spec/finders/template_finder_spec.rb' @@ -207,8 +204,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/graphql/graphql_triggers_spec.rb' - 'ee/spec/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create_spec.rb' - 'ee/spec/graphql/mutations/app_sec/fuzzing/coverage/corpus/create_spec.rb' - - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/create_spec.rb' - - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/destroy_spec.rb' - 'ee/spec/graphql/mutations/audit_events/streaming/headers/create_spec.rb' - 'ee/spec/graphql/mutations/audit_events/streaming/headers/destroy_spec.rb' - 'ee/spec/graphql/mutations/boards/epic_boards/create_spec.rb' @@ -295,7 +290,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/graphql/resolvers/compliance_management/merge_requests/compliance_violation_resolver_spec.rb' - 'ee/spec/graphql/resolvers/dast_site_profile_resolver_spec.rb' - 'ee/spec/graphql/resolvers/dast_site_validation_resolver_spec.rb' - - 'ee/spec/graphql/resolvers/dora_metrics_resolver_spec.rb' - 'ee/spec/graphql/resolvers/epic_ancestors_resolver_spec.rb' - 'ee/spec/graphql/resolvers/epic_issues_resolver_spec.rb' - 'ee/spec/graphql/resolvers/epics/children_resolver_spec.rb' @@ -397,7 +391,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/graphql/types/deployments/approval_type_spec.rb' - 'ee/spec/graphql/types/dora_metric_bucketing_interval_enum_spec.rb' - 'ee/spec/graphql/types/dora_metric_type_enum_spec.rb' - - 'ee/spec/graphql/types/dora_metric_type_spec.rb' - 'ee/spec/graphql/types/dora_type_spec.rb' - 'ee/spec/graphql/types/epic_connection_type_spec.rb' - 'ee/spec/graphql/types/epic_descendant_count_type_spec.rb' @@ -495,7 +488,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/graphql/types/vulnerability_details/list_type_spec.rb' - 'ee/spec/graphql/types/vulnerability_details/markdown_type_spec.rb' - 'ee/spec/graphql/types/vulnerability_details/module_location_type_spec.rb' - - 'ee/spec/graphql/types/vulnerability_details/table_type_spec.rb' - 'ee/spec/graphql/types/vulnerability_details/text_type_spec.rb' - 'ee/spec/graphql/types/vulnerability_details/url_type_spec.rb' - 'ee/spec/graphql/types/vulnerability_evidence_source_type_spec.rb' @@ -539,7 +531,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/helpers/analytics/code_review_helper_spec.rb' - 'ee/spec/helpers/application_helper_spec.rb' - 'ee/spec/helpers/audit_events_helper_spec.rb' - - 'ee/spec/helpers/billing_plans_helper_spec.rb' - 'ee/spec/helpers/boards_helper_spec.rb' - 'ee/spec/helpers/compliance_management/compliance_framework/group_settings_helper_spec.rb' - 'ee/spec/helpers/credentials_inventory_helper_spec.rb' @@ -560,7 +551,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/helpers/ee/geo_helper_spec.rb' - 'ee/spec/helpers/ee/gitlab_routing_helper_spec.rb' - 'ee/spec/helpers/ee/graph_helper_spec.rb' - - 'ee/spec/helpers/ee/groups/analytics/cycle_analytics_helper_spec.rb' - 'ee/spec/helpers/ee/groups/group_members_helper_spec.rb' - 'ee/spec/helpers/ee/groups/settings_helper_spec.rb' - 'ee/spec/helpers/ee/groups_helper_spec.rb' @@ -629,7 +619,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/initializers/session_store_spec.rb' - 'ee/spec/lib/analytics/devops_adoption/snapshot_calculator_spec.rb' - 'ee/spec/lib/analytics/group_activity_calculator_spec.rb' - - 'ee/spec/lib/analytics/merge_request_metrics_refresh_spec.rb' - 'ee/spec/lib/analytics/productivity_analytics_request_params_spec.rb' - 'ee/spec/lib/analytics/refresh_approvals_data_spec.rb' - 'ee/spec/lib/analytics/refresh_comments_data_spec.rb' @@ -653,7 +642,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb' - 'ee/spec/lib/audit/group_push_rules_changes_auditor_spec.rb' - 'ee/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb' - - 'ee/spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb' - 'ee/spec/lib/banzai/filter/jira_private_image_link_filter_spec.rb' - 'ee/spec/lib/banzai/filter/references/epic_reference_filter_spec.rb' - 'ee/spec/lib/banzai/filter/references/iteration_reference_filter_spec.rb' @@ -667,7 +655,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb' - 'ee/spec/lib/bulk_imports/groups/graphql/get_iterations_query_spec.rb' - 'ee/spec/lib/bulk_imports/groups/pipelines/epics_pipeline_spec.rb' - - 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_cadences_pipeline_spec.rb' - 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_pipeline_spec.rb' - 'ee/spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb' - 'ee/spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb' @@ -748,7 +735,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/ee/gitlab/background_migration/purge_stale_security_scans_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/recalculate_vulnerability_finding_signatures_for_findings_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/update_vulnerability_occurrences_location_spec.rb' - - 'ee/spec/lib/ee/gitlab/checks/push_rule_check_spec.rb' - 'ee/spec/lib/ee/gitlab/checks/push_rules/branch_check_spec.rb' - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb' - 'ee/spec/lib/ee/gitlab/checks/push_rules/file_size_check_spec.rb' @@ -773,7 +759,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/ee/gitlab/database/gitlab_schema_spec.rb' - 'ee/spec/lib/ee/gitlab/database_spec.rb' - 'ee/spec/lib/ee/gitlab/email/handler/service_desk_handler_spec.rb' - - 'ee/spec/lib/ee/gitlab/etag_caching/router/rails_spec.rb' - 'ee/spec/lib/ee/gitlab/event_store_spec.rb' - 'ee/spec/lib/ee/gitlab/git_access_design_spec.rb' - 'ee/spec/lib/ee/gitlab/git_access_project_spec.rb' @@ -803,8 +788,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/ee/gitlab/repo_path_spec.rb' - 'ee/spec/lib/ee/gitlab/repository_size_checker_spec.rb' - 'ee/spec/lib/ee/gitlab/scim/attribute_transform_spec.rb' - - 'ee/spec/lib/ee/gitlab/scim/filter_parser_spec.rb' - - 'ee/spec/lib/ee/gitlab/scim/params_parser_spec.rb' - 'ee/spec/lib/ee/gitlab/scim/value_parser_spec.rb' - 'ee/spec/lib/ee/gitlab/search_results_spec.rb' - 'ee/spec/lib/ee/gitlab/security/scan_configuration_spec.rb' @@ -830,14 +813,11 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/ee/sidebars/projects/menus/issues_menu_spec.rb' - 'ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb' - 'ee/spec/lib/ee/sidebars/projects/menus/repository_menu_spec.rb' - - 'ee/spec/lib/ee/sidebars/projects/menus/security_compliance_menu_spec.rb' - 'ee/spec/lib/ee/sidebars/projects/panel_spec.rb' - - 'ee/spec/lib/elastic/latest/application_instance_proxy_spec.rb' - 'ee/spec/lib/elastic/latest/commit_config_spec.rb' - 'ee/spec/lib/elastic/latest/config_spec.rb' - 'ee/spec/lib/elastic/latest/custom_language_analyzers_spec.rb' - 'ee/spec/lib/elastic/latest/git_instance_proxy_spec.rb' - - 'ee/spec/lib/elastic/latest/issue_class_proxy_spec.rb' - 'ee/spec/lib/elastic/latest/issue_config_spec.rb' - 'ee/spec/lib/elastic/latest/merge_request_config_spec.rb' - 'ee/spec/lib/elastic/latest/note_config_spec.rb' @@ -856,7 +836,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_for_duration_chart_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/distinct_stage_loader_spec.rb' - - 'ee/spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_closed_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_added_to_board_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_associated_with_milestone_spec.rb' @@ -868,11 +847,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_label_added_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_label_removed_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_edited_spec.rb' - - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/base_dora_summary_spec.rb' - - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/change_failure_rate_spec.rb' - - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/lead_time_for_changes_spec.rb' - - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/lead_time_spec.rb' - - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/time_to_restore_service_spec.rb' - 'ee/spec/lib/gitlab/analytics/type_of_work/tasks_by_type_spec.rb' - 'ee/spec/lib/gitlab/audit/auditor_spec.rb' - 'ee/spec/lib/gitlab/audit/events/preloader_spec.rb' @@ -922,10 +896,8 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/ci/config/entry/vault/engine_spec.rb' - 'ee/spec/lib/gitlab/ci/config/entry/vault/secret_spec.rb' - 'ee/spec/lib/gitlab/ci/config/required/processor_spec.rb' - - 'ee/spec/lib/gitlab/ci/minutes/build_consumption_spec.rb' - 'ee/spec/lib/gitlab/ci/minutes/cached_quota_spec.rb' - 'ee/spec/lib/gitlab/ci/minutes/cost_factor_spec.rb' - - 'ee/spec/lib/gitlab/ci/minutes/gitlab_contribution_cost_factor_spec.rb' - 'ee/spec/lib/gitlab/ci/minutes/runners_availability_spec.rb' - 'ee/spec/lib/gitlab/ci/parsers/license_compliance/license_scanning_spec.rb' - 'ee/spec/lib/gitlab/ci/parsers/metrics/generic_spec.rb' @@ -936,7 +908,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/ci/parsers/security/dependency_scanning_spec.rb' - 'ee/spec/lib/gitlab/ci/parsers/security/formatters/dependency_list_spec.rb' - 'ee/spec/lib/gitlab/ci/parsers/security/validators/default_branch_image_validator_spec.rb' - - 'ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb' - 'ee/spec/lib/gitlab/ci/pipeline/chain/create_cross_database_associations_spec.rb' - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/activity_spec.rb' - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/size_spec.rb' @@ -965,16 +936,7 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/ci/templates/secure_binaries_ci_yaml_spec.rb' - 'ee/spec/lib/gitlab/ci/yaml_processor_spec.rb' - 'ee/spec/lib/gitlab/cidr_spec.rb' - - 'ee/spec/lib/gitlab/code_owners/entry_spec.rb' - - 'ee/spec/lib/gitlab/code_owners/groups_loader_spec.rb' - - 'ee/spec/lib/gitlab/code_owners/loader_spec.rb' - - 'ee/spec/lib/gitlab/code_owners/reference_extractor_spec.rb' - - 'ee/spec/lib/gitlab/code_owners/users_loader_spec.rb' - - 'ee/spec/lib/gitlab/code_owners/validator_spec.rb' - - 'ee/spec/lib/gitlab/code_owners_spec.rb' - 'ee/spec/lib/gitlab/com_spec.rb' - - 'ee/spec/lib/gitlab/console_spec.rb' - - 'ee/spec/lib/gitlab/contribution_analytics/data_collector_spec.rb' - 'ee/spec/lib/gitlab/custom_file_templates_spec.rb' - 'ee/spec/lib/gitlab/customers_dot/jwt_spec.rb' - 'ee/spec/lib/gitlab/data_builder/vulnerability_spec.rb' @@ -1048,7 +1010,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/import_sources_spec.rb' - 'ee/spec/lib/gitlab/incident_management_spec.rb' - 'ee/spec/lib/gitlab/ingestion/bulk_insertable_task_spec.rb' - - 'ee/spec/lib/gitlab/insights/executors/dora_executor_spec.rb' - 'ee/spec/lib/gitlab/insights/executors/issuable_executor_spec.rb' - 'ee/spec/lib/gitlab/insights/finders/projects_finder_spec.rb' - 'ee/spec/lib/gitlab/insights/loader_spec.rb' @@ -1109,7 +1070,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/gitlab/status_page/usage_data_counters/incident_counter_spec.rb' - 'ee/spec/lib/gitlab/status_page_spec.rb' - 'ee/spec/lib/gitlab/subscription_portal/client_spec.rb' - - 'ee/spec/lib/gitlab/subscription_portal/clients/graphql_spec.rb' - 'ee/spec/lib/gitlab/subscription_portal/clients/rest_spec.rb' - 'ee/spec/lib/gitlab/template/custom_templates_spec.rb' - 'ee/spec/lib/gitlab/tracking/snowplow_schema_validation_spec.rb' @@ -1164,11 +1124,8 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/omni_auth/strategies/kerberos_spec.rb' - 'ee/spec/lib/peek/views/elasticsearch_spec.rb' - 'ee/spec/lib/quality/seeders/vulnerabilities_spec.rb' - - 'ee/spec/lib/sidebars/groups/menus/administration_menu_spec.rb' - 'ee/spec/lib/sidebars/groups/menus/analytics_menu_spec.rb' - - 'ee/spec/lib/sidebars/groups/menus/epics_menu_spec.rb' - 'ee/spec/lib/sidebars/groups/menus/security_compliance_menu_spec.rb' - - 'ee/spec/lib/sidebars/groups/menus/wiki_menu_spec.rb' - 'ee/spec/lib/slack/api_spec.rb' - 'ee/spec/lib/slack/block_kit/app_home_opened_spec.rb' - 'ee/spec/lib/slack/block_kit/incident_management/incident_modal_opened_spec.rb' @@ -1186,14 +1143,12 @@ RSpec/MissingFeatureCategory: - 'ee/spec/mailers/emails/free_user_cap_spec.rb' - 'ee/spec/mailers/emails/group_memberships_spec.rb' - 'ee/spec/mailers/emails/in_product_marketing_spec.rb' - - 'ee/spec/mailers/emails/merge_commits_spec.rb' - 'ee/spec/mailers/emails/namespace_storage_usage_mailer_spec.rb' - 'ee/spec/mailers/emails/requirements_spec.rb' - 'ee/spec/mailers/emails/user_cap_spec.rb' - 'ee/spec/mailers/license_mailer_spec.rb' - 'ee/spec/mailers/notify_spec.rb' - 'ee/spec/models/alert_management/alert_payload_field_spec.rb' - - 'ee/spec/models/allowed_email_domain_spec.rb' - 'ee/spec/models/analytics/cycle_analytics/aggregation_context_spec.rb' - 'ee/spec/models/analytics/cycle_analytics/runtime_limiter_spec.rb' - 'ee/spec/models/analytics/devops_adoption/enabled_namespace_spec.rb' @@ -1223,7 +1178,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/boards/epic_user_preference_spec.rb' - 'ee/spec/models/broadcast_message_spec.rb' - 'ee/spec/models/ci/bridge_spec.rb' - - 'ee/spec/models/ci/build_spec.rb' - 'ee/spec/models/ci/daily_build_group_report_result_spec.rb' - 'ee/spec/models/ci/minutes/additional_pack_spec.rb' - 'ee/spec/models/ci/minutes/context_spec.rb' @@ -1250,8 +1204,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/concerns/ee/participable_spec.rb' - 'ee/spec/models/concerns/ee/project_security_scanners_information_spec.rb' - 'ee/spec/models/concerns/ee/weight_eventable_spec.rb' - - 'ee/spec/models/concerns/elastic/application_versioned_search_spec.rb' - - 'ee/spec/models/concerns/elastic/issue_spec.rb' - 'ee/spec/models/concerns/elastic/merge_request_spec.rb' - 'ee/spec/models/concerns/elastic/milestone_spec.rb' - 'ee/spec/models/concerns/elastic/project_wiki_spec.rb' @@ -1266,7 +1218,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/concerns/geo/verifiable_model_spec.rb' - 'ee/spec/models/concerns/geo/verification_state_spec.rb' - 'ee/spec/models/concerns/health_status_spec.rb' - - 'ee/spec/models/concerns/identity_verifiable_spec.rb' - 'ee/spec/models/concerns/incident_management/base_pending_escalation_spec.rb' - 'ee/spec/models/concerns/mirror_configuration_spec.rb' - 'ee/spec/models/concerns/password_complexity_spec.rb' @@ -1359,22 +1310,11 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/epic/related_epic_link_spec.rb' - 'ee/spec/models/epic_user_mention_spec.rb' - 'ee/spec/models/geo/cache_invalidation_event_spec.rb' - - 'ee/spec/models/geo/ci_secure_file_registry_spec.rb' - - 'ee/spec/models/geo/container_repository_registry_spec.rb' - 'ee/spec/models/geo/deleted_project_spec.rb' - - 'ee/spec/models/geo/dependency_proxy_blob_registry_spec.rb' - - 'ee/spec/models/geo/dependency_proxy_manifest_registry_spec.rb' - 'ee/spec/models/geo/event_log_spec.rb' - 'ee/spec/models/geo/event_log_state_spec.rb' - 'ee/spec/models/geo/every_geo_event_spec.rb' - - 'ee/spec/models/geo/group_wiki_repository_registry_spec.rb' - 'ee/spec/models/geo/hashed_storage_migrated_event_spec.rb' - - 'ee/spec/models/geo/job_artifact_registry_spec.rb' - - 'ee/spec/models/geo/lfs_object_registry_spec.rb' - - 'ee/spec/models/geo/merge_request_diff_registry_spec.rb' - - 'ee/spec/models/geo/pages_deployment_registry_spec.rb' - - 'ee/spec/models/geo/pipeline_artifact_registry_spec.rb' - - 'ee/spec/models/geo/project_wiki_repository_registry_spec.rb' - 'ee/spec/models/geo/project_wiki_repository_state_spec.rb' - 'ee/spec/models/geo/push_user_spec.rb' - 'ee/spec/models/geo/repositories_changed_event_spec.rb' @@ -1383,16 +1323,12 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/geo/repository_updated_event_spec.rb' - 'ee/spec/models/geo/reset_checksum_event_spec.rb' - 'ee/spec/models/geo/secondary_usage_data_spec.rb' - - 'ee/spec/models/geo/snippet_repository_registry_spec.rb' - - 'ee/spec/models/geo/terraform_state_version_registry_spec.rb' - 'ee/spec/models/geo/tracking_base_spec.rb' - - 'ee/spec/models/geo/upload_registry_spec.rb' - 'ee/spec/models/geo/upload_state_spec.rb' - 'ee/spec/models/geo_node_namespace_link_spec.rb' - 'ee/spec/models/geo_node_spec.rb' - 'ee/spec/models/gitlab/seat_link_data_spec.rb' - 'ee/spec/models/gitlab_subscription_history_spec.rb' - - 'ee/spec/models/gitlab_subscription_spec.rb' - 'ee/spec/models/gitlab_subscriptions/features_spec.rb' - 'ee/spec/models/gitlab_subscriptions/upcoming_reconciliation_spec.rb' - 'ee/spec/models/group_deletion_schedule_spec.rb' @@ -1468,20 +1404,17 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/requirements_management/requirement_spec.rb' - 'ee/spec/models/saml_group_link_spec.rb' - 'ee/spec/models/saml_provider_spec.rb' - - 'ee/spec/models/sca/license_policy_spec.rb' - 'ee/spec/models/scoped_label_set_spec.rb' - 'ee/spec/models/security/orchestration_policy_rule_schedule_spec.rb' - 'ee/spec/models/security/training_provider_spec.rb' - 'ee/spec/models/security/training_spec.rb' - 'ee/spec/models/snippet_repository_spec.rb' - 'ee/spec/models/snippet_spec.rb' - - 'ee/spec/models/software_license_policy_spec.rb' - 'ee/spec/models/status_page/project_setting_spec.rb' - 'ee/spec/models/status_page/published_incident_spec.rb' - 'ee/spec/models/storage_shard_spec.rb' - 'ee/spec/models/upload_spec.rb' - 'ee/spec/models/uploads/local_spec.rb' - - 'ee/spec/models/user_detail_spec.rb' - 'ee/spec/models/user_permission_export_upload_spec.rb' - 'ee/spec/models/user_preference_spec.rb' - 'ee/spec/models/users_security_dashboard_project_spec.rb' @@ -1514,7 +1447,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/policies/geo/registry_policy_spec.rb' - 'ee/spec/policies/geo_node_policy_spec.rb' - 'ee/spec/policies/group_hook_policy_spec.rb' - - 'ee/spec/policies/group_policy_spec.rb' - 'ee/spec/policies/identity_provider_policy_spec.rb' - 'ee/spec/policies/incident_management/oncall_rotation_policy_spec.rb' - 'ee/spec/policies/incident_management/oncall_schedule_policy_spec.rb' @@ -1657,7 +1589,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/serializers/protected_environments/deploy_access_level_entity_spec.rb' - 'ee/spec/serializers/protected_environments/entity_spec.rb' - 'ee/spec/serializers/scim_oauth_access_token_entity_spec.rb' - - 'ee/spec/serializers/security/license_policy_entity_spec.rb' - 'ee/spec/serializers/security/vulnerability_report_data_entity_spec.rb' - 'ee/spec/serializers/security/vulnerability_report_data_serializer_spec.rb' - 'ee/spec/serializers/status_page/incident_comment_entity_spec.rb' @@ -1722,7 +1653,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/arkose/blocked_users_report_service_spec.rb' - 'ee/spec/services/arkose/record_user_data_service_spec.rb' - 'ee/spec/services/arkose/token_verification_service_spec.rb' - - 'ee/spec/services/audit_event_service_spec.rb' - 'ee/spec/services/audit_events/build_service_spec.rb' - 'ee/spec/services/audit_events/custom_audit_event_service_spec.rb' - 'ee/spec/services/audit_events/impersonation_audit_event_service_spec.rb' @@ -1732,11 +1662,8 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/audit_events/release_associate_milestone_audit_event_service_spec.rb' - 'ee/spec/services/audit_events/release_created_audit_event_service_spec.rb' - 'ee/spec/services/audit_events/release_updated_audit_event_service_spec.rb' - - 'ee/spec/services/audit_events/repository_download_started_audit_event_service_spec.rb' - 'ee/spec/services/audit_events/runner_custom_audit_event_service_spec.rb' - 'ee/spec/services/audit_events/runners_token_audit_event_service_spec.rb' - - 'ee/spec/services/audit_events/streaming/event_type_filters/create_service_spec.rb' - - 'ee/spec/services/audit_events/streaming/event_type_filters/destroy_service_spec.rb' - 'ee/spec/services/audit_events/streaming/headers/base_spec.rb' - 'ee/spec/services/audit_events/streaming/headers/create_service_spec.rb' - 'ee/spec/services/audit_events/streaming/headers/destroy_service_spec.rb' @@ -1748,7 +1675,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb' - 'ee/spec/services/award_emojis/add_service_spec.rb' - 'ee/spec/services/award_emojis/destroy_service_spec.rb' - - 'ee/spec/services/base_count_service_spec.rb' - 'ee/spec/services/billable_members/destroy_service_spec.rb' - 'ee/spec/services/boards/create_service_spec.rb' - 'ee/spec/services/boards/epic_boards/create_service_spec.rb' @@ -1767,335 +1693,11 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/boards/update_service_spec.rb' - 'ee/spec/services/boards/user_preferences/update_service_spec.rb' - 'ee/spec/services/branches/delete_service_spec.rb' - - 'ee/spec/services/ci/audit_variable_change_service_spec.rb' - - 'ee/spec/services/ci/compare_metrics_reports_service_spec.rb' - - 'ee/spec/services/ci/compare_security_reports_service_spec.rb' - - 'ee/spec/services/ci/copy_cross_database_associations_service_spec.rb' - - 'ee/spec/services/ci/create_pipeline_service/compliance_spec.rb' - - 'ee/spec/services/ci/create_pipeline_service/cross_needs_artifacts_spec.rb' - - 'ee/spec/services/ci/create_pipeline_service/dast_configuration_spec.rb' - - 'ee/spec/services/ci/create_pipeline_service/needs_spec.rb' - - 'ee/spec/services/ci/create_pipeline_service/runnable_builds_spec.rb' - - 'ee/spec/services/ci/create_pipeline_service_spec.rb' - - 'ee/spec/services/ci/destroy_pipeline_service_spec.rb' - - 'ee/spec/services/ci/external_pull_requests/process_github_event_service_spec.rb' - - 'ee/spec/services/ci/minutes/additional_packs/change_namespace_service_spec.rb' - - 'ee/spec/services/ci/minutes/additional_packs/create_service_spec.rb' - - 'ee/spec/services/ci/minutes/batch_reset_service_spec.rb' - - 'ee/spec/services/ci/minutes/email_notification_service_spec.rb' - - 'ee/spec/services/ci/minutes/refresh_cached_data_service_spec.rb' - - 'ee/spec/services/ci/minutes/reset_usage_service_spec.rb' - - 'ee/spec/services/ci/minutes/track_live_consumption_service_spec.rb' - - 'ee/spec/services/ci/minutes/update_build_minutes_service_spec.rb' - - 'ee/spec/services/ci/pipeline_bridge_status_service_spec.rb' - - 'ee/spec/services/ci/pipeline_creation/drop_not_runnable_builds_service_spec.rb' - - 'ee/spec/services/ci/pipeline_creation/start_pipeline_service_spec.rb' - - 'ee/spec/services/ci/pipeline_trigger_service_spec.rb' - - 'ee/spec/services/ci/play_bridge_service_spec.rb' - - 'ee/spec/services/ci/play_build_service_spec.rb' - - 'ee/spec/services/ci/process_build_service_spec.rb' - - 'ee/spec/services/ci/process_pipeline_service_spec.rb' - - 'ee/spec/services/ci/retry_job_service_spec.rb' - - 'ee/spec/services/ci/retry_pipeline_service_spec.rb' - - 'ee/spec/services/ci/subscribe_bridge_service_spec.rb' - - 'ee/spec/services/ci/trigger_downstream_subscription_service_spec.rb' - - 'ee/spec/services/ci_cd/github_integration_setup_service_spec.rb' - - 'ee/spec/services/ci_cd/github_setup_service_spec.rb' - - 'ee/spec/services/ci_cd/setup_project_spec.rb' - - 'ee/spec/services/compliance_management/frameworks/create_service_spec.rb' - - 'ee/spec/services/compliance_management/frameworks/destroy_service_spec.rb' - - 'ee/spec/services/compliance_management/frameworks/update_service_spec.rb' - - 'ee/spec/services/compliance_management/merge_requests/create_compliance_violations_service_spec.rb' - - 'ee/spec/services/concerns/epics/related_epic_links/usage_data_helper_spec.rb' - - 'ee/spec/services/dashboard/environments/list_service_spec.rb' - - 'ee/spec/services/dashboard/operations/list_service_spec.rb' - - 'ee/spec/services/dashboard/projects/create_service_spec.rb' - - 'ee/spec/services/dashboard/projects/list_service_spec.rb' - - 'ee/spec/services/deploy_keys/create_service_spec.rb' - - 'ee/spec/services/deployments/auto_rollback_service_spec.rb' - - 'ee/spec/services/ee/admin/set_feature_flag_service_spec.rb' - - 'ee/spec/services/ee/alert_management/alerts/update_service_spec.rb' - - 'ee/spec/services/ee/alert_management/create_alert_issue_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/allowed_email_domains/update_service_spec.rb' - - 'ee/spec/services/ee/auth/container_registry_authentication_service_spec.rb' - - 'ee/spec/services/ee/auto_merge_service_spec.rb' - - 'ee/spec/services/ee/boards/issues/create_service_spec.rb' - - 'ee/spec/services/ee/boards/issues/list_service_spec.rb' - - 'ee/spec/services/ee/boards/issues/move_service_spec.rb' - - 'ee/spec/services/ee/boards/lists/create_service_spec.rb' - - 'ee/spec/services/ee/boards/lists/list_service_spec.rb' - - 'ee/spec/services/ee/boards/lists/max_limits_spec.rb' - - 'ee/spec/services/ee/ci/change_variable_service_spec.rb' - - 'ee/spec/services/ee/ci/change_variables_service_spec.rb' - - 'ee/spec/services/ee/ci/job_artifacts/create_service_spec.rb' - - 'ee/spec/services/ee/ci/job_artifacts/destroy_all_expired_service_spec.rb' - - 'ee/spec/services/ee/ci/job_artifacts/destroy_batch_service_spec.rb' - - 'ee/spec/services/ee/ci/pipeline_processing/atomic_processing_service_spec.rb' - - 'ee/spec/services/ee/commits/create_service_spec.rb' - - 'ee/spec/services/ee/deployments/update_environment_service_spec.rb' - - 'ee/spec/services/ee/design_management/delete_designs_service_spec.rb' - - 'ee/spec/services/ee/design_management/save_designs_service_spec.rb' - - 'ee/spec/services/ee/event_create_service_spec.rb' - - 'ee/spec/services/ee/git/branch_push_service_spec.rb' - - 'ee/spec/services/ee/git/wiki_push_service_spec.rb' - - 'ee/spec/services/ee/gpg_keys/create_service_spec.rb' - - 'ee/spec/services/ee/gpg_keys/destroy_service_spec.rb' - - 'ee/spec/services/ee/groups/autocomplete_service_spec.rb' - - 'ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb' - - 'ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb' - - 'ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb' - - 'ee/spec/services/ee/groups/import_export/export_service_spec.rb' - - 'ee/spec/services/ee/groups/import_export/import_service_spec.rb' - - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/after_update_service_spec.rb' - - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/create_service_spec.rb' - - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb' - - 'ee/spec/services/ee/integrations/test/project_service_spec.rb' - - 'ee/spec/services/ee/ip_restrictions/update_service_spec.rb' - - 'ee/spec/services/ee/issuable/bulk_update_service_spec.rb' - - 'ee/spec/services/ee/issuable/common_system_notes_service_spec.rb' - - 'ee/spec/services/ee/issuable/destroy_service_spec.rb' - - 'ee/spec/services/ee/issue_links/create_service_spec.rb' - - 'ee/spec/services/ee/issues/after_create_service_spec.rb' - - 'ee/spec/services/ee/issues/clone_service_spec.rb' - - 'ee/spec/services/ee/issues/move_service_spec.rb' - - 'ee/spec/services/ee/keys/destroy_service_spec.rb' - - 'ee/spec/services/ee/labels/create_service_spec.rb' - - 'ee/spec/services/ee/labels/promote_service_spec.rb' - - 'ee/spec/services/ee/members/create_service_spec.rb' - - 'ee/spec/services/ee/members/destroy_service_spec.rb' - - 'ee/spec/services/ee/members/import_project_team_service_spec.rb' - - 'ee/spec/services/ee/members/invite_service_spec.rb' - - 'ee/spec/services/ee/members/update_service_spec.rb' - - 'ee/spec/services/ee/merge_request_metrics_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/base_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/create_approval_event_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/create_from_vulnerability_data_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/create_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/execute_approval_hooks_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/handle_assignees_change_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/post_merge_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/update_assignees_service_spec.rb' - - 'ee/spec/services/ee/merge_requests/update_reviewers_service_spec.rb' - - 'ee/spec/services/ee/namespace_settings/update_service_spec.rb' - 'ee/spec/services/ee/notes/destroy_service_spec.rb' - 'ee/spec/services/ee/notes/post_process_service_spec.rb' - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb' - 'ee/spec/services/ee/notes/update_service_spec.rb' - - 'ee/spec/services/ee/null_notification_service_spec.rb' - - 'ee/spec/services/ee/personal_access_tokens/revoke_service_spec.rb' - - 'ee/spec/services/ee/post_receive_service_spec.rb' - - 'ee/spec/services/ee/preview_markdown_service_spec.rb' - - 'ee/spec/services/ee/projects/autocomplete_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/ee/protected_branches/update_service_spec.rb' - - 'ee/spec/services/ee/quick_actions/target_service_spec.rb' - - 'ee/spec/services/ee/releases/create_evidence_service_spec.rb' - - 'ee/spec/services/ee/resource_events/change_iteration_service_spec.rb' - - 'ee/spec/services/ee/resource_events/change_labels_service_spec.rb' - - 'ee/spec/services/ee/resource_events/merge_into_notes_service_spec.rb' - - 'ee/spec/services/ee/resource_events/synthetic_iteration_notes_builder_service_spec.rb' - - 'ee/spec/services/ee/resource_events/synthetic_weight_notes_builder_service_spec.rb' - - 'ee/spec/services/ee/system_notes/issuables_service_spec.rb' - - 'ee/spec/services/ee/terraform/states/destroy_service_spec.rb' - - 'ee/spec/services/ee/todos/destroy/entity_leave_service_spec.rb' - - 'ee/spec/services/ee/users/approve_service_spec.rb' - - 'ee/spec/services/ee/users/authorized_build_service_spec.rb' - - 'ee/spec/services/ee/users/block_service_spec.rb' - - 'ee/spec/services/ee/users/build_service_spec.rb' - - 'ee/spec/services/ee/users/create_service_spec.rb' - - 'ee/spec/services/ee/users/destroy_service_spec.rb' - - 'ee/spec/services/ee/users/migrate_records_to_ghost_user_service_spec.rb' - - 'ee/spec/services/ee/users/reject_service_spec.rb' - - 'ee/spec/services/ee/users/update_service_spec.rb' - - 'ee/spec/services/ee/vulnerability_feedback_module/update_service_spec.rb' - - 'ee/spec/services/elastic/cluster_reindexing_service_spec.rb' - - 'ee/spec/services/elastic/data_migration_service_spec.rb' - - 'ee/spec/services/elastic/index_projects_by_id_service_spec.rb' - - 'ee/spec/services/elastic/index_projects_by_range_service_spec.rb' - - 'ee/spec/services/elastic/index_projects_service_spec.rb' - - 'ee/spec/services/elastic/indexing_control_service_spec.rb' - - 'ee/spec/services/elastic/metrics_update_service_spec.rb' - - 'ee/spec/services/elastic/process_initial_bookkeeping_service_spec.rb' - - 'ee/spec/services/emails/create_service_spec.rb' - - 'ee/spec/services/emails/destroy_service_spec.rb' - - 'ee/spec/services/epic_issues/destroy_service_spec.rb' - - 'ee/spec/services/epic_issues/list_service_spec.rb' - - 'ee/spec/services/epic_issues/update_service_spec.rb' - - 'ee/spec/services/epics/close_service_spec.rb' - - 'ee/spec/services/epics/create_service_spec.rb' - - 'ee/spec/services/epics/descendant_count_service_spec.rb' - - 'ee/spec/services/epics/epic_links/list_service_spec.rb' - - 'ee/spec/services/epics/issue_promote_service_spec.rb' - - 'ee/spec/services/epics/reopen_service_spec.rb' - - 'ee/spec/services/epics/transfer_service_spec.rb' - - 'ee/spec/services/epics/update_dates_service_spec.rb' - - 'ee/spec/services/epics/update_service_spec.rb' - 'ee/spec/services/external_status_checks/create_service_spec.rb' - - 'ee/spec/services/external_status_checks/destroy_service_spec.rb' - - 'ee/spec/services/external_status_checks/dispatch_service_spec.rb' - - 'ee/spec/services/external_status_checks/update_service_spec.rb' - - 'ee/spec/services/feature_flag_issues/destroy_service_spec.rb' - - 'ee/spec/services/geo/base_file_service_spec.rb' - - 'ee/spec/services/geo/blob_download_service_spec.rb' - - 'ee/spec/services/geo/blob_upload_service_spec.rb' - - 'ee/spec/services/geo/cache_invalidation_event_store_spec.rb' - - 'ee/spec/services/geo/container_repository_registry_removal_service_spec.rb' - - 'ee/spec/services/geo/container_repository_sync_service_spec.rb' - - 'ee/spec/services/geo/container_repository_sync_spec.rb' - - 'ee/spec/services/geo/event_service_spec.rb' - - 'ee/spec/services/geo/file_registry_removal_service_spec.rb' - - 'ee/spec/services/geo/files_expire_service_spec.rb' - - 'ee/spec/services/geo/framework_repository_sync_service_spec.rb' - - 'ee/spec/services/geo/graphql_request_service_spec.rb' - - 'ee/spec/services/geo/hashed_storage_attachments_event_store_spec.rb' - - 'ee/spec/services/geo/hashed_storage_attachments_migration_service_spec.rb' - - 'ee/spec/services/geo/hashed_storage_migrated_event_store_spec.rb' - - 'ee/spec/services/geo/hashed_storage_migration_service_spec.rb' - - 'ee/spec/services/geo/metrics_update_service_spec.rb' - - 'ee/spec/services/geo/move_repository_service_spec.rb' - - 'ee/spec/services/geo/node_create_service_spec.rb' - - 'ee/spec/services/geo/node_status_request_service_spec.rb' - - 'ee/spec/services/geo/node_update_service_spec.rb' - - 'ee/spec/services/geo/project_housekeeping_service_spec.rb' - - 'ee/spec/services/geo/prune_event_log_service_spec.rb' - - 'ee/spec/services/geo/rename_repository_service_spec.rb' - - 'ee/spec/services/geo/replication_toggle_request_service_spec.rb' - - 'ee/spec/services/geo/repositories_changed_event_store_spec.rb' - - 'ee/spec/services/geo/repository_base_sync_service_spec.rb' - - 'ee/spec/services/geo/repository_created_event_store_spec.rb' - - 'ee/spec/services/geo/repository_deleted_event_store_spec.rb' - - 'ee/spec/services/geo/repository_destroy_service_spec.rb' - - 'ee/spec/services/geo/repository_registry_removal_service_spec.rb' - - 'ee/spec/services/geo/repository_renamed_event_store_spec.rb' - - 'ee/spec/services/geo/repository_updated_event_store_spec.rb' - - 'ee/spec/services/geo/repository_updated_service_spec.rb' - - 'ee/spec/services/geo/repository_verification_reset_spec.rb' - - 'ee/spec/services/geo/reset_checksum_event_store_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/activate_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/check_future_renewal_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/create_hand_raise_lead_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/create_lead_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/create_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/create_trial_or_lead_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/extend_reactivate_trial_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/fetch_purchase_eligible_namespaces_service_spec.rb' - - 'ee/spec/services/gitlab_subscriptions/fetch_subscription_plans_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/gitlab_subscriptions/trials/apply_trial_service_spec.rb' - - 'ee/spec/services/group_saml/group_managed_accounts/clean_up_members_service_spec.rb' - - 'ee/spec/services/group_saml/group_managed_accounts/transfer_membership_service_spec.rb' - - 'ee/spec/services/group_saml/identity/destroy_service_spec.rb' - - 'ee/spec/services/group_saml/saml_group_links/create_service_spec.rb' - - 'ee/spec/services/group_saml/saml_group_links/destroy_service_spec.rb' - - 'ee/spec/services/group_saml/saml_provider/create_service_spec.rb' - - 'ee/spec/services/group_saml/saml_provider/update_service_spec.rb' - - 'ee/spec/services/group_saml/sign_up_service_spec.rb' - - 'ee/spec/services/groups/create_service_spec.rb' - - 'ee/spec/services/groups/epics_count_service_spec.rb' - - 'ee/spec/services/groups/mark_for_deletion_service_spec.rb' - - 'ee/spec/services/groups/memberships/export_service_spec.rb' - - 'ee/spec/services/groups/participants_service_spec.rb' - - 'ee/spec/services/groups/restore_service_spec.rb' - - 'ee/spec/services/groups/schedule_bulk_repository_shard_moves_service_spec.rb' - - 'ee/spec/services/groups/seat_usage_export_service_spec.rb' - - 'ee/spec/services/groups/transfer_service_spec.rb' - - 'ee/spec/services/groups/update_repository_storage_service_spec.rb' - - 'ee/spec/services/groups/update_service_spec.rb' - - 'ee/spec/services/historical_user_data/csv_service_spec.rb' - - 'ee/spec/services/ide/schemas_config_service_spec.rb' - - 'ee/spec/services/incident_management/create_incident_sla_exceeded_label_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_policies/create_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_policies/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_policies/update_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_rules/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/incidents/create_sla_service_spec.rb' - - 'ee/spec/services/incident_management/incidents/upload_metric_service_spec.rb' - - 'ee/spec/services/incident_management/issuable_resource_links/create_service_spec.rb' - - 'ee/spec/services/incident_management/issuable_resource_links/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/issuable_resource_links/zoom_link_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/create_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/edit_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/remove_participant_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/remove_participants_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_schedules/create_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_schedules/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_schedules/update_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_shifts/read_service_spec.rb' - - 'ee/spec/services/incident_management/pending_escalations/create_service_spec.rb' - - 'ee/spec/services/incident_management/pending_escalations/process_service_spec.rb' - - 'ee/spec/services/integrations/slack_event_service_spec.rb' - - 'ee/spec/services/integrations/slack_events/app_home_opened_service_spec.rb' - - 'ee/spec/services/integrations/slack_events/url_verification_service_spec.rb' - - 'ee/spec/services/integrations/slack_interactions/incident_management/incident_modal_closed_service_spec.rb' - - 'ee/spec/services/issuable/destroy_label_links_service_spec.rb' - - 'ee/spec/services/issuable/discussions_list_service_spec.rb' - - 'ee/spec/services/issue_feature_flags/list_service_spec.rb' - - 'ee/spec/services/issues/build_service_spec.rb' - - 'ee/spec/services/issues/duplicate_service_spec.rb' - - 'ee/spec/services/iterations/cadences/create_iterations_in_advance_service_spec.rb' - - 'ee/spec/services/iterations/cadences/create_service_spec.rb' - - 'ee/spec/services/iterations/cadences/destroy_service_spec.rb' - - 'ee/spec/services/iterations/cadences/update_service_spec.rb' - - 'ee/spec/services/iterations/create_service_spec.rb' - - 'ee/spec/services/iterations/delete_service_spec.rb' - - 'ee/spec/services/iterations/update_service_spec.rb' - - 'ee/spec/services/jira/jql_builder_service_spec.rb' - - 'ee/spec/services/jira/requests/issues/list_service_spec.rb' - - 'ee/spec/services/keys/create_service_spec.rb' - - 'ee/spec/services/keys/last_used_service_spec.rb' - - 'ee/spec/services/ldap_group_reset_service_spec.rb' - - 'ee/spec/services/lfs/lock_file_service_spec.rb' - - 'ee/spec/services/lfs/unlock_file_service_spec.rb' - - 'ee/spec/services/licenses/destroy_service_spec.rb' - - 'ee/spec/services/members/activate_service_spec.rb' - - 'ee/spec/services/members/await_service_spec.rb' - - 'ee/spec/services/merge_commits/export_csv_service_spec.rb' - - 'ee/spec/services/merge_request_approval_settings/update_service_spec.rb' - - 'ee/spec/services/merge_requests/approval_service_spec.rb' - - 'ee/spec/services/merge_requests/build_service_spec.rb' - - 'ee/spec/services/merge_requests/merge_service_spec.rb' - - 'ee/spec/services/merge_requests/merge_to_ref_service_spec.rb' - - 'ee/spec/services/merge_requests/mergeability/check_approved_service_spec.rb' - - 'ee/spec/services/merge_requests/mergeability/check_blocked_by_other_mrs_service_spec.rb' - - 'ee/spec/services/merge_requests/mergeability/check_denied_policies_service_spec.rb' - - 'ee/spec/services/merge_requests/mergeability/check_external_status_checks_passed_service_spec.rb' - - 'ee/spec/services/merge_requests/push_options_handler_service_spec.rb' - - 'ee/spec/services/merge_requests/reload_merge_head_diff_service_spec.rb' - - 'ee/spec/services/merge_requests/remove_approval_service_spec.rb' - - 'ee/spec/services/merge_requests/stream_approval_audit_event_service_spec.rb' - - 'ee/spec/services/merge_requests/sync_code_owner_approval_rules_spec.rb' - - 'ee/spec/services/merge_requests/sync_report_approver_approval_rules_spec.rb' - - 'ee/spec/services/merge_requests/update_blocks_service_spec.rb' - - 'ee/spec/services/merge_trains/check_status_service_spec.rb' - - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb' - - 'ee/spec/services/merge_trains/refresh_service_spec.rb' - - 'ee/spec/services/milestones/destroy_service_spec.rb' - - 'ee/spec/services/milestones/promote_service_spec.rb' - - 'ee/spec/services/milestones/update_service_spec.rb' - - 'ee/spec/services/namespaces/in_product_marketing_emails_service_spec.rb' - - 'ee/spec/services/namespaces/storage/email_notification_service_spec.rb' - - 'ee/spec/services/path_locks/lock_service_spec.rb' - - 'ee/spec/services/path_locks/unlock_service_spec.rb' - - 'ee/spec/services/personal_access_tokens/create_service_audit_log_spec.rb' - - 'ee/spec/services/personal_access_tokens/groups/update_lifetime_service_spec.rb' - - 'ee/spec/services/personal_access_tokens/instance/update_lifetime_service_spec.rb' - - 'ee/spec/services/personal_access_tokens/revoke_invalid_tokens_spec.rb' - - 'ee/spec/services/personal_access_tokens/revoke_service_audit_log_spec.rb' - - 'ee/spec/services/personal_access_tokens/rotation_verifier_service_spec.rb' - - 'ee/spec/services/phone_verification/telesign_client/base_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/telesign_client/verify_code_service_spec.rb' - - 'ee/spec/services/phone_verification/users/send_verification_code_service_spec.rb' - - 'ee/spec/services/product_analytics/initialize_stack_service_spec.rb' - 'ee/spec/services/projects/after_rename_service_spec.rb' - 'ee/spec/services/projects/alerting/notify_service_spec.rb' - 'ee/spec/services/projects/cleanup_service_spec.rb' @@ -2135,102 +1737,7 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/requirements_management/process_test_reports_service_spec.rb' - 'ee/spec/services/resource_access_tokens/create_service_spec.rb' - 'ee/spec/services/resource_access_tokens/revoke_service_spec.rb' - - 'ee/spec/services/search/snippet_service_spec.rb' - - 'ee/spec/services/security/auto_fix_label_service_spec.rb' - - 'ee/spec/services/security/auto_fix_service_spec.rb' - - 'ee/spec/services/security/configuration/save_auto_fix_service_spec.rb' - - 'ee/spec/services/security/dependency_list_service_spec.rb' - - 'ee/spec/services/security/findings/dismiss_service_spec.rb' - - 'ee/spec/services/security/ingestion/finding_map_collection_spec.rb' - - 'ee/spec/services/security/ingestion/finding_map_spec.rb' - - 'ee/spec/services/security/ingestion/ingest_report_service_spec.rb' - - 'ee/spec/services/security/ingestion/ingest_report_slice_service_spec.rb' - - 'ee/spec/services/security/ingestion/ingest_reports_service_spec.rb' - - 'ee/spec/services/security/ingestion/mark_as_resolved_service_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/hooks_execution_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/ingest_finding_evidence_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/ingest_identifiers_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/ingest_remediations_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities/mark_resolved_as_detected_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/ingest_vulnerability_statistics_spec.rb' - - 'ee/spec/services/security/ingestion/tasks/update_vulnerability_uuids_spec.rb' - - 'ee/spec/services/security/merge_reports_service_spec.rb' - - 'ee/spec/services/security/orchestration/assign_service_spec.rb' - - 'ee/spec/services/security/orchestration/unassign_service_spec.rb' - - 'ee/spec/services/security/override_uuids_service_spec.rb' - - 'ee/spec/services/security/purge_scans_service_spec.rb' - - 'ee/spec/services/security/report_fetch_service_spec.rb' - - 'ee/spec/services/security/report_summary_service_spec.rb' - - 'ee/spec/services/security/scanned_resources_counting_service_spec.rb' - - 'ee/spec/services/security/scanned_resources_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/fetch_policy_approvers_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/fetch_policy_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/on_demand_scan_pipeline_configuration_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/operational_vulnerabilities_configuration_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/policy_configuration_validation_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/process_policy_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/process_rule_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/project_create_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/rule_schedule_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/sync_open_merge_requests_head_pipeline_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/sync_opened_merge_requests_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/sync_scan_result_policies_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/validate_policy_service_spec.rb' - - 'ee/spec/services/security/store_findings_service_spec.rb' - - 'ee/spec/services/security/store_grouped_scans_service_spec.rb' - - 'ee/spec/services/security/store_scan_service_spec.rb' - - 'ee/spec/services/security/store_scans_service_spec.rb' - - 'ee/spec/services/security/token_revocation_service_spec.rb' - - 'ee/spec/services/security/track_scan_service_spec.rb' - - 'ee/spec/services/security/update_training_service_spec.rb' - - 'ee/spec/services/security/vulnerability_counting_service_spec.rb' - - 'ee/spec/services/sitemap/create_service_spec.rb' - - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb' - - 'ee/spec/services/software_license_policies/update_service_spec.rb' - - 'ee/spec/services/start_pull_mirroring_service_spec.rb' - - 'ee/spec/services/status_page/mark_for_publication_service_spec.rb' - - 'ee/spec/services/status_page/publish_attachments_service_spec.rb' - - 'ee/spec/services/status_page/publish_details_service_spec.rb' - - 'ee/spec/services/status_page/publish_list_service_spec.rb' - - 'ee/spec/services/status_page/publish_service_spec.rb' - - 'ee/spec/services/status_page/trigger_publish_service_spec.rb' - - 'ee/spec/services/status_page/unpublish_details_service_spec.rb' - - 'ee/spec/services/system_note_service_spec.rb' - - 'ee/spec/services/system_notes/epics_service_spec.rb' - - 'ee/spec/services/system_notes/escalations_service_spec.rb' - - 'ee/spec/services/system_notes/merge_train_service_spec.rb' - - 'ee/spec/services/system_notes/vulnerabilities_service_spec.rb' - 'ee/spec/services/timebox_report_service_spec.rb' - - 'ee/spec/services/todo_service_spec.rb' - - 'ee/spec/services/todos/allowed_target_filter_service_spec.rb' - - 'ee/spec/services/todos/destroy/confidential_epic_service_spec.rb' - - 'ee/spec/services/upcoming_reconciliations/update_service_spec.rb' - - 'ee/spec/services/user_permissions/export_service_spec.rb' - - 'ee/spec/services/users/abuse/namespace_bans/create_service_spec.rb' - - 'ee/spec/services/users/abuse/namespace_bans/destroy_service_spec.rb' - - 'ee/spec/services/users/abuse/projects_download_ban_check_service_spec.rb' - - 'ee/spec/services/users/captcha_challenge_service_spec.rb' - - 'ee/spec/services/users/update_highest_member_role_service_spec.rb' - - 'ee/spec/services/users_ops_dashboard_projects/destroy_service_spec.rb' - - 'ee/spec/services/vulnerability_exports/create_service_spec.rb' - - 'ee/spec/services/vulnerability_exports/export_service_spec.rb' - - 'ee/spec/services/vulnerability_exports/exporters/csv_service_spec.rb' - - 'ee/spec/services/vulnerability_external_issue_links/create_service_spec.rb' - - 'ee/spec/services/vulnerability_external_issue_links/destroy_service_spec.rb' - - 'ee/spec/services/vulnerability_feedback/destroy_service_spec.rb' - - 'ee/spec/services/vulnerability_issue_links/create_service_spec.rb' - - 'ee/spec/services/vulnerability_issue_links/delete_service_spec.rb' - - 'ee/spec/services/vulnerability_merge_request_links/create_service_spec.rb' - - 'ee/spec/services/vulnerability_scanners/list_service_spec.rb' - - 'ee/spec/services/web_hook_service_spec.rb' - - 'ee/spec/services/wiki_pages/create_service_spec.rb' - - 'ee/spec/services/wiki_pages/destroy_service_spec.rb' - - 'ee/spec/services/wiki_pages/update_service_spec.rb' - - 'ee/spec/services/wikis/create_attachment_service_spec.rb' - - 'ee/spec/services/work_items/update_service_spec.rb' - - 'ee/spec/services/work_items/widgets/status_service/update_service_spec.rb' - - 'ee/spec/services/work_items/widgets/weight_service/update_service_spec.rb' - 'ee/spec/tasks/geo/git_rake_spec.rb' - 'ee/spec/tasks/gitlab/license_rake_spec.rb' - 'ee/spec/tasks/gitlab/spdx_rake_spec.rb' @@ -2255,8 +1762,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb' - 'ee/spec/views/devise/sessions/new.html.haml_spec.rb' - 'ee/spec/views/groups/_compliance_frameworks.html.haml_spec.rb' - - 'ee/spec/views/groups/analytics/dashboards/index.html.haml_spec.rb' - - 'ee/spec/views/groups/billings/index.html.haml_spec.rb' - 'ee/spec/views/groups/compliance_frameworks/edit.html.haml_spec.rb' - 'ee/spec/views/groups/compliance_frameworks/new.html.haml_spec.rb' - 'ee/spec/views/groups/edit.html.haml_spec.rb' @@ -2284,7 +1789,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/views/projects/_merge_request_status_checks_settings.html.haml_spec.rb' - 'ee/spec/views/projects/edit.html.haml_spec.rb' - 'ee/spec/views/projects/issues/show.html.haml_spec.rb' - - 'ee/spec/views/projects/on_demand_scans/index.html.haml_spec.rb' - 'ee/spec/views/projects/security/corpus_management/show.html.haml_spec.rb' - 'ee/spec/views/projects/security/dast_profiles/show.html.haml_spec.rb' - 'ee/spec/views/projects/security/dast_scanner_profiles/edit.html.haml_spec.rb' @@ -2327,160 +1831,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/views/subscriptions/groups/edit.html.haml_spec.rb' - 'ee/spec/views/subscriptions/new.html.haml_spec.rb' - 'ee/spec/views/trial_registrations/new.html.haml_spec.rb' - - 'ee/spec/workers/active_user_count_threshold_worker_spec.rb' - - 'ee/spec/workers/adjourned_group_deletion_worker_spec.rb' - - 'ee/spec/workers/adjourned_project_deletion_worker_spec.rb' - - 'ee/spec/workers/adjourned_projects_deletion_cron_worker_spec.rb' - - 'ee/spec/workers/admin_emails_worker_spec.rb' - - 'ee/spec/workers/analytics/code_review_metrics_worker_spec.rb' - - 'ee/spec/workers/analytics/cycle_analytics/consistency_worker_spec.rb' - - 'ee/spec/workers/analytics/cycle_analytics/incremental_worker_spec.rb' - - 'ee/spec/workers/analytics/cycle_analytics/reaggregation_worker_spec.rb' - - 'ee/spec/workers/analytics/devops_adoption/create_all_snapshots_worker_spec.rb' - - 'ee/spec/workers/analytics/devops_adoption/create_snapshot_worker_spec.rb' - - 'ee/spec/workers/app_sec/dast/scanner_profiles_builds/consistency_worker_spec.rb' - - 'ee/spec/workers/app_sec/dast/scans/consistency_worker_spec.rb' - - 'ee/spec/workers/app_sec/dast/site_profiles_builds/consistency_worker_spec.rb' - - 'ee/spec/workers/approval_rules/external_approval_rule_payload_worker_spec.rb' - - 'ee/spec/workers/audit_events/user_impersonation_event_create_worker_spec.rb' - - 'ee/spec/workers/auth/saml_group_sync_worker_spec.rb' - - 'ee/spec/workers/ci/batch_reset_minutes_worker_spec.rb' - - 'ee/spec/workers/ci/initial_pipeline_process_worker_spec.rb' - - 'ee/spec/workers/ci/minutes/refresh_cached_data_worker_spec.rb' - - 'ee/spec/workers/ci/minutes/update_project_and_namespace_usage_worker_spec.rb' - - 'ee/spec/workers/ci/runners/stale_group_runners_prune_cron_worker_spec.rb' - - 'ee/spec/workers/ci/sync_reports_to_report_approval_rules_worker_spec.rb' - - 'ee/spec/workers/ci/trigger_downstream_subscriptions_worker_spec.rb' - - 'ee/spec/workers/ci/upstream_projects_subscriptions_cleanup_worker_spec.rb' - - 'ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb' - - 'ee/spec/workers/compliance_management/chain_of_custody_report_worker_spec.rb' - - 'ee/spec/workers/compliance_management/merge_requests/compliance_violations_worker_spec.rb' - - 'ee/spec/workers/compliance_management/update_default_framework_worker_spec.rb' - - 'ee/spec/workers/concerns/elastic/indexing_control_spec.rb' - - 'ee/spec/workers/concerns/elastic/migration_obsolete_spec.rb' - - 'ee/spec/workers/concerns/elastic/migration_options_spec.rb' - - 'ee/spec/workers/concerns/geo_queue_spec.rb' - - 'ee/spec/workers/concerns/update_orchestration_policy_configuration_spec.rb' - - 'ee/spec/workers/create_github_webhook_worker_spec.rb' - - 'ee/spec/workers/deployments/auto_rollback_worker_spec.rb' - - 'ee/spec/workers/dora/daily_metrics/refresh_worker_spec.rb' - - 'ee/spec/workers/ee/arkose/blocked_users_report_worker_spec.rb' - - 'ee/spec/workers/ee/ci/build_finished_worker_spec.rb' - - 'ee/spec/workers/ee/issuable_export_csv_worker_spec.rb' - - 'ee/spec/workers/ee/namespaces/in_product_marketing_emails_worker_spec.rb' - - 'ee/spec/workers/ee/namespaces/root_statistics_worker_spec.rb' - - 'ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb' - - 'ee/spec/workers/ee/repository_check/batch_worker_spec.rb' - - 'ee/spec/workers/ee/repository_check/single_repository_worker_spec.rb' - - 'ee/spec/workers/elastic/migration_worker_spec.rb' - - 'ee/spec/workers/elastic/project_transfer_worker_spec.rb' - - 'ee/spec/workers/elastic_association_indexer_worker_spec.rb' - - 'ee/spec/workers/elastic_cluster_reindexing_cron_worker_spec.rb' - - 'ee/spec/workers/elastic_full_index_worker_spec.rb' - - 'ee/spec/workers/elastic_index_initial_bulk_cron_worker_spec.rb' - - 'ee/spec/workers/elastic_indexing_control_worker_spec.rb' - - 'ee/spec/workers/elastic_namespace_indexer_worker_spec.rb' - - 'ee/spec/workers/elastic_namespace_rollout_worker_spec.rb' - - 'ee/spec/workers/elastic_remove_expired_namespace_subscriptions_from_index_cron_worker_spec.rb' - - 'ee/spec/workers/epics/new_epic_issue_worker_spec.rb' - - 'ee/spec/workers/epics/update_cached_metadata_worker_spec.rb' - - 'ee/spec/workers/geo/batch/project_registry_scheduler_worker_spec.rb' - - 'ee/spec/workers/geo/batch/project_registry_worker_spec.rb' - - 'ee/spec/workers/geo/batch_event_create_worker_spec.rb' - - 'ee/spec/workers/geo/container_repository_sync_worker_spec.rb' - - 'ee/spec/workers/geo/create_repository_updated_event_worker_spec.rb' - - 'ee/spec/workers/geo/design_repository_shard_sync_worker_spec.rb' - - 'ee/spec/workers/geo/design_repository_sync_worker_spec.rb' - - 'ee/spec/workers/geo/destroy_worker_spec.rb' - - 'ee/spec/workers/geo/event_worker_spec.rb' - - 'ee/spec/workers/geo/file_registry_removal_worker_spec.rb' - - 'ee/spec/workers/geo/metrics_update_worker_spec.rb' - - 'ee/spec/workers/geo/prune_event_log_worker_spec.rb' - - 'ee/spec/workers/geo/repositories_clean_up_worker_spec.rb' - - 'ee/spec/workers/geo/repository_cleanup_worker_spec.rb' - - 'ee/spec/workers/geo/repository_shard_sync_worker_spec.rb' - - 'ee/spec/workers/geo/repository_sync_worker_spec.rb' - - 'ee/spec/workers/geo/repository_verification/primary/batch_worker_spec.rb' - - 'ee/spec/workers/geo/repository_verification/primary/shard_worker_spec.rb' - - 'ee/spec/workers/geo/repository_verification/primary/single_worker_spec.rb' - - 'ee/spec/workers/geo/repository_verification/secondary/scheduler_worker_spec.rb' - - 'ee/spec/workers/geo/repository_verification/secondary/shard_worker_spec.rb' - - 'ee/spec/workers/geo/repository_verification/secondary/single_worker_spec.rb' - - 'ee/spec/workers/geo/reverification_batch_worker_spec.rb' - - 'ee/spec/workers/geo/scheduler/per_shard_scheduler_worker_spec.rb' - - 'ee/spec/workers/geo/scheduler/scheduler_worker_spec.rb' - - 'ee/spec/workers/geo/secondary_usage_data_cron_worker_spec.rb' - - 'ee/spec/workers/geo/sidekiq_cron_config_worker_spec.rb' - - 'ee/spec/workers/geo/sync_timeout_cron_worker_spec.rb' - - 'ee/spec/workers/geo/verification_batch_worker_spec.rb' - - 'ee/spec/workers/geo/verification_cron_worker_spec.rb' - - 'ee/spec/workers/geo/verification_state_backfill_service_spec.rb' - - 'ee/spec/workers/geo/verification_state_backfill_worker_spec.rb' - - 'ee/spec/workers/geo/verification_worker_spec.rb' - - 'ee/spec/workers/geo_repository_destroy_worker_spec.rb' - - 'ee/spec/workers/gitlab_subscriptions/trials/apply_trial_worker_spec.rb' - - 'ee/spec/workers/group_saml_group_sync_worker_spec.rb' - - 'ee/spec/workers/groups/create_event_worker_spec.rb' - - 'ee/spec/workers/groups/export_memberships_worker_spec.rb' - - 'ee/spec/workers/groups/schedule_bulk_repository_shard_moves_worker_spec.rb' - - 'ee/spec/workers/groups/update_repository_storage_worker_spec.rb' - - 'ee/spec/workers/historical_data_worker_spec.rb' - - 'ee/spec/workers/import_software_licenses_worker_spec.rb' - - 'ee/spec/workers/incident_management/apply_incident_sla_exceeded_label_worker_spec.rb' - - 'ee/spec/workers/incident_management/incident_sla_exceeded_check_worker_spec.rb' - - 'ee/spec/workers/incident_management/oncall_rotations/persist_all_rotations_shifts_job_spec.rb' - - 'ee/spec/workers/incident_management/oncall_rotations/persist_shifts_job_spec.rb' - - 'ee/spec/workers/incident_management/pending_escalations/alert_check_worker_spec.rb' - - 'ee/spec/workers/incident_management/pending_escalations/alert_create_worker_spec.rb' - - 'ee/spec/workers/incident_management/pending_escalations/issue_check_worker_spec.rb' - - 'ee/spec/workers/incident_management/pending_escalations/issue_create_worker_spec.rb' - - 'ee/spec/workers/incident_management/pending_escalations/schedule_check_cron_worker_spec.rb' - - 'ee/spec/workers/integrations/slack_event_worker_spec.rb' - - 'ee/spec/workers/iterations/cadences/create_iterations_worker_spec.rb' - - 'ee/spec/workers/iterations/cadences/schedule_create_iterations_worker_spec.rb' - - 'ee/spec/workers/iterations/roll_over_issues_worker_spec.rb' - - 'ee/spec/workers/iterations_update_status_worker_spec.rb' - - 'ee/spec/workers/ldap_all_groups_sync_worker_spec.rb' - - 'ee/spec/workers/ldap_group_sync_worker_spec.rb' - - 'ee/spec/workers/ldap_sync_worker_spec.rb' - - 'ee/spec/workers/licenses/reset_submit_license_usage_data_banner_worker_spec.rb' - - 'ee/spec/workers/merge_request_reset_approvals_worker_spec.rb' - - 'ee/spec/workers/merge_requests/stream_approval_audit_event_worker_spec.rb' - - 'ee/spec/workers/merge_requests/sync_code_owner_approval_rules_worker_spec.rb' - - 'ee/spec/workers/merge_trains/refresh_worker_spec.rb' - - 'ee/spec/workers/namespaces/sync_namespace_name_worker_spec.rb' - - 'ee/spec/workers/new_epic_worker_spec.rb' - - 'ee/spec/workers/personal_access_tokens/groups/policy_worker_spec.rb' - - 'ee/spec/workers/personal_access_tokens/instance/policy_worker_spec.rb' - - 'ee/spec/workers/post_receive_spec.rb' - - 'ee/spec/workers/product_analytics/initialize_analytics_worker_spec.rb' - - 'ee/spec/workers/project_cache_worker_spec.rb' - - 'ee/spec/workers/project_template_export_worker_spec.rb' - - 'ee/spec/workers/projects/disable_legacy_open_source_license_for_inactive_projects_worker_spec.rb' - - 'ee/spec/workers/repository_update_mirror_worker_spec.rb' - - 'ee/spec/workers/requirements_management/import_requirements_csv_worker_spec.rb' - - 'ee/spec/workers/requirements_management/process_requirements_reports_worker_spec.rb' - - 'ee/spec/workers/scan_security_report_secrets_worker_spec.rb' - - 'ee/spec/workers/security/auto_fix_worker_spec.rb' - - 'ee/spec/workers/security/create_orchestration_policy_worker_spec.rb' - - 'ee/spec/workers/security/orchestration_policy_rule_schedule_namespace_worker_spec.rb' - - 'ee/spec/workers/security/orchestration_policy_rule_schedule_worker_spec.rb' - - 'ee/spec/workers/security/process_scan_result_policy_worker_spec.rb' - - 'ee/spec/workers/security/scans/purge_by_job_id_worker_spec.rb' - - 'ee/spec/workers/security/scans/purge_worker_spec.rb' - - 'ee/spec/workers/security/store_scans_worker_spec.rb' - - 'ee/spec/workers/security/sync_scan_policies_worker_spec.rb' - - 'ee/spec/workers/security/track_secure_scans_worker_spec.rb' - - 'ee/spec/workers/set_user_status_based_on_user_cap_setting_worker_spec.rb' - - 'ee/spec/workers/status_page/publish_worker_spec.rb' - - 'ee/spec/workers/store_security_reports_worker_spec.rb' - - 'ee/spec/workers/sync_seat_link_request_worker_spec.rb' - - 'ee/spec/workers/sync_seat_link_worker_spec.rb' - - 'ee/spec/workers/todos_destroyer/confidential_epic_worker_spec.rb' - - 'ee/spec/workers/update_all_mirrors_worker_spec.rb' - - 'ee/spec/workers/update_max_seats_used_for_gitlab_com_subscriptions_worker_spec.rb' - - 'ee/spec/workers/vulnerability_exports/export_deletion_worker_spec.rb' - - 'ee/spec/workers/vulnerability_exports/export_worker_spec.rb' - 'spec/benchmarks/banzai_benchmark.rb' - 'spec/bin/audit_event_type_spec.rb' - 'spec/bin/diagnostic_reports_uploader_spec.rb' @@ -2489,7 +1839,6 @@ RSpec/MissingFeatureCategory: - 'spec/channels/awareness_channel_spec.rb' - 'spec/commands/diagnostic_reports/uploader_smoke_spec.rb' - 'spec/commands/metrics_server/metrics_server_spec.rb' - - 'spec/commands/sidekiq_cluster/cli_spec.rb' - 'spec/components/diffs/overflow_warning_component_spec.rb' - 'spec/components/diffs/stats_component_spec.rb' - 'spec/components/layouts/horizontal_section_component_spec.rb' @@ -2527,12 +1876,10 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/admin/plan_limits_controller_spec.rb' - 'spec/controllers/admin/projects_controller_spec.rb' - 'spec/controllers/admin/sessions_controller_spec.rb' - - 'spec/controllers/admin/spam_logs_controller_spec.rb' - 'spec/controllers/admin/topics/avatars_controller_spec.rb' - 'spec/controllers/admin/topics_controller_spec.rb' - 'spec/controllers/admin/usage_trends_controller_spec.rb' - 'spec/controllers/admin/users_controller_spec.rb' - - 'spec/controllers/application_controller_spec.rb' - 'spec/controllers/autocomplete_controller_spec.rb' - 'spec/controllers/chaos_controller_spec.rb' - 'spec/controllers/concerns/check_rate_limit_spec.rb' @@ -2566,7 +1913,6 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/concerns/spammable_actions/captcha_check/json_format_actions_support_spec.rb' - 'spec/controllers/concerns/spammable_actions/captcha_check/rest_api_actions_support_spec.rb' - 'spec/controllers/concerns/static_object_external_storage_spec.rb' - - 'spec/controllers/confirmations_controller_spec.rb' - 'spec/controllers/dashboard/groups_controller_spec.rb' - 'spec/controllers/dashboard/labels_controller_spec.rb' - 'spec/controllers/dashboard/milestones_controller_spec.rb' @@ -2615,10 +1961,8 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/oauth/applications_controller_spec.rb' - 'spec/controllers/oauth/authorizations_controller_spec.rb' - 'spec/controllers/oauth/authorized_applications_controller_spec.rb' - - 'spec/controllers/oauth/jira_dvcs/authorizations_controller_spec.rb' - 'spec/controllers/oauth/token_info_controller_spec.rb' - 'spec/controllers/oauth/tokens_controller_spec.rb' - - 'spec/controllers/omniauth_callbacks_controller_spec.rb' - 'spec/controllers/passwords_controller_spec.rb' - 'spec/controllers/profiles/accounts_controller_spec.rb' - 'spec/controllers/profiles/active_sessions_controller_spec.rb' @@ -2636,7 +1980,6 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/projects/analytics/cycle_analytics/stages_controller_spec.rb' - 'spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb' - 'spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb' - - 'spec/controllers/projects/artifacts_controller_spec.rb' - 'spec/controllers/projects/autocomplete_sources_controller_spec.rb' - 'spec/controllers/projects/avatars_controller_spec.rb' - 'spec/controllers/projects/badges_controller_spec.rb' @@ -2646,7 +1989,6 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/projects/ci/daily_build_group_report_results_controller_spec.rb' - 'spec/controllers/projects/ci/lints_controller_spec.rb' - 'spec/controllers/projects/ci/pipeline_editor_controller_spec.rb' - - 'spec/controllers/projects/commit_controller_spec.rb' - 'spec/controllers/projects/compare_controller_spec.rb' - 'spec/controllers/projects/cycle_analytics/events_controller_spec.rb' - 'spec/controllers/projects/cycle_analytics_controller_spec.rb' @@ -2664,7 +2006,6 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/projects/feature_flags_user_lists_controller_spec.rb' - 'spec/controllers/projects/find_file_controller_spec.rb' - 'spec/controllers/projects/graphs_controller_spec.rb' - - 'spec/controllers/projects/hooks_controller_spec.rb' - 'spec/controllers/projects/import/jira_controller_spec.rb' - 'spec/controllers/projects/imports_controller_spec.rb' - 'spec/controllers/projects/incidents_controller_spec.rb' @@ -2677,7 +2018,6 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/projects/mirrors_controller_spec.rb' - 'spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb' - 'spec/controllers/projects/packages/packages_controller_spec.rb' - - 'spec/controllers/projects/pages_controller_spec.rb' - 'spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb' - 'spec/controllers/projects/pipelines/stages_controller_spec.rb' - 'spec/controllers/projects/pipelines/tests_controller_spec.rb' @@ -2711,10 +2051,8 @@ RSpec/MissingFeatureCategory: - 'spec/controllers/projects/web_ide_schemas_controller_spec.rb' - 'spec/controllers/projects/web_ide_terminals_controller_spec.rb' - 'spec/controllers/projects/wikis_controller_spec.rb' - - 'spec/controllers/repositories/git_http_controller_spec.rb' - 'spec/controllers/repositories/lfs_storage_controller_spec.rb' - 'spec/controllers/root_controller_spec.rb' - - 'spec/controllers/search_controller_spec.rb' - 'spec/controllers/sent_notifications_controller_spec.rb' - 'spec/controllers/sessions_controller_spec.rb' - 'spec/controllers/snippets/blobs_controller_spec.rb' @@ -2732,7 +2070,6 @@ RSpec/MissingFeatureCategory: - 'spec/dependencies/omniauth_saml_spec.rb' - 'spec/docs_screenshots/container_registry_docs.rb' - 'spec/docs_screenshots/wiki_docs.rb' - - 'spec/experiments/application_experiment_spec.rb' - 'spec/experiments/concerns/project_commit_count_spec.rb' - 'spec/experiments/force_company_trial_experiment_spec.rb' - 'spec/experiments/in_product_guidance_environments_webide_experiment_spec.rb' @@ -2741,7 +2078,6 @@ RSpec/MissingFeatureCategory: - 'spec/experiments/security_reports_mr_widget_prompt_experiment_spec.rb' - 'spec/features/admin/dashboard_spec.rb' - 'spec/features/groups/integrations/group_integrations_spec.rb' - - 'spec/features/markdown/observability_spec.rb' - 'spec/features/milestones/user_views_milestones_spec.rb' - 'spec/features/projects/feature_flags/user_creates_feature_flag_spec.rb' - 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb' @@ -2878,7 +2214,6 @@ RSpec/MissingFeatureCategory: - 'spec/finders/security/license_compliance_jobs_finder_spec.rb' - 'spec/finders/security/security_jobs_finder_spec.rb' - 'spec/finders/sentry_issue_finder_spec.rb' - - 'spec/finders/serverless_domain_finder_spec.rb' - 'spec/finders/snippets_finder_spec.rb' - 'spec/finders/starred_projects_finder_spec.rb' - 'spec/finders/tags_finder_spec.rb' @@ -2935,7 +2270,6 @@ RSpec/MissingFeatureCategory: - 'spec/frontend/fixtures/tags.rb' - 'spec/frontend/fixtures/timezones.rb' - 'spec/frontend/fixtures/todos.rb' - - 'spec/frontend/fixtures/u2f.rb' - 'spec/frontend/fixtures/webauthn.rb' - 'spec/graphql/features/authorization_spec.rb' - 'spec/graphql/gitlab_schema_spec.rb' @@ -3011,9 +2345,6 @@ RSpec/MissingFeatureCategory: - 'spec/graphql/mutations/namespace/package_settings/update_spec.rb' - 'spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb' - 'spec/graphql/mutations/pages/mark_onboarding_complete_spec.rb' - - 'spec/graphql/mutations/release_asset_links/create_spec.rb' - - 'spec/graphql/mutations/release_asset_links/delete_spec.rb' - - 'spec/graphql/mutations/release_asset_links/update_spec.rb' - 'spec/graphql/mutations/releases/create_spec.rb' - 'spec/graphql/mutations/releases/delete_spec.rb' - 'spec/graphql/mutations/releases/update_spec.rb' @@ -3095,7 +2426,6 @@ RSpec/MissingFeatureCategory: - 'spec/graphql/resolvers/group_milestones_resolver_spec.rb' - 'spec/graphql/resolvers/group_packages_resolver_spec.rb' - 'spec/graphql/resolvers/group_resolver_spec.rb' - - 'spec/graphql/resolvers/groups_resolver_spec.rb' - 'spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb' - 'spec/graphql/resolvers/incident_management/timeline_events_resolver_spec.rb' - 'spec/graphql/resolvers/issue_status_counts_resolver_spec.rb' @@ -3269,10 +2599,8 @@ RSpec/MissingFeatureCategory: - 'spec/graphql/types/dependency_proxy/image_ttl_group_policy_type_spec.rb' - 'spec/graphql/types/dependency_proxy/manifest_type_spec.rb' - 'spec/graphql/types/deployment_tier_enum_spec.rb' - - 'spec/graphql/types/design_management/design_at_version_type_spec.rb' - 'spec/graphql/types/design_management/design_collection_copy_state_enum_spec.rb' - 'spec/graphql/types/design_management/design_collection_type_spec.rb' - - 'spec/graphql/types/design_management/design_type_spec.rb' - 'spec/graphql/types/design_management/design_version_event_enum_spec.rb' - 'spec/graphql/types/design_management/version_type_spec.rb' - 'spec/graphql/types/design_management_type_spec.rb' @@ -3452,7 +2780,6 @@ RSpec/MissingFeatureCategory: - 'spec/helpers/admin/deploy_key_helper_spec.rb' - 'spec/helpers/admin/identities_helper_spec.rb' - 'spec/helpers/admin/user_actions_helper_spec.rb' - - 'spec/helpers/analytics/cycle_analytics_helper_spec.rb' - 'spec/helpers/appearances_helper_spec.rb' - 'spec/helpers/application_helper_spec.rb' - 'spec/helpers/application_settings_helper_spec.rb' @@ -3467,7 +2794,6 @@ RSpec/MissingFeatureCategory: - 'spec/helpers/boards_helper_spec.rb' - 'spec/helpers/branches_helper_spec.rb' - 'spec/helpers/breadcrumbs_helper_spec.rb' - - 'spec/helpers/broadcast_messages_helper_spec.rb' - 'spec/helpers/button_helper_spec.rb' - 'spec/helpers/calendar_helper_spec.rb' - 'spec/helpers/ci/builds_helper_spec.rb' @@ -3534,7 +2860,6 @@ RSpec/MissingFeatureCategory: - 'spec/helpers/numbers_helper_spec.rb' - 'spec/helpers/one_trust_helper_spec.rb' - 'spec/helpers/operations_helper_spec.rb' - - 'spec/helpers/packages_helper_spec.rb' - 'spec/helpers/page_layout_helper_spec.rb' - 'spec/helpers/pagination_helper_spec.rb' - 'spec/helpers/preferences_helper_spec.rb' @@ -3708,7 +3033,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/api/validations/validators/limit_spec.rb' - 'spec/lib/api/validations/validators/project_portable_spec.rb' - 'spec/lib/api/validations/validators/untrusted_regexp_spec.rb' - - 'spec/lib/atlassian/jira_issue_key_extractor_spec.rb' - 'spec/lib/backup/database_backup_error_spec.rb' - 'spec/lib/backup/file_backup_error_spec.rb' - 'spec/lib/backup/files_spec.rb' @@ -3722,7 +3046,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb' - 'spec/lib/banzai/filter/inline_metrics_filter_spec.rb' - 'spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb' - - 'spec/lib/banzai/filter/inline_observability_filter_spec.rb' - 'spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb' - 'spec/lib/bitbucket/collection_spec.rb' - 'spec/lib/bitbucket/connection_spec.rb' @@ -3756,7 +3079,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb' - 'spec/lib/bulk_imports/common/transformers/prohibited_attributes_transformer_spec.rb' - 'spec/lib/bulk_imports/common/transformers/user_reference_transformer_spec.rb' - - 'spec/lib/bulk_imports/features_spec.rb' - 'spec/lib/bulk_imports/file_downloads/filename_fetch_spec.rb' - 'spec/lib/bulk_imports/file_downloads/validations_spec.rb' - 'spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb' @@ -3768,7 +3090,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb' - 'spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb' - 'spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb' - - 'spec/lib/bulk_imports/ndjson_pipeline_spec.rb' - 'spec/lib/bulk_imports/network_error_spec.rb' - 'spec/lib/bulk_imports/pipeline/context_spec.rb' - 'spec/lib/bulk_imports/pipeline/extracted_data_spec.rb' @@ -3832,7 +3153,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/feature/gitaly_spec.rb' - 'spec/lib/file_size_validator_spec.rb' - 'spec/lib/forever_spec.rb' - - 'spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb' - 'spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb' - 'spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb' - 'spec/lib/generators/gitlab/usage_metric_generator_spec.rb' @@ -3866,14 +3186,12 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_started_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_merged_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb' - - 'spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb' - 'spec/lib/gitlab/analytics/date_filler_spec.rb' - 'spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb' - 'spec/lib/gitlab/anonymous_session_spec.rb' - 'spec/lib/gitlab/api_authentication/builder_spec.rb' - 'spec/lib/gitlab/api_authentication/sent_through_builder_spec.rb' - 'spec/lib/gitlab/api_authentication/token_locator_spec.rb' - - 'spec/lib/gitlab/api_authentication/token_resolver_spec.rb' - 'spec/lib/gitlab/api_authentication/token_type_builder_spec.rb' - 'spec/lib/gitlab/app_json_logger_spec.rb' - 'spec/lib/gitlab/app_logger_spec.rb' @@ -3886,7 +3204,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/asciidoc/html5_converter_spec.rb' - 'spec/lib/gitlab/asciidoc/include_processor_spec.rb' - 'spec/lib/gitlab/asset_proxy_spec.rb' - - 'spec/lib/gitlab/audit/auditor_spec.rb' - 'spec/lib/gitlab/audit/ci_runner_token_author_spec.rb' - 'spec/lib/gitlab/audit/deploy_key_author_spec.rb' - 'spec/lib/gitlab/audit/deploy_token_author_spec.rb' @@ -3899,7 +3216,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/auth/atlassian/auth_hash_spec.rb' - 'spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb' - 'spec/lib/gitlab/auth/atlassian/user_spec.rb' - - 'spec/lib/gitlab/auth/auth_finders_spec.rb' - 'spec/lib/gitlab/auth/blocked_user_tracker_spec.rb' - 'spec/lib/gitlab/auth/crowd/authentication_spec.rb' - 'spec/lib/gitlab/auth/current_user_mode_spec.rb' @@ -4040,7 +3356,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/background_migration/update_timelogs_project_id_spec.rb' - 'spec/lib/gitlab/background_migration/update_users_where_two_factor_auth_required_from_group_spec.rb' - 'spec/lib/gitlab/background_migration_spec.rb' - - 'spec/lib/gitlab/background_task_spec.rb' - 'spec/lib/gitlab/backtrace_cleaner_spec.rb' - 'spec/lib/gitlab/bare_repository_import/importer_spec.rb' - 'spec/lib/gitlab/bare_repository_import/repository_spec.rb' @@ -4063,7 +3378,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/changelog/config_spec.rb' - 'spec/lib/gitlab/changelog/generator_spec.rb' - 'spec/lib/gitlab/changelog/release_spec.rb' - - 'spec/lib/gitlab/changes_list_spec.rb' - 'spec/lib/gitlab/chat/command_spec.rb' - 'spec/lib/gitlab/chat/output_spec.rb' - 'spec/lib/gitlab/chat/responder/base_spec.rb' @@ -4072,9 +3386,7 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/chat_name_token_spec.rb' - 'spec/lib/gitlab/chat_spec.rb' - 'spec/lib/gitlab/checks/branch_check_spec.rb' - - 'spec/lib/gitlab/checks/changes_access_spec.rb' - 'spec/lib/gitlab/checks/container_moved_spec.rb' - - 'spec/lib/gitlab/checks/diff_check_spec.rb' - 'spec/lib/gitlab/checks/force_push_spec.rb' - 'spec/lib/gitlab/checks/lfs_check_spec.rb' - 'spec/lib/gitlab/checks/lfs_integrity_spec.rb' @@ -4160,14 +3472,12 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/config/entry/need_spec.rb' - 'spec/lib/gitlab/ci/config/entry/needs_spec.rb' - 'spec/lib/gitlab/ci/config/entry/paths_spec.rb' - - 'spec/lib/gitlab/ci/config/entry/policy_spec.rb' - 'spec/lib/gitlab/ci/config/entry/port_spec.rb' - 'spec/lib/gitlab/ci/config/entry/ports_spec.rb' - 'spec/lib/gitlab/ci/config/entry/prefix_spec.rb' - 'spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb' - 'spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb' - 'spec/lib/gitlab/ci/config/entry/product/variables_spec.rb' - - 'spec/lib/gitlab/ci/config/entry/pull_policy_spec.rb' - 'spec/lib/gitlab/ci/config/entry/release/assets/link_spec.rb' - 'spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb' - 'spec/lib/gitlab/ci/config/entry/release/assets_spec.rb' @@ -4205,7 +3515,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb' - 'spec/lib/gitlab/ci/parsers/coverage/sax_document_spec.rb' - 'spec/lib/gitlab/ci/parsers/instrumentation_spec.rb' - - 'spec/lib/gitlab/ci/parsers/security/common_spec.rb' - 'spec/lib/gitlab/ci/parsers/security/sast_spec.rb' - 'spec/lib/gitlab/ci/parsers/security/secret_detection_spec.rb' - 'spec/lib/gitlab/ci/parsers/terraform/tfplan_spec.rb' @@ -4214,7 +3523,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/pipeline/chain/assign_partition_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/build_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/command_spec.rb' - - 'spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/create_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb' @@ -4233,7 +3541,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/pipeline/chain/template_usage_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb' - 'spec/lib/gitlab/ci/pipeline/chain/validate/repository_spec.rb' - - 'spec/lib/gitlab/ci/pipeline/duration_spec.rb' - 'spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb' - 'spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb' - 'spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb' @@ -4254,8 +3561,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/pipeline/seed/processable/resource_group_spec.rb' - 'spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb' - 'spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb' - - 'spec/lib/gitlab/ci/project_config/repository_spec.rb' - - 'spec/lib/gitlab/ci/project_config/source_spec.rb' - 'spec/lib/gitlab/ci/project_config_spec.rb' - 'spec/lib/gitlab/ci/reports/accessibility_reports_comparer_spec.rb' - 'spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb' @@ -4278,7 +3583,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/reports/security/scan_spec.rb' - 'spec/lib/gitlab/ci/reports/security/scanned_resource_spec.rb' - 'spec/lib/gitlab/ci/reports/security/scanner_spec.rb' - - 'spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb' - 'spec/lib/gitlab/ci/reports/terraform_reports_spec.rb' - 'spec/lib/gitlab/ci/reports/test_case_spec.rb' - 'spec/lib/gitlab/ci/reports/test_failure_history_spec.rb' @@ -4410,7 +3714,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/config_checker/puma_rugged_checker_spec.rb' - 'spec/lib/gitlab/conflict/file_collection_spec.rb' - 'spec/lib/gitlab/conflict/file_spec.rb' - - 'spec/lib/gitlab/console_spec.rb' - 'spec/lib/gitlab/consul/internal_spec.rb' - 'spec/lib/gitlab/container_repository/tags/cache_spec.rb' - 'spec/lib/gitlab/content_security_policy/config_loader_spec.rb' @@ -4457,7 +3760,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/database/count_spec.rb' - 'spec/lib/gitlab/database/dynamic_model_helpers_spec.rb' - 'spec/lib/gitlab/database/each_database_spec.rb' - - 'spec/lib/gitlab/database/gitlab_schema_spec.rb' - 'spec/lib/gitlab/database/grant_spec.rb' - 'spec/lib/gitlab/database/load_balancing/action_cable_callbacks_spec.rb' - 'spec/lib/gitlab/database/load_balancing/configuration_spec.rb' @@ -4478,7 +3780,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/database/migration_helpers/cascading_namespace_settings_spec.rb' - 'spec/lib/gitlab/database/migration_helpers/loose_foreign_key_helpers_spec.rb' - 'spec/lib/gitlab/database/migration_helpers/v2_spec.rb' - - 'spec/lib/gitlab/database/migration_helpers_spec.rb' - 'spec/lib/gitlab/database/migration_spec.rb' - 'spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb' - 'spec/lib/gitlab/database/migrations/base_background_runner_spec.rb' @@ -4509,7 +3810,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb' - 'spec/lib/gitlab/database/partitioning/time_partition_spec.rb' - 'spec/lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table_spec.rb' - - 'spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb' - 'spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb' - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb' - 'spec/lib/gitlab/database/partitioning_spec.rb' @@ -4519,7 +3819,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/database/postgres_hll/buckets_spec.rb' - 'spec/lib/gitlab/database/postgres_index_bloat_estimate_spec.rb' - 'spec/lib/gitlab/database/postgres_index_spec.rb' - - 'spec/lib/gitlab/database/postgres_partition_spec.rb' - 'spec/lib/gitlab/database/postgres_partitioned_table_spec.rb' - 'spec/lib/gitlab/database/postgresql_adapter/dump_schema_versions_mixin_spec.rb' - 'spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb' @@ -4641,7 +3940,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/empty_search_results_spec.rb' - 'spec/lib/gitlab/encoding_helper_spec.rb' - 'spec/lib/gitlab/encrypted_configuration_spec.rb' - - 'spec/lib/gitlab/endpoint_attributes_spec.rb' - 'spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb' - 'spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb' - 'spec/lib/gitlab/error_tracking/log_formatter_spec.rb' @@ -4772,7 +4070,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/github_import/importer/issue_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb' - - 'spec/lib/gitlab/github_import/importer/note_attachments_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/note_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/protected_branch_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb' @@ -4788,7 +4085,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/github_import/issuable_finder_spec.rb' - 'spec/lib/gitlab/github_import/label_finder_spec.rb' - 'spec/lib/gitlab/github_import/logger_spec.rb' - - 'spec/lib/gitlab/github_import/markdown/attachment_spec.rb' - 'spec/lib/gitlab/github_import/markdown_text_spec.rb' - 'spec/lib/gitlab/github_import/milestone_finder_spec.rb' - 'spec/lib/gitlab/github_import/object_counter_spec.rb' @@ -4904,7 +4200,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/i18n/metadata_entry_spec.rb' - 'spec/lib/gitlab/i18n/po_linter_spec.rb' - 'spec/lib/gitlab/i18n/translation_entry_spec.rb' - - 'spec/lib/gitlab/i18n_spec.rb' - 'spec/lib/gitlab/identifier_spec.rb' - 'spec/lib/gitlab/import/database_helpers_spec.rb' - 'spec/lib/gitlab/import/import_failure_service_spec.rb' @@ -4917,36 +4212,27 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb' - 'spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb' - 'spec/lib/gitlab/import_export/attribute_cleaner_spec.rb' - - 'spec/lib/gitlab/import_export/attribute_configuration_spec.rb' - - 'spec/lib/gitlab/import_export/attributes_finder_spec.rb' - - 'spec/lib/gitlab/import_export/attributes_permitter_spec.rb' - 'spec/lib/gitlab/import_export/avatar_restorer_spec.rb' - 'spec/lib/gitlab/import_export/avatar_saver_spec.rb' - 'spec/lib/gitlab/import_export/base/object_builder_spec.rb' - 'spec/lib/gitlab/import_export/base/relation_factory_spec.rb' - - 'spec/lib/gitlab/import_export/command_line_util_spec.rb' - - 'spec/lib/gitlab/import_export/config_spec.rb' - 'spec/lib/gitlab/import_export/decompressed_archive_size_validator_spec.rb' - 'spec/lib/gitlab/import_export/design_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/design_repo_saver_spec.rb' - 'spec/lib/gitlab/import_export/duration_measuring_spec.rb' - 'spec/lib/gitlab/import_export/error_spec.rb' - - 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb' - 'spec/lib/gitlab/import_export/file_importer_spec.rb' - 'spec/lib/gitlab/import_export/fork_spec.rb' - 'spec/lib/gitlab/import_export/group/object_builder_spec.rb' - 'spec/lib/gitlab/import_export/group/relation_factory_spec.rb' - - 'spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb' - 'spec/lib/gitlab/import_export/group/tree_restorer_spec.rb' - 'spec/lib/gitlab/import_export/group/tree_saver_spec.rb' - 'spec/lib/gitlab/import_export/hash_util_spec.rb' - 'spec/lib/gitlab/import_export/import_export_spec.rb' - - 'spec/lib/gitlab/import_export/import_failure_service_spec.rb' - 'spec/lib/gitlab/import_export/import_test_coverage_spec.rb' - 'spec/lib/gitlab/import_export/importer_spec.rb' - 'spec/lib/gitlab/import_export/json/legacy_reader/file_spec.rb' - 'spec/lib/gitlab/import_export/json/legacy_reader/hash_spec.rb' - - 'spec/lib/gitlab/import_export/json/legacy_writer_spec.rb' - 'spec/lib/gitlab/import_export/json/ndjson_reader_spec.rb' - 'spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb' - 'spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb' @@ -4955,19 +4241,15 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/import_export/log_util_spec.rb' - 'spec/lib/gitlab/import_export/members_mapper_spec.rb' - 'spec/lib/gitlab/import_export/merge_request_parser_spec.rb' - - 'spec/lib/gitlab/import_export/model_configuration_spec.rb' - 'spec/lib/gitlab/import_export/project/export_task_spec.rb' - 'spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb' - - 'spec/lib/gitlab/import_export/project/import_task_spec.rb' - 'spec/lib/gitlab/import_export/project/object_builder_spec.rb' - 'spec/lib/gitlab/import_export/project/relation_saver_spec.rb' - 'spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb' - 'spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb' - 'spec/lib/gitlab/import_export/project/sample/relation_tree_restorer_spec.rb' - - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb' - 'spec/lib/gitlab/import_export/reader_spec.rb' - 'spec/lib/gitlab/import_export/recursive_merge_folders_spec.rb' - - 'spec/lib/gitlab/import_export/references_configuration_spec.rb' - 'spec/lib/gitlab/import_export/remote_stream_upload_spec.rb' - 'spec/lib/gitlab/import_export/repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/repo_saver_spec.rb' @@ -5058,7 +4340,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb' - 'spec/lib/gitlab/legacy_github_import/client_spec.rb' - 'spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb' - - 'spec/lib/gitlab/legacy_github_import/importer_spec.rb' - 'spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb' - 'spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb' - 'spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb' @@ -5100,14 +4381,12 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb' - 'spec/lib/gitlab/memory/watchdog/configuration_spec.rb' - 'spec/lib/gitlab/memory/watchdog/monitor/heap_fragmentation_spec.rb' - - 'spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb' - 'spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb' - 'spec/lib/gitlab/memory/watchdog/monitor_state_spec.rb' - 'spec/lib/gitlab/merge_requests/mergeability/check_result_spec.rb' - 'spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb' - 'spec/lib/gitlab/merge_requests/mergeability/results_store_spec.rb' - 'spec/lib/gitlab/metrics/background_transaction_spec.rb' - - 'spec/lib/gitlab/metrics/boot_time_tracker_spec.rb' - 'spec/lib/gitlab/metrics/dashboard/cache_spec.rb' - 'spec/lib/gitlab/metrics/dashboard/defaults_spec.rb' - 'spec/lib/gitlab/metrics/dashboard/finder_spec.rb' @@ -5178,12 +4457,10 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/multi_destination_logger_spec.rb' - 'spec/lib/gitlab/namespaced_session_store_spec.rb' - 'spec/lib/gitlab/nav/top_nav_menu_header_spec.rb' - - 'spec/lib/gitlab/net_http_adapter_spec.rb' - 'spec/lib/gitlab/no_cache_headers_spec.rb' - 'spec/lib/gitlab/noteable_metadata_spec.rb' - 'spec/lib/gitlab/null_request_store_spec.rb' - 'spec/lib/gitlab/object_hierarchy_spec.rb' - - 'spec/lib/gitlab/observability_spec.rb' - 'spec/lib/gitlab/omniauth_initializer_spec.rb' - 'spec/lib/gitlab/optimistic_locking_spec.rb' - 'spec/lib/gitlab/other_markup_spec.rb' @@ -5260,7 +4537,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb' - 'spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb' - 'spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb' - - 'spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb' - 'spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb' - 'spec/lib/gitlab/prometheus/queries/validate_query_spec.rb' - 'spec/lib/gitlab/prometheus/query_variables_spec.rb' @@ -5280,7 +4556,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/quick_actions/substitution_definition_spec.rb' - 'spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb' - 'spec/lib/gitlab/quick_actions/users_extractor_spec.rb' - - 'spec/lib/gitlab/rack_attack/instrumented_cache_store_spec.rb' - 'spec/lib/gitlab/rack_attack/request_spec.rb' - 'spec/lib/gitlab/rack_attack/user_allowlist_spec.rb' - 'spec/lib/gitlab/rack_attack_spec.rb' @@ -5323,7 +4598,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/safe_request_purger_spec.rb' - 'spec/lib/gitlab/safe_request_store_spec.rb' - 'spec/lib/gitlab/sample_data_template_spec.rb' - - 'spec/lib/gitlab/sanitizers/exception_message_spec.rb' - 'spec/lib/gitlab/sanitizers/exif_spec.rb' - 'spec/lib/gitlab/sanitizers/svg_spec.rb' - 'spec/lib/gitlab/search/abuse_detection_spec.rb' @@ -5343,7 +4617,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/seeders/ci/daily_build_group_report_result_spec.rb' - 'spec/lib/gitlab/serializer/ci/variables_spec.rb' - 'spec/lib/gitlab/serializer/pagination_spec.rb' - - 'spec/lib/gitlab/serverless/service_spec.rb' - 'spec/lib/gitlab/service_desk_email_spec.rb' - 'spec/lib/gitlab/service_desk_spec.rb' - 'spec/lib/gitlab/session_spec.rb' @@ -5480,7 +4753,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/usage/metrics/instrumentations/cert_based_clusters_ff_metric_spec.rb' - 'spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb' - 'spec/lib/gitlab/usage/metrics/instrumentations/count_boards_metric_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/count_issues_metric_spec.rb' @@ -5540,7 +4812,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb' - - 'spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb' - 'spec/lib/gitlab/usage_data_counters/vscode_extension_activity_unique_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb' @@ -5629,7 +4900,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/mattermost/team_spec.rb' - 'spec/lib/microsoft_teams/activity_spec.rb' - 'spec/lib/microsoft_teams/notifier_spec.rb' - - 'spec/lib/object_storage/config_spec.rb' - 'spec/lib/object_storage/direct_upload_spec.rb' - 'spec/lib/omni_auth/strategies/bitbucket_spec.rb' - 'spec/lib/omni_auth/strategies/jwt_spec.rb' @@ -5645,7 +4915,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb' - 'spec/lib/prometheus/pid_provider_spec.rb' - 'spec/lib/quality/seeders/issues_spec.rb' - - 'spec/lib/release_highlights/validator/entry_spec.rb' - 'spec/lib/rouge/formatters/html_gitlab_spec.rb' - 'spec/lib/safe_zip/entry_spec.rb' - 'spec/lib/safe_zip/extract_params_spec.rb' @@ -5662,41 +4931,21 @@ RSpec/MissingFeatureCategory: - 'spec/lib/sidebars/concerns/container_with_html_options_spec.rb' - 'spec/lib/sidebars/concerns/link_with_html_options_spec.rb' - 'spec/lib/sidebars/groups/menus/ci_cd_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/group_information_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/invite_team_members_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/issues_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/merge_requests_menu_spec.rb' - 'spec/lib/sidebars/groups/menus/observability_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb' - - 'spec/lib/sidebars/groups/menus/scope_menu_spec.rb' - 'spec/lib/sidebars/groups/menus/settings_menu_spec.rb' - 'spec/lib/sidebars/menu_item_spec.rb' - - 'spec/lib/sidebars/menu_spec.rb' - - 'spec/lib/sidebars/panel_spec.rb' - 'spec/lib/sidebars/projects/context_spec.rb' - 'spec/lib/sidebars/projects/menus/analytics_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/confluence_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/deployments_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/external_wiki_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/hidden_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/invite_team_members_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/issues_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/merge_requests_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/monitor_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/project_information_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/scope_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/settings_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/shimo_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/snippets_menu_spec.rb' - - 'spec/lib/sidebars/projects/menus/wiki_menu_spec.rb' - 'spec/lib/sidebars/projects/menus/zentao_menu_spec.rb' - - 'spec/lib/sidebars/projects/panel_spec.rb' - 'spec/lib/system_check/app/authorized_keys_permission_check_spec.rb' - 'spec/lib/system_check/app/git_user_default_ssh_config_check_spec.rb' - 'spec/lib/system_check/app/hashed_storage_all_projects_check_spec.rb' @@ -5709,7 +4958,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/system_check/sidekiq_check_spec.rb' - 'spec/lib/system_check/simple_executor_spec.rb' - 'spec/lib/system_check_spec.rb' - - 'spec/lib/tasks/gitlab/metrics_exporter_task_spec.rb' - 'spec/lib/unnested_in_filters/dsl_spec.rb' - 'spec/lib/unnested_in_filters/rewriter_spec.rb' - 'spec/lib/uploaded_file_spec.rb' @@ -5722,7 +4970,6 @@ RSpec/MissingFeatureCategory: - 'spec/mailers/emails/groups_spec.rb' - 'spec/mailers/emails/identity_verification_spec.rb' - 'spec/mailers/emails/in_product_marketing_spec.rb' - - 'spec/mailers/emails/issues_spec.rb' - 'spec/mailers/emails/merge_requests_spec.rb' - 'spec/mailers/emails/pages_domains_spec.rb' - 'spec/mailers/emails/pipelines_spec.rb' @@ -5779,7 +5026,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/board_project_recent_visit_spec.rb' - 'spec/models/board_spec.rb' - 'spec/models/broadcast_message_spec.rb' - - 'spec/models/bulk_import_spec.rb' - 'spec/models/bulk_imports/configuration_spec.rb' - 'spec/models/bulk_imports/export_spec.rb' - 'spec/models/bulk_imports/export_status_spec.rb' @@ -5803,7 +5049,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/ci/daily_build_group_report_result_spec.rb' - 'spec/models/ci/deleted_object_spec.rb' - 'spec/models/ci/group_spec.rb' - - 'spec/models/ci/group_variable_spec.rb' - 'spec/models/ci/instance_variable_spec.rb' - 'spec/models/ci/namespace_mirror_spec.rb' - 'spec/models/ci/pending_build_spec.rb' @@ -5825,19 +5070,16 @@ RSpec/MissingFeatureCategory: - 'spec/models/ci/trigger_request_spec.rb' - 'spec/models/ci/unit_test_failure_spec.rb' - 'spec/models/ci/unit_test_spec.rb' - - 'spec/models/ci/variable_spec.rb' - 'spec/models/clusters/agent_spec.rb' - 'spec/models/clusters/agent_token_spec.rb' - 'spec/models/clusters/agents/activity_event_spec.rb' - 'spec/models/clusters/agents/group_authorization_spec.rb' - 'spec/models/clusters/agents/implicit_authorization_spec.rb' - 'spec/models/clusters/agents/project_authorization_spec.rb' - - 'spec/models/clusters/applications/crossplane_spec.rb' - 'spec/models/clusters/applications/helm_spec.rb' - 'spec/models/clusters/applications/ingress_spec.rb' - 'spec/models/clusters/applications/jupyter_spec.rb' - 'spec/models/clusters/applications/knative_spec.rb' - - 'spec/models/clusters/applications/prometheus_spec.rb' - 'spec/models/clusters/applications/runner_spec.rb' - 'spec/models/clusters/cluster_enabled_grant_spec.rb' - 'spec/models/clusters/clusters_hierarchy_spec.rb' @@ -5848,7 +5090,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/clusters/project_spec.rb' - 'spec/models/clusters/providers/aws_spec.rb' - 'spec/models/clusters/providers/gcp_spec.rb' - - 'spec/models/commit_collection_spec.rb' - 'spec/models/commit_range_spec.rb' - 'spec/models/commit_signatures/gpg_signature_spec.rb' - 'spec/models/commit_signatures/x509_commit_signature_spec.rb' @@ -5904,7 +5145,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/concerns/from_union_spec.rb' - 'spec/models/concerns/group_descendant_spec.rb' - 'spec/models/concerns/has_environment_scope_spec.rb' - - 'spec/models/concerns/has_user_type_spec.rb' - 'spec/models/concerns/id_in_ordered_spec.rb' - 'spec/models/concerns/ignorable_columns_spec.rb' - 'spec/models/concerns/integrations/enable_ssl_verification_spec.rb' @@ -5951,13 +5191,10 @@ RSpec/MissingFeatureCategory: - 'spec/models/concerns/subscribable_spec.rb' - 'spec/models/concerns/taggable_queries_spec.rb' - 'spec/models/concerns/token_authenticatable_spec.rb' - - 'spec/models/concerns/token_authenticatable_strategies/base_spec.rb' - 'spec/models/concerns/token_authenticatable_strategies/digest_spec.rb' - - 'spec/models/concerns/token_authenticatable_strategies/encrypted_spec.rb' - 'spec/models/concerns/token_authenticatable_strategies/encryption_helper_spec.rb' - 'spec/models/concerns/transactions_spec.rb' - 'spec/models/concerns/triggerable_hooks_spec.rb' - - 'spec/models/concerns/uniquify_spec.rb' - 'spec/models/concerns/usage_statistics_spec.rb' - 'spec/models/concerns/vulnerability_finding_helpers_spec.rb' - 'spec/models/concerns/vulnerability_finding_signature_helpers_spec.rb' @@ -6005,7 +5242,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/error_tracking/client_key_spec.rb' - 'spec/models/error_tracking/error_event_spec.rb' - 'spec/models/error_tracking/error_spec.rb' - - 'spec/models/error_tracking/project_error_tracking_setting_spec.rb' - 'spec/models/event_collection_spec.rb' - 'spec/models/exported_protected_branch_spec.rb' - 'spec/models/external_issue_spec.rb' @@ -6038,7 +5274,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/instance_configuration_spec.rb' - 'spec/models/instance_metadata/kas_spec.rb' - 'spec/models/instance_metadata_spec.rb' - - 'spec/models/integration_spec.rb' - 'spec/models/integrations/asana_spec.rb' - 'spec/models/integrations/assembla_spec.rb' - 'spec/models/integrations/bamboo_spec.rb' @@ -6047,7 +5282,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/base_third_party_wiki_spec.rb' - 'spec/models/integrations/bugzilla_spec.rb' - 'spec/models/integrations/buildkite_spec.rb' - - 'spec/models/integrations/campfire_spec.rb' - 'spec/models/integrations/chat_message/alert_message_spec.rb' - 'spec/models/integrations/chat_message/base_message_spec.rb' - 'spec/models/integrations/chat_message/deployment_message_spec.rb' @@ -6059,7 +5293,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/chat_message/wiki_page_message_spec.rb' - 'spec/models/integrations/confluence_spec.rb' - 'spec/models/integrations/custom_issue_tracker_spec.rb' - - 'spec/models/integrations/datadog_spec.rb' - 'spec/models/integrations/discord_spec.rb' - 'spec/models/integrations/drone_ci_spec.rb' - 'spec/models/integrations/emails_on_push_spec.rb' @@ -6074,7 +5307,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/jenkins_spec.rb' - 'spec/models/integrations/jira_spec.rb' - 'spec/models/integrations/jira_tracker_data_spec.rb' - - 'spec/models/integrations/mattermost_slash_commands_spec.rb' - 'spec/models/integrations/mattermost_spec.rb' - 'spec/models/integrations/microsoft_teams_spec.rb' - 'spec/models/integrations/mock_ci_spec.rb' @@ -6086,7 +5318,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/pushover_spec.rb' - 'spec/models/integrations/redmine_spec.rb' - 'spec/models/integrations/shimo_spec.rb' - - 'spec/models/integrations/slack_slash_commands_spec.rb' - 'spec/models/integrations/slack_spec.rb' - 'spec/models/integrations/teamcity_spec.rb' - 'spec/models/integrations/unify_circuit_spec.rb' @@ -6155,7 +5386,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/notification_setting_spec.rb' - 'spec/models/oauth_access_grant_spec.rb' - 'spec/models/oauth_access_token_spec.rb' - - 'spec/models/onboarding/completion_spec.rb' - 'spec/models/onboarding/progress_spec.rb' - 'spec/models/operations/feature_flag_spec.rb' - 'spec/models/operations/feature_flags/strategy_spec.rb' @@ -6254,7 +5484,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/protectable_dropdown_spec.rb' - 'spec/models/protected_branch/merge_access_level_spec.rb' - 'spec/models/protected_branch/push_access_level_spec.rb' - - 'spec/models/protected_branch_spec.rb' - 'spec/models/protected_tag_spec.rb' - 'spec/models/push_event_payload_spec.rb' - 'spec/models/push_event_spec.rb' @@ -6271,9 +5500,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/route_spec.rb' - 'spec/models/sent_notification_spec.rb' - 'spec/models/sentry_issue_spec.rb' - - 'spec/models/serverless/domain_cluster_spec.rb' - - 'spec/models/serverless/domain_spec.rb' - - 'spec/models/serverless/function_spec.rb' - 'spec/models/shard_spec.rb' - 'spec/models/snippet_blob_spec.rb' - 'spec/models/snippet_input_action_collection_spec.rb' @@ -6369,7 +5595,6 @@ RSpec/MissingFeatureCategory: - 'spec/policies/deploy_key_policy_spec.rb' - 'spec/policies/deploy_keys_project_policy_spec.rb' - 'spec/policies/deploy_token_policy_spec.rb' - - 'spec/policies/design_management/design_policy_spec.rb' - 'spec/policies/environment_policy_spec.rb' - 'spec/policies/group_deploy_key_policy_spec.rb' - 'spec/policies/group_deploy_keys_group_policy_spec.rb' @@ -6389,7 +5614,6 @@ RSpec/MissingFeatureCategory: - 'spec/policies/packages/policies/project_policy_spec.rb' - 'spec/policies/personal_access_token_policy_spec.rb' - 'spec/policies/personal_snippet_policy_spec.rb' - - 'spec/policies/project_hook_policy_spec.rb' - 'spec/policies/project_member_policy_spec.rb' - 'spec/policies/project_snippet_policy_spec.rb' - 'spec/policies/project_statistics_policy_spec.rb' @@ -6421,7 +5645,6 @@ RSpec/MissingFeatureCategory: - 'spec/presenters/ci/variable_presenter_spec.rb' - 'spec/presenters/clusterable_presenter_spec.rb' - 'spec/presenters/clusters/cluster_presenter_spec.rb' - - 'spec/presenters/commit_presenter_spec.rb' - 'spec/presenters/commit_status_presenter_spec.rb' - 'spec/presenters/deploy_key_presenter_spec.rb' - 'spec/presenters/deployments/deployment_presenter_spec.rb' @@ -6640,7 +5863,6 @@ RSpec/MissingFeatureCategory: - 'spec/scripts/changed-feature-flags_spec.rb' - 'spec/scripts/failed_tests_spec.rb' - 'spec/scripts/lib/glfm/parse_examples_spec.rb' - - 'spec/scripts/lib/glfm/shared_spec.rb' - 'spec/scripts/lib/glfm/verify_all_generated_files_are_up_to_date_spec.rb' - 'spec/scripts/setup/find_jh_branch_spec.rb' - 'spec/serializers/access_token_entity_base_spec.rb' @@ -6683,7 +5905,6 @@ RSpec/MissingFeatureCategory: - 'spec/serializers/ci/trigger_entity_spec.rb' - 'spec/serializers/ci/trigger_serializer_spec.rb' - 'spec/serializers/ci/variable_entity_spec.rb' - - 'spec/serializers/cluster_application_entity_spec.rb' - 'spec/serializers/cluster_entity_spec.rb' - 'spec/serializers/cluster_serializer_spec.rb' - 'spec/serializers/clusters/kubernetes_error_entity_spec.rb' @@ -6799,7 +6020,6 @@ RSpec/MissingFeatureCategory: - 'spec/serializers/paginated_diff_entity_spec.rb' - 'spec/serializers/personal_access_token_entity_spec.rb' - 'spec/serializers/personal_access_token_serializer_spec.rb' - - 'spec/serializers/pipeline_details_entity_spec.rb' - 'spec/serializers/pipeline_serializer_spec.rb' - 'spec/serializers/project_access_token_entity_spec.rb' - 'spec/serializers/project_access_token_serializer_spec.rb' @@ -6831,760 +6051,10 @@ RSpec/MissingFeatureCategory: - 'spec/serializers/user_serializer_spec.rb' - 'spec/serializers/web_ide_terminal_entity_spec.rb' - 'spec/serializers/web_ide_terminal_serializer_spec.rb' - - 'spec/services/access_token_validation_service_spec.rb' - - 'spec/services/admin/set_feature_flag_service_spec.rb' - - 'spec/services/alert_management/alerts/todo/create_service_spec.rb' - - 'spec/services/alert_management/alerts/update_service_spec.rb' - - 'spec/services/alert_management/create_alert_issue_service_spec.rb' - - 'spec/services/alert_management/http_integrations/create_service_spec.rb' - - 'spec/services/alert_management/http_integrations/destroy_service_spec.rb' - - 'spec/services/alert_management/http_integrations/update_service_spec.rb' - - 'spec/services/alert_management/metric_images/upload_service_spec.rb' - - 'spec/services/alert_management/process_prometheus_alert_service_spec.rb' - - 'spec/services/analytics/cycle_analytics/stages/list_service_spec.rb' - 'spec/services/application_settings/update_service_spec.rb' - 'spec/services/applications/create_service_spec.rb' - - 'spec/services/audit_event_service_spec.rb' - - 'spec/services/audit_events/build_service_spec.rb' - - 'spec/services/auth/container_registry_authentication_service_spec.rb' - - 'spec/services/auth/dependency_proxy_authentication_service_spec.rb' - - 'spec/services/authorized_project_update/find_records_due_for_refresh_service_spec.rb' - - 'spec/services/authorized_project_update/periodic_recalculate_service_spec.rb' - - 'spec/services/authorized_project_update/project_access_changed_service_spec.rb' - - 'spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb' - - 'spec/services/authorized_project_update/project_recalculate_service_spec.rb' - - 'spec/services/auto_merge/base_service_spec.rb' - - 'spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb' - - 'spec/services/auto_merge_service_spec.rb' - - 'spec/services/award_emojis/add_service_spec.rb' - - 'spec/services/award_emojis/base_service_spec.rb' - - 'spec/services/award_emojis/collect_user_emoji_service_spec.rb' - - 'spec/services/award_emojis/copy_service_spec.rb' - - 'spec/services/award_emojis/destroy_service_spec.rb' - - 'spec/services/award_emojis/toggle_service_spec.rb' - - 'spec/services/base_container_service_spec.rb' - - 'spec/services/base_count_service_spec.rb' - - 'spec/services/boards/create_service_spec.rb' - - 'spec/services/boards/destroy_service_spec.rb' - - 'spec/services/boards/issues/create_service_spec.rb' - - 'spec/services/boards/issues/list_service_spec.rb' - - 'spec/services/boards/issues/move_service_spec.rb' - - 'spec/services/boards/lists/create_service_spec.rb' - - 'spec/services/boards/lists/destroy_service_spec.rb' - - 'spec/services/boards/lists/list_service_spec.rb' - - 'spec/services/boards/lists/move_service_spec.rb' - - 'spec/services/boards/lists/update_service_spec.rb' - - 'spec/services/boards/visits/create_service_spec.rb' - - 'spec/services/branches/create_service_spec.rb' - - 'spec/services/branches/delete_merged_service_spec.rb' - - 'spec/services/branches/delete_service_spec.rb' - - 'spec/services/branches/diverging_commit_counts_service_spec.rb' - - 'spec/services/branches/validate_new_service_spec.rb' - - 'spec/services/bulk_create_integration_service_spec.rb' - - 'spec/services/bulk_imports/archive_extraction_service_spec.rb' - - 'spec/services/bulk_imports/export_service_spec.rb' - - 'spec/services/bulk_imports/file_decompression_service_spec.rb' - - 'spec/services/bulk_imports/file_download_service_spec.rb' - - 'spec/services/bulk_imports/file_export_service_spec.rb' - - 'spec/services/bulk_imports/lfs_objects_export_service_spec.rb' - - 'spec/services/bulk_imports/relation_export_service_spec.rb' - - 'spec/services/bulk_imports/repository_bundle_export_service_spec.rb' - - 'spec/services/bulk_imports/tree_export_service_spec.rb' - - 'spec/services/bulk_imports/uploads_export_service_spec.rb' - - 'spec/services/bulk_push_event_payload_service_spec.rb' - - 'spec/services/bulk_update_integration_service_spec.rb' - - 'spec/services/captcha/captcha_verification_service_spec.rb' - - 'spec/services/chat_names/find_user_service_spec.rb' - - 'spec/services/ci/abort_pipelines_service_spec.rb' - - 'spec/services/ci/append_build_trace_service_spec.rb' - - 'spec/services/ci/build_cancel_service_spec.rb' - - 'spec/services/ci/build_erase_service_spec.rb' - - 'spec/services/ci/build_report_result_service_spec.rb' - - 'spec/services/ci/build_unschedule_service_spec.rb' - - 'spec/services/ci/change_variable_service_spec.rb' - - 'spec/services/ci/change_variables_service_spec.rb' - - 'spec/services/ci/compare_accessibility_reports_service_spec.rb' - - 'spec/services/ci/compare_codequality_reports_service_spec.rb' - - 'spec/services/ci/compare_reports_base_service_spec.rb' - - 'spec/services/ci/compare_test_reports_service_spec.rb' - - 'spec/services/ci/copy_cross_database_associations_service_spec.rb' - - 'spec/services/ci/create_pipeline_service/artifacts_spec.rb' - - 'spec/services/ci/create_pipeline_service/cache_spec.rb' - - 'spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb' - - 'spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb' - - 'spec/services/ci/create_pipeline_service/custom_config_content_spec.rb' - - 'spec/services/ci/create_pipeline_service/custom_yaml_tags_spec.rb' - - 'spec/services/ci/create_pipeline_service/dry_run_spec.rb' - - 'spec/services/ci/create_pipeline_service/environment_spec.rb' - - 'spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb' - - 'spec/services/ci/create_pipeline_service/limit_active_jobs_spec.rb' - - 'spec/services/ci/create_pipeline_service/merge_requests_spec.rb' - - 'spec/services/ci/create_pipeline_service/needs_spec.rb' - - 'spec/services/ci/create_pipeline_service/parallel_spec.rb' - - 'spec/services/ci/create_pipeline_service/parameter_content_spec.rb' - - 'spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb' - - 'spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb' - - 'spec/services/ci/create_pipeline_service/rate_limit_spec.rb' - - 'spec/services/ci/create_pipeline_service/scripts_spec.rb' - - 'spec/services/ci/create_pipeline_service/tags_spec.rb' - - 'spec/services/ci/create_pipeline_service/variables_spec.rb' - - 'spec/services/ci/create_web_ide_terminal_service_spec.rb' - - 'spec/services/ci/daily_build_group_report_result_service_spec.rb' - - 'spec/services/ci/delete_objects_service_spec.rb' - - 'spec/services/ci/delete_unit_tests_service_spec.rb' - - 'spec/services/ci/deployments/destroy_service_spec.rb' - - 'spec/services/ci/destroy_pipeline_service_spec.rb' - - 'spec/services/ci/destroy_secure_file_service_spec.rb' - - 'spec/services/ci/disable_user_pipeline_schedules_service_spec.rb' - - 'spec/services/ci/drop_pipeline_service_spec.rb' - - 'spec/services/ci/ensure_stage_service_spec.rb' - - 'spec/services/ci/expire_pipeline_cache_service_spec.rb' - - 'spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb' - - 'spec/services/ci/find_exposed_artifacts_service_spec.rb' - - 'spec/services/ci/generate_codequality_mr_diff_report_service_spec.rb' - - 'spec/services/ci/generate_coverage_reports_service_spec.rb' - - 'spec/services/ci/generate_kubeconfig_service_spec.rb' - - 'spec/services/ci/generate_terraform_reports_service_spec.rb' - - 'spec/services/ci/job_artifacts/create_service_spec.rb' - - 'spec/services/ci/job_artifacts/delete_project_artifacts_service_spec.rb' - - 'spec/services/ci/job_artifacts/delete_service_spec.rb' - - 'spec/services/ci/job_artifacts/destroy_associations_service_spec.rb' - - 'spec/services/ci/job_artifacts/destroy_batch_service_spec.rb' - - 'spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb' - - 'spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb' - - 'spec/services/ci/job_artifacts/update_unknown_locked_status_service_spec.rb' - - 'spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb' - - 'spec/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service_spec.rb' - - 'spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb' - - 'spec/services/ci/pipeline_bridge_status_service_spec.rb' - - 'spec/services/ci/pipeline_creation/start_pipeline_service_spec.rb' - - 'spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb' - - 'spec/services/ci/pipeline_schedules/take_ownership_service_spec.rb' - - 'spec/services/ci/pipeline_trigger_service_spec.rb' - - 'spec/services/ci/pipelines/add_job_service_spec.rb' - - 'spec/services/ci/pipelines/hook_service_spec.rb' - - 'spec/services/ci/play_bridge_service_spec.rb' - - 'spec/services/ci/play_build_service_spec.rb' - - 'spec/services/ci/play_manual_stage_service_spec.rb' - - 'spec/services/ci/prepare_build_service_spec.rb' - - 'spec/services/ci/process_build_service_spec.rb' - - 'spec/services/ci/process_pipeline_service_spec.rb' - - 'spec/services/ci/process_sync_events_service_spec.rb' - - 'spec/services/ci/prometheus_metrics/observe_histograms_service_spec.rb' - - 'spec/services/ci/queue/pending_builds_strategy_spec.rb' - - 'spec/services/ci/resource_groups/assign_resource_from_resource_group_service_spec.rb' - - 'spec/services/ci/retry_pipeline_service_spec.rb' - - 'spec/services/ci/run_scheduled_build_service_spec.rb' - - 'spec/services/ci/stuck_builds/drop_pending_service_spec.rb' - - 'spec/services/ci/stuck_builds/drop_running_service_spec.rb' - - 'spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb' - - 'spec/services/ci/test_failure_history_service_spec.rb' - - 'spec/services/ci/track_failed_build_service_spec.rb' - - 'spec/services/ci/unlock_artifacts_service_spec.rb' - - 'spec/services/ci/update_build_queue_service_spec.rb' - - 'spec/services/ci/update_instance_variables_service_spec.rb' - - 'spec/services/ci/update_pending_build_service_spec.rb' - - 'spec/services/clusters/agent_tokens/create_service_spec.rb' - - 'spec/services/clusters/agent_tokens/track_usage_service_spec.rb' - - 'spec/services/clusters/agents/create_activity_event_service_spec.rb' - - 'spec/services/clusters/agents/create_service_spec.rb' - - 'spec/services/clusters/agents/delete_expired_events_service_spec.rb' - - 'spec/services/clusters/agents/delete_service_spec.rb' - - 'spec/services/clusters/build_kubernetes_namespace_service_spec.rb' - - 'spec/services/clusters/build_service_spec.rb' - - 'spec/services/clusters/cleanup/project_namespace_service_spec.rb' - - 'spec/services/clusters/cleanup/service_account_service_spec.rb' - - 'spec/services/clusters/create_service_spec.rb' - - 'spec/services/clusters/destroy_service_spec.rb' - - 'spec/services/clusters/integrations/create_service_spec.rb' - - 'spec/services/clusters/integrations/prometheus_health_check_service_spec.rb' - - 'spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb' - - 'spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb' - - 'spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb' - - 'spec/services/clusters/kubernetes_spec.rb' - - 'spec/services/clusters/management/validate_management_project_permissions_service_spec.rb' - - 'spec/services/clusters/update_service_spec.rb' - - 'spec/services/cohorts_service_spec.rb' - - 'spec/services/commits/cherry_pick_service_spec.rb' - - 'spec/services/commits/commit_patch_service_spec.rb' - - 'spec/services/commits/tag_service_spec.rb' - - 'spec/services/compare_service_spec.rb' - - 'spec/services/concerns/audit_event_save_type_spec.rb' - - 'spec/services/concerns/exclusive_lease_guard_spec.rb' - - 'spec/services/concerns/merge_requests/assigns_merge_params_spec.rb' - - 'spec/services/concerns/rate_limited_service_spec.rb' - - 'spec/services/container_expiration_policies/cleanup_service_spec.rb' - - 'spec/services/container_expiration_policies/update_service_spec.rb' - - 'spec/services/customer_relations/contacts/create_service_spec.rb' - - 'spec/services/customer_relations/contacts/update_service_spec.rb' - - 'spec/services/customer_relations/organizations/create_service_spec.rb' - - 'spec/services/customer_relations/organizations/update_service_spec.rb' - - 'spec/services/database/consistency_fix_service_spec.rb' - - 'spec/services/dependency_proxy/auth_token_service_spec.rb' - - 'spec/services/dependency_proxy/find_cached_manifest_service_spec.rb' - - 'spec/services/dependency_proxy/group_settings/update_service_spec.rb' - - 'spec/services/dependency_proxy/head_manifest_service_spec.rb' - - 'spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb' - - 'spec/services/dependency_proxy/request_token_service_spec.rb' - - 'spec/services/deploy_keys/create_service_spec.rb' - - 'spec/services/deployments/archive_in_project_service_spec.rb' - - 'spec/services/deployments/create_for_build_service_spec.rb' - - 'spec/services/deployments/create_service_spec.rb' - - 'spec/services/deployments/link_merge_requests_service_spec.rb' - - 'spec/services/deployments/older_deployments_drop_service_spec.rb' - - 'spec/services/deployments/update_environment_service_spec.rb' - - 'spec/services/deployments/update_service_spec.rb' - - 'spec/services/design_management/copy_design_collection/copy_service_spec.rb' - - 'spec/services/design_management/copy_design_collection/queue_service_spec.rb' - - 'spec/services/design_management/delete_designs_service_spec.rb' - - 'spec/services/design_management/design_user_notes_count_service_spec.rb' - - 'spec/services/design_management/generate_image_versions_service_spec.rb' - - 'spec/services/design_management/move_designs_service_spec.rb' - - 'spec/services/discussions/capture_diff_note_position_service_spec.rb' - - 'spec/services/discussions/capture_diff_note_positions_service_spec.rb' - - 'spec/services/discussions/update_diff_position_service_spec.rb' - - 'spec/services/draft_notes/create_service_spec.rb' - - 'spec/services/draft_notes/destroy_service_spec.rb' - - 'spec/services/draft_notes/publish_service_spec.rb' - - 'spec/services/emails/confirm_service_spec.rb' - - 'spec/services/emails/create_service_spec.rb' - - 'spec/services/emails/destroy_service_spec.rb' - - 'spec/services/environments/auto_stop_service_spec.rb' - - 'spec/services/environments/canary_ingress/update_service_spec.rb' - - 'spec/services/environments/create_for_build_service_spec.rb' - - 'spec/services/environments/reset_auto_stop_service_spec.rb' - - 'spec/services/environments/schedule_to_delete_review_apps_service_spec.rb' - - 'spec/services/environments/stop_service_spec.rb' - - 'spec/services/error_tracking/base_service_spec.rb' - - 'spec/services/error_tracking/collect_error_service_spec.rb' - - 'spec/services/error_tracking/issue_details_service_spec.rb' - - 'spec/services/error_tracking/issue_latest_event_service_spec.rb' - - 'spec/services/error_tracking/issue_update_service_spec.rb' - - 'spec/services/error_tracking/list_issues_service_spec.rb' - - 'spec/services/event_create_service_spec.rb' - - 'spec/services/events/destroy_service_spec.rb' - - 'spec/services/events/render_service_spec.rb' - - 'spec/services/feature_flags/create_service_spec.rb' - - 'spec/services/feature_flags/destroy_service_spec.rb' - - 'spec/services/feature_flags/hook_service_spec.rb' - - 'spec/services/feature_flags/update_service_spec.rb' - - 'spec/services/files/create_service_spec.rb' - - 'spec/services/files/delete_service_spec.rb' - - 'spec/services/files/multi_service_spec.rb' - - 'spec/services/files/update_service_spec.rb' - - 'spec/services/git/base_hooks_service_spec.rb' - - 'spec/services/git/branch_hooks_service_spec.rb' - - 'spec/services/git/branch_push_service_spec.rb' - - 'spec/services/git/process_ref_changes_service_spec.rb' - - 'spec/services/git/tag_hooks_service_spec.rb' - - 'spec/services/git/tag_push_service_spec.rb' - - 'spec/services/git/wiki_push_service/change_spec.rb' - - 'spec/services/google_cloud/create_cloudsql_instance_service_spec.rb' - - 'spec/services/google_cloud/create_service_accounts_service_spec.rb' - - 'spec/services/google_cloud/enable_cloud_run_service_spec.rb' - - 'spec/services/google_cloud/enable_cloudsql_service_spec.rb' - - 'spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb' - - 'spec/services/google_cloud/generate_pipeline_service_spec.rb' - - 'spec/services/google_cloud/get_cloudsql_instances_service_spec.rb' - - 'spec/services/google_cloud/service_accounts_service_spec.rb' - - 'spec/services/google_cloud/setup_cloudsql_instance_service_spec.rb' - - 'spec/services/gpg_keys/create_service_spec.rb' - 'spec/services/gpg_keys/destroy_service_spec.rb' - - 'spec/services/grafana/proxy_service_spec.rb' - - 'spec/services/gravatar_service_spec.rb' - - 'spec/services/groups/auto_devops_service_spec.rb' - - 'spec/services/groups/autocomplete_service_spec.rb' - - 'spec/services/groups/deploy_tokens/create_service_spec.rb' - - 'spec/services/groups/deploy_tokens/destroy_service_spec.rb' - - 'spec/services/groups/deploy_tokens/revoke_service_spec.rb' - - 'spec/services/groups/group_links/create_service_spec.rb' - - 'spec/services/groups/group_links/destroy_service_spec.rb' - - 'spec/services/groups/group_links/update_service_spec.rb' - - 'spec/services/groups/import_export/export_service_spec.rb' - - 'spec/services/groups/import_export/import_service_spec.rb' - - 'spec/services/groups/merge_requests_count_service_spec.rb' - - 'spec/services/groups/nested_create_service_spec.rb' - - 'spec/services/groups/open_issues_count_service_spec.rb' - - 'spec/services/groups/participants_service_spec.rb' - - 'spec/services/groups/update_service_spec.rb' - - 'spec/services/groups/update_shared_runners_service_spec.rb' - - 'spec/services/groups/update_statistics_service_spec.rb' - - 'spec/services/ide/base_config_service_spec.rb' - - 'spec/services/ide/schemas_config_service_spec.rb' - - 'spec/services/ide/terminal_config_service_spec.rb' - - 'spec/services/import/bitbucket_server_service_spec.rb' - - 'spec/services/import/fogbugz_service_spec.rb' - - 'spec/services/import/github/cancel_project_import_service_spec.rb' - - 'spec/services/import/github/notes/create_service_spec.rb' - - 'spec/services/import/github_service_spec.rb' - - 'spec/services/import/gitlab_projects/create_project_service_spec.rb' - - 'spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb' - - 'spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb' - - 'spec/services/import/prepare_service_spec.rb' - - 'spec/services/import/validate_remote_git_endpoint_service_spec.rb' - - 'spec/services/import_export_clean_up_service_spec.rb' - - 'spec/services/incident_management/incidents/create_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb' - - 'spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb' - - 'spec/services/incident_management/pager_duty/process_webhook_service_spec.rb' - - 'spec/services/incident_management/timeline_event_tags/create_service_spec.rb' - - 'spec/services/incident_management/timeline_events/create_service_spec.rb' - - 'spec/services/incident_management/timeline_events/destroy_service_spec.rb' - - 'spec/services/integrations/propagate_service_spec.rb' - - 'spec/services/integrations/test/project_service_spec.rb' - - 'spec/services/issuable/bulk_update_service_spec.rb' - - 'spec/services/issuable/common_system_notes_service_spec.rb' - - 'spec/services/issuable/destroy_label_links_service_spec.rb' - - 'spec/services/issuable/destroy_service_spec.rb' - - 'spec/services/issuable/discussions_list_service_spec.rb' - - 'spec/services/issuable/process_assignees_spec.rb' - - 'spec/services/issue_links/create_service_spec.rb' - - 'spec/services/issue_links/destroy_service_spec.rb' - - 'spec/services/issue_links/list_service_spec.rb' - - 'spec/services/issues/after_create_service_spec.rb' - - 'spec/services/issues/build_service_spec.rb' - - 'spec/services/issues/clone_service_spec.rb' - - 'spec/services/issues/close_service_spec.rb' - - 'spec/services/issues/create_service_spec.rb' - - 'spec/services/issues/duplicate_service_spec.rb' - - 'spec/services/issues/prepare_import_csv_service_spec.rb' - - 'spec/services/issues/referenced_merge_requests_service_spec.rb' - - 'spec/services/issues/related_branches_service_spec.rb' - - 'spec/services/issues/relative_position_rebalancing_service_spec.rb' - - 'spec/services/issues/reopen_service_spec.rb' - - 'spec/services/issues/reorder_service_spec.rb' - - 'spec/services/issues/resolve_discussions_spec.rb' - - 'spec/services/issues/set_crm_contacts_service_spec.rb' - - 'spec/services/issues/update_service_spec.rb' - - 'spec/services/issues/zoom_link_service_spec.rb' - - 'spec/services/jira/requests/projects/list_service_spec.rb' - - 'spec/services/jira_connect/sync_service_spec.rb' - - 'spec/services/jira_connect_installations/destroy_service_spec.rb' - - 'spec/services/jira_connect_subscriptions/create_service_spec.rb' - - 'spec/services/jira_import/cloud_users_mapper_service_spec.rb' - - 'spec/services/jira_import/server_users_mapper_service_spec.rb' - - 'spec/services/jira_import/start_import_service_spec.rb' - - 'spec/services/jira_import/users_importer_spec.rb' - - 'spec/services/keys/create_service_spec.rb' - - 'spec/services/keys/destroy_service_spec.rb' - - 'spec/services/keys/expiry_notification_service_spec.rb' - - 'spec/services/keys/last_used_service_spec.rb' - - 'spec/services/labels/available_labels_service_spec.rb' - - 'spec/services/labels/create_service_spec.rb' - - 'spec/services/labels/find_or_create_service_spec.rb' - - 'spec/services/labels/promote_service_spec.rb' - - 'spec/services/labels/transfer_service_spec.rb' - - 'spec/services/labels/update_service_spec.rb' - - 'spec/services/lfs/lock_file_service_spec.rb' - - 'spec/services/lfs/locks_finder_service_spec.rb' - - 'spec/services/lfs/push_service_spec.rb' - - 'spec/services/lfs/unlock_file_service_spec.rb' - - 'spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb' - - 'spec/services/loose_foreign_keys/cleaner_service_spec.rb' - - 'spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb' - - 'spec/services/markdown_content_rewriter_service_spec.rb' - - 'spec/services/markup/rendering_service_spec.rb' - - 'spec/services/members/approve_access_request_service_spec.rb' - - 'spec/services/members/create_service_spec.rb' - - 'spec/services/members/creator_service_spec.rb' - - 'spec/services/members/groups/creator_service_spec.rb' - - 'spec/services/members/import_project_team_service_spec.rb' - - 'spec/services/members/invitation_reminder_email_service_spec.rb' - - 'spec/services/members/invite_member_builder_spec.rb' - - 'spec/services/members/invite_service_spec.rb' - - 'spec/services/members/projects/creator_service_spec.rb' - - 'spec/services/members/request_access_service_spec.rb' - - 'spec/services/members/standard_member_builder_spec.rb' - - 'spec/services/members/unassign_issuables_service_spec.rb' - - 'spec/services/members/update_service_spec.rb' - - 'spec/services/merge_requests/add_context_service_spec.rb' - - 'spec/services/merge_requests/add_spent_time_service_spec.rb' - - 'spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb' - - 'spec/services/merge_requests/approval_service_spec.rb' - - 'spec/services/merge_requests/assign_issues_service_spec.rb' - - 'spec/services/merge_requests/cleanup_refs_service_spec.rb' - - 'spec/services/merge_requests/conflicts/list_service_spec.rb' - - 'spec/services/merge_requests/conflicts/resolve_service_spec.rb' - - 'spec/services/merge_requests/create_approval_event_service_spec.rb' - - 'spec/services/merge_requests/create_pipeline_service_spec.rb' - - 'spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb' - - 'spec/services/merge_requests/execute_approval_hooks_service_spec.rb' - - 'spec/services/merge_requests/ff_merge_service_spec.rb' - - 'spec/services/merge_requests/get_urls_service_spec.rb' - - 'spec/services/merge_requests/handle_assignees_change_service_spec.rb' - - 'spec/services/merge_requests/mark_reviewer_reviewed_service_spec.rb' - - 'spec/services/merge_requests/merge_orchestration_service_spec.rb' - - 'spec/services/merge_requests/merge_service_spec.rb' - - 'spec/services/merge_requests/merge_to_ref_service_spec.rb' - - 'spec/services/merge_requests/mergeability/check_base_service_spec.rb' - - 'spec/services/merge_requests/mergeability/check_broken_status_service_spec.rb' - - 'spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb' - - 'spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb' - - 'spec/services/merge_requests/mergeability/check_draft_status_service_spec.rb' - - 'spec/services/merge_requests/mergeability/check_open_status_service_spec.rb' - - 'spec/services/merge_requests/mergeability/detailed_merge_status_service_spec.rb' - - 'spec/services/merge_requests/mergeability/logger_spec.rb' - - 'spec/services/merge_requests/mergeability/run_checks_service_spec.rb' - - 'spec/services/merge_requests/mergeability_check_service_spec.rb' - - 'spec/services/merge_requests/migrate_external_diffs_service_spec.rb' - - 'spec/services/merge_requests/post_merge_service_spec.rb' - - 'spec/services/merge_requests/push_options_handler_service_spec.rb' - - 'spec/services/merge_requests/reload_diffs_service_spec.rb' - - 'spec/services/merge_requests/reload_merge_head_diff_service_spec.rb' - - 'spec/services/merge_requests/reopen_service_spec.rb' - - 'spec/services/merge_requests/request_review_service_spec.rb' - - 'spec/services/merge_requests/resolve_todos_service_spec.rb' - - 'spec/services/merge_requests/resolved_discussion_notification_service_spec.rb' - - 'spec/services/merge_requests/squash_service_spec.rb' - - 'spec/services/merge_requests/update_assignees_service_spec.rb' - - 'spec/services/merge_requests/update_reviewers_service_spec.rb' - - 'spec/services/metrics/dashboard/annotations/create_service_spec.rb' - - 'spec/services/metrics/dashboard/annotations/delete_service_spec.rb' - - 'spec/services/metrics/dashboard/clone_dashboard_service_spec.rb' - - 'spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb' - - 'spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb' - - 'spec/services/metrics/dashboard/custom_dashboard_service_spec.rb' - - 'spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb' - - 'spec/services/metrics/dashboard/default_embed_service_spec.rb' - - 'spec/services/metrics/dashboard/dynamic_embed_service_spec.rb' - - 'spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb' - 'spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb' - - 'spec/services/metrics/dashboard/panel_preview_service_spec.rb' - - 'spec/services/metrics/dashboard/pod_dashboard_service_spec.rb' - - 'spec/services/metrics/dashboard/self_monitoring_dashboard_service_spec.rb' - - 'spec/services/metrics/dashboard/system_dashboard_service_spec.rb' - - 'spec/services/metrics/dashboard/transient_embed_service_spec.rb' - - 'spec/services/metrics/dashboard/update_dashboard_service_spec.rb' - - 'spec/services/metrics/sample_metrics_service_spec.rb' - - 'spec/services/metrics/users_starred_dashboards/create_service_spec.rb' - - 'spec/services/metrics/users_starred_dashboards/delete_service_spec.rb' - - 'spec/services/milestones/close_service_spec.rb' - - 'spec/services/milestones/closed_issues_count_service_spec.rb' - - 'spec/services/milestones/create_service_spec.rb' - - 'spec/services/milestones/destroy_service_spec.rb' - - 'spec/services/milestones/find_or_create_service_spec.rb' - - 'spec/services/milestones/issues_count_service_spec.rb' - - 'spec/services/milestones/merge_requests_count_service_spec.rb' - - 'spec/services/milestones/promote_service_spec.rb' - - 'spec/services/milestones/transfer_service_spec.rb' - - 'spec/services/milestones/update_service_spec.rb' - - 'spec/services/ml/experiment_tracking/candidate_repository_spec.rb' - - 'spec/services/ml/experiment_tracking/experiment_repository_spec.rb' - - 'spec/services/namespace_settings/update_service_spec.rb' - - 'spec/services/namespaces/in_product_marketing_emails_service_spec.rb' - - 'spec/services/namespaces/package_settings/update_service_spec.rb' - - 'spec/services/namespaces/statistics_refresher_service_spec.rb' - - 'spec/services/note_summary_spec.rb' - - 'spec/services/notes/build_service_spec.rb' - - 'spec/services/notes/copy_service_spec.rb' - - 'spec/services/notes/destroy_service_spec.rb' - - 'spec/services/notes/post_process_service_spec.rb' - - 'spec/services/notes/quick_actions_service_spec.rb' - - 'spec/services/notes/render_service_spec.rb' - - 'spec/services/notes/resolve_service_spec.rb' - - 'spec/services/notes/update_service_spec.rb' - - 'spec/services/notification_recipients/build_service_spec.rb' - - 'spec/services/notification_recipients/builder/default_spec.rb' - - 'spec/services/notification_recipients/builder/new_note_spec.rb' - - 'spec/services/onboarding/progress_service_spec.rb' - - 'spec/services/packages/cleanup/execute_policy_service_spec.rb' - - 'spec/services/packages/cleanup/update_policy_service_spec.rb' - - 'spec/services/packages/composer/composer_json_service_spec.rb' - - 'spec/services/packages/composer/create_package_service_spec.rb' - - 'spec/services/packages/composer/version_parser_service_spec.rb' - - 'spec/services/packages/conan/create_package_file_service_spec.rb' - - 'spec/services/packages/conan/create_package_service_spec.rb' - - 'spec/services/packages/create_dependency_service_spec.rb' - - 'spec/services/packages/create_event_service_spec.rb' - - 'spec/services/packages/create_package_file_service_spec.rb' - - 'spec/services/packages/create_temporary_package_service_spec.rb' - - 'spec/services/packages/generic/create_package_file_service_spec.rb' - - 'spec/services/packages/generic/find_or_create_package_service_spec.rb' - - 'spec/services/packages/go/create_package_service_spec.rb' - - 'spec/services/packages/go/sync_packages_service_spec.rb' - - 'spec/services/packages/helm/extract_file_metadata_service_spec.rb' - - 'spec/services/packages/helm/process_file_service_spec.rb' - - 'spec/services/packages/mark_package_files_for_destruction_service_spec.rb' - - 'spec/services/packages/mark_package_for_destruction_service_spec.rb' - - 'spec/services/packages/mark_packages_for_destruction_service_spec.rb' - - 'spec/services/packages/maven/create_package_service_spec.rb' - - 'spec/services/packages/maven/find_or_create_package_service_spec.rb' - - 'spec/services/packages/maven/metadata/append_package_file_service_spec.rb' - - 'spec/services/packages/maven/metadata/create_plugins_xml_service_spec.rb' - - 'spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb' - - 'spec/services/packages/maven/metadata/sync_service_spec.rb' - - 'spec/services/packages/npm/create_package_service_spec.rb' - - 'spec/services/packages/npm/create_tag_service_spec.rb' - - 'spec/services/packages/nuget/create_dependency_service_spec.rb' - - 'spec/services/packages/nuget/metadata_extraction_service_spec.rb' - - 'spec/services/packages/nuget/search_service_spec.rb' - - 'spec/services/packages/nuget/sync_metadatum_service_spec.rb' - - 'spec/services/packages/nuget/update_package_from_metadata_service_spec.rb' - - 'spec/services/packages/pypi/create_package_service_spec.rb' - - 'spec/services/packages/remove_tag_service_spec.rb' - - 'spec/services/packages/rpm/parse_package_service_spec.rb' - - 'spec/services/packages/rpm/repository_metadata/build_filelist_xml_service_spec.rb' - - 'spec/services/packages/rpm/repository_metadata/build_other_xml_service_spec.rb' - - 'spec/services/packages/rpm/repository_metadata/build_primary_xml_service_spec.rb' - - 'spec/services/packages/rpm/repository_metadata/build_repomd_xml_service_spec.rb' - - 'spec/services/packages/rpm/repository_metadata/update_xml_service_spec.rb' - - 'spec/services/packages/rubygems/create_dependencies_service_spec.rb' - - 'spec/services/packages/rubygems/create_gemspec_service_spec.rb' - - 'spec/services/packages/rubygems/dependency_resolver_service_spec.rb' - - 'spec/services/packages/rubygems/metadata_extraction_service_spec.rb' - - 'spec/services/packages/rubygems/process_gem_service_spec.rb' - - 'spec/services/packages/terraform_module/create_package_service_spec.rb' - - 'spec/services/packages/update_package_file_service_spec.rb' - - 'spec/services/packages/update_tags_service_spec.rb' - - 'spec/services/pages/delete_service_spec.rb' - - 'spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb' - - 'spec/services/pages/zip_directory_service_spec.rb' - - 'spec/services/pages_domains/create_acme_order_service_spec.rb' - - 'spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb' - - 'spec/services/personal_access_tokens/create_service_spec.rb' - - 'spec/services/personal_access_tokens/last_used_service_spec.rb' - - 'spec/services/personal_access_tokens/revoke_service_spec.rb' - - 'spec/services/post_receive_service_spec.rb' - - 'spec/services/preview_markdown_service_spec.rb' - - 'spec/services/product_analytics/build_activity_graph_service_spec.rb' - - 'spec/services/product_analytics/build_graph_service_spec.rb' - - 'spec/services/projects/after_rename_service_spec.rb' - - 'spec/services/projects/alerting/notify_service_spec.rb' - - 'spec/services/projects/all_issues_count_service_spec.rb' - - 'spec/services/projects/all_merge_requests_count_service_spec.rb' - - 'spec/services/projects/android_target_platform_detector_service_spec.rb' - - 'spec/services/projects/apple_target_platform_detector_service_spec.rb' - - 'spec/services/projects/auto_devops/disable_service_spec.rb' - - 'spec/services/projects/autocomplete_service_spec.rb' - - 'spec/services/projects/batch_open_issues_count_service_spec.rb' - - 'spec/services/projects/blame_service_spec.rb' - - 'spec/services/projects/branches_by_mode_service_spec.rb' - - 'spec/services/projects/cleanup_service_spec.rb' - - 'spec/services/projects/container_repository/cleanup_tags_service_spec.rb' - - 'spec/services/projects/container_repository/delete_tags_service_spec.rb' - - 'spec/services/projects/container_repository/destroy_service_spec.rb' - - 'spec/services/projects/container_repository/gitlab/cleanup_tags_service_spec.rb' - - 'spec/services/projects/container_repository/gitlab/delete_tags_service_spec.rb' - - 'spec/services/projects/container_repository/third_party/cleanup_tags_service_spec.rb' - - 'spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb' - - 'spec/services/projects/count_service_spec.rb' - - 'spec/services/projects/create_from_template_service_spec.rb' - - 'spec/services/projects/deploy_tokens/create_service_spec.rb' - - 'spec/services/projects/deploy_tokens/destroy_service_spec.rb' - - 'spec/services/projects/detect_repository_languages_service_spec.rb' - - 'spec/services/projects/download_service_spec.rb' - - 'spec/services/projects/enable_deploy_key_service_spec.rb' - - 'spec/services/projects/fork_service_spec.rb' - - 'spec/services/projects/forks_count_service_spec.rb' - - 'spec/services/projects/git_deduplication_service_spec.rb' - - 'spec/services/projects/gitlab_projects_import_service_spec.rb' - - 'spec/services/projects/group_links/create_service_spec.rb' - - 'spec/services/projects/group_links/destroy_service_spec.rb' - - 'spec/services/projects/group_links/update_service_spec.rb' - - 'spec/services/projects/hashed_storage/base_attachment_service_spec.rb' - - 'spec/services/projects/hashed_storage/migrate_attachments_service_spec.rb' - - 'spec/services/projects/hashed_storage/migrate_repository_service_spec.rb' - - 'spec/services/projects/hashed_storage/migration_service_spec.rb' - - 'spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb' - - 'spec/services/projects/hashed_storage/rollback_repository_service_spec.rb' - - 'spec/services/projects/hashed_storage/rollback_service_spec.rb' - - 'spec/services/projects/import_error_filter_spec.rb' - - 'spec/services/projects/import_export/relation_export_service_spec.rb' - - 'spec/services/projects/in_product_marketing_campaign_emails_service_spec.rb' - - 'spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb' - - 'spec/services/projects/lfs_pointers/lfs_download_service_spec.rb' - - 'spec/services/projects/lfs_pointers/lfs_import_service_spec.rb' - - 'spec/services/projects/lfs_pointers/lfs_link_service_spec.rb' - - 'spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb' - - 'spec/services/projects/move_access_service_spec.rb' - - 'spec/services/projects/move_deploy_keys_projects_service_spec.rb' - - 'spec/services/projects/move_forks_service_spec.rb' - - 'spec/services/projects/move_lfs_objects_projects_service_spec.rb' - - 'spec/services/projects/move_notification_settings_service_spec.rb' - - 'spec/services/projects/move_project_authorizations_service_spec.rb' - - 'spec/services/projects/move_project_group_links_service_spec.rb' - - 'spec/services/projects/move_project_members_service_spec.rb' - - 'spec/services/projects/move_users_star_projects_service_spec.rb' - - 'spec/services/projects/open_issues_count_service_spec.rb' - - 'spec/services/projects/open_merge_requests_count_service_spec.rb' - - 'spec/services/projects/operations/update_service_spec.rb' - - 'spec/services/projects/overwrite_project_service_spec.rb' - - 'spec/services/projects/participants_service_spec.rb' - - 'spec/services/projects/prometheus/alerts/notify_service_spec.rb' - - 'spec/services/projects/prometheus/metrics/destroy_service_spec.rb' - - 'spec/services/projects/protect_default_branch_service_spec.rb' - - 'spec/services/projects/readme_renderer_service_spec.rb' - - 'spec/services/projects/record_target_platforms_service_spec.rb' - - 'spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb' - - 'spec/services/projects/repository_languages_service_spec.rb' - - 'spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb' - - 'spec/services/projects/transfer_service_spec.rb' - - 'spec/services/projects/unlink_fork_service_spec.rb' - - 'spec/services/projects/update_pages_service_spec.rb' - - 'spec/services/projects/update_remote_mirror_service_spec.rb' - - 'spec/services/projects/update_repository_storage_service_spec.rb' - - 'spec/services/projects/update_service_spec.rb' - - 'spec/services/projects/update_statistics_service_spec.rb' - - 'spec/services/prometheus/proxy_service_spec.rb' - - 'spec/services/prometheus/proxy_variable_substitution_service_spec.rb' - - 'spec/services/protected_branches/api_service_spec.rb' - - 'spec/services/protected_branches/cache_service_spec.rb' - - 'spec/services/protected_branches/destroy_service_spec.rb' - - 'spec/services/protected_branches/update_service_spec.rb' - - 'spec/services/protected_tags/create_service_spec.rb' - - 'spec/services/protected_tags/destroy_service_spec.rb' - - 'spec/services/protected_tags/update_service_spec.rb' - - 'spec/services/push_event_payload_service_spec.rb' - - 'spec/services/quick_actions/target_service_spec.rb' - - 'spec/services/releases/create_evidence_service_spec.rb' - - 'spec/services/releases/destroy_service_spec.rb' - - 'spec/services/repositories/changelog_service_spec.rb' - - 'spec/services/repositories/destroy_service_spec.rb' - - 'spec/services/repository_archive_clean_up_service_spec.rb' - - 'spec/services/reset_project_cache_service_spec.rb' - - 'spec/services/resource_access_tokens/create_service_spec.rb' - - 'spec/services/resource_access_tokens/revoke_service_spec.rb' - - 'spec/services/resource_events/change_milestone_service_spec.rb' - - 'spec/services/resource_events/change_state_service_spec.rb' - - 'spec/services/resource_events/merge_into_notes_service_spec.rb' - - 'spec/services/resource_events/synthetic_label_notes_builder_service_spec.rb' - - 'spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb' - - 'spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb' - - 'spec/services/search/global_service_spec.rb' - - 'spec/services/search/group_service_spec.rb' - - 'spec/services/search/snippet_service_spec.rb' - - 'spec/services/security/ci_configuration/container_scanning_create_service_spec.rb' - - 'spec/services/security/ci_configuration/sast_iac_create_service_spec.rb' - - 'spec/services/security/ci_configuration/sast_parser_service_spec.rb' - - 'spec/services/security/ci_configuration/secret_detection_create_service_spec.rb' - - 'spec/services/security/merge_reports_service_spec.rb' - - 'spec/services/serverless/associate_domain_service_spec.rb' - - 'spec/services/service_desk_settings/update_service_spec.rb' - - 'spec/services/service_ping/submit_service_ping_service_spec.rb' - - 'spec/services/service_response_spec.rb' - - 'spec/services/snippets/bulk_destroy_service_spec.rb' - - 'spec/services/snippets/count_service_spec.rb' - - 'spec/services/snippets/create_service_spec.rb' - - 'spec/services/snippets/destroy_service_spec.rb' - - 'spec/services/snippets/repository_validation_service_spec.rb' - - 'spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb' - - 'spec/services/snippets/update_repository_storage_service_spec.rb' - - 'spec/services/snippets/update_service_spec.rb' - - 'spec/services/snippets/update_statistics_service_spec.rb' - - 'spec/services/spam/akismet_mark_as_spam_service_spec.rb' - - 'spec/services/spam/akismet_service_spec.rb' - - 'spec/services/spam/ham_service_spec.rb' - - 'spec/services/spam/spam_action_service_spec.rb' - - 'spec/services/spam/spam_params_spec.rb' - - 'spec/services/spam/spam_verdict_service_spec.rb' - - 'spec/services/submodules/update_service_spec.rb' - - 'spec/services/suggestions/apply_service_spec.rb' - - 'spec/services/suggestions/create_service_spec.rb' - - 'spec/services/suggestions/outdate_service_spec.rb' - - 'spec/services/system_hooks_service_spec.rb' - - 'spec/services/system_notes/alert_management_service_spec.rb' - - 'spec/services/system_notes/base_service_spec.rb' - - 'spec/services/system_notes/commit_service_spec.rb' - - 'spec/services/system_notes/design_management_service_spec.rb' - - 'spec/services/system_notes/incident_service_spec.rb' - - 'spec/services/system_notes/incidents_service_spec.rb' - - 'spec/services/system_notes/issuables_service_spec.rb' - - 'spec/services/system_notes/merge_requests_service_spec.rb' - - 'spec/services/system_notes/time_tracking_service_spec.rb' - - 'spec/services/system_notes/zoom_service_spec.rb' - - 'spec/services/tags/create_service_spec.rb' - - 'spec/services/tags/destroy_service_spec.rb' - - 'spec/services/task_list_toggle_service_spec.rb' - - 'spec/services/tasks_to_be_done/base_service_spec.rb' - - 'spec/services/terraform/remote_state_handler_spec.rb' - - 'spec/services/terraform/states/destroy_service_spec.rb' - - 'spec/services/terraform/states/trigger_destroy_service_spec.rb' - - 'spec/services/test_hooks/project_service_spec.rb' - - 'spec/services/test_hooks/system_service_spec.rb' - - 'spec/services/timelogs/delete_service_spec.rb' - - 'spec/services/todo_service_spec.rb' - - 'spec/services/todos/allowed_target_filter_service_spec.rb' - - 'spec/services/todos/destroy/confidential_issue_service_spec.rb' - - 'spec/services/todos/destroy/design_service_spec.rb' - - 'spec/services/todos/destroy/destroyed_issuable_service_spec.rb' - - 'spec/services/todos/destroy/project_private_service_spec.rb' - - 'spec/services/todos/destroy/unauthorized_features_service_spec.rb' - - 'spec/services/topics/merge_service_spec.rb' - - 'spec/services/two_factor/destroy_service_spec.rb' - - 'spec/services/update_container_registry_info_service_spec.rb' - - 'spec/services/update_merge_request_metrics_service_spec.rb' - - 'spec/services/upload_service_spec.rb' - - 'spec/services/uploads/destroy_service_spec.rb' - - 'spec/services/user_preferences/update_service_spec.rb' - - 'spec/services/users/activity_service_spec.rb' - - 'spec/services/users/approve_service_spec.rb' - - 'spec/services/users/authorized_build_service_spec.rb' - - 'spec/services/users/ban_service_spec.rb' - - 'spec/services/users/banned_user_base_service_spec.rb' - - 'spec/services/users/batch_status_cleaner_service_spec.rb' - - 'spec/services/users/block_service_spec.rb' - - 'spec/services/users/build_service_spec.rb' - - 'spec/services/users/create_service_spec.rb' - - 'spec/services/users/destroy_service_spec.rb' - - 'spec/services/users/dismiss_callout_service_spec.rb' - - 'spec/services/users/dismiss_group_callout_service_spec.rb' - - 'spec/services/users/dismiss_project_callout_service_spec.rb' - - 'spec/services/users/email_verification/generate_token_service_spec.rb' - - 'spec/services/users/email_verification/validate_token_service_spec.rb' - - 'spec/services/users/in_product_marketing_email_records_spec.rb' - - 'spec/services/users/keys_count_service_spec.rb' - - 'spec/services/users/last_push_event_service_spec.rb' - - 'spec/services/users/migrate_records_to_ghost_user_in_batches_service_spec.rb' - - 'spec/services/users/migrate_records_to_ghost_user_service_spec.rb' - - 'spec/services/users/refresh_authorized_projects_service_spec.rb' - - 'spec/services/users/registrations_build_service_spec.rb' - - 'spec/services/users/reject_service_spec.rb' - - 'spec/services/users/repair_ldap_blocked_service_spec.rb' - - 'spec/services/users/respond_to_terms_service_spec.rb' - - 'spec/services/users/saved_replies/create_service_spec.rb' - - 'spec/services/users/saved_replies/destroy_service_spec.rb' - - 'spec/services/users/saved_replies/update_service_spec.rb' - - 'spec/services/users/set_status_service_spec.rb' - - 'spec/services/users/signup_service_spec.rb' - - 'spec/services/users/unban_service_spec.rb' - - 'spec/services/users/unblock_service_spec.rb' - - 'spec/services/users/update_canonical_email_service_spec.rb' - - 'spec/services/users/update_highest_member_role_service_spec.rb' - - 'spec/services/users/update_service_spec.rb' - - 'spec/services/users/update_todo_count_cache_service_spec.rb' - - 'spec/services/users/upsert_credit_card_validation_service_spec.rb' - - 'spec/services/users/validate_manual_otp_service_spec.rb' - - 'spec/services/users/validate_push_otp_service_spec.rb' - - 'spec/services/verify_pages_domain_service_spec.rb' - - 'spec/services/web_hooks/destroy_service_spec.rb' - - 'spec/services/web_hooks/log_destroy_service_spec.rb' - - 'spec/services/web_hooks/log_execution_service_spec.rb' - - 'spec/services/webauthn/authenticate_service_spec.rb' - - 'spec/services/webauthn/register_service_spec.rb' - - 'spec/services/wiki_pages/base_service_spec.rb' - - 'spec/services/wiki_pages/create_service_spec.rb' - - 'spec/services/wiki_pages/destroy_service_spec.rb' - - 'spec/services/wiki_pages/event_create_service_spec.rb' - - 'spec/services/wiki_pages/update_service_spec.rb' - - 'spec/services/wikis/create_attachment_service_spec.rb' - - 'spec/services/work_items/build_service_spec.rb' - - 'spec/services/work_items/create_from_task_service_spec.rb' - - 'spec/services/work_items/create_service_spec.rb' - - 'spec/services/work_items/delete_service_spec.rb' - - 'spec/services/work_items/delete_task_service_spec.rb' - - 'spec/services/work_items/parent_links/destroy_service_spec.rb' - - 'spec/services/work_items/task_list_reference_removal_service_spec.rb' - - 'spec/services/work_items/task_list_reference_replacement_service_spec.rb' - - 'spec/services/work_items/update_service_spec.rb' - - 'spec/services/work_items/widgets/assignees_service/update_service_spec.rb' - - 'spec/services/work_items/widgets/description_service/update_service_spec.rb' - - 'spec/services/work_items/widgets/milestone_service/create_service_spec.rb' - - 'spec/services/work_items/widgets/milestone_service/update_service_spec.rb' - - 'spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb' - - 'spec/services/x509_certificate_revoke_service_spec.rb' - 'spec/sidekiq/cron/job_gem_dependency_spec.rb' - 'spec/sidekiq_cluster/sidekiq_cluster_spec.rb' - 'spec/spam/concerns/has_spam_action_response_fields_spec.rb' @@ -7679,7 +6149,6 @@ RSpec/MissingFeatureCategory: - 'spec/uploaders/favicon_uploader_spec.rb' - 'spec/uploaders/file_mover_spec.rb' - 'spec/uploaders/file_uploader_spec.rb' - - 'spec/uploaders/gitlab_uploader_spec.rb' - 'spec/uploaders/import_export_uploader_spec.rb' - 'spec/uploaders/job_artifact_uploader_spec.rb' - 'spec/uploaders/lfs_object_uploader_spec.rb' @@ -7855,353 +6324,6 @@ RSpec/MissingFeatureCategory: - 'spec/views/shared/ssh_keys/_key_delete.html.haml_spec.rb' - 'spec/views/shared/web_hooks/_web_hook_disabled_alert.html.haml_spec.rb' - 'spec/views/shared/wikis/_sidebar.html.haml_spec.rb' - - 'spec/workers/admin_email_worker_spec.rb' - - 'spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb' - - 'spec/workers/analytics/usage_trends/counter_job_worker_spec.rb' - - 'spec/workers/approve_blocked_pending_approval_users_worker_spec.rb' - - 'spec/workers/authorized_keys_worker_spec.rb' - - 'spec/workers/authorized_project_update/periodic_recalculate_worker_spec.rb' - - 'spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb' - - 'spec/workers/authorized_project_update/project_recalculate_worker_spec.rb' - - 'spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb' - - 'spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb' - - 'spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb' - - 'spec/workers/authorized_projects_worker_spec.rb' - - 'spec/workers/auto_devops/disable_worker_spec.rb' - - 'spec/workers/auto_merge_process_worker_spec.rb' - - 'spec/workers/background_migration/ci_database_worker_spec.rb' - - 'spec/workers/background_migration_worker_spec.rb' - - 'spec/workers/build_hooks_worker_spec.rb' - - 'spec/workers/build_queue_worker_spec.rb' - - 'spec/workers/build_success_worker_spec.rb' - - 'spec/workers/bulk_imports/entity_worker_spec.rb' - - 'spec/workers/bulk_imports/relation_export_worker_spec.rb' - - 'spec/workers/bulk_imports/stuck_import_worker_spec.rb' - - 'spec/workers/chat_notification_worker_spec.rb' - - 'spec/workers/ci/archive_trace_worker_spec.rb' - - 'spec/workers/ci/build_finished_worker_spec.rb' - - 'spec/workers/ci/build_prepare_worker_spec.rb' - - 'spec/workers/ci/build_schedule_worker_spec.rb' - - 'spec/workers/ci/build_trace_chunk_flush_worker_spec.rb' - - 'spec/workers/ci/cancel_pipeline_worker_spec.rb' - - 'spec/workers/ci/create_cross_project_pipeline_worker_spec.rb' - - 'spec/workers/ci/create_downstream_pipeline_worker_spec.rb' - - 'spec/workers/ci/daily_build_group_report_results_worker_spec.rb' - - 'spec/workers/ci/delete_objects_worker_spec.rb' - - 'spec/workers/ci/delete_unit_tests_worker_spec.rb' - - 'spec/workers/ci/drop_pipeline_worker_spec.rb' - - 'spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb' - - 'spec/workers/ci/job_artifacts/track_artifact_report_worker_spec.rb' - - 'spec/workers/ci/merge_requests/add_todo_when_build_fails_worker_spec.rb' - - 'spec/workers/ci/parse_secure_file_metadata_worker_spec.rb' - - 'spec/workers/ci/pending_builds/update_group_worker_spec.rb' - - 'spec/workers/ci/pending_builds/update_project_worker_spec.rb' - - 'spec/workers/ci/pipeline_artifacts/coverage_report_worker_spec.rb' - - 'spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb' - - 'spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb' - - 'spec/workers/ci/pipeline_bridge_status_worker_spec.rb' - - 'spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb' - - 'spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb' - - 'spec/workers/ci/resource_groups/assign_resource_from_resource_group_worker_spec.rb' - - 'spec/workers/ci/retry_pipeline_worker_spec.rb' - - 'spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb' - - 'spec/workers/ci/stuck_builds/drop_running_worker_spec.rb' - - 'spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb' - - 'spec/workers/ci/test_failure_history_worker_spec.rb' - - 'spec/workers/ci/track_failed_build_worker_spec.rb' - - 'spec/workers/ci/update_locked_unknown_artifacts_worker_spec.rb' - - 'spec/workers/ci_platform_metrics_update_cron_worker_spec.rb' - - 'spec/workers/cleanup_container_repository_worker_spec.rb' - - 'spec/workers/clusters/agents/delete_expired_events_worker_spec.rb' - - 'spec/workers/clusters/applications/activate_integration_worker_spec.rb' - - 'spec/workers/clusters/applications/deactivate_integration_worker_spec.rb' - - 'spec/workers/clusters/cleanup/project_namespace_worker_spec.rb' - - 'spec/workers/clusters/cleanup/service_account_worker_spec.rb' - - 'spec/workers/clusters/integrations/check_prometheus_health_worker_spec.rb' - - 'spec/workers/concerns/application_worker_spec.rb' - - 'spec/workers/concerns/cluster_agent_queue_spec.rb' - - 'spec/workers/concerns/cluster_queue_spec.rb' - - 'spec/workers/concerns/cronjob_queue_spec.rb' - - 'spec/workers/concerns/gitlab/github_import/object_importer_spec.rb' - - 'spec/workers/concerns/gitlab/github_import/queue_spec.rb' - - 'spec/workers/concerns/gitlab/github_import/rescheduling_methods_spec.rb' - - 'spec/workers/concerns/gitlab/github_import/stage_methods_spec.rb' - - 'spec/workers/concerns/gitlab/notify_upon_death_spec.rb' - - 'spec/workers/concerns/limited_capacity/job_tracker_spec.rb' - - 'spec/workers/concerns/limited_capacity/worker_spec.rb' - - 'spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb' - - 'spec/workers/concerns/pipeline_background_queue_spec.rb' - - 'spec/workers/concerns/pipeline_queue_spec.rb' - - 'spec/workers/concerns/project_import_options_spec.rb' - 'spec/workers/concerns/reenqueuer_spec.rb' - - 'spec/workers/concerns/repository_check_queue_spec.rb' - - 'spec/workers/concerns/waitable_worker_spec.rb' - - 'spec/workers/concerns/worker_attributes_spec.rb' - - 'spec/workers/concerns/worker_context_spec.rb' - - 'spec/workers/container_expiration_policies/cleanup_container_repository_worker_spec.rb' - - 'spec/workers/container_expiration_policy_worker_spec.rb' - - 'spec/workers/container_registry/cleanup_worker_spec.rb' - - 'spec/workers/container_registry/delete_container_repository_worker_spec.rb' - - 'spec/workers/container_registry/migration/enqueuer_worker_spec.rb' - - 'spec/workers/container_registry/migration/guard_worker_spec.rb' - - 'spec/workers/container_registry/migration/observer_worker_spec.rb' - - 'spec/workers/counters/cleanup_refresh_worker_spec.rb' - - 'spec/workers/create_commit_signature_worker_spec.rb' - - 'spec/workers/create_note_diff_file_worker_spec.rb' - - 'spec/workers/create_pipeline_worker_spec.rb' - - 'spec/workers/database/batched_background_migration/ci_database_worker_spec.rb' - - 'spec/workers/database/batched_background_migration_worker_spec.rb' - - 'spec/workers/database/ci_namespace_mirrors_consistency_check_worker_spec.rb' - - 'spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb' - - 'spec/workers/database/drop_detached_partitions_worker_spec.rb' - - 'spec/workers/database/partition_management_worker_spec.rb' - - 'spec/workers/delete_container_repository_worker_spec.rb' - - 'spec/workers/delete_diff_files_worker_spec.rb' - - 'spec/workers/delete_merged_branches_worker_spec.rb' - - 'spec/workers/delete_user_worker_spec.rb' - - 'spec/workers/dependency_proxy/cleanup_blob_worker_spec.rb' - - 'spec/workers/dependency_proxy/cleanup_dependency_proxy_worker_spec.rb' - - 'spec/workers/dependency_proxy/cleanup_manifest_worker_spec.rb' - - 'spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb' - - 'spec/workers/deployments/archive_in_project_worker_spec.rb' - - 'spec/workers/deployments/drop_older_deployments_worker_spec.rb' - - 'spec/workers/deployments/hooks_worker_spec.rb' - - 'spec/workers/deployments/link_merge_request_worker_spec.rb' - - 'spec/workers/deployments/update_environment_worker_spec.rb' - - 'spec/workers/design_management/copy_design_collection_worker_spec.rb' - - 'spec/workers/design_management/new_version_worker_spec.rb' - - 'spec/workers/destroy_pages_deployments_worker_spec.rb' - - 'spec/workers/detect_repository_languages_worker_spec.rb' - - 'spec/workers/disallow_two_factor_for_group_worker_spec.rb' - - 'spec/workers/disallow_two_factor_for_subgroups_worker_spec.rb' - - 'spec/workers/email_receiver_worker_spec.rb' - - 'spec/workers/emails_on_push_worker_spec.rb' - - 'spec/workers/environments/auto_delete_cron_worker_spec.rb' - - 'spec/workers/environments/auto_stop_cron_worker_spec.rb' - - 'spec/workers/environments/auto_stop_worker_spec.rb' - - 'spec/workers/environments/canary_ingress/update_worker_spec.rb' - - 'spec/workers/error_tracking_issue_link_worker_spec.rb' - - 'spec/workers/every_sidekiq_worker_spec.rb' - - 'spec/workers/expire_build_artifacts_worker_spec.rb' - - 'spec/workers/export_csv_worker_spec.rb' - - 'spec/workers/external_service_reactive_caching_worker_spec.rb' - - 'spec/workers/file_hook_worker_spec.rb' - - 'spec/workers/flush_counter_increments_worker_spec.rb' - - 'spec/workers/gitlab/github_import/advance_stage_worker_spec.rb' - - 'spec/workers/gitlab/github_import/attachments/import_issue_worker_spec.rb' - - 'spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb' - - 'spec/workers/gitlab/github_import/attachments/import_note_worker_spec.rb' - - 'spec/workers/gitlab/github_import/attachments/import_release_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_diff_note_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_issue_event_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_issue_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_note_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_protected_branch_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_pull_request_worker_spec.rb' - - 'spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb' - - 'spec/workers/gitlab/github_import/pull_requests/import_review_request_worker_spec.rb' - - 'spec/workers/gitlab/github_import/refresh_import_jid_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/finish_import_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_base_data_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_notes_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_pull_requests_merged_by_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_pull_requests_review_requests_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_pull_requests_reviews_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb' - - 'spec/workers/gitlab/github_import/stage/import_repository_worker_spec.rb' - - 'spec/workers/gitlab/import/stuck_import_job_spec.rb' - - 'spec/workers/gitlab/import/stuck_project_import_jobs_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/import_issue_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stage/finish_import_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb' - - 'spec/workers/gitlab/jira_import/stuck_jira_import_jobs_worker_spec.rb' - - 'spec/workers/gitlab/phabricator_import/base_worker_spec.rb' - - 'spec/workers/gitlab/phabricator_import/import_tasks_worker_spec.rb' - - 'spec/workers/gitlab_performance_bar_stats_worker_spec.rb' - - 'spec/workers/gitlab_service_ping_worker_spec.rb' - - 'spec/workers/gitlab_shell_worker_spec.rb' - - 'spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb' - - 'spec/workers/group_destroy_worker_spec.rb' - - 'spec/workers/group_export_worker_spec.rb' - - 'spec/workers/group_import_worker_spec.rb' - - 'spec/workers/groups/update_statistics_worker_spec.rb' - - 'spec/workers/groups/update_two_factor_requirement_for_members_worker_spec.rb' - - 'spec/workers/hashed_storage/migrator_worker_spec.rb' - - 'spec/workers/hashed_storage/project_migrate_worker_spec.rb' - - 'spec/workers/hashed_storage/project_rollback_worker_spec.rb' - - 'spec/workers/hashed_storage/rollbacker_worker_spec.rb' - - 'spec/workers/import_issues_csv_worker_spec.rb' - - 'spec/workers/incident_management/add_severity_system_note_worker_spec.rb' - - 'spec/workers/incident_management/close_incident_worker_spec.rb' - - 'spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb' - - 'spec/workers/incident_management/process_alert_worker_v2_spec.rb' - - 'spec/workers/integrations/create_external_cross_reference_worker_spec.rb' - - 'spec/workers/integrations/execute_worker_spec.rb' - - 'spec/workers/integrations/irker_worker_spec.rb' - - 'spec/workers/invalid_gpg_signature_update_worker_spec.rb' - - 'spec/workers/issuable/label_links_destroy_worker_spec.rb' - - 'spec/workers/issuable_export_csv_worker_spec.rb' - - 'spec/workers/issuables/clear_groups_issue_counter_worker_spec.rb' - - 'spec/workers/issue_due_scheduler_worker_spec.rb' - - 'spec/workers/issues/close_worker_spec.rb' - - 'spec/workers/issues/placement_worker_spec.rb' - - 'spec/workers/issues/rebalancing_worker_spec.rb' - - 'spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb' - - 'spec/workers/jira_connect/forward_event_worker_spec.rb' - - 'spec/workers/jira_connect/retry_request_worker_spec.rb' - - 'spec/workers/jira_connect/sync_branch_worker_spec.rb' - - 'spec/workers/jira_connect/sync_builds_worker_spec.rb' - - 'spec/workers/jira_connect/sync_deployments_worker_spec.rb' - - 'spec/workers/jira_connect/sync_feature_flags_worker_spec.rb' - - 'spec/workers/jira_connect/sync_merge_request_worker_spec.rb' - - 'spec/workers/jira_connect/sync_project_worker_spec.rb' - - 'spec/workers/loose_foreign_keys/cleanup_worker_spec.rb' - - 'spec/workers/mail_scheduler/issue_due_worker_spec.rb' - - 'spec/workers/mail_scheduler/notification_service_worker_spec.rb' - - 'spec/workers/member_invitation_reminder_emails_worker_spec.rb' - - 'spec/workers/members_destroyer/unassign_issuables_worker_spec.rb' - - 'spec/workers/merge_request_cleanup_refs_worker_spec.rb' - - 'spec/workers/merge_request_mergeability_check_worker_spec.rb' - - 'spec/workers/merge_requests/close_issue_worker_spec.rb' - - 'spec/workers/merge_requests/create_approval_event_worker_spec.rb' - - 'spec/workers/merge_requests/create_approval_note_worker_spec.rb' - - 'spec/workers/merge_requests/delete_source_branch_worker_spec.rb' - - 'spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb' - - 'spec/workers/merge_requests/handle_assignees_change_worker_spec.rb' - - 'spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb' - - 'spec/workers/merge_requests/resolve_todos_worker_spec.rb' - - 'spec/workers/merge_requests/update_head_pipeline_worker_spec.rb' - - 'spec/workers/merge_worker_spec.rb' - - 'spec/workers/metrics/dashboard/prune_old_annotations_worker_spec.rb' - - 'spec/workers/metrics/dashboard/schedule_annotations_prune_worker_spec.rb' - - 'spec/workers/metrics/dashboard/sync_dashboards_worker_spec.rb' - - 'spec/workers/migrate_external_diffs_worker_spec.rb' - - 'spec/workers/namespaces/in_product_marketing_emails_worker_spec.rb' - - 'spec/workers/namespaces/process_sync_events_worker_spec.rb' - - 'spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb' - - 'spec/workers/namespaces/root_statistics_worker_spec.rb' - - 'spec/workers/namespaces/schedule_aggregation_worker_spec.rb' - - 'spec/workers/namespaces/update_root_statistics_worker_spec.rb' - - 'spec/workers/new_issue_worker_spec.rb' - - 'spec/workers/new_note_worker_spec.rb' - - 'spec/workers/object_pool/create_worker_spec.rb' - - 'spec/workers/object_pool/destroy_worker_spec.rb' - - 'spec/workers/object_pool/join_worker_spec.rb' - - 'spec/workers/onboarding/issue_created_worker_spec.rb' - - 'spec/workers/onboarding/pipeline_created_worker_spec.rb' - - 'spec/workers/onboarding/progress_worker_spec.rb' - - 'spec/workers/onboarding/user_added_worker_spec.rb' - - 'spec/workers/packages/cleanup/execute_policy_worker_spec.rb' - - 'spec/workers/packages/cleanup_package_file_worker_spec.rb' - - 'spec/workers/packages/cleanup_package_registry_worker_spec.rb' - - 'spec/workers/packages/composer/cache_cleanup_worker_spec.rb' - - 'spec/workers/packages/composer/cache_update_worker_spec.rb' - - 'spec/workers/packages/go/sync_packages_worker_spec.rb' - - 'spec/workers/packages/helm/extraction_worker_spec.rb' - - 'spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb' - 'spec/workers/packages/maven/metadata/sync_worker_spec.rb' - - 'spec/workers/packages/nuget/extraction_worker_spec.rb' - - 'spec/workers/packages/rubygems/extraction_worker_spec.rb' - - 'spec/workers/pages_domain_removal_cron_worker_spec.rb' - - 'spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb' - - 'spec/workers/pages_domain_ssl_renewal_worker_spec.rb' - - 'spec/workers/pages_domain_verification_cron_worker_spec.rb' - - 'spec/workers/pages_domain_verification_worker_spec.rb' - - 'spec/workers/pages_worker_spec.rb' - - 'spec/workers/partition_creation_worker_spec.rb' - - 'spec/workers/personal_access_tokens/expired_notification_worker_spec.rb' - - 'spec/workers/personal_access_tokens/expiring_worker_spec.rb' - - 'spec/workers/pipeline_hooks_worker_spec.rb' - - 'spec/workers/pipeline_metrics_worker_spec.rb' - - 'spec/workers/pipeline_notification_worker_spec.rb' - - 'spec/workers/pipeline_process_worker_spec.rb' - - 'spec/workers/post_receive_spec.rb' - - 'spec/workers/process_commit_worker_spec.rb' - - 'spec/workers/project_cache_worker_spec.rb' - - 'spec/workers/project_destroy_worker_spec.rb' - - 'spec/workers/project_export_worker_spec.rb' - - 'spec/workers/projects/after_import_worker_spec.rb' - - 'spec/workers/projects/finalize_project_statistics_refresh_worker_spec.rb' - - 'spec/workers/projects/import_export/relation_export_worker_spec.rb' - - 'spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb' - - 'spec/workers/projects/inactive_projects_deletion_notification_worker_spec.rb' - - 'spec/workers/projects/post_creation_worker_spec.rb' - - 'spec/workers/projects/process_sync_events_worker_spec.rb' - - 'spec/workers/projects/record_target_platforms_worker_spec.rb' - - 'spec/workers/projects/refresh_build_artifacts_size_statistics_worker_spec.rb' - - 'spec/workers/projects/schedule_bulk_repository_shard_moves_worker_spec.rb' - - 'spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb' - - 'spec/workers/projects/update_repository_storage_worker_spec.rb' - - 'spec/workers/propagate_integration_group_worker_spec.rb' - - 'spec/workers/propagate_integration_inherit_descendant_worker_spec.rb' - - 'spec/workers/propagate_integration_inherit_worker_spec.rb' - 'spec/workers/propagate_integration_project_worker_spec.rb' - - 'spec/workers/propagate_integration_worker_spec.rb' - - 'spec/workers/prune_old_events_worker_spec.rb' - - 'spec/workers/purge_dependency_proxy_cache_worker_spec.rb' - - 'spec/workers/reactive_caching_worker_spec.rb' - - 'spec/workers/rebase_worker_spec.rb' - - 'spec/workers/releases/create_evidence_worker_spec.rb' - - 'spec/workers/releases/manage_evidence_worker_spec.rb' - - 'spec/workers/remote_mirror_notification_worker_spec.rb' - - 'spec/workers/remove_expired_group_links_worker_spec.rb' - - 'spec/workers/remove_expired_members_worker_spec.rb' - - 'spec/workers/remove_unaccepted_member_invites_worker_spec.rb' - - 'spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb' - - 'spec/workers/repository_check/batch_worker_spec.rb' - - 'spec/workers/repository_check/clear_worker_spec.rb' - - 'spec/workers/repository_check/dispatch_worker_spec.rb' - - 'spec/workers/repository_check/single_repository_worker_spec.rb' - - 'spec/workers/repository_cleanup_worker_spec.rb' - - 'spec/workers/repository_fork_worker_spec.rb' - - 'spec/workers/repository_update_remote_mirror_worker_spec.rb' - - 'spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb' - - 'spec/workers/schedule_migrate_external_diffs_worker_spec.rb' - - 'spec/workers/self_monitoring_project_create_worker_spec.rb' - - 'spec/workers/self_monitoring_project_delete_worker_spec.rb' - - 'spec/workers/service_desk_email_receiver_worker_spec.rb' - - 'spec/workers/snippets/schedule_bulk_repository_shard_moves_worker_spec.rb' - - 'spec/workers/snippets/update_repository_storage_worker_spec.rb' - - 'spec/workers/ssh_keys/expired_notification_worker_spec.rb' - - 'spec/workers/ssh_keys/expiring_soon_notification_worker_spec.rb' - - 'spec/workers/stage_update_worker_spec.rb' - - 'spec/workers/stuck_ci_jobs_worker_spec.rb' - - 'spec/workers/stuck_export_jobs_worker_spec.rb' - - 'spec/workers/stuck_merge_jobs_worker_spec.rb' - - 'spec/workers/system_hook_push_worker_spec.rb' - - 'spec/workers/tasks_to_be_done/create_worker_spec.rb' - - 'spec/workers/terraform/states/destroy_worker_spec.rb' - - 'spec/workers/todos_destroyer/confidential_issue_worker_spec.rb' - - 'spec/workers/todos_destroyer/destroyed_designs_worker_spec.rb' - - 'spec/workers/todos_destroyer/destroyed_issuable_worker_spec.rb' - - 'spec/workers/todos_destroyer/entity_leave_worker_spec.rb' - - 'spec/workers/todos_destroyer/group_private_worker_spec.rb' - - 'spec/workers/todos_destroyer/private_features_worker_spec.rb' - - 'spec/workers/todos_destroyer/project_private_worker_spec.rb' - - 'spec/workers/trending_projects_worker_spec.rb' - - 'spec/workers/update_container_registry_info_worker_spec.rb' - - 'spec/workers/update_external_pull_requests_worker_spec.rb' - - 'spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb' - - 'spec/workers/update_highest_role_worker_spec.rb' - - 'spec/workers/update_merge_requests_worker_spec.rb' - - 'spec/workers/update_project_statistics_worker_spec.rb' - - 'spec/workers/upload_checksum_worker_spec.rb' - - 'spec/workers/user_status_cleanup/batch_worker_spec.rb' - - 'spec/workers/users/create_statistics_worker_spec.rb' - - 'spec/workers/users/deactivate_dormant_users_worker_spec.rb' - - 'spec/workers/users/migrate_records_to_ghost_user_in_batches_worker_spec.rb' - - 'spec/workers/web_hook_worker_spec.rb' - - 'spec/workers/web_hooks/log_destroy_worker_spec.rb' - - 'spec/workers/x509_certificate_revoke_worker_spec.rb' - - 'spec/workers/x509_issuer_crl_check_worker_spec.rb' diff --git a/.rubocop_todo/style/format_string.yml b/.rubocop_todo/style/format_string.yml index 101a0b6429..cb9ae6e9bd 100644 --- a/.rubocop_todo/style/format_string.yml +++ b/.rubocop_todo/style/format_string.yml @@ -158,7 +158,6 @@ Style/FormatString: - 'danger/roulette/Dangerfile' - 'ee/app/components/billing/plan_component.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/components/namespaces/free_user_cap/usage_quota_alert_component.rb' - 'ee/app/components/namespaces/free_user_cap/usage_quota_trial_alert_component.rb' - 'ee/app/controllers/admin/elasticsearch_controller.rb' diff --git a/.rubocop_todo/style/guard_clause.yml b/.rubocop_todo/style/guard_clause.yml index a6461e7b17..91c1999836 100644 --- a/.rubocop_todo/style/guard_clause.yml +++ b/.rubocop_todo/style/guard_clause.yml @@ -490,7 +490,6 @@ Style/GuardClause: - 'lib/gitlab/ci/pipeline/expression/lexeme/base.rb' - 'lib/gitlab/ci/pipeline/expression/lexeme/pattern.rb' - 'lib/gitlab/ci/reports/codequality_reports_comparer.rb' - - 'lib/gitlab/ci/reports/security/vulnerability_reports_comparer.rb' - 'lib/gitlab/ci/runner/backoff.rb' - 'lib/gitlab/ci/runner_upgrade_check.rb' - 'lib/gitlab/ci/trace.rb' diff --git a/.rubocop_todo/style/if_unless_modifier.yml b/.rubocop_todo/style/if_unless_modifier.yml index efdb0df834..1901664672 100644 --- a/.rubocop_todo/style/if_unless_modifier.yml +++ b/.rubocop_todo/style/if_unless_modifier.yml @@ -642,7 +642,6 @@ Style/IfUnlessModifier: - 'ee/lib/gitlab/usage/metrics/instrumentations/count_users_creating_ci_builds_metric.rb' - 'ee/lib/gitlab/usage/metrics/instrumentations/license_metric.rb' - 'ee/lib/omni_auth/strategies/group_saml.rb' - - 'ee/lib/sidebars/groups/menus/administration_menu.rb' - 'ee/lib/sidebars/groups/menus/analytics_menu.rb' - 'ee/lib/sidebars/groups/menus/security_compliance_menu.rb' - 'ee/lib/tasks/geo.rake' @@ -891,7 +890,6 @@ Style/IfUnlessModifier: - 'lib/gitlab/jira_import.rb' - 'lib/gitlab/jira_import/base_importer.rb' - 'lib/gitlab/legacy_github_import/client.rb' - - 'lib/gitlab/legacy_github_import/importer.rb' - 'lib/gitlab/legacy_github_import/issuable_formatter.rb' - 'lib/gitlab/legacy_github_import/project_creator.rb' - 'lib/gitlab/lograge/custom_options.rb' diff --git a/.rubocop_todo/style/mutable_constant.yml b/.rubocop_todo/style/mutable_constant.yml index 2409d4f352..8e6a0a2335 100644 --- a/.rubocop_todo/style/mutable_constant.yml +++ b/.rubocop_todo/style/mutable_constant.yml @@ -5,7 +5,6 @@ Style/MutableConstant: Exclude: - 'app/finders/group_members_finder.rb' - 'app/graphql/mutations/container_repositories/destroy_tags.rb' - - 'app/graphql/mutations/members/groups/bulk_update.rb' - 'app/graphql/mutations/packages/bulk_destroy.rb' - 'app/helpers/blame_helper.rb' - 'app/models/ci/build_trace_chunks/redis_base.rb' diff --git a/.rubocop_todo/style/percent_literal_delimiters.yml b/.rubocop_todo/style/percent_literal_delimiters.yml index 66de6a3509..bc3c41ae99 100644 --- a/.rubocop_todo/style/percent_literal_delimiters.yml +++ b/.rubocop_todo/style/percent_literal_delimiters.yml @@ -993,7 +993,6 @@ Style/PercentLiteralDelimiters: - 'spec/requests/api/unleash_spec.rb' - 'spec/requests/api/users_spec.rb' - 'spec/requests/api/wikis_spec.rb' - - 'spec/requests/ide_controller_spec.rb' - 'spec/requests/jwt_controller_spec.rb' - 'spec/requests/lfs_locks_api_spec.rb' - 'spec/requests/users_controller_spec.rb' diff --git a/.rubocop_todo/style/redundant_freeze.yml b/.rubocop_todo/style/redundant_freeze.yml index 46609b0131..cda2972c60 100644 --- a/.rubocop_todo/style/redundant_freeze.yml +++ b/.rubocop_todo/style/redundant_freeze.yml @@ -78,7 +78,6 @@ Style/RedundantFreeze: - 'ee/lib/ee/gitlab/path_regex.rb' - 'ee/lib/ee/gitlab/web_hooks/rate_limiter.rb' - 'ee/lib/elastic/latest/git_class_proxy.rb' - - 'ee/lib/gitlab/code_owners/file.rb' - 'ee/lib/gitlab/code_owners/reference_extractor.rb' - 'ee/lib/gitlab/status_page/filter/image_filter.rb' - 'ee/lib/system_check/geo/authorized_keys_check.rb' diff --git a/.rubocop_todo/style/symbol_proc.yml b/.rubocop_todo/style/symbol_proc.yml index e3bde84c7b..bc4ecaa540 100644 --- a/.rubocop_todo/style/symbol_proc.yml +++ b/.rubocop_todo/style/symbol_proc.yml @@ -105,7 +105,6 @@ Style/SymbolProc: - 'ee/lib/gitlab/geo/oauth/logout_state.rb' - 'ee/spec/elastic/migrate/20220118150500_delete_orphaned_commits_spec.rb' - 'ee/spec/factories/issues.rb' - - 'ee/spec/features/billings/extend_reactivate_trial_spec.rb' - 'ee/spec/features/billings/qrtly_reconciliation_alert_spec.rb' - 'ee/spec/helpers/ee/geo_helper_spec.rb' - 'ee/spec/helpers/ee/registrations_helper_spec.rb' diff --git a/CHANGELOG.md b/CHANGELOG.md index ce67af5c52..9244a75c3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,55 +2,810 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 15.9.8 (2023-05-10) - -No changes. - -## 15.9.7 (2023-05-03) - -### Security (1 change) - -- [Only maintainers of projects should be able to assign runners to them](gitlab-org/security/gitlab@695748314b758ca2d9992df7509025a6ac868000) ([merge request](gitlab-org/security/gitlab!3236)) - -## 15.9.6 (2023-05-01) - -### Security (8 changes) - -- [Resolve ambiguous references for archive metadata](gitlab-org/security/gitlab@233b0f78baf8eb9adcfd77e4d1aa606d54472d34) ([merge request](gitlab-org/security/gitlab!3203)) -- [Commit trailers now only match public user email addresses](gitlab-org/security/gitlab@e360774721bb9b5f6a2da9908ef08d92ad5a79cd) ([merge request](gitlab-org/security/gitlab!3209)) -- [Handle invalid URLs in asset proxy](gitlab-org/security/gitlab@ee6df7196b14014b5416f090a684e3b6ba600b5a) ([merge request](gitlab-org/security/gitlab!3213)) -- [Relay state to check for only allowing sub paths](gitlab-org/security/gitlab@c690eec0a2f8aa506b8ff3ffadf306aa91501648) ([merge request](gitlab-org/security/gitlab!3221)) -- [Prohibit 40 character hex sets at beginning of path-based branch name](gitlab-org/security/gitlab@889683b6b1884bfc36208dfae899d0fb9437246c) ([merge request](gitlab-org/security/gitlab!3195)) -- [Update policy to prevent banned members from accessing public projects](gitlab-org/security/gitlab@1abcbdc23881dab5f675e858afa31be87d5d47ce) ([merge request](gitlab-org/security/gitlab!3187)) -- [Use dummy filename as filename when viewing raw xml files](gitlab-org/security/gitlab@33563159bcc7d46c95f013bf089ed94128f10379) ([merge request](gitlab-org/security/gitlab!3193)) -- [Authorize access to vulnerabilitiesCountByDay resolver](gitlab-org/security/gitlab@4b0825f79b0a27eeddabaee0b3a7f627b2487706) ([merge request](gitlab-org/security/gitlab!3181)) - -## 15.9.5 (2023-04-21) +## 15.10.7 (2023-05-10) ### Fixed (1 change) -- [Fix automatically-retried jobs stuck in pending state](gitlab-org/gitlab@752fbfcd613259b71af37f62a83321e8f573219b) ([merge request](gitlab-org/gitlab!117281)) +- [Backport MR 119319 changes to 15-10-stable-ee](gitlab-org/security/gitlab@6c9e1f2f706b0151b1caa3d5199aa312b23c683a) **GitLab Enterprise Edition** -## 15.9.4 (2023-03-30) +## 15.10.6 (2023-05-03) -### Security (16 changes) +### Security (1 change) -- [Add checks to remove open redirects from Observability URL](gitlab-org/security/gitlab@98b1bd243f454bd28c262131be616ee2060c3a78) ([merge request](gitlab-org/security/gitlab!3104)) -- [Redirect to tree from project root on ref collision](gitlab-org/security/gitlab@0f0c0f21dffe300a56abf1e07a2fefb17160faeb) ([merge request](gitlab-org/security/gitlab!3133)) -- [Fixes soft email confirmation alert vulnerability](gitlab-org/security/gitlab@12498f791f9c5fe833f5202b06cc818d4dcf965b) ([merge request](gitlab-org/security/gitlab!3124)) -- [Restrict Prometheus API access on public projects](gitlab-org/security/gitlab@440a7989ff46ca333f86a38aefa47f74301e66fc) ([merge request](gitlab-org/security/gitlab!3163)) -- [Verify that users have access to the parent of the fork](gitlab-org/security/gitlab@9dd0dff69d3941e827c461c67b9af10da07d69f8) ([merge request](gitlab-org/security/gitlab!3084)) -- [Protect webhook secrets by resetting url_variables](gitlab-org/security/gitlab@cd20b44dd5b075827203330802e331b896448265) ([merge request](gitlab-org/security/gitlab!3140)) -- [Replace Unicode space chars with spaces](gitlab-org/security/gitlab@76975082c41870265e1285fa8f4e053eb6ff11ae) ([merge request](gitlab-org/security/gitlab!3136)) -- [Check access to parent when creating and updating epics](gitlab-org/security/gitlab@7fcc4a0d010d3a428e803f95ef47904c4c7178a8) ([merge request](gitlab-org/security/gitlab!3149)) -- [Improve Gitlab::UrlSanitizer regex to match more URIs](gitlab-org/security/gitlab@4e7313536e4cdb3ecef37100b5a73720eabfbc79) ([merge request](gitlab-org/security/gitlab!3108)) -- [Check access to target project before looking for branch](gitlab-org/security/gitlab@f55edf39e52af9eecb19caf8ed5d4cb8524ef64d) ([merge request](gitlab-org/security/gitlab!3040)) -- [Fix the potential leak of internal notes](gitlab-org/security/gitlab@be73600e8c43c22cda1ace5910eb2052b2741972) ([merge request](gitlab-org/security/gitlab!3120)) -- [Use UntrustedRegexp to limit scan of HTML comments](gitlab-org/security/gitlab@d5e65583debcae71787e171643275bc9b9d4393e) ([merge request](gitlab-org/security/gitlab!3142)) -- [Filter namespace environments by feature visibility](gitlab-org/security/gitlab@54045b508a9ba9ae18f5992b77970240774b28a7) ([merge request](gitlab-org/security/gitlab!3111)) -- [Check access to reorder issues in epic tree](gitlab-org/security/gitlab@bc033cd3a98c9a1468545811a8180604f7f8aee3) ([merge request](gitlab-org/security/gitlab!3101)) -- [Fix security report authorization](gitlab-org/security/gitlab@a01cf9d8383ffc4c0e29514f71d49bf345e1f7c2) ([merge request](gitlab-org/security/gitlab!3106)) -- [Prevent XSS attack in "Maximum page reached" page](gitlab-org/security/gitlab@3cefb16a5e369ee99f4c3ccbaa02cead6faf1a99) ([merge request](gitlab-org/security/gitlab!3130)) +- [Only maintainers of projects should be able to assign runners to them](gitlab-org/security/gitlab@a20f5018b757a78a772d2bf1f9f8cdfe95a019ed) ([merge request](gitlab-org/security/gitlab!3235)) + +## 15.10.5 (2023-05-01) + +### Security (9 changes) + +- [Set minimum role for importing projects to Maintainer](gitlab-org/security/gitlab@d4cff7e53961d819b30ae748a38e4c8e4d856b32) ([merge request](gitlab-org/security/gitlab!3215)) +- [Commit trailers now only match public user email addresses](gitlab-org/security/gitlab@4948acdb39ba6ae9a71ef133e38ec47327d14f97) ([merge request](gitlab-org/security/gitlab!3208)) +- [Handle invalid URLs in asset proxy](gitlab-org/security/gitlab@b22e923ab3d48d9389311192d92dd89e2bfc24aa) ([merge request](gitlab-org/security/gitlab!3212)) +- [Relay state to check for only allowing sub paths](gitlab-org/security/gitlab@24f84fafd65dfedf36e859d305dd46bf3e71c8dc) ([merge request](gitlab-org/security/gitlab!3220)) +- [Prohibit 40 character hex sets at beginning of path-based branch name](gitlab-org/security/gitlab@71d30b6537f6853fef45acba16ab26b6f32718f7) ([merge request](gitlab-org/security/gitlab!3194)) +- [Add specs for external users flag](gitlab-org/security/gitlab@dfdb540285e573bd55a8647db4de8370ba6b3286) ([merge request](gitlab-org/security/gitlab!3190)) +- [Update policy to prevent banned members from accessing public projects](gitlab-org/security/gitlab@bc211b8be25e56f35c80d2331447f251c7a7dd56) ([merge request](gitlab-org/security/gitlab!3186)) +- [Use dummy filename as filename when viewing raw xml files](gitlab-org/security/gitlab@6d871f56d7a343d705f8c849d24a94b3528c3a97) ([merge request](gitlab-org/security/gitlab!3192)) +- [Authorize access to vulnerabilitiesCountByDay resolver](gitlab-org/security/gitlab@888c187aab7c7062ea43b61a282c4dea8c6a47be) ([merge request](gitlab-org/security/gitlab!3180)) + +## 15.10.4 (2023-04-21) + +### Fixed (1 change) + +- [Patch mail gem to handle TLS settings properly](gitlab-org/gitlab@cd4cfc46e17c91dbf5ef10ab1ca0a473d6b2a4d6) ([merge request](gitlab-org/gitlab!117559)) + +## 15.10.3 (2023-04-14) + +### Fixed (3 changes) + +- [Backport fixes for broadcast messages](gitlab-org/gitlab@c97c17e31e99f9e93127245cd1f65f7d15cdb0ef) ([merge request](gitlab-org/gitlab!117276)) +- [Fix automatically-retried jobs stuck in pending state](gitlab-org/gitlab@e349581eaf1e050b8bcdee76f9d40f0c182a09f8) ([merge request](gitlab-org/gitlab!117280)) +- [Verify deploy keys settings for protected tags (backport)](gitlab-org/gitlab@4bd6914bd616c1d8dc9ee7cb75e92be13d522ca9) ([merge request](gitlab-org/gitlab!116952)) + +### Changed (1 change) + +- [Change the order of vulnerability creation](gitlab-org/gitlab@4193c4cab75f9472b3804b74b17f4a10f3ae9580) ([merge request](gitlab-org/gitlab!116851)) **GitLab Enterprise Edition** + +## 15.10.2 (2023-04-05) + +### Fixed (3 changes) + +- [Fix openapi viewer for relative url instances](gitlab-org/gitlab@28c94e7f0e0c29651383212e16422e0b384cddb9) ([merge request](gitlab-org/gitlab!115480)) +- [Update mail gem to v2.8.1](gitlab-org/gitlab@1ec987737d7a3ee96bb1ef8efa3f06fcd32c31e4) ([merge request](gitlab-org/gitlab!116173)) +- [Move ldap option sync_name to ldap server and fix bugs](gitlab-org/gitlab@e56f6d11f76ae858f602b23ea1e2875eb8754fe5) by @zhzhang93 ([merge request](gitlab-org/gitlab!115820)) **GitLab Enterprise Edition** + +### Changed (1 change) + +- [Migrate the existing RedisHLL keys to default slot](gitlab-org/gitlab@5fa90b0ef485aee29f62c500fb48c19278099ef0) ([merge request](gitlab-org/gitlab!116604)) + +## 15.10.1 (2023-03-30) + +### Fixed (2 changes) + +- [Sync security policy rule schedules that may have been deleted by bug](gitlab-org/security/gitlab@5ac094761b5cfac26c44d63988359fbae263a415) +- [Fix issue dashboard returning issues from archived projects](gitlab-org/security/gitlab@6127799167081845824e8759f358aac8f702adb8) + +### Security (15 changes) + +- [Redirect to tree from project root on ref collision](gitlab-org/security/gitlab@c10a48134447128486e2254fc54d0af0d8e6fee0) ([merge request](gitlab-org/security/gitlab!3155)) +- [Fixes soft email confirmation alert vulnerability](gitlab-org/security/gitlab@4aa387fec0c995607f03e8c057d2c2a11168aca9) ([merge request](gitlab-org/security/gitlab!3158)) +- [Restrict Prometheus API access on public projects](gitlab-org/security/gitlab@e9cf398f8c205ae1b8cafddbb2cfbcb214a84d51) ([merge request](gitlab-org/security/gitlab!3162)) +- [Verify that users have access to the parent of the fork](gitlab-org/security/gitlab@fb55096b37ab82f49f2a0205f7ab8bdda14b0010) ([merge request](gitlab-org/security/gitlab!3153)) +- [Protect webhook secrets by resetting url_variables](gitlab-org/security/gitlab@433996f41e89db3e2073314c0644a6f95ab67062) ([merge request](gitlab-org/security/gitlab!3146)) +- [Replace Unicode space chars with spaces](gitlab-org/security/gitlab@c9942785d9a26cf7bb96a81ccd14e5c6e5582bbe) ([merge request](gitlab-org/security/gitlab!3156)) +- [Check access to parent when creating and updating epics](gitlab-org/security/gitlab@a42d166e743edb966b0a581bf1325ffb7c96041b) ([merge request](gitlab-org/security/gitlab!3148)) +- [Improve Gitlab::UrlSanitizer regex to match more URIs](gitlab-org/security/gitlab@58a823e09c27948d15432c344248a8436587f9af) ([merge request](gitlab-org/security/gitlab!3165)) +- [Check access to target project before looking for branch](gitlab-org/security/gitlab@804d9da677451889e0a7a0880f2c2f4c3c04faed) ([merge request](gitlab-org/security/gitlab!3151)) +- [Fix the potential leak of internal notes](gitlab-org/security/gitlab@e21dbf4373a4c4e5179b073f5cba4318ee174918) ([merge request](gitlab-org/security/gitlab!3154)) +- [Use UntrustedRegexp to limit scan of HTML comments](gitlab-org/security/gitlab@874edf184764fa801866fbd4e89b9f7e87c570fd) ([merge request](gitlab-org/security/gitlab!3143)) +- [Filter namespace environments by feature visibility](gitlab-org/security/gitlab@e88f78f19dc5ed01a74e6c0d4bb5c22f3a69b65b) ([merge request](gitlab-org/security/gitlab!3114)) +- [Check access to reorder issues in epic tree](gitlab-org/security/gitlab@94e4e543762998a9bbff75c5ffb5cd5da6bd2d88) ([merge request](gitlab-org/security/gitlab!3147)) +- [Fix security report authorization](gitlab-org/security/gitlab@10f33b260212ebf811acecf4b05af1311b44fb64) ([merge request](gitlab-org/security/gitlab!3145)) +- [Prevent XSS attack in "Maximum page reached" page](gitlab-org/security/gitlab@4ce175e4096c973a2d16b93fff6b60bc0144eee0) ([merge request](gitlab-org/security/gitlab!3132)) + +## 15.10.0 (2023-03-21) + +### Added (155 changes) + +- [Add wiki_access_level to group API](gitlab-org/gitlab@05b4aca71af6e5e2e73175ee13e4bf6741d17721) ([merge request](gitlab-org/gitlab!114719)) **GitLab Enterprise Edition** +- [Add filter for approved status](gitlab-org/gitlab@739d2677fe60c53443e828241b3b53518ef2cb12) by @Taucher2003 ([merge request](gitlab-org/gitlab!114374)) +- [Show achievements on user profile](gitlab-org/gitlab@b6d43f703b109add8f8e951335d86551531f137d) ([merge request](gitlab-org/gitlab!113156)) +- [Run package metadata conditionally in dev](gitlab-org/gitlab@64f1ba858e13f775faaa17af1407f3d398837308) ([merge request](gitlab-org/gitlab!115062)) **GitLab Enterprise Edition** +- [Add revoke achievement mutation and service](gitlab-org/gitlab@15c471bf7984a9e1f364cf0479fedfdc2f86c620) ([merge request](gitlab-org/gitlab!114810)) +- [Add documentation for protected tags creation with deploy keys](gitlab-org/gitlab@c9bf5fc531199249b99dd6e95126f6f61fa649a8) ([merge request](gitlab-org/gitlab!110240)) +- [Define ci_builds primary key as partitioned](gitlab-org/gitlab@730cb2f3c0335e4e436f34c20b800caed2aa4f44) ([merge request](gitlab-org/gitlab!113725)) +- [Compliance frameworks report](gitlab-org/gitlab@f53da2b047b5ffb811cc4950b5050e73510e902c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/issues/391898)) **GitLab Enterprise Edition** +- [feat: Enable auto-resolution of removed SAST rules by default](gitlab-org/gitlab@929b74d1ee087b678ff6041cd63d04ada298692e) ([merge request](gitlab-org/gitlab!114633)) +- [Filter projects by compliance framework presence](gitlab-org/gitlab@15417d7fa2032b3d4cd9f5ca78778f82fefa617b) ([merge request](gitlab-org/gitlab!114440)) **GitLab Enterprise Edition** +- [Add Squash TM integration](gitlab-org/gitlab@0f3b8a519f0f57380cfc46565ad55844fe4a1c6e) by @pckerneis ([merge request](gitlab-org/gitlab!110909)) +- [Enable duo 2FA authentication support](gitlab-org/gitlab@07c175ed7bb2275cc0861717217b6ad9a3c3cbc6) ([merge request](gitlab-org/gitlab!114068)) +- [Move work item notes out of FF and docs](gitlab-org/gitlab@a0f536c63f8cd27982592f98a1fb2cce2478006c) ([merge request](gitlab-org/gitlab!108412)) +- [Add documentations for Praefect DNS service discovery](gitlab-org/gitlab@78af37e867ad7356ad5d094ed6627d54e9fd0094) ([merge request](gitlab-org/gitlab!114556)) +- [Add github repo counts endpoint](gitlab-org/gitlab@e333b7c885e0d03f28403cf075344313c274f44a) ([merge request](gitlab-org/gitlab!114322)) +- [Enable License Scanning Policies as new type for Scan Result Policies](gitlab-org/gitlab@9edc2616a736e2c9ee1dbcb0762c4f2ff93fb63e) ([merge request](gitlab-org/gitlab!111226)) **GitLab Enterprise Edition** +- [repository: Remove license_from_gitaly feature flag](gitlab-org/gitlab@57fedabf7fea29924f72b3037704f64ab64cbe16) ([merge request](gitlab-org/gitlab!114456)) +- [Introduce Kubernetes integration feature](gitlab-org/gitlab@bddb664cd506a285bbf711407fe04778c6df61bc) ([merge request](gitlab-org/gitlab!113973)) +- [Prepare MR user mentions for bigint migration](gitlab-org/gitlab@06107a2edad7dd2b2ecba75ca1b583f157d6a11a) ([merge request](gitlab-org/gitlab!114043)) +- [Apply auto-disabling failed hooks to group hooks](gitlab-org/gitlab@0d3979da37fd3ac759649916ee4766a51f74d8a8) ([merge request](gitlab-org/gitlab!114515)) **GitLab Enterprise Edition** +- [Consume seat when Guest's permissions are elevated using custom roles](gitlab-org/gitlab@fed5c42b6275082604c11109cdc8a7e283690bbd) ([merge request](gitlab-org/gitlab!113856)) **GitLab Enterprise Edition** +- [Enable license scanning of CycloneDX files](gitlab-org/gitlab@3ce93967413cf6235d24d855cb7bc1be555bfb8f) ([merge request](gitlab-org/gitlab!114135)) **GitLab Enterprise Edition** +- [Native attachments for Service Desk emails](gitlab-org/gitlab@baf8cdfb249a584c99d0d2452ede25c823bc01ab) ([merge request](gitlab-org/gitlab!114550)) +- [Allows filtering of projects by negated compliance framework id](gitlab-org/gitlab@fdda18467b41cebbc4e86554fdd1dab5bfbfe283) ([merge request](gitlab-org/gitlab!114069)) **GitLab Enterprise Edition** +- [Support admin/external/required groups for OIDC](gitlab-org/gitlab@8345ee22ce9271204df8a811548d89438a443c02) ([merge request](gitlab-org/gitlab!111904)) **GitLab Enterprise Edition** +- [Added refresh_billable_member api](gitlab-org/gitlab@d31824a9ca8bf2fe70e6dc25d4731eaa1c538c2f) ([merge request](gitlab-org/gitlab!113499)) **GitLab Enterprise Edition** +- [Update AbuseReportsFinder to allow filtering by reporter](gitlab-org/gitlab@191b86d51b1ed1260a8537f35f8e9a4946edc673) ([merge request](gitlab-org/gitlab!113649)) +- [Release Block all requests feature](gitlab-org/gitlab@83c8a31318b0ef2bc82180ebdf7f1d579149900b) ([merge request](gitlab-org/gitlab!114532)) +- [Allow self-managed to prevent auto disabling hooks](gitlab-org/gitlab@5e7a1b385de07f489da30e6fd1f81fcf0291a9d0) ([merge request](gitlab-org/gitlab!113479)) +- [Add search by author name to Commits API](gitlab-org/gitlab@9aab633ace3229ff30400c8506699b4139530ccd) ([merge request](gitlab-org/gitlab!114417)) +- [Add merge requests compliance violations consistency worker](gitlab-org/gitlab@f01eb01e48c020fb75a5bd80ce342ecc77d1c155) ([merge request](gitlab-org/gitlab!113147)) **GitLab Enterprise Edition** +- [Document new redis settings start_down and set_replicaof](gitlab-org/gitlab@af7293413663b0d11ecc1350a1b9a352c4d4c1be) ([merge request](gitlab-org/gitlab!113763)) +- [[385117] GitHub import: status of import for each relation-type tab](gitlab-org/gitlab@e01d504c4d7d4a7a1aa14a77408de5369fc1c18e) ([merge request](gitlab-org/gitlab!113778)) +- [Add gitlab_dedicated_instance application setting](gitlab-org/gitlab@8f941928e89469ce4b16cb6f47a11e7b56407e7e) ([merge request](gitlab-org/gitlab!114434)) +- [Adds AddResourceService & ValidateResourceService](gitlab-org/gitlab@de2d8d3aeb9f7595c5de4358787770e4651f7caf) ([merge request](gitlab-org/gitlab!113873)) +- [Add table and model for container registry data repair details](gitlab-org/gitlab@9ef6abfaf7851f5132ace9c42f3a3413f29efbcc) ([merge request](gitlab-org/gitlab!113029)) +- [Expose cycle and lead time metrics via GraphQL](gitlab-org/gitlab@3127ccb4bf0e2359c903f8d4bc4c2dab3f70fbe9) ([merge request](gitlab-org/gitlab!113848)) **GitLab Enterprise Edition** +- [Save github_identifiers to the DB on the last object import worker retry](gitlab-org/gitlab@328aef16e4c2285ea12eeebdca02fa9ffe4a9e7d) ([merge request](gitlab-org/gitlab!112791)) +- [feat: Added the breadcrumbs for slack page](gitlab-org/gitlab@720fda63cfd3cefa7aa805f75a1bb8b6c947c53c) by @imrishabh18 ([merge request](gitlab-org/gitlab!114176)) **GitLab Enterprise Edition** +- [Allow filtering group members by user type](gitlab-org/gitlab@cedc457d2889f3aba42e297290980fad209fef6b) ([merge request](gitlab-org/gitlab!113596)) +- [Merge trains POST API](gitlab-org/gitlab@88e8370240a80313a0654736c02a0f50c2dfa57a) by @markus.ferrell ([merge request](gitlab-org/gitlab!100853)) **GitLab Enterprise Edition** +- [Adds custom email verification model changes](gitlab-org/gitlab@29c17ca77cb724588a7929b4e67da4593a4613c0) ([merge request](gitlab-org/gitlab!112938)) +- [Allow updating user subscriptions on a work item](gitlab-org/gitlab@76ac95707da722357752554165b6946df9c1454f) ([merge request](gitlab-org/gitlab!112587)) +- [Added truncation of the search term](gitlab-org/gitlab@4d5a56848d81a325715a72e0f0448bed336076cf) ([merge request](gitlab-org/gitlab!114250)) +- [Recreate user_type migration index](gitlab-org/gitlab@bab1faf6d166513cb0b9aa6a1479c458307e6421) ([merge request](gitlab-org/gitlab!114244)) +- [Allow comment on GQL vulnerabilityResolve mutation](gitlab-org/gitlab@c2518e3c2088f9b025b1cc1f772fb37b53f69b56) ([merge request](gitlab-org/gitlab!113644)) **GitLab Enterprise Edition** +- [Add update endpoint to draft note API](gitlab-org/gitlab@d6b22368badb8363812bcf481c59bd667304f898) ([merge request](gitlab-org/gitlab!113271)) +- [Display total weight of epic lists on boards](gitlab-org/gitlab@3f9df1e93ace4c01c9026b371031a3ea8c8455d3) ([merge request](gitlab-org/gitlab!113793)) **GitLab Enterprise Edition** +- [Backfill project_wiki_repositories table](gitlab-org/gitlab@164179862b1024e27994e81692c7ec2b89f4d28c) ([merge request](gitlab-org/gitlab!113783)) +- [Clean up child_epics_from_different_hierarchies FF](gitlab-org/gitlab@892f8053340bec9ffdeb574af6a569dbe4e5901c) ([merge request](gitlab-org/gitlab!113827)) +- [Add reference from p_ci_runner_machine_builds to ci_runner_machines](gitlab-org/gitlab@6c7998d4ebddbcef9079138e376fa479017403c3) ([merge request](gitlab-org/gitlab!113355)) +- [GraphQL: Add machines field to CiRunner type](gitlab-org/gitlab@d99c7c1cd2712b3cabc14b2b01bc7d0935b114db) ([merge request](gitlab-org/gitlab!113951)) +- [Adjust VulnerabilityConfirm GraphQL mutation to accept comment](gitlab-org/gitlab@99b75122c6838f56d92f2452a3b07cb4523ed214) ([merge request](gitlab-org/gitlab!113722)) **GitLab Enterprise Edition** +- [Add reordering to search language filter component](gitlab-org/gitlab@6398e66cd2e4f4d30a40da9c1f2fcd5e9059f228) ([merge request](gitlab-org/gitlab!111563)) +- [This MR introduces alert component](gitlab-org/gitlab@edbbe56763458ddecf814bfdeaf8fcd972881e9b) ([merge request](gitlab-org/gitlab!111260)) **GitLab Enterprise Edition** +- [Enable creation of ci_runner_machines records for active ci_runners](gitlab-org/gitlab@c98c05ad99940de576d0e587432c5d0003714b24) ([merge request](gitlab-org/gitlab!113252)) +- [Add product_analytics_data_collector_host column](gitlab-org/gitlab@beba6098f9d6a3ae22abf0b7b6560c55630cd00d) ([merge request](gitlab-org/gitlab!112905)) +- [GraphQL: Add CiRunner.createdBy field](gitlab-org/gitlab@c77abdc6ea9348557e64abac077542d349371088) ([merge request](gitlab-org/gitlab!113701)) +- [Add coupon code terms to success alert and simplify associated logic](gitlab-org/gitlab@aaa866d81f6983fa9fa6bd21a2582d613e4f495e) ([merge request](gitlab-org/gitlab!113323)) **GitLab Enterprise Edition** +- [Integrate diagrams.net with the Content Editor](gitlab-org/gitlab@f69f79d41c541b36ca12bd6da5fbd59490aa980e) ([merge request](gitlab-org/gitlab!112569)) +- [Add Notifications Widget to WorkItems](gitlab-org/gitlab@d3e9045c0f1d546e599837d9e0b47e1ac048f283) ([merge request](gitlab-org/gitlab!113416)) +- [Audit event for event type filter deletion](gitlab-org/gitlab@adfb8dacb981c7229d80cea7f74f076fda7811e0) ([merge request](gitlab-org/gitlab!113489)) **GitLab Enterprise Edition** +- [[388716] Github importer: collaborators (members)](gitlab-org/gitlab@472bd6c6f679d06c5617890b3f86914c6108eb9e) ([merge request](gitlab-org/gitlab!112226)) +- [Support quick actions through new note](gitlab-org/gitlab@1167c6c1b4e439c726e327ceebbb3bc7a2039e98) ([merge request](gitlab-org/gitlab!112543)) +- [Admin only project edit page](gitlab-org/gitlab@c7b5c6d0aa479a41bd8067a376bd4fcc34c52814) by @markus.ferrell ([merge request](gitlab-org/gitlab!110103)) +- [Allow to export work items with GraphQL mutation](gitlab-org/gitlab@4ac22d77a84797bacdcf05c3d301b41c5366955d) ([merge request](gitlab-org/gitlab!111373)) +- [Add dismissal reason to vulnerability details status](gitlab-org/gitlab@07b45fe98c91b506e598ca941ef2096b327c36e3) ([merge request](gitlab-org/gitlab!112468)) **GitLab Enterprise Edition** +- [Blame page streaming](gitlab-org/gitlab@9ecbc123963e09ebc0be834b69d8780cd27ef9c2) ([merge request](gitlab-org/gitlab!110208)) +- [Add CLI regex for upcoming CLI UserAgent change](gitlab-org/gitlab@97f9ffd9ac32bcc98d74cbb473d55d6bb1be33f1) ([merge request](gitlab-org/gitlab!113139)) +- [Introduce JobArtifact::BulkDestroy mutation](gitlab-org/gitlab@51dcba39992ad7a48c4340112f7f00d8eeb45f4d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110026)) +- [Add the deployment count to the GraphQL API](gitlab-org/gitlab@e7315d4d8c74da0e254ce20aa3bb2aae2dc7d6dc) ([merge request](gitlab-org/gitlab!113220)) **GitLab Enterprise Edition** +- [Allow to set design description in GraphQL API](gitlab-org/gitlab@b7210d2cfcfa2f105bbc1edec02f85141dfd694e) ([merge request](gitlab-org/gitlab!113651)) +- [Add visualization designer button](gitlab-org/gitlab@3f841e451869c7eeab839788a33791e5f192864e) ([merge request](gitlab-org/gitlab!112841)) +- [Add new event serializer to return JSON only response based on FF](gitlab-org/gitlab@a3328eb8dc5e807a259f2fa86a2d677f1a9380e0) ([merge request](gitlab-org/gitlab!111190)) +- [Allow filtering of projects by compliance filters](gitlab-org/gitlab@646ec5150ffc8f482c425145da783766285aa7b8) ([merge request](gitlab-org/gitlab!111928)) **GitLab Enterprise Edition** +- [Add value streams dashboard link component](gitlab-org/gitlab@9ccc033fbe1a28b2586b21dab7cea99c1d6dee84) ([merge request](gitlab-org/gitlab!112787)) **GitLab Enterprise Edition** +- [Add language aggregation to code search](gitlab-org/gitlab@9a4e4e6d07651e6943913b680854615a38740a86) ([merge request](gitlab-org/gitlab!112073)) **GitLab Enterprise Edition** +- [Add block all requests to admin/network settings](gitlab-org/gitlab@b063cb867f0796cc184f2013d839f05a7cd13870) ([merge request](gitlab-org/gitlab!111552)) +- [Add temporary indexes for user_type](gitlab-org/gitlab@c13892a502f0277c0570e5fd16aeef1fb9fe2ffb) ([merge request](gitlab-org/gitlab!113544)) +- [Add design description column](gitlab-org/gitlab@1a1dadc628fe2f08568aebf53cdb5c7aca07579c) ([merge request](gitlab-org/gitlab!113108)) +- [Enable by default incident event tags](gitlab-org/gitlab@8137503b11c17f373c2e7a99b42559a12a35a143) ([merge request](gitlab-org/gitlab!112823)) +- [Adds audit event for audit event filter creation](gitlab-org/gitlab@016024fc6fedf13c59f1da486587951dac575209) ([merge request](gitlab-org/gitlab!113081)) **GitLab Enterprise Edition** +- [Add index to oauth_access_grants.application_id](gitlab-org/gitlab@9c62d08139e1410514a1326d3a92e7c01e19d8fa) ([merge request](gitlab-org/gitlab!113414)) +- [Accept comment in VulnerabilityRevertToDetected GraphQL mutation](gitlab-org/gitlab@740e6153bb1083f1ea0109b049f5772bc9ab351a) ([merge request](gitlab-org/gitlab!113140)) **GitLab Enterprise Edition** +- [Improve Purchase Errors mapping](gitlab-org/gitlab@5de9cc9c890be096cdbac89dccb1cdf6e345ed9c) ([merge request](gitlab-org/gitlab!112895)) **GitLab Enterprise Edition** +- [Warning when branch name from issue contains a white space](gitlab-org/gitlab@92fee4470e70096b0c695dd822d2a64add147124) ([merge request](gitlab-org/gitlab!101930)) +- [Instrument Enterprise Users adoption](gitlab-org/gitlab@e8bf196ba83751cfeb976b9b48ec14f7b842f352) ([merge request](gitlab-org/gitlab!112185)) **GitLab Enterprise Edition** +- [Add updated_before and updated_after filters to iterations API](gitlab-org/gitlab@811f1a23afa821173972b286f4ad46e7922f3724) ([merge request](gitlab-org/gitlab!113155)) **GitLab Enterprise Edition** +- [Adds copy to clarify work-in-progress is excluded from VSA stages](gitlab-org/gitlab@72c3c639355dc46804e4b7fc8e5d4926c347c928) ([merge request](gitlab-org/gitlab!113189)) +- [Add user_has_committed and committers_can_approve to approvals API](gitlab-org/gitlab@3698cbe223f7f0d530fd504df2ad503629aeab80) ([merge request](gitlab-org/gitlab!112647)) +- [Add requiredApprovalCount to ProtectedEnvironmentType](gitlab-org/gitlab@8a775da4852130d442622be53f48b3f3bc1d9ca0) ([merge request](gitlab-org/gitlab!112899)) +- [Add group web-hooks failed notifications](gitlab-org/gitlab@64911c7492611059b3619df91790dab8011bfc6f) by @alexkalderimis ([merge request](gitlab-org/gitlab!110824)) +- [Enable rule mode SEP UI for SAST IaC](gitlab-org/gitlab@039e33ce1dccb03106e70a60662f467363794c38) ([merge request](gitlab-org/gitlab!112752)) **GitLab Enterprise Edition** +- [Add types to async constraint validations](gitlab-org/gitlab@92a28adac0dc8117428bbc5151257aae3401dd1c) ([merge request](gitlab-org/gitlab!113101)) +- [Validate and replace FK for ci_sources_pipelines and ci_builds](gitlab-org/gitlab@dd28c491d972b2392b166421066ca17c48a06fc4) ([merge request](gitlab-org/gitlab!110368)) +- [Validate and replace FK for ci_job_variables and ci_builds](gitlab-org/gitlab@9a32f8f4471fff4316d0f08415a7d70d98840244) ([merge request](gitlab-org/gitlab!111158)) +- [Validate and replace FK for ci_build_trace_metadata and ci_builds](gitlab-org/gitlab@241af2e0901d9dabdf50cb6ff03af042d43d77ce) ([merge request](gitlab-org/gitlab!111163)) +- [Add SAST IaC to scan execution policies](gitlab-org/gitlab@8f06eb18535100012c59b47931ef37e37209c9db) ([merge request](gitlab-org/gitlab!112754)) **GitLab Enterprise Edition** +- [Create a wrapper for Rails.cache with metrics support](gitlab-org/gitlab@a39010b084839925ba516c7892b720be62d2203f) ([merge request](gitlab-org/gitlab!111210)) +- [Enable CI hooks:pre_get_sources_script syntax](gitlab-org/gitlab@27ffa7abf12e7f39c356bd4fbc2ca836622d2e0c) ([merge request](gitlab-org/gitlab!112920)) +- [Add sync index for merge_request_diffs external_diff column](gitlab-org/gitlab@51c9d3fdaac60a26234bfa8f5ad112c9f1e81f9f) ([merge request](gitlab-org/gitlab!112144)) +- [Finalize migration and add NOT VALID Foreign Key](gitlab-org/gitlab@87876efb0bead6c0c2a406600a69ea72af9c8fbd) ([merge request](gitlab-org/gitlab!112126)) +- [Create award achievement GraphQL mutation](gitlab-org/gitlab@0613db9fd605c483500286ecc79b8cf3664c7457) ([merge request](gitlab-org/gitlab!107802)) +- [Add pipeline reference in state transition](gitlab-org/gitlab@d16a505c6410eaa6e21906a8bd488a29ced289ab) ([merge request](gitlab-org/gitlab!112403)) +- [Added updated_after and updated_before params to milestones API](gitlab-org/gitlab@706d8511ea437f18b3e598fb919afcf0505ab58c) ([merge request](gitlab-org/gitlab!106924)) +- [Add markdown soft break on Shift+Enter](gitlab-org/gitlab@3551b83576d6c993244679de89c5e5c66a6e8e1d) ([merge request](gitlab-org/gitlab!112601)) +- [Add cost settings which belongs to a runner](gitlab-org/gitlab@9884277ef94f160004fa19bb39d21f978f707ac7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111977)) +- [Pre-create initial partition for ci_runner_machine_builds](gitlab-org/gitlab@5107c43ff10c91762128fd9af6d9aed6fedc2682) ([merge request](gitlab-org/gitlab!112572)) +- [Introduce ErrorAlert Component to Purchase flows](gitlab-org/gitlab@05ae1741ddc13f4e6898b0b63721769e4060a0b2) ([merge request](gitlab-org/gitlab!110600)) **GitLab Enterprise Edition** +- [Schedule FK async validations for p_ci_builds_metadata partitions](gitlab-org/gitlab@4b2d8246c90af8c1c0296eb1b4bd01bed0e1b176) ([merge request](gitlab-org/gitlab!112788)) +- [Add rate limits for access of Projects API](gitlab-org/gitlab@61bc00cd8cd1999cf0cd090fa39ba2b057a50e3e) ([merge request](gitlab-org/gitlab!112283)) +- [Add inbound access control to projects](gitlab-org/gitlab@c27fff06e003396b3b2984aae07a30a55468ab64) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111694)) +- [Add Create Runner mutation](gitlab-org/gitlab@4ef6bdfdd06c405147cdff0e7be9f42a14ce03aa) ([merge request](gitlab-org/gitlab!111789)) +- [Add code step](gitlab-org/gitlab@3313a1ea7e88591b49f3368f53ae463e9fd103eb) ([merge request](gitlab-org/gitlab!111670)) +- [Add Create Runner mutation](gitlab-org/gitlab@f1a050f5ae9a5bb9c5c8cf843b662a7ebf2f8594) by @tschmitke ([merge request](gitlab-org/gitlab!110593)) +- [Cleanup add_refresh_pull_mirror_worker feature flag](gitlab-org/gitlab@776027ca61a8c170ce91c5d8f8c438ecd33c42f9) ([merge request](gitlab-org/gitlab!112722)) +- [Release GitLab for Slack notifications](gitlab-org/gitlab@520a799035ac1c4c0d96ad989e62d870eb850a9f) ([merge request](gitlab-org/gitlab!112505)) **GitLab Enterprise Edition** +- [Display parent and work item ID on detail page](gitlab-org/gitlab@0af5f901e6d9c684117c0186e7264f5e9ad37e93) ([merge request](gitlab-org/gitlab!112272)) +- [Add audit even for agent token creation](gitlab-org/gitlab@458be4ee79079c2c027c219bd523a0e73bd28aa4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112036)) **GitLab Enterprise Edition** +- [Added deprecation warning for Slack on self-hosted](gitlab-org/gitlab@7e9e67c112b5c08bbf47e97065b4e6fd57c99837) ([merge request](gitlab-org/gitlab!111821)) +- [Frontend implementation of work item notes subscription](gitlab-org/gitlab@d549914471b2790d8d2a3cf6f7e3550396b53a06) ([merge request](gitlab-org/gitlab!109079)) +- [Expose issue count flow metric via GraphQL](gitlab-org/gitlab@6ec02eab11c87ac6f5bf65c7168d59e7563d6b0b) ([merge request](gitlab-org/gitlab!111571)) **GitLab Enterprise Edition** +- [Skip License#check_trueup when converting to cloud](gitlab-org/gitlab@f88727355aaff66199c394bf0a17fed7e4141d79) ([merge request](gitlab-org/gitlab!112294)) **GitLab Enterprise Edition** +- [Added the deprecation alert to Slack notifications](gitlab-org/gitlab@c96d7f649f393db583f0b821a6c69e715c743486) ([merge request](gitlab-org/gitlab!111593)) +- [Refactor tests for admin mode](gitlab-org/gitlab@3a2450a364fbe5a9aaf5d1bc9d52f56367e922f8) by @TrueKalix ([merge request](gitlab-org/gitlab!111785)) +- [Add add_concurrent_index migration for index_namespaces_on_updated_at](gitlab-org/gitlab@bcdd27f86063a9361b9421f621014a53a1970422) ([merge request](gitlab-org/gitlab!112399)) +- [Add add_concurrent_index migration for index_users_on_updated_at](gitlab-org/gitlab@46517e7248df14b5327401fb07c748e29d783b1b) ([merge request](gitlab-org/gitlab!112398)) +- [Summary quick view of issuables using markdown (+s)](gitlab-org/gitlab@58b28d3c224209676bed8d3d5d021c8a5ef1cb66) ([merge request](gitlab-org/gitlab!110406)) +- [API Discovery analyzer for java spring-boot](gitlab-org/gitlab@e2c62c00b855e578d32a683c25f08ce3de2810da) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108878)) **GitLab Enterprise Edition** +- [Add pre scan verification create-update service](gitlab-org/gitlab@2dc16147f75aa4e7f41bcb400300f3076da133ef) ([merge request](gitlab-org/gitlab!111075)) +- [BG migration to add issue links to existing findings](gitlab-org/gitlab@9fa28999bc71984c66d1a54b85c8103b9604c945) ([merge request](gitlab-org/gitlab!107367)) +- [Validate and replace FK for ci_build_report_results and ci_builds](gitlab-org/gitlab@fe7540e59f854d3e1d418b794bbec471e02919c4) ([merge request](gitlab-org/gitlab!112461)) +- [SSO-provisioned users are redirected to SSO login after confirmation](gitlab-org/gitlab@ae5d32d9ef2a5e84d64bef029ea2f2ac74867de2) ([merge request](gitlab-org/gitlab!112112)) **GitLab Enterprise Edition** +- [Expose total weight for epic board list API](gitlab-org/gitlab@29edc92e90a12f4dce3edabc05f029c224774797) ([merge request](gitlab-org/gitlab!112566)) **GitLab Enterprise Edition** +- [Add bulk_import_export_batches & bulk_import_batch_trackers db tables](gitlab-org/gitlab@375b61b7722b5c3074a705925b8396955a211ccb) ([merge request](gitlab-org/gitlab!111708)) +- [Update FKs between p_ci_builds_metadata partitions and ci_builds](gitlab-org/gitlab@8bc9ed118991d74ae02b19b95448b61a8aeba3c9) ([merge request](gitlab-org/gitlab!112316)) +- [Adds delete action on package other versions tab](gitlab-org/gitlab@fd137b3baed780df852354e4c3df73387eb25990) ([merge request](gitlab-org/gitlab!112523)) +- [Validate and replace FK for ci_job_artifacts and ci_builds](gitlab-org/gitlab@44d8ab4610090df8832327aa0b4c04068af38cb5) ([merge request](gitlab-org/gitlab!111166)) +- [Add frontend validation for discord id](gitlab-org/gitlab@4a2c8d788f4fdfc9b0e3fc99b1f698ef5f94108c) ([merge request](gitlab-org/gitlab!111326)) +- [Create namespace_ldap_settings table to move columns from namespaces](gitlab-org/gitlab@41b7e5c5650865fcdf71ddbc9f23aa17fcf1cf0a) ([merge request](gitlab-org/gitlab!108908)) +- [Add key_fingerprint_sha256 to SshSignatureType](gitlab-org/gitlab@7e53a7ae84c58fef473cca8b56d16329595d7f29) ([merge request](gitlab-org/gitlab!112465)) +- [Validate and replace FK for ci_build_needs and ci_builds](gitlab-org/gitlab@8a24749a3094323b22a31e87be5c0fbc980c7adc) ([merge request](gitlab-org/gitlab!112462)) +- [Add deployment approver settings to API](gitlab-org/gitlab@046fe624fa90c39124eca39475d0f519a0788d0b) by @luzhiyuan.deer ([merge request](gitlab-org/gitlab!111747)) **GitLab Enterprise Edition** +- [Add status and resolved_at columns to abuse_reports](gitlab-org/gitlab@3e822d651f0432c1c96173abfa080fd1b7bee486) ([merge request](gitlab-org/gitlab!110991)) +- [Add ci_runner_machine_builds join table](gitlab-org/gitlab@ddaa735bbfea22ffce44d2d430a6311b61725d95) ([merge request](gitlab-org/gitlab!111483)) +- [Backend for Service Account MVC](gitlab-org/gitlab@14b8b33c888b85b6b696a5c0b9b6bcbf1b9c3f83) ([merge request](gitlab-org/gitlab!110656)) +- [Add logs for ci resource groups](gitlab-org/gitlab@aa96b02a8b360c62974b69378dd730b7bd94a7c2) ([merge request](gitlab-org/gitlab!110029)) +- [Allow abuse reports from epic notes](gitlab-org/gitlab@0648d812c15b1a175d2d29c621e9efb3e9b7e340) ([merge request](gitlab-org/gitlab!112307)) **GitLab Enterprise Edition** +- [Add sync index for lfs_objects file column](gitlab-org/gitlab@4cf7f075dc39968d5bbddce5cee1f2883734431d) ([merge request](gitlab-org/gitlab!112142)) +- [Add `has_failures` column to `bulk_import_*` db tables](gitlab-org/gitlab@fcaa75cbb42093286e408165a0a2e492d6cc85f2) ([merge request](gitlab-org/gitlab!112056)) +- [Add `add_provisioned_by_group_at` to `user_details`](gitlab-org/gitlab@583d303b25320dae941ca228c482a200332ff907) ([merge request](gitlab-org/gitlab!112083)) +- [Add sync index for package_files file_name column](gitlab-org/gitlab@17939f97fc94869cc10dd8c2b158a3e884d81dd9) ([merge request](gitlab-org/gitlab!112099)) +- [Index sbom_occurrences on project_id and id](gitlab-org/gitlab@a3f909459ae304822ec2c57b80bcbb7250183029) ([merge request](gitlab-org/gitlab!111175)) +- [Add Query.project.dependencies to graphql](gitlab-org/gitlab@424a3e54ee6f3ad0bc5ce3a92d42b2a133d62a3b) ([merge request](gitlab-org/gitlab!111175)) **GitLab Enterprise Edition** +- [Add index to web_hook_logs](gitlab-org/gitlab@67d99e12756eb3a6328c74265eceeb799ba9436f) ([merge request](gitlab-org/gitlab!110169)) + +### Fixed (173 changes) + +- [Fix URL base of API endpoint](gitlab-org/gitlab@8abcc55b3750a3e6e4a8f440f8f5b589b9de8628) ([merge request](gitlab-org/gitlab!114983)) **GitLab Enterprise Edition** +- [Run in batches uuids count](gitlab-org/gitlab@a7e01a4a5e28affba5d818f7c2d93208f7b6d3e7) ([merge request](gitlab-org/gitlab!114402)) **GitLab Enterprise Edition** +- [Update prometheus-client-mmap to v0.19.1](gitlab-org/gitlab@27f43cd0aa82120453e37e0011d68fa71e3fac6f) ([merge request](gitlab-org/gitlab!115048)) +- [Work item add comment bug fix](gitlab-org/gitlab@432004987eb324c72427abc503badb9fe94c7863) ([merge request](gitlab-org/gitlab!115001)) +- [Use only the valid report findings in PipelineVulnerabilitiesFinder](gitlab-org/gitlab@8706d4c78f620faf1335f5322454c534423a36b2) ([merge request](gitlab-org/gitlab!115039)) **GitLab Enterprise Edition** +- [Fix to prevent unlimited CI includes](gitlab-org/gitlab@89deab1c3032cc1eeb411e61b20b32603b736f89) ([merge request](gitlab-org/gitlab!114928)) +- [Fix duplication of thread comments on snippet and commit page](gitlab-org/gitlab@12b6208081c7437465e3fca50960f5640c027a16) ([merge request](gitlab-org/gitlab!115007)) +- [Different fixes for cleanup policies for container images](gitlab-org/gitlab@994889f753a11a3c74425fbac8079dae66f63b0d) ([merge request](gitlab-org/gitlab!114609)) +- [Fix NoMethodError: undefined method `sha'](gitlab-org/gitlab@d2b07c92244b676dd6ad6e2a00c4b25a3839df31) ([merge request](gitlab-org/gitlab!114013)) +- [Remove calendar icon from epic list item if no date exists](gitlab-org/gitlab@aef1f26a5f99a6f585ecf4c9e8fb1692d5a8cccf) ([merge request](gitlab-org/gitlab!114789)) **GitLab Enterprise Edition** +- [Address polling edge cases in runner registration](gitlab-org/gitlab@46d4f3f832cb1fa172023d2ee7a89aa70b753dd7) ([merge request](gitlab-org/gitlab!114742)) +- [Fix Debian generate for group distributions](gitlab-org/gitlab@62865ba8644d01e122acbb71725b3a0eb1562be2) by @sathieu ([merge request](gitlab-org/gitlab!113441)) +- [Put runner machine heartbet under a feature flag](gitlab-org/gitlab@01b839b76b2a7cced19f9d2b2aaf9111c51691bf) ([merge request](gitlab-org/gitlab!114859)) +- [Fix Debian tarball extensions](gitlab-org/gitlab@76085ca4c0373187a1361d5ff44fa3fe85915495) by @sathieu ([merge request](gitlab-org/gitlab!113568)) +- [Fix work items links for relative url instance](gitlab-org/gitlab@3126c9ff186e5329fc924834c4ef9701dc21c07f) ([merge request](gitlab-org/gitlab!114838)) +- [Fix webhook failure callout sticky from some pages](gitlab-org/gitlab@48120a1e34ed283eed7cfb2d6ded549f764114b1) ([merge request](gitlab-org/gitlab!114828)) +- [Hide bulk deletion UI of container tags for users without permission](gitlab-org/gitlab@c83b9c3157d2355a663607041cd9aec3a81f8c28) ([merge request](gitlab-org/gitlab!113647)) +- [Fix alignment of diff system note icons](gitlab-org/gitlab@b8f526d9f59c33bc7f273e942ea25e81ad011692) ([merge request](gitlab-org/gitlab!114331)) +- [Check license for package metadata sync](gitlab-org/gitlab@2871888c5f5ed9c17cbd098e59a5f1cc724b5c9b) ([merge request](gitlab-org/gitlab!114761)) **GitLab Enterprise Edition** +- [Rebuild MR report approval rules on group access changes](gitlab-org/gitlab@980de57a4c59415176ec43b2167d6130cad80a72) ([merge request](gitlab-org/gitlab!114113)) +- [Render broadcast messages preview in markdown](gitlab-org/gitlab@c9b98a07545d80d3df29208753ee358531bbde3f) ([merge request](gitlab-org/gitlab!114156)) +- [Expire Etag cache for Environemnt when deployment approved](gitlab-org/gitlab@ed1289d6cf2e39d1e7db4a4cc1b7fa4968d8ff06) ([merge request](gitlab-org/gitlab!114692)) +- [Fix no author shown when changing state of vulnerability](gitlab-org/gitlab@a17ef3d821dd6154d98ba3307a16e29142af7529) ([merge request](gitlab-org/gitlab!114569)) **GitLab Enterprise Edition** +- [Rebuild MR report approval rules on project access changes](gitlab-org/gitlab@5a0b538a83751e6dee33c365c8a2d3fe5f47fbbd) ([merge request](gitlab-org/gitlab!113681)) **GitLab Enterprise Edition** +- [Require disable_ddl_transaction on bbm finalization](gitlab-org/gitlab@b9614c8b4f21582e25d051e77edaa1b2021e867c) ([merge request](gitlab-org/gitlab!114558)) +- [Fix border radius on merge request filter](gitlab-org/gitlab@ef1f0ffc9361bf2b87df5d381d4f0c258e4d977f) ([merge request](gitlab-org/gitlab!114630)) +- [Run override UUID logic for the added and fixed findings](gitlab-org/gitlab@ec4259ed27bdaec6ea492be8c121687ffd456271) ([merge request](gitlab-org/gitlab!114268)) **GitLab Enterprise Edition** +- [Fix bug causing only the last schedule type policy to run](gitlab-org/gitlab@241aa890f7a2e2e2c613035ddadd23622dd01415) ([merge request](gitlab-org/gitlab!114021)) **GitLab Enterprise Edition** +- [Exclude archived projects from total and starred counts](gitlab-org/gitlab@66389b73845a709c0a3b02340e88993848a04536) ([merge request](gitlab-org/gitlab!113874)) +- [Fix TypeError for empty blob.path](gitlab-org/gitlab@d5a51efd9a765269f4cc552f7687b94ea53d53c2) ([merge request](gitlab-org/gitlab!114260)) **GitLab Enterprise Edition** +- [Support Maven artifact classifiers when checking for duplicates](gitlab-org/gitlab@b25ca1846a76e4291f10b07d35906b89f983eb41) ([merge request](gitlab-org/gitlab!113810)) +- [Add support for OCI image indexes in Dependency Proxy](gitlab-org/gitlab@5e68b666039cd71e862db80c7010fe52a4ea7dff) ([merge request](gitlab-org/gitlab!114575)) +- [Enforce regex in security orchestration schema](gitlab-org/gitlab@8507dd7a10b951e80bed7b5beb34516a30652aa5) ([merge request](gitlab-org/gitlab!114359)) +- [Fix project-level VSA license check](gitlab-org/gitlab@31be7a1a4bb54314abc5d3e1413da8c94ac26521) ([merge request](gitlab-org/gitlab!114579)) **GitLab Enterprise Edition** +- [Change occurrences column type to join feedback table](gitlab-org/gitlab@c7ce049a0725cc76faadd088322ae2ad10de60e9) ([merge request](gitlab-org/gitlab!114448)) **GitLab Enterprise Edition** +- [Fix styling of add issuable form input wrapper](gitlab-org/gitlab@d1c451592a64701876a0837bd5cad9536c5fca96) ([merge request](gitlab-org/gitlab!114564)) +- [Fix yaml load compatible issue](gitlab-org/gitlab@c5f13baa354995c30e257321b93b9096589bc1a7) by @chaomao ([merge request](gitlab-org/gitlab!114541)) +- [Fix border radius on pending comments](gitlab-org/gitlab@ca1bf27ed8f6d504730aaee14448ffcfe862d96f) ([merge request](gitlab-org/gitlab!114525)) +- [Prevent multiple package metadata sync jobs](gitlab-org/gitlab@b0669df48fcd77455cd9058b428b536537f96af8) ([merge request](gitlab-org/gitlab!113567)) **GitLab Enterprise Edition** +- [Use access exclusive lock for FKs on partitioned tables](gitlab-org/gitlab@e93811232c2c3ccfc5e1ec4495aed33e78aafe1e) ([merge request](gitlab-org/gitlab!114455)) +- [Fix license approval policies to consider non-default branches](gitlab-org/gitlab@842ebd36c152bbf99371884d822f4cc1fb2e27bf) ([merge request](gitlab-org/gitlab!114459)) **GitLab Enterprise Edition** +- [Fix incorrect `has_issues` on `vulnerability_reads`](gitlab-org/gitlab@b96fc8b993d8bce13926da771b5fc1d5d47b462d) ([merge request](gitlab-org/gitlab!113447)) +- [Fix Profile GPG key timeago tooltip](gitlab-org/gitlab@57d862f1ecf70b664a71540394c04a85b5c0b1ac) ([merge request](gitlab-org/gitlab!114232)) +- [Improve Scan Details alignment and UI issues](gitlab-org/gitlab@d815d4703b56bad0ab85297cbc43c8dfe4d3c622) ([merge request](gitlab-org/gitlab!113948)) **GitLab Enterprise Edition** +- [Fix finding details header](gitlab-org/gitlab@5b00186806c227e8a4bf1cbf28e1225e08c8b857) by @jschafer-gitlab ([merge request](gitlab-org/gitlab!111599)) **GitLab Enterprise Edition** +- [Fix gitlab cleanup tags service default status](gitlab-org/gitlab@7752ce906a79ee41eaf7b04fd9085491704d9482) ([merge request](gitlab-org/gitlab!114267)) +- [Fix artifacts:public accessiblity parameter](gitlab-org/gitlab@2d6dedd05fda6abb1689edcb06c25e97b9442392) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109860)) +- [Reduce the chances of deadlocks for builds migrations](gitlab-org/gitlab@e6823cb8b5352d650c9a49bf5547a8428fc82608) ([merge request](gitlab-org/gitlab!114220)) +- [Fix 500 error for Instance level SCIM identities](gitlab-org/gitlab@7ed317804a7edff9f3e4e2d14ed073c36171d2ad) ([merge request](gitlab-org/gitlab!112875)) **GitLab Enterprise Edition** +- [Fix spacing on summary comment tabs](gitlab-org/gitlab@596941266425844083c184657e60dfad4ad616b3) ([merge request](gitlab-org/gitlab!114180)) +- [Fix double focus outline in content editor](gitlab-org/gitlab@bc8dcb639fcfef14f337c5c964430d3446857d00) ([merge request](gitlab-org/gitlab!114126)) +- [Fix markdown anchor icon in dark mode](gitlab-org/gitlab@b182ceaa64ded902157d98a77cdb732d06c80033) ([merge request](gitlab-org/gitlab!112139)) +- [Handle InvalidForeignKey errors when indexing deleted projects](gitlab-org/gitlab@ba1e70d6bd39c23e40e4d5fd602c2a0c4012ff93) ([merge request](gitlab-org/gitlab!114163)) **GitLab Enterprise Edition** +- [Seperate out jobs count query](gitlab-org/gitlab@86471860ba2759b50c323b2b8d07b5a56909a070) ([merge request](gitlab-org/gitlab!114161)) +- [Fix bug where adding other approver type is added](gitlab-org/gitlab@cd359efce15a446883c64a5c6265e553897b3999) ([merge request](gitlab-org/gitlab!113768)) **GitLab Enterprise Edition** +- [Fix namespace null bug](gitlab-org/gitlab@dfcbc574cd6e1f11df941e7462a3a7f3850b11b4) ([merge request](gitlab-org/gitlab!114125)) +- [Fix border radius on collapsed replies in diffs](gitlab-org/gitlab@c22c44d983203a9d8d5c54ef0f005af09245c91c) ([merge request](gitlab-org/gitlab!114037)) +- [Don't show checklist item dropdown within tables](gitlab-org/gitlab@ccdd91c94b9ee0734ea653b2574c94e63dde7028) ([merge request](gitlab-org/gitlab!112932)) +- [Label dropdown: fix color swatches :focus](gitlab-org/gitlab@5573f8fbf7618891eccb930550ac308847f3cc24) ([merge request](gitlab-org/gitlab!114096)) +- [Fix dollar replacements in sprintf](gitlab-org/gitlab@937688a1153ff8d902da09efb33be3f53374c491) ([merge request](gitlab-org/gitlab!113721)) +- [Modifies contribution analytics GraphQL query to be recursive](gitlab-org/gitlab@a42ceafc88c0487e7ea21e570fe1bc62ef27f175) ([merge request](gitlab-org/gitlab!112723)) **GitLab Enterprise Edition** +- [Removed debounce from issues query](gitlab-org/gitlab@8d184143591da526af6609caf663cc0ec98a4327) ([merge request](gitlab-org/gitlab!113987)) +- [Fixed root_ancestor inside transaction](gitlab-org/gitlab@5b7da93fe7155eb57b7c811a8adefd25e1d66e71) ([merge request](gitlab-org/gitlab!113330)) +- [Avoid 404 on empty Debian component file](gitlab-org/gitlab@ae7ab175a71eafd035288afbad694bb8d5bc4ed5) by @sathieu ([merge request](gitlab-org/gitlab!109470)) +- [Standardize related items counters](gitlab-org/gitlab@4e5d51db45e2e3f133a655df75ac757f4e57be7d) ([merge request](gitlab-org/gitlab!113897)) +- [Add `order_by: 'similarity'` to invite group API request](gitlab-org/gitlab@4525c0069312a02b401c12bb989c7cfa820193e8) ([merge request](gitlab-org/gitlab!113293)) +- [Fix N+1 for search notes](gitlab-org/gitlab@77559205a244972570df605148b88eabc10cce3c) ([merge request](gitlab-org/gitlab!113770)) **GitLab Enterprise Edition** +- [Fix task widget border radius](gitlab-org/gitlab@2b28db74bac16da879d4d79e6074cdf39e89d1cf) ([merge request](gitlab-org/gitlab!113895)) +- [Process packages with not all details](gitlab-org/gitlab@b55e19e433b324a4a88b2e5265d9782bbf01e14d) ([merge request](gitlab-org/gitlab!113887)) **GitLab Enterprise Edition** +- [Fix whitespace after author name in note header](gitlab-org/gitlab@4da416a618279f01d2e6f9297479e954ca4c0720) ([merge request](gitlab-org/gitlab!113938)) +- [Disallow terraform state management if config is disabled](gitlab-org/gitlab@343eba47db6cde95b6c9144b61670c2f3760f828) ([merge request](gitlab-org/gitlab!113049)) +- [Fix(Subscription Sync): hide button legacy/offline](gitlab-org/gitlab@966a4c70b96145669e7ca7145c62a6579665054a) ([merge request](gitlab-org/gitlab!113957)) **GitLab Enterprise Edition** +- [Remove non-user links from todos](gitlab-org/gitlab@1cc41e07e5d26f24afcc60a1962b6bc1dc48028d) ([merge request](gitlab-org/gitlab!112939)) +- [Adds display for errors in Jupyter Notebooks](gitlab-org/gitlab@532473c7b3b7d03d5b33747554aadb50b94239c4) ([merge request](gitlab-org/gitlab!113370)) +- [Require reCAPTCHA for trial registrations](gitlab-org/gitlab@bbe89ae44cbe3d9e15abd86d904812822b876341) ([merge request](gitlab-org/gitlab!113176)) **GitLab Enterprise Edition** +- [This MR adds handling yaml parsing errors](gitlab-org/gitlab@c57338e2f01f55c1fda7b5e1478cec80ec623537) ([merge request](gitlab-org/gitlab!113601)) **GitLab Enterprise Edition** +- [Prevent validating an invalid promo code once invalid](gitlab-org/gitlab@c00ce608167c2d23226c9e171f71b7c5646934b2) ([merge request](gitlab-org/gitlab!113457)) **GitLab Enterprise Edition** +- [Fix UI consistencies in bulk update sidebar](gitlab-org/gitlab@7b218f23a60c15d254107d1337967f1f7c81befa) ([merge request](gitlab-org/gitlab!113889)) +- [Fix unintended changes in db dictionary after db:migrate](gitlab-org/gitlab@aa6bcc8a3adabe183cc44d28f9bde5ea22ea3b97) ([merge request](gitlab-org/gitlab!113672)) +- [Fix icon and textfield in incident timeline](gitlab-org/gitlab@01aa74b37242dadf7127cc9878daf73233ab37e4) by @Mughees_ ([merge request](gitlab-org/gitlab!112392)) +- [Do not include hidden issues in the ES result](gitlab-org/gitlab@530f344babdeb5109ffd02c6bce8948f9e646836) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113494)) **GitLab Enterprise Edition** +- [Restore style after leaving fullscreen / zen mode](gitlab-org/gitlab@140bdc04f985592033b6fea4f7d3a50e048e5464) by @winniehell ([merge request](gitlab-org/gitlab!112267)) +- [Splat attributes in update_issue call](gitlab-org/gitlab@bf3725c67f16305bc18f68a0a4dbd108f11d8f4f) ([merge request](gitlab-org/gitlab!113851)) +- [Remove special handling of trace in DestroyBatchService](gitlab-org/gitlab@eaa549fe67c3457f807d834a7d5a407504d0a4c6) ([merge request](gitlab-org/gitlab!112778)) +- [Fixes the border-radius of the tasks widget](gitlab-org/gitlab@68289301c9baa86cc91b37577810bb1675cb7900) ([merge request](gitlab-org/gitlab!113344)) +- [Fix finding details header](gitlab-org/gitlab@24425d75dd2c31355b2b4d3ff522cce8340dd8a9) ([merge request](gitlab-org/gitlab!111233)) **GitLab Enterprise Edition** +- [Add guards for issue instance proxy](gitlab-org/gitlab@f61e22af4b45399d373ca364ffda30e7dcc40c1b) ([merge request](gitlab-org/gitlab!113832)) **GitLab Enterprise Edition** +- [Fix typo in Terraform template docs example](gitlab-org/gitlab@eaddd1f8379ed87b3f1a4a2a57e7e4ed8bc23ff9) by @artpropp ([merge request](gitlab-org/gitlab!113678)) +- [Fix ignored task that falls between HTML comments](gitlab-org/gitlab@42d6bb4fd632b85767b09d9e42e2978519d2b709) ([merge request](gitlab-org/gitlab!113796)) +- [Use proxy base url for http_url_to_repo](gitlab-org/gitlab@b1f76a6bdc298bbe1048db5d9ce183576c813c9c) ([merge request](gitlab-org/gitlab!108790)) **GitLab Enterprise Edition** +- [Fix foreign_key_exists? migration helper](gitlab-org/gitlab@50a0a1c1080bc8aa69a386b15aef06b3eb53398d) ([merge request](gitlab-org/gitlab!113797)) +- [Increases size limit for Jupyter Notebook diffs](gitlab-org/gitlab@d98621da92093f54b6e02ee9efa016cd41b62265) ([merge request](gitlab-org/gitlab!107924)) +- [Do not parse git-notes commits during git access checks](gitlab-org/gitlab@65f0c6e59121b62c9b0f89b810ef5186969bb4d2) ([merge request](gitlab-org/gitlab!113782)) +- [Fix alignment of participants in issuable sidebar](gitlab-org/gitlab@dbec012fb3015347490999cdbeb6cb7941c27a2f) ([merge request](gitlab-org/gitlab!113781)) +- [Fix contribution calendar not respecting "First day of the week"](gitlab-org/gitlab@ffca1b332fa64101b95c2f2e4258f56f5b2925a5) ([merge request](gitlab-org/gitlab!113747)) +- [Fix unselectable group webhooks](gitlab-org/gitlab@4eeebd8e770c55a3906732f2f6c905d0c846fdfc) ([merge request](gitlab-org/gitlab!113204)) **GitLab Enterprise Edition** +- [Fix timeout error while deleting approval rules from scan result policy](gitlab-org/gitlab@6921a8ea9ca43e2b2cec06267871435c5860ca5d) ([merge request](gitlab-org/gitlab!113699)) **GitLab Enterprise Edition** +- [Ensure corpus management has active nav](gitlab-org/gitlab@dd995998ae1b511eef8537f9753f53d206ee49b0) ([merge request](gitlab-org/gitlab!113696)) **GitLab Enterprise Edition** +- [Resolve vulnerabilities for each scanner found in the scan report](gitlab-org/gitlab@d502c94afcffd6a526226e732202fb92f98ac167) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112868)) **GitLab Enterprise Edition** +- [Fix notebook viewer switching](gitlab-org/gitlab@4b9dfb025996f1f4a7c59fc61c23f2e4897c0a6d) ([merge request](gitlab-org/gitlab!113514)) +- [Reset subscription max_seats_used on trial upgrade](gitlab-org/gitlab@2fd999d411e1c1cb462bc3fa3a0a659908286c66) ([merge request](gitlab-org/gitlab!113082)) **GitLab Enterprise Edition** +- [Issuables author :focus fix](gitlab-org/gitlab@06a350d0ed661f25271c8e7d2446e5416c28f3ba) ([merge request](gitlab-org/gitlab!113539)) +- [Use min and max date to prevent setting end dates before start dates](gitlab-org/gitlab@2b45a53b9e82ea1dc7a8809eabb05e29271ef049) ([merge request](gitlab-org/gitlab!113216)) **GitLab Enterprise Edition** +- [Fixing tests for single-db-two-connection](gitlab-org/gitlab@82407fb6b5a2267714301165514a09e9ab05c244) ([merge request](gitlab-org/gitlab!113515)) +- [Hide scan details when no report summary scans are available](gitlab-org/gitlab@c86e93d4a42494627eafcea7ad2c121196d2975e) ([merge request](gitlab-org/gitlab!113228)) **GitLab Enterprise Edition** +- [Fix comment links on work items](gitlab-org/gitlab@3255cf6d3779f1065d7eeaf178b04fd1c0c09c7d) ([merge request](gitlab-org/gitlab!113639)) +- [Allow blank scope for aggregations endpoint](gitlab-org/gitlab@ec2a4840f7e0c705aed25750283a140e6f4e5767) ([merge request](gitlab-org/gitlab!112244)) **GitLab Enterprise Edition** +- [Provide default path for protected environments](gitlab-org/gitlab@dbee763d4efe2482f592736b5ebb8056e0bebfea) ([merge request](gitlab-org/gitlab!113418)) +- [Fix inconsistent behaviour in design comments](gitlab-org/gitlab@e0b9ec446f8d43cfce43670af7f27818f2812a51) ([merge request](gitlab-org/gitlab!111449)) +- [Fix :focus on participants](gitlab-org/gitlab@7c129365aee68c72c62313b81971100b2060f56b) ([merge request](gitlab-org/gitlab!113408)) +- [Fix protected environment user list title](gitlab-org/gitlab@c9e0a5707ccf968e51a57aeb21069cf388b16a57) ([merge request](gitlab-org/gitlab!113380)) +- [Add a boolean field hidden in the Issue ES mapping](gitlab-org/gitlab@69ad7c08ba0788b54863c93a5a412af571c06305) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111678)) **GitLab Enterprise Edition** +- [Breadcrumb: fix :focus](gitlab-org/gitlab@200f07d6668c09469b12f477cb4380384ad0ffda) ([merge request](gitlab-org/gitlab!113098)) +- [Fix ArgumentError, use default sort by name](gitlab-org/gitlab@ac49ce700bc3fdce907b8980282d95c744a35e41) ([merge request](gitlab-org/gitlab!113378)) +- [Draft: Use epicsCount from metadata instead of from the list](gitlab-org/gitlab@1fb5e0d31e0fa50579dc4fd130a4b832684ef344) ([merge request](gitlab-org/gitlab!113373)) **GitLab Enterprise Edition** +- [Fix regex for destination namespace path](gitlab-org/gitlab@21311716728f4ed8f8b8ea41063b105c0758aa84) ([merge request](gitlab-org/gitlab!113132)) +- [Allow searching by full path](gitlab-org/gitlab@456fa1e371f3588f83dd14957f427a24e66d07d9) ([merge request](gitlab-org/gitlab!113329)) +- [Enable Geo::RepositoryRegistrySyncWorker on Geo secondary site](gitlab-org/gitlab@389879b0a221d3db14378268fd765a5b02f3451d) ([merge request](gitlab-org/gitlab!113320)) **GitLab Enterprise Edition** +- [Guard against dropped columns when finalizing user details migration](gitlab-org/gitlab@51dfc1e497fc3b04cd8c2c0adaab2e4699ac4ad9) ([merge request](gitlab-org/gitlab!113253)) +- [Replace old image with SVG for empty MR state](gitlab-org/gitlab@1bc2362c4805dc70cefb887e143c17a8ab85a3b0) ([merge request](gitlab-org/gitlab!112318)) +- [Fix ArgumentError for Integrations::Campfire](gitlab-org/gitlab@ffcc50578836e2880c8592d29f0ad7b3eee2f2f5) ([merge request](gitlab-org/gitlab!113212)) +- [Open vulnerability history comment editor on focus](gitlab-org/gitlab@76df2f43add8047545f47a18ceda6b0f765eba52) ([merge request](gitlab-org/gitlab!113072)) **GitLab Enterprise Edition** +- [Work item: fix title :focus](gitlab-org/gitlab@3bf8356b9695c953f2857677ead27decd9636b07) ([merge request](gitlab-org/gitlab!113095)) +- [Change order of CSS imports to fix search icon UI](gitlab-org/gitlab@5bdbaa5c468463c0638ef4fe31ff08a90c537d9e) ([merge request](gitlab-org/gitlab!113194)) +- [Update yml validation to be more clear](gitlab-org/gitlab@b2763e64c0037edf08dc4dd03ba47ffe74a73ade) ([merge request](gitlab-org/gitlab!111881)) +- [Add response caching for aggregations](gitlab-org/gitlab@72caba131067d7df984ca12d92bb1000101efc15) ([merge request](gitlab-org/gitlab!112706)) **GitLab Enterprise Edition** +- [Fix null exception for approvals_before_merge](gitlab-org/gitlab@8f7c68496d2d5da15a6b253855e8702bffe0d9e3) ([merge request](gitlab-org/gitlab!113099)) **GitLab Enterprise Edition** +- [Fix edge case when parent set to nil](gitlab-org/gitlab@4f7914c3e1f3a2194b9cdcd3487dc1e95dd6b6f1) ([merge request](gitlab-org/gitlab!112645)) +- [Avoid overwriting runner cached values on job API calls](gitlab-org/gitlab@68da8799276d73c9cc10b20a47cd1434e9b998ae) ([merge request](gitlab-org/gitlab!112536)) +- [Include memberships from groups shares in preloader](gitlab-org/gitlab@a9ffd16043499c9554913e5b6f3409e4dfee92a7) ([merge request](gitlab-org/gitlab!113056)) +- [Fix merge checks group name fetching issue](gitlab-org/gitlab@7700ac952b0cbd95d82d0a8bf26a6f825a6f89d1) ([merge request](gitlab-org/gitlab!112422)) **GitLab Enterprise Edition** +- [Deduplicate Group & Project destroy workers](gitlab-org/gitlab@d245d48891ab30b278a96c0961a6413c68796591) ([merge request](gitlab-org/gitlab!112893)) +- [Fix note edited i18n issue](gitlab-org/gitlab@58ab6de6629f3369e9a3e2f575ab219b173aca11) ([merge request](gitlab-org/gitlab!112531)) +- [Remove spy on component methods](gitlab-org/gitlab@6c7f27865be2e7b5407dc600b9a48396fb0b911a) ([merge request](gitlab-org/gitlab!111797)) +- [Fix object deletion not working with Azure Blob Storage](gitlab-org/gitlab@ac69bd032358e92efba900895e38b822a40046c7) ([merge request](gitlab-org/gitlab!113032)) +- [[383842] GitHub importer: fix note attachments](gitlab-org/gitlab@da04b3927f864ad677052f8700050a6109780071) ([merge request](gitlab-org/gitlab!112713)) +- [Fix typo in the error message rendering](gitlab-org/gitlab@62f73a4e4b7f4d3119516a1af99d09991b10b110) ([merge request](gitlab-org/gitlab!113027)) +- [Update createBranch path with a new value](gitlab-org/gitlab@fc8dbf157685dab5c36c42ed906090ebe1a9ed8d) ([merge request](gitlab-org/gitlab!113025)) +- [Fix helpPagePath for import table](gitlab-org/gitlab@7ed9160feebed3662129ff9b01d9fe2050c4a247) by @Taucher2003 ([merge request](gitlab-org/gitlab!112996)) +- [Sync pipeline commit message for Jira keys](gitlab-org/gitlab@26228941d03e9b1d1a43b88b2992579c2a2b4434) ([merge request](gitlab-org/gitlab!112898)) +- [Modify creating resource access token to create email with random part](gitlab-org/gitlab@ecf3e4800f98f87c35d56ee8b0bc20b4281c4495) ([merge request](gitlab-org/gitlab!112548)) +- [Fix NotNullViolation in issues API](gitlab-org/gitlab@44b9f247b00f785f30c2cef4adbef1e8dafb2d0f) ([merge request](gitlab-org/gitlab!112795)) +- [Add word-break to generic-sec-report tables](gitlab-org/gitlab@63be8ea6ae08f7c27a9da510042b84196e9084db) ([merge request](gitlab-org/gitlab!112687)) **GitLab Enterprise Edition** +- [Restore original tooltip after copying](gitlab-org/gitlab@f4ed9d872f9fc4355025f4cc4f94b1eebfb2d5e3) ([merge request](gitlab-org/gitlab!112912)) +- [Fix #retry_lock overriding .current_scope](gitlab-org/gitlab@afeb2c65b825414ca9d4464a2742f9c52b098302) ([merge request](gitlab-org/gitlab!112640)) +- [Removing FF deduplicate_archive_traces_cron_worker](gitlab-org/gitlab@4b8a6cecb01b9340ec5e188350b6061581c63347) ([merge request](gitlab-org/gitlab!112871)) +- [Fix page navigation alignment on dependencies / licenses pages](gitlab-org/gitlab@4b378bb3841d3fbf0c3d78b2e255df31751fbfca) ([merge request](gitlab-org/gitlab!112825)) **GitLab Enterprise Edition** +- [Fix invalid return when malformed data](gitlab-org/gitlab@259c5fba7ee5d206ea12ccee6ddef44d58eddbbc) ([merge request](gitlab-org/gitlab!112747)) **GitLab Enterprise Edition** +- [Fixes logic for when we reset subscription seats](gitlab-org/gitlab@493cecdf2a42298fc04118f7f75d9047b3c2b79d) ([merge request](gitlab-org/gitlab!110768)) **GitLab Enterprise Edition** +- [Fix date parsing issue on firefox for datetime on bcast msg](gitlab-org/gitlab@06529393e43d919f36fcfecd3648ba005b59b642) ([merge request](gitlab-org/gitlab!112595)) +- [Fix Code Quality text contrast](gitlab-org/gitlab@8b18ec25fedbd3d1cb9caf51210741cc9e935233) ([merge request](gitlab-org/gitlab!112583)) +- [Abstract count from query](gitlab-org/gitlab@66c6cfee340480f15c115048b6fb3381f4c393bc) ([merge request](gitlab-org/gitlab!112078)) +- [Don't allow nil value for allow_force_push](gitlab-org/gitlab@aa237b627660081673bd6bb92906f24ab9eaebe6) ([merge request](gitlab-org/gitlab!112704)) +- [Fix dependency check in license approval policies](gitlab-org/gitlab@433ee68129c8467fc8ded1b76323a4282939bae7) ([merge request](gitlab-org/gitlab!112110)) **GitLab Enterprise Edition** +- [GitLab Direct Transfer - update invalid source GitLab URL error message](gitlab-org/gitlab@0c7195bec036291f18b15f30cf45df1af8820f74) ([merge request](gitlab-org/gitlab!112692)) +- [Remove valid? check when rendering link](gitlab-org/gitlab@de6c18c2fed8fea1d7088f7a4442fd8f5a785c4b) ([merge request](gitlab-org/gitlab!112685)) +- [Hide `Infra::Google Cloud` menu if Google OAuth2 disabled](gitlab-org/gitlab@be2798c8bc12c83a0f8068b7a3bae5f6b531b215) ([merge request](gitlab-org/gitlab!112439)) +- [Fix epic roadmap focus states](gitlab-org/gitlab@17e9ed88cd119b5afea0a5b0fb089467edda24e1) ([merge request](gitlab-org/gitlab!112582)) **GitLab Enterprise Edition** +- [Fix imported project labels having a group_id](gitlab-org/gitlab@2a406b3cc8484438866cacffc84281259fe5a546) ([merge request](gitlab-org/gitlab!112654)) +- [Remove html comment from text/plain variant "new_review_email"](gitlab-org/gitlab@e6a6b782ff22a32d17c293fac898891d19343cf9) by @xdavidwu ([merge request](gitlab-org/gitlab!112514)) +- [Use spec_helper where required](gitlab-org/gitlab@ec93781823d951bd38ae2d4535570b13b09b9f6a) ([merge request](gitlab-org/gitlab!112438)) +- [Fix 500 error for calls without JWT token to Git http](gitlab-org/gitlab@2d57824c6da2cd302861299568536a4325b908e4) ([merge request](gitlab-org/gitlab!112156)) +- [Fix caching headers, drop HTTP/1.0 support](gitlab-org/gitlab@7cd40d69098bad729050a6ee36731ac04843892a) ([merge request](gitlab-org/gitlab!112304)) +- [Hide merged date sort option for open/closed MRs page](gitlab-org/gitlab@0a070e3ab76a279faf6b873fc7b40f89559444a0) ([merge request](gitlab-org/gitlab!112421)) +- [Fix months dropdown for the usage quotas feature](gitlab-org/gitlab@da16f305fa1dd66a2a7071bceb08731ed2fb5b2d) ([merge request](gitlab-org/gitlab!112103)) **GitLab Enterprise Edition** +- [Updates dashboard design closer to designs and fixes navigation bug](gitlab-org/gitlab@76be40da0f0d46de7a4ef8b4481335091fa4c069) ([merge request](gitlab-org/gitlab!111951)) +- [Add `services:variables` to CI schema](gitlab-org/gitlab@ef6c2233009e8c54abd2ae330330f4ab3717c181) ([merge request](gitlab-org/gitlab!112025)) +- [Allow pipeline schedule owner to call take_ownership API](gitlab-org/gitlab@eca4945e9f1b5c0d563cb05b345d2ce18c3b3392) ([merge request](gitlab-org/gitlab!100132)) +- [Use declarative enum on external issue link type](gitlab-org/gitlab@685d56db94a8d6af81c77c32603a34a5f3a34b6a) by @przbadu ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111998)) **GitLab Enterprise Edition** +- [Fix S3 backups not working on FIPS systems](gitlab-org/gitlab@40f64c7de8bbef65ea8af7736ecaa1e8972431f4) ([merge request](gitlab-org/gitlab!111609)) +- [Handle rendering errors from reStructuredText](gitlab-org/gitlab@fc8d246c1a4621fe3c55bf6e97c76725e359d627) ([merge request](gitlab-org/gitlab!112157)) +- [Fix cascading attr ability to set value back to same as ancestor](gitlab-org/gitlab@6bd4a6e3a4809210d9b7a181c049972fd5a5241c) ([merge request](gitlab-org/gitlab!111470)) +- [Fix OAuth application creation through API](gitlab-org/gitlab@457ebd0ceb411446a1c266bad28b3f50a63a3849) ([merge request](gitlab-org/gitlab!110448)) + +### Changed (249 changes) + +- [Add polling for pending external status checks](gitlab-org/gitlab@3bde482a2c4ba9f4ca3d4e60afa87c8bd48b790a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111763)) **GitLab Enterprise Edition** +- [Add ops feature flag to stop pruning old events](gitlab-org/gitlab@7439b00a55c32128e34137da5719323bd4e40c9e) ([merge request](gitlab-org/gitlab!115100)) +- [This MR changes variant of alert](gitlab-org/gitlab@e8f68baf143f1e1c7ae8ab170e924b8d228d424f) ([merge request](gitlab-org/gitlab!114972)) **GitLab Enterprise Edition** +- [Allow public runner releases to be disabled](gitlab-org/gitlab@4ec972657d36da3b79a01d20c70397097adac6f6) ([merge request](gitlab-org/gitlab!114041)) +- [Enhance Security & Compliance Error Handlings](gitlab-org/gitlab@08bcbd98df9dc4466c65365a1eb80d2b345e716a) ([merge request](gitlab-org/gitlab!112193)) **GitLab Enterprise Edition** +- [Improve help text for compliance framework configuration UI](gitlab-org/gitlab@4f71806e2d2a537d2bc1afa8e3aca0f2f8ce4c5d) ([merge request](gitlab-org/gitlab!114560)) **GitLab Enterprise Edition** +- [Run Gemnasium on file matches in all directories](gitlab-org/gitlab@80cc27be8ae1e85e61d8aa819539761d8efc0068) ([merge request](gitlab-org/gitlab!112375)) +- [Adds repository sorting by total storage size](gitlab-org/gitlab@0b00b2c39c223205545623e270e233ce3d4eec54) ([merge request](gitlab-org/gitlab!111211)) **GitLab Enterprise Edition** +- [Add default owner for CODEOWNERS section](gitlab-org/gitlab@bcb45639aa1c1a95024191f4e1a36494eaacafdf) ([merge request](gitlab-org/gitlab!113594)) **GitLab Enterprise Edition** +- [Remove 'redis_key' from known_events](gitlab-org/gitlab@9d3be41b3fef3a2fe3e1ddc3c70686cff2e08623) ([merge request](gitlab-org/gitlab!110952)) +- [Fix spec violations in dashboard_spec.js](gitlab-org/gitlab@413d4ac36d1592d3dfb4ef57af9566b5b631782a) ([merge request](gitlab-org/gitlab!114750)) **GitLab Enterprise Edition** +- [Add column chart visualization](gitlab-org/gitlab@033f6d839b0efb56b3ffb95a43efe366203927fd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113790)) **GitLab Enterprise Edition** +- [Fixed spec violations in table_spec.js](gitlab-org/gitlab@9fabfec334c4986c8787c57a5ba1aaed7704dcb2) ([merge request](gitlab-org/gitlab!114925)) **GitLab Enterprise Edition** +- [Application settings: Remove container limited class](gitlab-org/gitlab@0e367b12e4636596f065f4ecdf65c626b0414749) ([merge request](gitlab-org/gitlab!114920)) +- [Related merge requests: Enhance styling](gitlab-org/gitlab@27bb38a547f4105314de817b22d7d2c4539d5b03) ([merge request](gitlab-org/gitlab!114720)) +- [Highlight possibility of conflict between branch names settings](gitlab-org/gitlab@27929e2495d4def8d559c1d03d765cfb828943bc) ([merge request](gitlab-org/gitlab!114150)) +- [Unbox work items](gitlab-org/gitlab@cdc46d6435d88062373e1bef487d348792d6301d) ([merge request](gitlab-org/gitlab!113838)) +- [Add complexity and gitaly flag against suggest_approvers field](gitlab-org/gitlab@24fa748a8ffb7890ae850b2b7035c4a597f818dd) ([merge request](gitlab-org/gitlab!114844)) **GitLab Enterprise Edition** +- [Changed source of current source data](gitlab-org/gitlab@9daf1229d5e0d6bf7e217eb6fcca13245b1e1d14) ([merge request](gitlab-org/gitlab!114258)) +- [Use linear ancestors_upto namespace queries](gitlab-org/gitlab@f5c01b50a349e33d59cc98e0fc9efa94dae5ad55) ([merge request](gitlab-org/gitlab!104028)) +- [Use linear queries for namespace roots](gitlab-org/gitlab@1042fa96907d923bebeaf90aa2088752659a5c2c) ([merge request](gitlab-org/gitlab!104025)) +- [This MR replaces profiles input fields](gitlab-org/gitlab@b80aa8b79edc362731c575f8af0e2cdff5857e09) ([merge request](gitlab-org/gitlab!113915)) **GitLab Enterprise Edition** +- [Added ability to hide issues in default dropdown](gitlab-org/gitlab@577c690e755406e7ed006b2bd0c6a5ee7dabf54f) ([merge request](gitlab-org/gitlab!114285)) +- [Added response body, changed status](gitlab-org/gitlab@efe63fecc442000ca626aabdc6a1a3a8a891f06a) ([merge request](gitlab-org/gitlab!114584)) **GitLab Enterprise Edition** +- [Clean up project and group milestone pages](gitlab-org/gitlab@cd1ed8c95662c60407478fc1fee72251aab3a9ed) ([merge request](gitlab-org/gitlab!114500)) +- [Add topics help text on the project settings page](gitlab-org/gitlab@767d4bab91e126868a280e2793ae0a6357cfc532) by @Cryptopone ([merge request](gitlab-org/gitlab!114239)) +- [Reschedule migration for remediation](gitlab-org/gitlab@26c8c1654b13e387f3cafb1c9f877b9ee3b8d381) ([merge request](gitlab-org/gitlab!114478)) +- [Removing apple_app_store_integration feature flag](gitlab-org/gitlab@85cd3857f7c1d62f2aab0f1855638e60ff6c1abe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114627)) +- [Detail page header: remove borders](gitlab-org/gitlab@12becf4323772d1b52e555d92a6b7ecf78421ca3) ([merge request](gitlab-org/gitlab!113390)) +- [Add keyset pagination to project audit events api](gitlab-org/gitlab@f148178f34c5f6db46596c077fc1329f8901d9cd) ([merge request](gitlab-org/gitlab!114526)) **GitLab Enterprise Edition** +- [Adjust tests to api admin mode](gitlab-org/gitlab@1dc400dcfda0d051c6447ff10fe9e23d93242fed) by @TrueKalix ([merge request](gitlab-org/gitlab!113946)) +- [Hide upgrade billing for ramped subscriptions](gitlab-org/gitlab@e1b1338594590c4034d6acfa088095845c350185) ([merge request](gitlab-org/gitlab!112378)) **GitLab Enterprise Edition** +- [Update license scanning widget with license approval policies](gitlab-org/gitlab@076a524e805ed0d596d1bd0962f1a8b85c3bfb75) ([merge request](gitlab-org/gitlab!113635)) **GitLab Enterprise Edition** +- [Update ruby-magic to v0.6.0](gitlab-org/gitlab@bf219142e1df6b7366ecc558102081e13b3ef8b9) ([merge request](gitlab-org/gitlab!114641)) +- [Unbox widgets](gitlab-org/gitlab@02cd1c9700bac68b9d60950a24bc8a4e265430e3) ([merge request](gitlab-org/gitlab!113820)) **GitLab Enterprise Edition** +- [Remove feature flag `cache_client_with_metrics`](gitlab-org/gitlab@dcc2e9408f1a85c1402dd32ae56ead41da4db4f9) ([merge request](gitlab-org/gitlab!114591)) +- [Improve shared examples with status code](gitlab-org/gitlab@ff633b0d3d5cf3350211c28086e14cda62e0c017) by @TrueKalix ([merge request](gitlab-org/gitlab!113755)) +- [Set DS_SCHEMA_MODEL to 15 in Container Scanning CI template](gitlab-org/gitlab@9b45eb5ec4c09dd9ccafec85ec74b88ce7005802) ([merge request](gitlab-org/gitlab!114411)) +- [Make switching between editors seamless](gitlab-org/gitlab@3b891c37a6c431be72b8b267f30916cb5fd934f5) ([merge request](gitlab-org/gitlab!114146)) +- [Issue: related merge request information](gitlab-org/gitlab@00ca4b40c5d2f5840ae10961ef84bdb62517bc76) ([merge request](gitlab-org/gitlab!113975)) +- [Add check that the Gitlab API is supported](gitlab-org/gitlab@ad825a4ef482d2103890ab40606d7cb60a61a7d6) ([merge request](gitlab-org/gitlab!113430)) +- [Removes feature flags for refresh seats worker](gitlab-org/gitlab@2080ff52355a9ce50315cb0f8a1a22c621e04900) ([merge request](gitlab-org/gitlab!112181)) **GitLab Enterprise Edition** +- [Streamline from input height](gitlab-org/gitlab@bcf94152101261d6238057007e4446444eb4762c) ([merge request](gitlab-org/gitlab!114269)) +- [Issues: consolidate buttons](gitlab-org/gitlab@1a22cf4f54ce09e38e760e2a1c37d46b6fda259e) ([merge request](gitlab-org/gitlab!112798)) **GitLab Enterprise Edition** +- [Use linear self_and_hierarchy namespace queries](gitlab-org/gitlab@96cba53abc46105edbba12ece97ea53bf6bba822) ([merge request](gitlab-org/gitlab!104026)) +- [Add event_types for FeatureFlag audit events](gitlab-org/gitlab@52458305de44d960714fdd87790c48e103088198) ([merge request](gitlab-org/gitlab!113453)) +- [Migrate the commit filtering report to include all commits](gitlab-org/gitlab@c7c1494250b24c9cc75c26e02ebe07490d476620) ([merge request](gitlab-org/gitlab!113468)) **GitLab Enterprise Edition** +- [Replace admin group, project, and topic avatars with pajamas component](gitlab-org/gitlab@4fdb1474d2cf7a46087bb0cd841aa46a97e00399) ([merge request](gitlab-org/gitlab!114289)) +- [Remove customizable_roles feature flag](gitlab-org/gitlab@40621707b9b8935142f839cdbc2f3e65583906c2) ([merge request](gitlab-org/gitlab!114524)) **GitLab Enterprise Edition** +- [Add spacing and migrate card for user usage quotas](gitlab-org/gitlab@c6be94d441961d250ccf41980f5dc55625a80c24) ([merge request](gitlab-org/gitlab!114345)) +- [Remove extra padding from abuse report actions](gitlab-org/gitlab@1908ab3f063000003f91e6fb43079d92599b1b76) ([merge request](gitlab-org/gitlab!114330)) +- [Change pipeline stats](gitlab-org/gitlab@5ee1be723ccb45b12cf9230ed19785a0f0e61530) ([merge request](gitlab-org/gitlab!113553)) **GitLab Enterprise Edition** +- [Remove 'transparent_sso_enforcement` feature flag](gitlab-org/gitlab@deffce400b8368826c7553d3acd0db26c53f1e2a) ([merge request](gitlab-org/gitlab!114178)) **GitLab Enterprise Edition** +- [This MR migrates Dropdown to Listbox](gitlab-org/gitlab@5850603a2f2fd846ad79081ba1878d39cacc9e8b) ([merge request](gitlab-org/gitlab!113636)) **GitLab Enterprise Edition** +- [refactor: Buton migrated to Pajamas compliant](gitlab-org/gitlab@fb22b18b33a83f3d9e1decc5f45a6f4e565e9578) by @imrishabh18 ([merge request](gitlab-org/gitlab!113962)) +- [This MR migrates Dropdown to Listbox](gitlab-org/gitlab@b07c64c3344321038bf0b93e8e8d082cb26b77f6) ([merge request](gitlab-org/gitlab!114191)) **GitLab Enterprise Edition** +- [Add redis counter for manifest delete events](gitlab-org/gitlab@b51f336cd09417e88047616953e8bc373719ef32) ([merge request](gitlab-org/gitlab!113440)) +- [Use project's usage_quotas instead of direct URL](gitlab-org/gitlab@a1360dbbab3ae522c9f295bb422f5ab5218154d9) ([merge request](gitlab-org/gitlab!113935)) **GitLab Enterprise Edition** +- [Updated copy on free and trial registration pages](gitlab-org/gitlab@0b2b431cef47a0929139a373b77fa20dc432105d) ([merge request](gitlab-org/gitlab!114437)) +- [Legacy dropdown improvements](gitlab-org/gitlab@9c70e12a7da9f852384b8acc13987d4802f99362) ([merge request](gitlab-org/gitlab!114266)) +- [Update free user limit alert copy for non-owner roles](gitlab-org/gitlab@7beb743fe022479e37feac1f6acf620930885a1d) ([merge request](gitlab-org/gitlab!114149)) **GitLab Enterprise Edition** +- [Improve revert/cherry-pick error messages](gitlab-org/gitlab@6e58e7d5976050b59eec52ca249880e55b91d34b) ([merge request](gitlab-org/gitlab!113650)) +- [Fix deprecated interface for YAML.safe_load](gitlab-org/gitlab@457421f8bb26e821f85adb09a0e4ba1878fadc09) ([merge request](gitlab-org/gitlab!114389)) +- [Remove tag icon in container registry](gitlab-org/gitlab@e21bb8f107675a68d5590595e88d3683aba6f277) by @parkourkarthik ([merge request](gitlab-org/gitlab!114611)) +- [Update ruby-magic to v0.5.5](gitlab-org/gitlab@d9465e4ff6fbb01fb6fdc65df6de9de57ed76897) ([merge request](gitlab-org/gitlab!114368)) +- [Wiki directory follow page when they have been combined](gitlab-org/gitlab@b567beeac7ffd7485a81ba0fd319c0bec2dd1f92) by @zhyhchg ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112275)) +- [refactor: Changed the card to pajamas compliant](gitlab-org/gitlab@b8b3493fa9f5d72e40dd847c2031d770a0d5face) by @imrishabh18 ([merge request](gitlab-org/gitlab!114361)) +- [Migrate start and end date button on burndown chart](gitlab-org/gitlab@5c76e9033ee20c6c4d913d272d6d432826186c8e) ([merge request](gitlab-org/gitlab!114334)) +- [Migrate restore group button to pajamas component](gitlab-org/gitlab@27ef4831c95f7790806b4813b817ff873cd48fe6) ([merge request](gitlab-org/gitlab!114336)) +- [Reduce sub-batch size for failed Batched Background Migration Jobs](gitlab-org/gitlab@01c78d39c56f38ca415353b141f059545d6e92b3) ([merge request](gitlab-org/gitlab!109354)) +- [Migrate edit merge request button to pajamas component](gitlab-org/gitlab@9860a11bef8aa7bd10babdadf04bf79af268236e) ([merge request](gitlab-org/gitlab!114326)) +- [Adds triggers to Database Schema validations](gitlab-org/gitlab@bff7094f748ae396b2ec4089b277e6c8510351af) ([merge request](gitlab-org/gitlab!113317)) +- [Scope issue model iid to namespace](gitlab-org/gitlab@cf34c3d019b694abc6f7bd492db2acbfa3893a33) ([merge request](gitlab-org/gitlab!112900)) +- [Use small variant for pending comment badge](gitlab-org/gitlab@3023b7809562bb11fe1406f33f4a94886cfb1512) ([merge request](gitlab-org/gitlab!113909)) +- [Add audit events for sharing a group membership to another group](gitlab-org/gitlab@ef4a20d2fcf4a95301da6b3d0e39f6d098b67601) ([merge request](gitlab-org/gitlab!112719)) **GitLab Enterprise Edition** +- [Removes prefixed asterisk for path filters](gitlab-org/gitlab@6c472716fa91fbd2ad1727f6939335c7937b1289) ([merge request](gitlab-org/gitlab!113949)) **GitLab Enterprise Edition** +- [Migrate projects auto devops card to pajamas](gitlab-org/gitlab@8b161c1a30a3b91a3f0fe78d00e815ba01b9f366) ([merge request](gitlab-org/gitlab!114264)) +- [Delete orphaned packages dependencies](gitlab-org/gitlab@441e9ad7ad2c6e62db1770a49f7345297f9bae6f) ([merge request](gitlab-org/gitlab!113556)) +- [Group overview: changes recent activity bold text to content](gitlab-org/gitlab@bf8cffd7d5dfeff420eb0704c16ccf9f6ee5eec7) ([merge request](gitlab-org/gitlab!114272)) **GitLab Enterprise Edition** +- [Migrated Read more button to Pajamas on project env page](gitlab-org/gitlab@19c336acf8566f8d6c7c4668acb35d6368c4196d) ([merge request](gitlab-org/gitlab!114273)) +- [This MR replaces tooltip with popover](gitlab-org/gitlab@a99d2419f57c03a1d5d498ce60030867d1a94213) ([merge request](gitlab-org/gitlab!113739)) **GitLab Enterprise Edition** +- [Set 'send_user_confirmation_email' application](gitlab-org/gitlab@5cbe3d40ce35f622a007a70806cf5f23972d4891) ([merge request](gitlab-org/gitlab!107302)) +- [Create label: add color picker](gitlab-org/gitlab@105274d21c1b203c77b1c8eac49a9e970649aecc) ([merge request](gitlab-org/gitlab!114083)) +- [Update card component in Project mirror settings](gitlab-org/gitlab@7c94315bab71f26952f230719b97d41fe2b28a7e) ([merge request](gitlab-org/gitlab!114228)) +- [Migrate 2fa cards to Pajamas components](gitlab-org/gitlab@91efbd094c5b1c4a3b8c04caf6f6de69a72a0514) ([merge request](gitlab-org/gitlab!114218)) +- [Update cards component in project starrer page](gitlab-org/gitlab@b7d2cfd1fa8c4d64bbefd2e2dac995a996616432) ([merge request](gitlab-org/gitlab!114217)) +- [Remove `dynamic_nonce` feature flag](gitlab-org/gitlab@38b6505cc91de734a97ffc249a89d9613977fb9c) ([merge request](gitlab-org/gitlab!114028)) +- [Make Security Sidebar part of "Your Work"](gitlab-org/gitlab@52f8b0b787e653b9567c779d3bcec9187be31023) ([merge request](gitlab-org/gitlab!113240)) **GitLab Enterprise Edition** +- [Remove disabled_mr_discussions_redis_cache feature flag](gitlab-org/gitlab@0d5bfdbe0951a4c10c330b21f463f025030804d8) ([merge request](gitlab-org/gitlab!114200)) +- [Update installation command for maven package](gitlab-org/gitlab@ea59033450dc57245dc229071ab9c76a751efec2) ([merge request](gitlab-org/gitlab!113917)) +- [This MR migrates Dropdown to Listbox](gitlab-org/gitlab@30a4267314363e2601ae8e3d088c277f45ffd98a) ([merge request](gitlab-org/gitlab!113630)) **GitLab Enterprise Edition** +- [Remove enforce_max_attachment_size_upload_api feature flag](gitlab-org/gitlab@90c1d2ae2b67a45f4b71ce3a3478c24da6e3f3d1) ([merge request](gitlab-org/gitlab!112450)) +- [Add hashed root namespace id mapping to Note index](gitlab-org/gitlab@78b9e54395e9851274fc8292243c5f4efe4fca8b) ([merge request](gitlab-org/gitlab!113868)) **GitLab Enterprise Edition** +- [Remove bottom border from page titles](gitlab-org/gitlab@812462eb4d69ac32a4d0a36370259d27752f0123) ([merge request](gitlab-org/gitlab!114017)) +- [Added unlimited members alert to members pages](gitlab-org/gitlab@5d959f90e1d648827a79d6c4023bf3c3bb0cfb3e) ([merge request](gitlab-org/gitlab!110748)) **GitLab Enterprise Edition** +- [Timeline: tidy up system notes](gitlab-org/gitlab@4e95fa030982d24168c45829c86188b0ef520075) ([merge request](gitlab-org/gitlab!113855)) +- [Migrate evidences from raw_metadata](gitlab-org/gitlab@619946e886354e2c71780dbe8cac6bfb981ae85b) ([merge request](gitlab-org/gitlab!112947)) +- [Add hashed root namespace id mapping to Note index](gitlab-org/gitlab@bd7429adb1e6be9e7c55511338fc53b5eab98287) ([merge request](gitlab-org/gitlab!113860)) **GitLab Enterprise Edition** +- [Add cache for Software Licenses table](gitlab-org/gitlab@0b98697fef0fe39ec448e3455280d68393a6f5ee) ([merge request](gitlab-org/gitlab!113904)) **GitLab Enterprise Edition** +- [Fixes the alignment of the bio on the user profile page](gitlab-org/gitlab@08720cc6c77b606daa6f6a3107b575ac1a7d5863) ([merge request](gitlab-org/gitlab!113977)) +- [Add cicd config button when missing yaml](gitlab-org/gitlab@27066eee704d2320af168ada0d13f2eaf41fd493) ([merge request](gitlab-org/gitlab!111517)) +- [Update Slack authorization page UI](gitlab-org/gitlab@3a8f1a113230fbcd45b80dd5800fc2c3299b3d04) ([merge request](gitlab-org/gitlab!113801)) +- [Remove `linear_user_manageable_groups` feature flag](gitlab-org/gitlab@779d3a1f24f93e9c928875730e6d48fbc602cad3) ([merge request](gitlab-org/gitlab!114032)) +- [Remove `linear_project_ancestors` feature flag](gitlab-org/gitlab@663f2923a543be9cf9b3e99532fb0c7569e58d98) ([merge request](gitlab-org/gitlab!114030)) +- [Remove use_iid_in_work_items_path feature flag from backend](gitlab-org/gitlab@c050f1dc0d169d83e4bea7df2d2008e2ec3ba1eb) ([merge request](gitlab-org/gitlab!113444)) +- [Use icon button for subscribe to rss feed/calendar](gitlab-org/gitlab@8e5ccf2faf5f75ed985800d59543c1a181dea169) ([merge request](gitlab-org/gitlab!114001)) +- [Add tooltip to pending badge](gitlab-org/gitlab@401c85825ad7e4325f20db6dab4103e705abd13d) ([merge request](gitlab-org/gitlab!114007)) +- [Translate error messages when creating security policy projects](gitlab-org/gitlab@952efde49a7eb1919bee5b6ca338bde096a7cf46) ([merge request](gitlab-org/gitlab!113787)) **GitLab Enterprise Edition** +- [Update table header](gitlab-org/gitlab@d641e439c084e82bce8546a950b7b42efa6ead30) ([merge request](gitlab-org/gitlab!113885)) +- [Update gitlab pages](gitlab-org/gitlab@07b6cd3a4ccdc8186c2ba6b8470fd3888a6cac8f) ([merge request](gitlab-org/gitlab!114002)) +- [Adjust tests to api admin mode](gitlab-org/gitlab@69e45178ef5fee41604cce3581a33c0e7bbff64f) by @TrueKalix ([merge request](gitlab-org/gitlab!113826)) +- [Renames fk_rails_f601258b28 FK to fk_rails_0434b48643 on events table](gitlab-org/gitlab@d29fe991ffd515922532502e4f8c5b7f39552db7) ([merge request](gitlab-org/gitlab!113438)) +- [Removed CTA from Free Plan on billings page](gitlab-org/gitlab@bdac9a33430067f50fe695486eb35fe55cbb7bb6) ([merge request](gitlab-org/gitlab!113415)) **GitLab Enterprise Edition** +- [This MR adds switch mode for runner tags](gitlab-org/gitlab@cf64004cf18ad74ba435d436aae0c263f2ab2348) ([merge request](gitlab-org/gitlab!113086)) **GitLab Enterprise Edition** +- [Update css_parser gem to v1.14.0](gitlab-org/gitlab@9ffb35ca83a3457df533e192dc3269dd52fcafe3) ([merge request](gitlab-org/gitlab!113931)) +- [Rename "CI / CD > Test Cases" to "CI / CD > Test cases"](gitlab-org/gitlab@1a3d3750623a747d5d791f6a86bfde9b6c8bb6e0) ([merge request](gitlab-org/gitlab!113485)) **GitLab Enterprise Edition** +- [This MR migrates Dropdown to Listbox](gitlab-org/gitlab@24d959d7719f51beed6633d47858c4acb5e54eba) ([merge request](gitlab-org/gitlab!113624)) **GitLab Enterprise Edition** +- [Keep author and timiestamp visible when editing comment](gitlab-org/gitlab@c25c8d4d8ca19dc13d47787f09f3479311b26ef6) ([merge request](gitlab-org/gitlab!113911)) +- [Remove enforced_sso_expiry feature flag](gitlab-org/gitlab@d37e9435e7179611a96bb04d93771bb4240c6ebb) ([merge request](gitlab-org/gitlab!113905)) **GitLab Enterprise Edition** +- [Add breadcrumb linking to dashboard page to project#new](gitlab-org/gitlab@b65dcd51fee9a51070761d0d6e443a81cce78fe1) ([merge request](gitlab-org/gitlab!112941)) +- [Add breadcrumb linking to dashboard page to group#new](gitlab-org/gitlab@72c8e172c7d92485f281bc4bf7452ec340107418) ([merge request](gitlab-org/gitlab!112941)) +- [Clean up invite_members_in_side_nav experiment](gitlab-org/gitlab@e4ef7d7571f369a4c524b5cc4085f9f690c348ee) ([merge request](gitlab-org/gitlab!113766)) +- [Hide access token related instructions for public pypi package](gitlab-org/gitlab@ec44df6c439950f9bacc3911e7f661846d2920d3) ([merge request](gitlab-org/gitlab!113188)) +- [Add colors to user tokens on escalation view](gitlab-org/gitlab@cbbbbf72f1f76f4fce6aeae3f2dcf64b8456dc94) ([merge request](gitlab-org/gitlab!111791)) **GitLab Enterprise Edition** +- [Removes feature flag user_search_simple_query_string](gitlab-org/gitlab@5a1d758d52dea8ec993fc7e835ea4f38a136ac44) ([merge request](gitlab-org/gitlab!113809)) **GitLab Enterprise Edition** +- [Hanlde issue model to reference through the namespace](gitlab-org/gitlab@d339e1524dc723045931bcdc5018538427bedeef) ([merge request](gitlab-org/gitlab!113080)) +- [Add status check id to MR status check widget](gitlab-org/gitlab@0d5a336ce989e3a2d0b21dd03f5cdf4cf63e6fc3) ([merge request](gitlab-org/gitlab!113297)) **GitLab Enterprise Edition** +- [Unconcatenate errors for personal access tokens](gitlab-org/gitlab@2477f643fe7eec796109b3ce5d2ac8d6265eac09) ([merge request](gitlab-org/gitlab!97922)) +- [Database migration for new deny all app setting](gitlab-org/gitlab@a944339d941bff4e026c20d3ae088c45f550e10a) ([merge request](gitlab-org/gitlab!110599)) +- [Update dependency auto-build-image to v1.30.0](gitlab-org/gitlab@0aab802dc115a6e35d94444ee0d267438122e5ad) ([merge request](gitlab-org/gitlab!113764)) +- [Enable full_path_project_search feature flag by default](gitlab-org/gitlab@522c37cfcd65d609dbe8044d84cf26f03cd4405e) ([merge request](gitlab-org/gitlab!111808)) +- [Expose max_seats_used_changed_at in namespace API](gitlab-org/gitlab@83601956aaf202b96b3013a2213079db1c26e88e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113183)) **GitLab Enterprise Edition** +- [Sync Security Policies only for project with updated protected branches](gitlab-org/gitlab@88ed205e9d203aa7ac710752902b3a2643b627b6) ([merge request](gitlab-org/gitlab!112954)) **GitLab Enterprise Edition** +- [Fix combine page directory case sensitivity bug](gitlab-org/gitlab@8e1493cf26d0d88dfe1f02d82eb184495dcc8e16) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111743)) +- [Distinguish authentication errors in commits API](gitlab-org/gitlab@6399e0d040b528a5f10373072ea476f0427fda91) ([merge request](gitlab-org/gitlab!113707)) +- [Use Gitlab.com? to check if a container has been migrated](gitlab-org/gitlab@fd33df3ecc78e19b72bf15825a9482b5cb2a0a40) ([merge request](gitlab-org/gitlab!112987)) +- [User profile page header tidy](gitlab-org/gitlab@ff6c7af5175a25141ea4e37e3b48810bcd5eae08) ([merge request](gitlab-org/gitlab!112975)) +- [Remove the feature flag bulk_cron_worker_auto_requeue](gitlab-org/gitlab@650678e95a84a9d7554b5c286983e4f28c72a412) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113663)) **GitLab Enterprise Edition** +- [Rename "Configuration" to "Security configuration"](gitlab-org/gitlab@c96360a3b587d6fd27b077a9652bc7cbadea4ccd) ([merge request](gitlab-org/gitlab!113497)) +- [Rename "Repository > Locked Files" to "Repository > Locked files"](gitlab-org/gitlab@ea8f8dc29583c84862794225c8634e88cc7100af) ([merge request](gitlab-org/gitlab!113401)) +- [Rename "Repository > Contributors" to "Contributor statistics"](gitlab-org/gitlab@9b6287ae5605ed36970c6b7106edf1338695cc8f) ([merge request](gitlab-org/gitlab!113401)) +- [Support Ubuntu ddeb](gitlab-org/gitlab@e71cfffa0a0fd6ace17369b20d0a1a4447ec0c60) by @sathieu ([merge request](gitlab-org/gitlab!113620)) +- [Remove integration_id column from chat_names](gitlab-org/gitlab@3774d00b01d6a73d4e10049317e5f042f80101b1) ([merge request](gitlab-org/gitlab!109197)) +- [User avatar link: fix spacing](gitlab-org/gitlab@f25b5b95cc4b73ed89a9c887fa4a3d415488e779) ([merge request](gitlab-org/gitlab!113537)) +- [Make catalog_resources.project_id to be unique](gitlab-org/gitlab@5004d06a3496249b771c96063027a94208441f99) ([merge request](gitlab-org/gitlab!113533)) +- [Update parsing of *_DISABLED variables](gitlab-org/gitlab@0b41f4d4ac6d7dd9174f8f33e63356c3df25614e) ([merge request](gitlab-org/gitlab!111858)) +- [Your Work: Environments and Operations Dashboard](gitlab-org/gitlab@f7a8b85a136db13930206e817b3d58e412303eac) ([merge request](gitlab-org/gitlab!113093)) **GitLab Enterprise Edition** +- [Change widget empty state of work items & linked issues/epics](gitlab-org/gitlab@79ea4c57209566942fcee630f1c37d9024b15ef9) ([merge request](gitlab-org/gitlab!113509)) +- [Removes advanced_user_search feature flag](gitlab-org/gitlab@61fc1918de1a2402ab7b2ca58e5dd9e80c12cfd2) ([merge request](gitlab-org/gitlab!113400)) **GitLab Enterprise Edition** +- [Merged message: change alignment of revert and cherry-pick buttons](gitlab-org/gitlab@19bcfb3f1d956e8c40b45a375b272a28405e8a9f) ([merge request](gitlab-org/gitlab!113224)) +- [Validates db/structure.sql changes without migrations](gitlab-org/gitlab@d244b04bb956cbc4e4ccf721202612837856d58e) ([merge request](gitlab-org/gitlab!111982)) +- [Rename "Discover" to "Security capabilities"](gitlab-org/gitlab@a28c22c4dcf6e6397282b7d54682ccf3acb22fa4) ([merge request](gitlab-org/gitlab!113497)) **GitLab Enterprise Edition** +- [Prevent Ruby sessions from serializing arbitrary objects](gitlab-org/gitlab@6aff1f23e35f4981131850b82fe3c6a943a2a7dc) ([merge request](gitlab-org/gitlab!113262)) +- [Update super-sidebar styles and add overlay](gitlab-org/gitlab@d72274cef7829f3b226fb6464ba03be1c9d5bcb2) ([merge request](gitlab-org/gitlab!112521)) +- [This MR introduces tags parsing error handling](gitlab-org/gitlab@7ff24c69a9d7815511a5c7474980b93d1c0111bc) ([merge request](gitlab-org/gitlab!112933)) **GitLab Enterprise Edition** +- [Update merge strategy labels for Mr. Widget](gitlab-org/gitlab@10f96c4884c44a8b2739b2d854b881ac5038c620) ([merge request](gitlab-org/gitlab!112372)) +- [Move follower counts on profile page](gitlab-org/gitlab@c4fcb4578d708123b3f2f3ec888aded0ca0e5746) ([merge request](gitlab-org/gitlab!112942)) +- [Add check_type enum to PreScanVerificationStep](gitlab-org/gitlab@c53a8179e3e17c950632a86e012bf9c145bb6542) ([merge request](gitlab-org/gitlab!112333)) **GitLab Enterprise Edition** +- [New section to disable all 2FA](gitlab-org/gitlab@5dda801bd87f09517ff366aa749d4e9ad27e0744) ([merge request](gitlab-org/gitlab!112234)) +- [Rename "Repository > Compare" to "Repository > Compare revisions"](gitlab-org/gitlab@009167fad1decdf8507c7da9693210e64d6759fc) ([merge request](gitlab-org/gitlab!113401)) +- [Add link to redirect back to sign-up page](gitlab-org/gitlab@6828e95f47b1a82e177224dc5b97136550a85665) ([merge request](gitlab-org/gitlab!112744)) +- [Improve visibility of SAST Analyzers banner](gitlab-org/gitlab@704029097418caa1f258e5765dce20f4bad5ad12) ([merge request](gitlab-org/gitlab!113184)) **GitLab Enterprise Edition** +- [Remove the parallel_bulk_cron_worker feature flag](gitlab-org/gitlab@27b6724efa90c750d90389eee97d859ebdc8325d) ([merge request](gitlab-org/gitlab!113359)) **GitLab Enterprise Edition** +- [Schedule async temp index on finding report types](gitlab-org/gitlab@f02b4dd2340b43afbafb97c5ac02f33dcfe32d14) ([merge request](gitlab-org/gitlab!113348)) +- [Remove use_response_url_for_chat_responder FF](gitlab-org/gitlab@976d81bcce09743f3377b83c6be83bb44c63ba54) ([merge request](gitlab-org/gitlab!113231)) +- [Migrate links for vulnerability findings from](gitlab-org/gitlab@cb3221ab9a035ce3f92d686d0993d245d557fb30) ([merge request](gitlab-org/gitlab!111454)) +- [Suppress routing error log messages with POST `/jwt/auth` route](gitlab-org/gitlab@1e2393662827ee2528876f5280583a8e630b28ba) ([merge request](gitlab-org/gitlab!113340)) +- [Standardize note edited presentation](gitlab-org/gitlab@e44c0f5057e64fdaa4b6501c268f6d8f30e12bb2) ([merge request](gitlab-org/gitlab!113245)) +- [Expand invite modal buttons](gitlab-org/gitlab@78f15e8a83a96857fa24ca4a2ec78c2a06abe4a4) ([merge request](gitlab-org/gitlab!112686)) +- [Send email when exporting work items as CSV](gitlab-org/gitlab@54926b26afb12e2893869cc4e1c4d1c4a7289dce) ([merge request](gitlab-org/gitlab!111974)) +- [Implement partially cached MR security reports paths](gitlab-org/gitlab@aaeb6193fba3f7f2cc0bd381f38f288ec9229fdb) ([merge request](gitlab-org/gitlab!112818)) **GitLab Enterprise Edition** +- [Improve shared examples for api admin mode](gitlab-org/gitlab@d4546395709d4b2c3275b678d88f5fc7f1616c28) by @TrueKalix ([merge request](gitlab-org/gitlab!113226)) +- [Use mergeRequestLinks on vulnerability details page](gitlab-org/gitlab@082aa4d8d02f1ff9e1e5c29128167975238d5855) ([merge request](gitlab-org/gitlab!112674)) **GitLab Enterprise Edition** +- [Remove the feature_flag code_basic_search_files_by_regexp](gitlab-org/gitlab@876d1b476be1bd9ed670458f4d72cf36a441fe1a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113209)) +- [Drop unnecessary storing of WebAuthn credential options in session](gitlab-org/gitlab@a008298b5987e36353acb392d99b7d99a4c84a86) ([merge request](gitlab-org/gitlab!113190)) +- [Updated Security Compliance SideNav text to sentence case](gitlab-org/gitlab@d60d5851dcfe596d1cac99e4feb636291ec399c8) by @parkourkarthik ([merge request](gitlab-org/gitlab!96450)) +- [Fix(Subscr.): success notification + loading icon](gitlab-org/gitlab@427648afa3bb90c7c88caa82813e3d948e376ca3) ([merge request](gitlab-org/gitlab!107496)) **GitLab Enterprise Edition** +- [This MR updates tags field to be a dropdown](gitlab-org/gitlab@5686a324ee60e4ab94e1fc584beef09901f736ad) ([merge request](gitlab-org/gitlab!112588)) **GitLab Enterprise Edition** +- [Security warning when rebasing](gitlab-org/gitlab@41618ea46637759029818fc817e85d5423eec03e) ([merge request](gitlab-org/gitlab!112356)) +- [Log an activity event when an agent token is revoked](gitlab-org/gitlab@1e2eb06c07f4ab37acabcc3f7b12b20769d988c5) ([merge request](gitlab-org/gitlab!113173)) +- [Change default public cost factor](gitlab-org/gitlab@c78876ebdf874d183ae9af529d5bf41a65ece370) ([merge request](gitlab-org/gitlab!112730)) +- [Migrate the remediation data into their own](gitlab-org/gitlab@2dbe5217920794da700ee174b1c326ce481f1148) ([merge request](gitlab-org/gitlab!109397)) +- [Streamline appearance of widgets](gitlab-org/gitlab@089bb53d72c4efb7a3e6556850437f4de37d8546) ([merge request](gitlab-org/gitlab!112568)) +- [Add styles for line sticky headers](gitlab-org/gitlab@52c536f707b12c2ec67f6f28d4f7c46d9ddb16d8) ([merge request](gitlab-org/gitlab!112503)) **GitLab Enterprise Edition** +- [Change private method default values](gitlab-org/gitlab@8f5e373bf1c717edcf5c628149202d48f0e09220) ([merge request](gitlab-org/gitlab!113107)) **GitLab Enterprise Edition** +- [Adds fuzzy to the list of advanced search syntax options](gitlab-org/gitlab@6d626fc4e2ca4111294f1b613e638bc5d221ea2a) ([merge request](gitlab-org/gitlab!112814)) **GitLab Enterprise Edition** +- [Add sync creation of next_over_limit_check_at index](gitlab-org/gitlab@6f5bd6506f2b155b460c63f31a3619b38945b515) ([merge request](gitlab-org/gitlab!113070)) +- [Use linear ancestor queries](gitlab-org/gitlab@96135a75b2413101ea8e8ed8561e7cd4a477be2f) ([merge request](gitlab-org/gitlab!104021)) +- [Use linear queries for namespace ancestor queries](gitlab-org/gitlab@81989d31f0fea2266e2accad515fa5180a1d6ae9) ([merge request](gitlab-org/gitlab!104024)) +- [Add specific DORA metric fields to Graphql type](gitlab-org/gitlab@124caf59cc84cbae62c54cf115202897d49ad44e) ([merge request](gitlab-org/gitlab!112858)) **GitLab Enterprise Edition** +- [Update webauthn gem to v3.0](gitlab-org/gitlab@02090e3ea02b4a626adda8c03c372f9dd754ba5e) ([merge request](gitlab-org/gitlab!112359)) +- [Improves the consistency of the dropdowns](gitlab-org/gitlab@40388842abfa9a23128c8a3f0ec09bfcd9eee48e) ([merge request](gitlab-org/gitlab!112031)) +- [Update scan policies text](gitlab-org/gitlab@7b8df0fb6e3e3abbbe061d077912670ad6c6c871) ([merge request](gitlab-org/gitlab!112979)) +- [Adds project_id to the Note API entity](gitlab-org/gitlab@a85388ba5c65062362fcd221e6bbd706b4c1f3e2) ([merge request](gitlab-org/gitlab!112667)) +- [Update vulnerability_reads trigger to set has_issues](gitlab-org/gitlab@ebf81afaa2f3b38cf0a30551b50bcd01588d8f9c) ([merge request](gitlab-org/gitlab!112233)) +- [Cleanup 'rely_on_protected_branches_cache' feature flag](gitlab-org/gitlab@7454256447445b7451c3f53b24a501c91db964b6) ([merge request](gitlab-org/gitlab!112865)) +- [Add Search::ReindexingService](gitlab-org/gitlab@9600f3ff8117fc2847877548585fd1077da4198b) ([merge request](gitlab-org/gitlab!112759)) **GitLab Enterprise Edition** +- [Updates advanced user search to use simple query string and fuzzy match](gitlab-org/gitlab@49dbbcf8149268c35346013e4d3d983ce0cff9ff) ([merge request](gitlab-org/gitlab!110623)) **GitLab Enterprise Edition** +- [Load partitioned index name if enabled](gitlab-org/gitlab@8bb673ff3daab8f49b57533b34ba9b547b2285ff) ([merge request](gitlab-org/gitlab!112402)) **GitLab Enterprise Edition** +- [Launch invite modal from invite members in top nav](gitlab-org/gitlab@6a7d4474dab3e1f2b2e6f93fb879570530e7e52f) ([merge request](gitlab-org/gitlab!111485)) +- [Add expand/collapse button on list in wiki sidebar](gitlab-org/gitlab@bb73aa27c99e08707c8d649e104205a1e46caabb) by @qk44077907 ([merge request](gitlab-org/gitlab!111357)) +- [Decrease maximum runtime for VSA aggregations](gitlab-org/gitlab@6456a0eb540241cb53386bd120a7f7f7f94061f3) ([merge request](gitlab-org/gitlab!112925)) **GitLab Enterprise Edition** +- [Add same ssh ports check for geo::check rake task](gitlab-org/gitlab@ef3cb4378f4b365bf5bbcf2d3a4a7d400583e16e) ([merge request](gitlab-org/gitlab!111923)) **GitLab Enterprise Edition** +- [Renaming the rules label to conditions](gitlab-org/gitlab@0bfade43ab6855e815fbea530ae6324fe950c05b) ([merge request](gitlab-org/gitlab!112650)) **GitLab Enterprise Edition** +- [Switch package metadata sync to run hourly](gitlab-org/gitlab@b8b9329f1cc418756c7a6b18479ac4b7fb9bc14a) ([merge request](gitlab-org/gitlab!112850)) **GitLab Enterprise Edition** +- [Geo: Verification of container repositories](gitlab-org/gitlab@86ec6a041e1b9e1f011172bafd8d7603a747446a) ([merge request](gitlab-org/gitlab!111077)) +- [Introduce registry_size_estimated to namespace_root_storage_statistics](gitlab-org/gitlab@ede87eb1d6ba537edfdfde51d9f3e2c5f1a92979) ([merge request](gitlab-org/gitlab!112709)) +- [Improve issuable locked warning styling](gitlab-org/gitlab@d911e0053aca4f27c66eb2da81ea67e6758cb2d6) ([merge request](gitlab-org/gitlab!112659)) +- [Create index on approval_rules for scan_result_policy_id](gitlab-org/gitlab@67db106ebb6decdb0043547ea493a45bbc2dbe68) ([merge request](gitlab-org/gitlab!112484)) +- [Raise CI variables limits on gitlab.com](gitlab-org/gitlab@103a2c75feecef08482ace39df23bff77388ae32) ([merge request](gitlab-org/gitlab!112666)) +- [Validate oauth_access_tokens#expires_in not null](gitlab-org/gitlab@6a68043cef2f9ce2060f117ed099c5ac80d0756e) ([merge request](gitlab-org/gitlab!112765)) +- [Truncate commits that exceeds the new commits note display limit](gitlab-org/gitlab@d0e8ac0d585b263d5dd9400ca10f52216d32cb58) ([merge request](gitlab-org/gitlab!111533)) +- [Update delete icon in manual var form](gitlab-org/gitlab@15575003f214b82d96e07aa01b10c1a4deae596b) ([merge request](gitlab-org/gitlab!112614)) +- [Cleanup 'delayed_repository_update_mirror_worker' feature flag](gitlab-org/gitlab@cb2bf72b5f9ac5f08d90054bb2af239a7ce5aba4) ([merge request](gitlab-org/gitlab!112707)) +- [Use mergeRequestLinks on vulnerability details page](gitlab-org/gitlab@759fef72d92c74409688b028b191032066daafa5) ([merge request](gitlab-org/gitlab!111424)) **GitLab Enterprise Edition** +- [Update activation error handling](gitlab-org/gitlab@57d05272a39a07d3dce88ff31304e9cf347fb792) ([merge request](gitlab-org/gitlab!106922)) **GitLab Enterprise Edition** +- [Set GITALY_SERVERS for gitaly-backup](gitlab-org/gitlab@4ca9a3d5032b925cd29d49ee33e00d940da4baa0) ([merge request](gitlab-org/gitlab!112623)) +- [Update component to use GraphQL jobPlay](gitlab-org/gitlab@7f6a0fc7d021ae5b4368e3095d797dbc2ec8f532) ([merge request](gitlab-org/gitlab!111826)) +- [Update dependency auto-deploy-image to v2.47.0](gitlab-org/gitlab@02d48522d64d1d4344ce257bc7250e7d152501c5) ([merge request](gitlab-org/gitlab!112602)) +- [Fetch and display report data](gitlab-org/gitlab@0166da20fdeea67dcc3e3bd3c99141f0e638717d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110855)) **GitLab Enterprise Edition** +- [Refactors component ml_experiments_show.vue](gitlab-org/gitlab@efee52af46b42789773b59e8a070d00ce19d1c3c) ([merge request](gitlab-org/gitlab!111929)) +- [Clean up invite_for_help_continuous_onboarding](gitlab-org/gitlab@c0eefdc27b89d0affb1ec7b954b54d0aad23dbc2) ([merge request](gitlab-org/gitlab!112089)) +- [Group issue-board controls into ellipsis dropdown](gitlab-org/gitlab@8ef7037444f78b5dec27d9f5e14a9c0e1993ac79) ([merge request](gitlab-org/gitlab!111302)) +- [Prepare async foreign key validation for ci_build_trace_metadata](gitlab-org/gitlab@486e29c86769f8e08bdb4d2e5d0fb3c4892132dd) ([merge request](gitlab-org/gitlab!112133)) +- [Prepare async foreign key validation for ci_job_variables](gitlab-org/gitlab@fec3b4c9d60f76b509c872fcf8c554a5616bb870) ([merge request](gitlab-org/gitlab!112511)) +- [Prepare async foreign key validation for ci_sources_pipelines](gitlab-org/gitlab@ef3ee17b1866269858b72fb11a2f9a84f264a228) ([merge request](gitlab-org/gitlab!112508)) +- [Add default_color_scheme to Gitlab settings](gitlab-org/gitlab@cc112f197cd67c83769e0d6f8a5ade2554d64fb0) by @colin969 ([merge request](gitlab-org/gitlab!109496)) +- [Remove N+1 when loading finding link relations in serialization](gitlab-org/gitlab@f4905d09fa0947ada5eb753655daebefea00ab63) ([merge request](gitlab-org/gitlab!111438)) **GitLab Enterprise Edition** +- [Show group sidebar while creating a new subgroup or project](gitlab-org/gitlab@2a5b47837d8cc42834b004e309bfef436e77c085) ([merge request](gitlab-org/gitlab!109649)) +- [Scope FK name uniqueness to the table name](gitlab-org/gitlab@704af1013ff05a47c966f6309a3c0b2da2780715) ([merge request](gitlab-org/gitlab!112448)) +- [Add runner registration page](gitlab-org/gitlab@1ee7dafcb88c3ea9890a8bec0fe3aa21e281d779) ([merge request](gitlab-org/gitlab!111810)) +- [Remove feature flag ci_use_downstream_pipeline_duration_for_calculation](gitlab-org/gitlab@bc8e2cbfa8aa3eab318e609d58bafd35f0e5e3a2) ([merge request](gitlab-org/gitlab!112433)) +- [Allow new Slack integrations created on GitLab.com](gitlab-org/gitlab@8483dd8342402db7e243b6a89e5587064591f59a) ([merge request](gitlab-org/gitlab!112411)) +- [Lock timelogs when project is archived](gitlab-org/gitlab@096c2e88dd16cf80d436d89f3b36ca93cca6aeb8) by @Taucher2003 ([merge request](gitlab-org/gitlab!112404)) +- [Ask for recovery code if WebAuthn is the only 2FA](gitlab-org/gitlab@fb5ca5d4b670250fd15ae38096f0c62efa67220d) ([merge request](gitlab-org/gitlab!112212)) +- [Improve devise error_message](gitlab-org/gitlab@99a8b7a09820e1b2622d5c889ba77095ec212f5f) by @ali_o_kan ([merge request](gitlab-org/gitlab!111445)) +- [Swap the order of pin and password fields](gitlab-org/gitlab@347296173ad9b1d356921be254d9e49248095a9e) ([merge request](gitlab-org/gitlab!112176)) +- [Wording changes related to `webauthn_without_totp`](gitlab-org/gitlab@7c624c75c688c9ff53205fa52fa833e923816aa3) ([merge request](gitlab-org/gitlab!112224)) +- [Show numeric keyboard on mobile for 2fa codes](gitlab-org/gitlab@853ab28a5a0d0de5f79c38a2c186671fdf0136f8) ([merge request](gitlab-org/gitlab!112202)) +- [Cleaned up successful experiment trial_email_validation](gitlab-org/gitlab@abf3dff16357596664117ac420a0bd6fe6bab9ab) ([merge request](gitlab-org/gitlab!112219)) +- [Cache search#autocomplete on the frontend](gitlab-org/gitlab@c0cf3216e9baf6601ac08626949fb88beec797d1) ([merge request](gitlab-org/gitlab!112183)) +- [[Feature flag] Clean Up `all_commits_compliance_report` feature flag](gitlab-org/gitlab@410e67fbd043144ec8108480dba16dbd5e9aa22b) ([merge request](gitlab-org/gitlab!112092)) **GitLab Enterprise Edition** +- [Remove NO_ACCESS option from unprotect_access_level](gitlab-org/gitlab@133a0b29077e0eca5dc9491dcd0cdff226624a67) ([merge request](gitlab-org/gitlab!112035)) **GitLab Enterprise Edition** +- [Update dependency auto-build-image to v1.29.0](gitlab-org/gitlab@a7b8fe0f3d4a09cb9dec6c2269ac12e37710b63c) ([merge request](gitlab-org/gitlab!112265)) +- [Resolve vulnerabilities from successful scans](gitlab-org/gitlab@5e4e90950f52b93a5c4e6359d65c1ce2d772bc8c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109923)) **GitLab Enterprise Edition** +- [Hide software license policies created through scan result policy](gitlab-org/gitlab@e1271d27dce1708e8f52a1bf83b7d9a3cab82291) ([merge request](gitlab-org/gitlab!111715)) **GitLab Enterprise Edition** +- [Add index on vulnerability_reads](gitlab-org/gitlab@aa8a95ee92cc1d592f593f25931d636cf7f311b6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111866)) +- [Add index for next_over_limit_check_at](gitlab-org/gitlab@03cc556736fbef6bfb7b9fac02447883d54b4c41) ([merge request](gitlab-org/gitlab!111819)) +- [Remove ignore for dropped user profile fields](gitlab-org/gitlab@fb4389726690e864de205bd7c5e17737c27015e4) by @brianjaustin ([merge request](gitlab-org/gitlab!111109)) + +### Deprecated (2 changes) + +- [Remove default_value_for gem](gitlab-org/gitlab@b4abc60a79b949cc8d64f377f9247eea785f60d1) ([merge request](gitlab-org/gitlab!112164)) +- [UNSTRUCTURED_RAILS_LOG disabled by default](gitlab-org/gitlab@c5f039bfa01352832d99f5371165617fb4249937) ([merge request](gitlab-org/gitlab!111046)) + +### Removed (26 changes) + +- [Cleaned up `video_tutorials_continuous_onboarding` experiment](gitlab-org/gitlab@2fe21002494e89153b0829bc00af51b898dd2b3d) ([merge request](gitlab-org/gitlab!114777)) **GitLab Enterprise Edition** +- [Add cleanup migration for orphan Software Licenses](gitlab-org/gitlab@6cf6a5eb344c6648ffa9e8ca842f3e74c9f03d2d) ([merge request](gitlab-org/gitlab!114158)) +- [Remove bulk_import_projects from frontend](gitlab-org/gitlab@ac2a3e8b727cabf4e499fd40e36ae3026caf5b0e) ([merge request](gitlab-org/gitlab!114693)) +- [Remove group_administration_nav_item feature flag](gitlab-org/gitlab@aa23790494fd5f9be4580ca9c661b0a6fcb67415) ([merge request](gitlab-org/gitlab!114119)) **GitLab Enterprise Edition** +- [Remove exponential increase experiment](gitlab-org/gitlab@53d2809f9d0c368d8a1fd277695a2fd89ee6d80c) ([merge request](gitlab-org/gitlab!114090)) +- [Remove audit log group level feature](gitlab-org/gitlab@9592799fd652b0928bdcbdc4b660b03cd0d7ed34) ([merge request](gitlab-org/gitlab!114076)) **GitLab Enterprise Edition** +- [Remove learn gitlab project creation](gitlab-org/gitlab@11ac1a3ed6aef8941b61138072dea631052d0b0a) ([merge request](gitlab-org/gitlab!111324)) **GitLab Enterprise Edition** +- [Remove issue templates promotion pop up](gitlab-org/gitlab@ae62e5943cccbbb01e59541899628b41674d57c0) ([merge request](gitlab-org/gitlab!113536)) **GitLab Enterprise Edition** +- [Clean up environments search logging feature flag](gitlab-org/gitlab@8e304d7b017aad1df558412eb5703a6dca565332) ([merge request](gitlab-org/gitlab!112803)) +- [Drop `revokable` from `achievements`](gitlab-org/gitlab@80dacb066c870857a4fbf5ae1d3c51ebe4e17740) by @Taucher2003 ([merge request](gitlab-org/gitlab!113618)) +- [Remove incorrectly onboarded namespaces from onboarding table](gitlab-org/gitlab@87320dbab2a6a9be7316f6e12580dfe568eff7d6) ([merge request](gitlab-org/gitlab!112622)) +- [[385649] Rollout FF github_client_fetch_repos_via_graphql](gitlab-org/gitlab@d1d3deb856011925d5aee5449a309636692b2640) ([merge request](gitlab-org/gitlab!113021)) +- [git: Remove unused root tree object ID from Git::Tree](gitlab-org/gitlab@5bb4491616fd0b29a6686ad87bc866470b7ddb4e) ([merge request](gitlab-org/gitlab!113385)) +- [Removed cube_api_proxy flag](gitlab-org/gitlab@c3ec6db4177884963794520e241729607a377b4a) ([merge request](gitlab-org/gitlab!113213)) +- [Remove backup upload drivers Openstack Swift and Rackspace](gitlab-org/gitlab@9e78d7f2b6330d1316010150dc8926940581a417) ([merge request](gitlab-org/gitlab!112952)) +- [Remove reactivate/extend trial button](gitlab-org/gitlab@dad9f4d53fafb816d1eed5c91be433c654293531) ([merge request](gitlab-org/gitlab!112454)) +- [Remove dast_site_validation_drawer feature flag](gitlab-org/gitlab@87af4a5edf63bf1d416f9f1b91b84218754593b7) ([merge request](gitlab-org/gitlab!112708)) **GitLab Enterprise Edition** +- [Remove deprecated path](gitlab-org/gitlab@8f70a44373805d0b2ce8a89c562d8288680a4e56) ([merge request](gitlab-org/gitlab!112350)) +- [Remove the send_user_confirmation_email column](gitlab-org/gitlab@aae03f87a125894bcd747ab47aee3972698cde57) ([merge request](gitlab-org/gitlab!112262)) +- [Remove concurrent index for index_ci_builds_on_token_encrypted](gitlab-org/gitlab@70376f1528a7c0027fb3c07782b9c0ccaa682d72) ([merge request](gitlab-org/gitlab!112644)) +- [Prepare async index removal of token for ci_builds](gitlab-org/gitlab@fc1f3dbe4f2583976ff0ffdc8f8ecfe20ca58190) ([merge request](gitlab-org/gitlab!112642)) +- [Remove Jira Connect public key storage config](gitlab-org/gitlab@b55f70bb2d365161544d8d084df51bd368d3a089) ([merge request](gitlab-org/gitlab!112714)) +- [Remove revoke_ssh_signatures feature flag](gitlab-org/gitlab@9314e52289f4664a7aaf915f135e911397912b88) ([merge request](gitlab-org/gitlab!112500)) +- [Remove action_monthly_active_users_web_ide_edit metric](gitlab-org/gitlab@8b455ec775170dc6bafc53d086f00907581db04d) ([merge request](gitlab-org/gitlab!111351)) +- [Remove feature flag improved_spread_parallel_import](gitlab-org/gitlab@431445af5a6dce58a5bb759b5bfec88a85ef61f8) ([merge request](gitlab-org/gitlab!112376)) +- [Remove errantly onboarded namespaces](gitlab-org/gitlab@3b13f728122362f844765081159346960c379073) ([merge request](gitlab-org/gitlab!112229)) + +### Security (24 changes) + +- [Protect Datadog API key by changing Datadog site](gitlab-org/gitlab@5bb06dd81201a14c5bbe52ed42e42073f87c0df3) +- [Stop Group Transfer Service if SAML Provider or SCIM token is present](gitlab-org/gitlab@6facd80041779d0a1fc1665403396ee2308c5110) +- [Disallow maintainer to create an owner access token](gitlab-org/gitlab@5e10f4b318b8c174ce5bea1e2ce9f40b290aa777) +- [Verify Kroki diagram type](gitlab-org/gitlab@05704b4ca78f105b2892cd4c626dbdbc2152ecc3) +- [Fix pagination limits for Commits API](gitlab-org/gitlab@ea05210a83a50cba91c1cefbe256fdd46c4e5492) +- [Using builds metadata to determine debug_mode](gitlab-org/gitlab@babac699c3ff11609dbce2390d37d7cd9a1e2d97) +- [Check read_release permission before showing releases in Tags API](gitlab-org/gitlab@1207935ff7f8bc0c0d15db8b79fa73f5158b6fa3) +- [Mask Google IAP account details in Prometheus integration](gitlab-org/gitlab@8d5b825e28a1ef008281ad84cd876495b822dbec) +- [Block private personal snippet from unauthorized users](gitlab-org/gitlab@05c5491775953638e68ce83cde50ad5c166bcff3) +- [Protect integrations' sensitive information exposed via API](gitlab-org/gitlab@f0b0e1c583de767658cbd4c25b5bc4cb8ad64650) +- [Paste only text content in work items title](gitlab-org/gitlab@7b4108b99e104c7c6ea060fa8f661581968d4879) +- [Jira DVCS OAuth Open Redirect Vulnerability](gitlab-org/gitlab@bc81997578c23414dfd4026dc38c583ed5bda059) +- [Protect Datadog API key by changing Datadog site](gitlab-org/gitlab@73fba2ec4c45bd3d653c4cd53b7da35abbbb54c1) +- [Stop Group Transfer Service if SAML Provider or SCIM token is present](gitlab-org/gitlab@5057ae0aafadec62bd6cefa5c46c510c7d9af56c) +- [Disallow maintainer to create an owner access token](gitlab-org/gitlab@0645ac547a56d869d54209653655aaacce038304) +- [Verify Kroki diagram type](gitlab-org/gitlab@bd4c3e57cf3fdf5256f15337fac497fe00dd61bd) +- [Fix pagination limits for Commits API](gitlab-org/gitlab@9ed3011d786afb7748e0fc11775ff66d744a583a) +- [Using builds metadata to determine debug_mode](gitlab-org/gitlab@c4533005abf6be3d47d11b9cbf2baca6a111d9f6) +- [Check read_release permission before showing releases in Tags API](gitlab-org/gitlab@3799742f36dd10942c8e990aec1f983ad4d119f9) +- [Mask Google IAP account details in Prometheus integration](gitlab-org/gitlab@6e93523b645a527205dd9e3e441f04009697f2e4) +- [Block private personal snippet from unauthorized users](gitlab-org/gitlab@c9bbeb1c952d15cb8f61a3cf3e9887aa8ff8821c) +- [Protect integrations' sensitive information exposed via API](gitlab-org/gitlab@34b030f43627c9aa5df90c9781f84e139f571c35) +- [Paste only text content in work items title](gitlab-org/gitlab@13677bb3bfe64fcfa387fffa4a237b05047a7769) +- [Jira DVCS OAuth Open Redirect Vulnerability](gitlab-org/gitlab@8d26f05b55cc1de53715bde7471a939f71c1a472) + +### Performance (10 changes) + +- [Remove index on events.actions async](gitlab-org/gitlab@b2297eda946a856893d5fc79aace45a88cae8610) ([merge request](gitlab-org/gitlab!114842)) +- [Remove notes id while initializing notes component](gitlab-org/gitlab@2823b683607e3cf079848b713f431d4e8bac3321) ([merge request](gitlab-org/gitlab!113988)) +- [Use replica to fetch package licenses](gitlab-org/gitlab@c2c096f7dbcc9ae3ff7f7cae8e34d45998dd71a2) ([merge request](gitlab-org/gitlab!114431)) **GitLab Enterprise Edition** +- [Swap explore/groups performance fix to .com only](gitlab-org/gitlab@1bd5b60031625abab23aa14f97bb62124d091152) ([merge request](gitlab-org/gitlab!113728)) +- [Use custom Redis backend for Rack::Attack](gitlab-org/gitlab@0425f05e32a470cdf7aad1056e04838b6143aa6c) ([merge request](gitlab-org/gitlab!112944)) +- [Increase request timeout in bulk imports](gitlab-org/gitlab@f337bb93124910ec8bc88d5226343a96cfe41a15) ([merge request](gitlab-org/gitlab!112325)) +- [Remove FF for token removal](gitlab-org/gitlab@69b64ec1d75d47107d31fca6101041a110e7a675) ([merge request](gitlab-org/gitlab!111695)) +- [Add etag caching for epic changes](gitlab-org/gitlab@2f4957f78c2b1f9f2f4039ca06bc66b5c6d5688b) ([merge request](gitlab-org/gitlab!112529)) **GitLab Enterprise Edition** +- [Remove redundant project selection](gitlab-org/gitlab@f6a3b4f4554d25b6b0c8ca8c173f04c8a1924f34) ([merge request](gitlab-org/gitlab!112348)) +- [Improve performance while exporting CI pipelines](gitlab-org/gitlab@515e9c28f479e4a1bff5b802a94220bae8a9bf00) ([merge request](gitlab-org/gitlab!110588)) + +### Other (55 changes) + +- [Add worker to wait for project export relations to finished](gitlab-org/gitlab@f53c0e9a15bbb85b964e30dafdf97084311dc9fe) ([merge request](gitlab-org/gitlab!102824)) +- [Edit or remove links to deleted docs](gitlab-org/gitlab@b1ba37f4f14321bc2fd79ff418404364d1ef2806) ([merge request](gitlab-org/gitlab!114481)) +- [Add BulkImports::ExportBatch & BulkImports::BatchTracker models](gitlab-org/gitlab@05f0addd4dfce1fbcbaa2a71f9f7e65fba591894) ([merge request](gitlab-org/gitlab!114468)) +- [Remove repack_after_shard_migration feature flag](gitlab-org/gitlab@e113b05474798905ec432550172a7132d1485759) ([merge request](gitlab-org/gitlab!111961)) +- [Add test cases for work items title and milestone](gitlab-org/gitlab@395613ede4e9b0944ce51a0d2b4c2fd0c455c229) ([merge request](gitlab-org/gitlab!113845)) +- [Handle design notes error logic in single component](gitlab-org/gitlab@fd63e27c3b981c3c7c18b9122ad9017e658c704e) ([merge request](gitlab-org/gitlab!114460)) +- [Delete security_policy_bot user records](gitlab-org/gitlab@3511159afaeb416f9e7a023d76b4a820b3ebb0d5) ([merge request](gitlab-org/gitlab!114065)) +- [Provide :debug_permission_checks flag for specs](gitlab-org/gitlab@66bd1df1d5efa5180d49b5231d804c21046c79bc) ([merge request](gitlab-org/gitlab!113608)) +- [Backfill the prepared_at column for older merge requests](gitlab-org/gitlab@81efefd583a8ba03e89d22412b62620eff6b542e) ([merge request](gitlab-org/gitlab!111865)) +- [Extend redis hll metrics for github import](gitlab-org/gitlab@a8e515aa8aa9905634e233cfc6842bb7b02be0d4) ([merge request](gitlab-org/gitlab!113724)) +- [Cop to ensure BBM has the associated dictionary file](gitlab-org/gitlab@09b3c07a5a169031355f7bd9b324cdf507537418) ([merge request](gitlab-org/gitlab!110743)) +- [Creates migration to swap columns](gitlab-org/gitlab@89b8c6169944affba64f340626ad7874b2ec435a) ([merge request](gitlab-org/gitlab!112444)) +- [Change VSD url](gitlab-org/gitlab@8972fc43de321f4fb1194054be45163b617cbb5b) ([merge request](gitlab-org/gitlab!113558)) **GitLab Enterprise Edition** +- [Update Import failures to include subrelation errors](gitlab-org/gitlab@4d8510ea440bbd319f06176155ea121c682108f5) ([merge request](gitlab-org/gitlab!113543)) +- [Remove bulk_import_projects feature flag](gitlab-org/gitlab@66999a8d0f4f5200d529fc99aef7287cb6ad29ba) ([merge request](gitlab-org/gitlab!113979)) +- [Lock net-protocol version to match the monkey patch](gitlab-org/gitlab@b34996a094b0ebc52d7b75752bd0e250b3c434bc) ([merge request](gitlab-org/gitlab!114080)) +- [Fix rake/require offence in following files:](gitlab-org/gitlab@2fa760e9ed8105be1591fa9b6c06a3bd71c9f630) by @przbadu ([merge request](gitlab-org/gitlab!112123)) +- [Clean up p_ci_builds_metadata schema](gitlab-org/gitlab@4fbd0908ae40b346606884d9871232d54f41cc38) ([merge request](gitlab-org/gitlab!113955)) +- [Remove EnumWithNil helper](gitlab-org/gitlab@8595789b66abf90f714663a173d73ece53707f34) ([merge request](gitlab-org/gitlab!114075)) +- [Finalize conversion of timelogs.note_id to bigint](gitlab-org/gitlab@babe023dc956e3daffb7d904882c533b6ea634da) ([merge request](gitlab-org/gitlab!113052)) +- [Remove hash_oauth_secrets feature flag](gitlab-org/gitlab@bab3d2168fd317ada28d9c166596024986cd37e5) ([merge request](gitlab-org/gitlab!113892)) +- [Update gitlab-qa gem version](gitlab-org/gitlab@f751ac24095993c3c49e142a3782531e5c3222fa) ([merge request](gitlab-org/gitlab!113944)) +- [Add migrations_should_finish on elastic_index_dependant_association](gitlab-org/gitlab@b07a24c50919105460ad5564f5a4674fc17eae91) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113225)) **GitLab Enterprise Edition** +- [Update Codeowners after Certify change](gitlab-org/gitlab@f718f18655fe0bdfa7d159b7c250423ec560ba18) ([merge request](gitlab-org/gitlab!113858)) +- [Update Gitlab Shell version to 14.18.0](gitlab-org/gitlab@34a4842fa30bb6a500b6f883ea939bbafc73509d) ([merge request](gitlab-org/gitlab!113733)) +- [Validate and replace FK for p_ci_builds_metadata and ci_builds](gitlab-org/gitlab@f416df8f34633a36e7c005fdcead277ffa1d74a6) ([merge request](gitlab-org/gitlab!113655)) +- [Creates a dictionary file on generating the BBM](gitlab-org/gitlab@2b0101e775eed568ad6fecd538af6daa90372164) ([merge request](gitlab-org/gitlab!110740)) +- [Remove invalid deprecation notice about maintainer_note](gitlab-org/gitlab@eb8a7b3cec06de556617827224544c1a06752cf4) ([merge request](gitlab-org/gitlab!113665)) +- [Schedule temporary partitioning indexes removal](gitlab-org/gitlab@45205241ec3ea534f23cf5187eeb3f9829e586bd) ([merge request](gitlab-org/gitlab!113507)) +- [Prepare async index on expire_at for unlocked non-trace job artifacts](gitlab-org/gitlab@8d017da66a456aacb17f57812f1a7b1d05fab691) ([merge request](gitlab-org/gitlab!113350)) +- [Remove ci_destroy_unlocked_job_artifact feature flag](gitlab-org/gitlab@eb22b66a5cd2e249752971612ce0b687707f1392) ([merge request](gitlab-org/gitlab!113233)) +- [Backfill merge request compliance violations table](gitlab-org/gitlab@241d6a4c479570db310b0188fc781ef49104964a) ([merge request](gitlab-org/gitlab!110426)) +- [Add metrics for Redis Cluster redirection](gitlab-org/gitlab@19d8c8ab412cb9b8ca461ad9d86db2f983331a4d) ([merge request](gitlab-org/gitlab!112767)) +- [Patch ActiveRecord Preloader to imiatate Rails 7 interface](gitlab-org/gitlab@0248388c7f6f7d02ea60a46c32b9d3234137c2d4) ([merge request](gitlab-org/gitlab!112231)) +- [Remove notes_create_service_tracking feature flag](gitlab-org/gitlab@afc2fc588a21d1844b94a69e57050b7f75600a2d) ([merge request](gitlab-org/gitlab!113066)) +- [Adds CIComponentRepositories table](gitlab-org/gitlab@d08867284796aa0f9683d6440f671aa9316a0fb9) ([merge request](gitlab-org/gitlab!112482)) +- [Update CI includes counting structure to include duplicates](gitlab-org/gitlab@32feb697d7f0def07015806f702ead43b8c34ebc) ([merge request](gitlab-org/gitlab!112951)) +- [Suggest refreshing LDAP group sync page](gitlab-org/gitlab@635f300d04af79f3c6c2fd522660bd0ebfa7bacc) ([merge request](gitlab-org/gitlab!112119)) **GitLab Enterprise Edition** +- [Remove span to fix button sizing](gitlab-org/gitlab@574d37428093ce561efdb85a7349682e2910287c) ([merge request](gitlab-org/gitlab!112738)) +- [Make WIP limits button use sentence case](gitlab-org/gitlab@d4492b6a1c685c06bad8dcf1c458f09d2d28d7e7) ([merge request](gitlab-org/gitlab!112834)) +- [Updating BBM docs to include generators info](gitlab-org/gitlab@744379a2186eac44f8fdd2b57d795ebcbfb2b4b8) ([merge request](gitlab-org/gitlab!112576)) +- [Drop non-partitioned FK for ci_running_builds and ci_builds](gitlab-org/gitlab@edda542ecb6281c9bb1887739800af586aa37532) ([merge request](gitlab-org/gitlab!112669)) +- [Drop non-partitioned FK for ci_pending_builds and ci_builds](gitlab-org/gitlab@51c60c551d5f2f65a8e705aad3631ee624952cb2) ([merge request](gitlab-org/gitlab!112668)) +- [Make delete action danger variant](gitlab-org/gitlab@fa631351c19074fe7fff1d9d4655b8e993f09b2d) ([merge request](gitlab-org/gitlab!112603)) +- [Update release version info for direct transfer group relations](gitlab-org/gitlab@bec08f5680a6b6d7d904ba90d36a5a60a7bc9ab2) ([merge request](gitlab-org/gitlab!112689)) +- [Default enable vue_issues_dashboard feature flag](gitlab-org/gitlab@3ae8be39270277d72f0ac94fde22a48e98884a7a) ([merge request](gitlab-org/gitlab!111347)) +- [Set traversal_ids on save](gitlab-org/gitlab@d0c4ae63032cb383cdc89f728d582c8d119e7010) ([merge request](gitlab-org/gitlab!112381)) +- [Rake task gitlab:db:lock_writes should include table partitions](gitlab-org/gitlab@41c46cd72e69f0577c79f5790dfd2b9a43bc8bdd) ([merge request](gitlab-org/gitlab!112242)) +- [Add alternative Redis backend for Rack::Attack](gitlab-org/gitlab@b00766c9be76747e85d2ab4c3e9e9e0303ea53a8) ([merge request](gitlab-org/gitlab!112593)) +- [Update BulkImport#has_failures attribute when a new failure is created](gitlab-org/gitlab@2b79881dcecd11e986f06a1055e11c9da5047254) ([merge request](gitlab-org/gitlab!112061)) +- [Creates migration for finalizing ciBuildNeeds BigInt conversion](gitlab-org/gitlab@2beb9eafe6245cc596706902332f2b8ae798aa11) ([merge request](gitlab-org/gitlab!111968)) +- [Remove fallback reads for MultiStore](gitlab-org/gitlab@0bb877914ef52dac0d668e5e9eb0178e2b2819cf) ([merge request](gitlab-org/gitlab!111893)) +- [Remove route_hll_to_snowplow_phase2 feature flag](gitlab-org/gitlab@ca7b5aac3266f876a41701e93d0d63d7fd26f61c) ([merge request](gitlab-org/gitlab!111644)) +- [Add Snowplow instrumentation for secrets usage](gitlab-org/gitlab@0b9affb27923970d8441a242cc2f14d2550d3319) ([merge request](gitlab-org/gitlab!111857)) **GitLab Enterprise Edition** +- [Refactor root sha access code](gitlab-org/gitlab@589f4176f85f8f7488e0de408daf710eae5e38f8) ([merge request](gitlab-org/gitlab!112289)) + +### change (1 change) + +- [Update submit buttons to use Pajamas component](gitlab-org/gitlab@4ffb92755e6be3268c78f02e471f5c2a21f437be) ([merge request](gitlab-org/gitlab!114246)) ## 15.9.3 (2023-03-09) @@ -808,6 +1563,23 @@ No changes. - [Remove Gitlab::Redis::DuplicateJobs](gitlab-org/gitlab@73d863b0a49175cce7649c0936b2e16157f61665) ([merge request](gitlab-org/gitlab!109122)) - [Clean-up feature flag `hash_based_cache_for_protected_branches`](gitlab-org/gitlab@96e8a07564bac07a100556e00ce4af3f21dca293) ([merge request](gitlab-org/gitlab!108724)) +## 15.8.4 (2023-03-02) + +### Security (12 changes) + +- [Using builds metadata to determine debug_mode](gitlab-org/security/gitlab@169fdb3222a9701b5818ef7c00f8f292dc60495d) ([merge request](gitlab-org/security/gitlab!3035)) +- [Fix pagination limits for Commits API](gitlab-org/security/gitlab@3d58c0fef6429d1030d1dfce1ca523ef33a0054b) ([merge request](gitlab-org/security/gitlab!3072)) +- [Mask Google IAP account details in Prometheus integration](gitlab-org/security/gitlab@96426e4c799e9bf5e90e5e57b2e54235831819a3) ([merge request](gitlab-org/security/gitlab!3082)) +- [Stop Group Transfer Service if SAML Provider or SCIM token is present](gitlab-org/security/gitlab@9496a2ed22f73bf83e56b1ff502fefcfe777ad07) ([merge request](gitlab-org/security/gitlab!3097)) +- [Protect Datadog API key by changing Datadog site](gitlab-org/security/gitlab@c6804e50cb60fc4747ea573306eec17eb0dd25f9) ([merge request](gitlab-org/security/gitlab!3094)) +- [Protect integrations' sensitive information exposed via API](gitlab-org/security/gitlab@a408475163272b926e65b1cf56c9efde09eac8dd) ([merge request](gitlab-org/security/gitlab!3088)) +- [Disallow maintainer to create an owner access token](gitlab-org/security/gitlab@d184909f6ab9123a6131c5c37452ace5c4bc8d3d) ([merge request](gitlab-org/security/gitlab!3091)) +- [Paste only text content in work items title](gitlab-org/security/gitlab@d8c48ade46fd75ab62731fced05cdfa2451bcdfa) ([merge request](gitlab-org/security/gitlab!3075)) +- [Jira DVCS OAuth Open Redirect Vulnerability](gitlab-org/security/gitlab@91ee37eeaaae8cc6d923f6b4b28ce0d7914342dd) ([merge request](gitlab-org/security/gitlab!3063)) +- [Block private personal snippet from unauthorized users](gitlab-org/security/gitlab@d687866d69cbdf25a3ca7185974c02402345015d) ([merge request](gitlab-org/security/gitlab!3030)) +- [Verify Kroki diagram type](gitlab-org/security/gitlab@4ec26a4479e73233d0f77bc5a5e764d506c29faf) ([merge request](gitlab-org/security/gitlab!3055)) +- [Check read_release permission before showing releases in Tags API](gitlab-org/security/gitlab@32bf21efc32fcb6a3803993959b50d8a9cd07d25) ([merge request](gitlab-org/security/gitlab!3057)) + ## 15.8.3 (2023-02-15) ### Fixed (3 changes) @@ -1302,6 +2074,23 @@ No changes. - [Do not use _test when not necessary](gitlab-org/gitlab@1bde73aba2bd1d7f9e833c7325cffa0c90d1c106) ([merge request](gitlab-org/gitlab!107373)) - [Add config/redis.yml unified config file](gitlab-org/gitlab@ace8301236eecc07a511975b57f80e21ec7be3c2) ([merge request](gitlab-org/gitlab!106854)) +## 15.7.8 (2023-03-02) + +### Security (12 changes) + +- [Using builds metadata to determine debug_mode](gitlab-org/security/gitlab@12be0c159940a35899851f2867fde1237dae254b) ([merge request](gitlab-org/security/gitlab!3036)) +- [Fix pagination limits for Commits API](gitlab-org/security/gitlab@d507c5d906aff98a8bff943181299cbec5cc43db) ([merge request](gitlab-org/security/gitlab!3073)) +- [Mask Google IAP account details in Prometheus integration](gitlab-org/security/gitlab@54420f92a366e2a7648c10baaaf67492d6676746) ([merge request](gitlab-org/security/gitlab!3083)) +- [Stop Group Transfer Service if SAML Provider or SCIM token is present](gitlab-org/security/gitlab@52400160cd607fb30411dec04b516a1314e44996) ([merge request](gitlab-org/security/gitlab!3098)) +- [Protect Datadog API key by changing Datadog site](gitlab-org/security/gitlab@9aa3ba9f719a786238ae59914d5456666363940e) ([merge request](gitlab-org/security/gitlab!3096)) +- [Protect integrations' sensitive information exposed via API](gitlab-org/security/gitlab@60c22681f52c2aadcb55e1b9e92d358076e3c92c) ([merge request](gitlab-org/security/gitlab!3089)) +- [Disallow maintainer to create an owner access token](gitlab-org/security/gitlab@2adeb7fafb119a43c0bfe162fbc66d2740cb4168) ([merge request](gitlab-org/security/gitlab!3092)) +- [Paste only text content in work items title](gitlab-org/security/gitlab@5fa8a9bf683427af6f25e043b3f0a332719bc970) ([merge request](gitlab-org/security/gitlab!3076)) +- [Jira DVCS OAuth Open Redirect Vulnerability](gitlab-org/security/gitlab@3598b2558de92b0a775f09beb739c6e2f90ff7ab) ([merge request](gitlab-org/security/gitlab!3064)) +- [Block private personal snippet from unauthorized users](gitlab-org/security/gitlab@a106541570423480c9c510f512a2dc61acc5c01f) ([merge request](gitlab-org/security/gitlab!2994)) +- [Verify Kroki diagram type](gitlab-org/security/gitlab@eafe89b8be423e4828fe92769353b7f17ffe895e) ([merge request](gitlab-org/security/gitlab!3054)) +- [Check read_release permission before showing releases in Tags API](gitlab-org/security/gitlab@d56500c47754c7d5eb11f3c84bedbe60366eff0e) ([merge request](gitlab-org/security/gitlab!3058)) + ## 15.7.7 (2023-02-10) No changes. diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 63e48abe4e..13aef295bb 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -15.9.8 \ No newline at end of file +15.10.7 \ No newline at end of file diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index 3a6f2e99e4..1a42a9dbc9 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -v15.9.0 +v15.10.0 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 63e48abe4e..13aef295bb 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -15.9.8 \ No newline at end of file +15.10.7 \ No newline at end of file diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 62df50f1ee..c2324e8e46 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -14.17.0 +14.18.0 diff --git a/Gemfile b/Gemfile index ed0c5127f7..a8063691b7 100644 --- a/Gemfile +++ b/Gemfile @@ -33,9 +33,6 @@ gem 'sprockets', '~> 3.7.0' gem 'view_component', '~> 2.74.1' -# Default values for AR models -gem 'default_value_for', '~> 3.4.0' - # Supported DBs gem 'pg', '~> 1.4.5' @@ -143,14 +140,12 @@ gem 'carrierwave', '~> 1.3' gem 'mini_magick', '~> 4.10.1' # for backups -gem 'fog-aws', '~> 3.15' +gem 'fog-aws', '~> 3.18' # Locked until fog-google resolves https://github.com/fog/fog-google/issues/421. # Also see config/initializers/fog_core_patch.rb. gem 'fog-core', '= 2.1.0' gem 'fog-google', '~> 1.19', require: 'fog/google' gem 'fog-local', '~> 0.8' -gem 'fog-openstack', '~> 1.0' -gem 'fog-rackspace', '~> 0.1.1' # NOTE: # the fog-aliyun gem since v0.4 pulls in aliyun-sdk transitively, which monkey-patches # the rest-client gem to drop the Content-Length header field for chunked transfers, @@ -182,7 +177,7 @@ gem 'seed-fu', '~> 2.3.7' gem 'elasticsearch-model', '~> 7.2' gem 'elasticsearch-rails', '~> 7.2', require: 'elasticsearch/rails/instrumentation' gem 'elasticsearch-api', '7.13.3' -gem 'aws-sdk-core', '~> 3.170.0' +gem 'aws-sdk-core', '~> 3.170.1' gem 'aws-sdk-cloudformation', '~> 1' gem 'aws-sdk-s3', '~> 1.119.1' gem 'faraday_middleware-aws-sigv4', '~>0.3.0' @@ -199,13 +194,13 @@ gem 'rdoc', '~> 6.3.2' gem 'org-ruby', '~> 0.9.12' gem 'creole', '~> 0.5.0' gem 'wikicloth', '0.8.1' -gem 'asciidoctor', '~> 2.0.17' +gem 'asciidoctor', '~> 2.0.18' gem 'asciidoctor-include-ext', '~> 0.4.0', require: false gem 'asciidoctor-plantuml', '~> 0.0.16' -gem 'asciidoctor-kroki', '~> 0.7.0', require: false -gem 'rouge', '~> 3.30.0' +gem 'asciidoctor-kroki', '~> 0.8.0', require: false +gem 'rouge', '~> 4.1.0' gem 'truncato', '~> 0.7.12' -gem 'nokogiri', '~> 1.14.1' +gem 'nokogiri', '~> 1.14.2' # Calendar rendering gem 'icalendar' @@ -292,7 +287,7 @@ gem 'asana', '~> 0.10.13' gem 'ruby-fogbugz', '~> 0.3.0' # Kubernetes integration -gem 'kubeclient', '~> 4.9.3', path: 'vendor/gems/kubeclient' +gem 'kubeclient', '~> 4.11.0' # Sanitize user input gem 'sanitize', '~> 6.0' @@ -310,7 +305,7 @@ gem 'licensee', '~> 9.15' gem 'charlock_holmes', '~> 0.7.7' # Detect mime content type from content -gem 'ruby-magic', '~> 0.5' +gem 'ruby-magic', '~> 0.6' # Faster blank gem 'fast_blank' @@ -348,7 +343,7 @@ gem 'pg_query', '~> 2.2', '>= 2.2.1' gem 'premailer-rails', '~> 1.10.3' -gem 'gitlab-labkit', '~> 0.30.1' +gem 'gitlab-labkit', '~> 0.31.1' gem 'thrift', '>= 0.16.0' # I18n @@ -363,17 +358,20 @@ gem 'batch-loader', '~> 2.0.1' # Perf bar gem 'peek', '~> 1.1' +# Google Cloud Profiler support +gem 'cloud_profiler_agent', '~> 0.0.0', path: 'vendor/gems/cloud_profiler_agent', require: false + # Snowplow events tracking gem 'snowplow-tracker', '~> 0.8.0' # Metrics gem 'webrick', '~> 1.6.1', require: false -gem 'prometheus-client-mmap', '~> 0.17', require: 'prometheus/client' +gem 'prometheus-client-mmap', '~> 0.19', require: 'prometheus/client' gem 'warning', '~> 1.3.0' group :development do - gem 'lefthook', '~> 1.2.9', require: false + gem 'lefthook', '~> 1.3.3', require: false gem 'rubocop' gem 'solargraph', '~> 0.47.2', require: false @@ -416,7 +414,7 @@ group :development, :test do gem 'bundler-audit', '~> 0.7.0.1', require: false # Benchmarking & profiling - gem 'benchmark-ips', '~> 2.3.0', require: false + gem 'benchmark-ips', '~> 2.11.0', require: false gem 'benchmark-memory', '~> 0.1', require: false gem 'knapsack', '~> 1.21.1' @@ -436,7 +434,7 @@ group :development, :test do end group :development, :test, :danger do - gem 'gitlab-dangerfiles', '~> 3.7.0', require: false + gem 'gitlab-dangerfiles', '~> 3.8.0', require: false end group :development, :test, :coverage do @@ -456,7 +454,7 @@ group :test do gem 'rspec-retry', '~> 0.6.1' gem 'rspec_profiling', '~> 0.0.6' gem 'rspec-benchmark', '~> 0.6.0' - gem 'rspec-parameterized', require: false + gem 'rspec-parameterized', '~> 1.0', require: false gem 'capybara', '~> 3.35.3' gem 'capybara-screenshot', '~> 1.0.22' @@ -472,6 +470,7 @@ group :test do gem 'test-prof', '~> 1.0.7' gem 'rspec_junit_formatter' gem 'guard-rspec' + gem 'axe-core-rspec' # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527 gem 'derailed_benchmarks', require: false @@ -486,7 +485,7 @@ gem 'gitlab-mail_room', '~> 0.0.9', require: 'mail_room' gem 'email_reply_trimmer', '~> 0.1' gem 'html2text' -gem 'stackprof', '~> 0.2.21', require: false +gem 'stackprof', '~> 0.2.23', require: false gem 'rbtrace', '~> 0.4', require: false gem 'memory_profiler', '~> 1.0', require: false gem 'activerecord-explain-analyze', '~> 0.1', require: false @@ -518,7 +517,7 @@ gem 'kas-grpc', '~> 0.0.2' gem 'grpc', '~> 1.42.0' -gem 'google-protobuf', '~> 3.21', '>= 3.21.12' +gem 'google-protobuf', '~> 3.22', '>= 3.22.2' gem 'toml-rb', '~> 2.2.0' @@ -547,7 +546,11 @@ gem 'lru_redux' # Locked as long as quoted-printable encoding issues are not resolved # Monkey-patched in `config/initializers/mail_encoding_patch.rb` # See https://gitlab.com/gitlab-org/gitlab/issues/197386 -gem 'mail', '= 2.7.1' +# +# `config/initializers/mail_starttls_patch.rb` has also been patched to +# fix STARTTLS handling until https://github.com/mikel/mail/pull/1536 is +# released. +gem 'mail', '= 2.8.1' gem 'mail-smtp_pool', '~> 0.1.0', path: 'vendor/gems/mail-smtp_pool', require: false gem 'microsoft_graph_mailer', '~> 0.1.0', path: 'vendor/gems/microsoft_graph_mailer' @@ -566,7 +569,7 @@ gem 'oj-introspect', '~> 0.7' gem 'multi_json', '~> 1.14.1' gem 'yajl-ruby', '~> 1.4.3', require: 'yajl' -gem 'webauthn', '~> 2.3' +gem 'webauthn', '~> 3.0' # IPAddress utilities gem 'ipaddress', '~> 0.8.3' @@ -588,8 +591,14 @@ gem 'cvss-suite', '~> 3.0.1', require: 'cvss_suite' gem 'arr-pm', '~> 0.0.12' # Apple plist parsing -gem 'CFPropertyList' +gem 'CFPropertyList', '~> 3.0.0' gem 'app_store_connect' # For phone verification gem 'telesignenterprise', '~> 2.2' + +# BufferedIO patch +# Updating this version will require updating scripts/allowed_warnings.txt +gem 'net-protocol', '~> 0.1.3' + +gem 'duo_api', '~> 1.3' diff --git a/Gemfile.checksum b/Gemfile.checksum index 7813d319ee..910c53f7ae 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -24,23 +24,26 @@ {"name":"app_store_connect","version":"0.29.0","platform":"ruby","checksum":"01d7a923825a4221892099acb5a72f86f6ee7d8aa95815d3c459ba6816ea430f"}, {"name":"arr-pm","version":"0.0.12","platform":"ruby","checksum":"fdff482f75239239201f4d667d93424412639aad0b3b0ad4d827e7c637e0ad39"}, {"name":"asana","version":"0.10.13","platform":"ruby","checksum":"36d0d37f8dd6118a54580f1b80224875d7b6a9027598938e1722a508bfc2d7ac"}, -{"name":"asciidoctor","version":"2.0.17","platform":"ruby","checksum":"ed5b5e399e8d64994cc16f0983f993d6e33990909a8415b6fc8b786cdeb00f3d"}, +{"name":"asciidoctor","version":"2.0.18","platform":"ruby","checksum":"bbd1e1d16deed8db94bf9624b9f4474fac32d9ca7225d377f076c08d9adde387"}, {"name":"asciidoctor-include-ext","version":"0.4.0","platform":"ruby","checksum":"406adb9d2fbfc25536609ca13b787ed704dc06a4e49d6709b83f3bad578f7878"}, -{"name":"asciidoctor-kroki","version":"0.7.0","platform":"ruby","checksum":"528ae4e49cae10e98c76e91f9aa40c67bf8540aa5ce4bbd44c5cd57af9f0b121"}, +{"name":"asciidoctor-kroki","version":"0.8.0","platform":"ruby","checksum":"e53b3f349167cebde990b0098863e8fe98fd235e35263a78c88cc4e0268b1a36"}, {"name":"asciidoctor-plantuml","version":"0.0.16","platform":"ruby","checksum":"407e47cd1186ded5ccc75f0c812e5524c26c571d542247c5132abb8f47bd1793"}, {"name":"ast","version":"2.4.2","platform":"ruby","checksum":"1e280232e6a33754cde542bc5ef85520b74db2aac73ec14acef453784447cc12"}, {"name":"atlassian-jwt","version":"0.2.0","platform":"ruby","checksum":"52e653e9d6062d7a740c3675b0e79fa08367927c6fc17f5476d1b6b3798c6eb2"}, {"name":"attr_required","version":"1.0.1","platform":"ruby","checksum":"024e10393bd30901e1adf6769bd756b873a5ef7da60f86f8f11066116b5742bc"}, {"name":"autoprefixer-rails","version":"10.2.5.1","platform":"ruby","checksum":"3711d67f1112361c7628847ac192d8aa6f3b8abe47527aee8a69dc8985e798ee"}, {"name":"awesome_print","version":"1.9.2","platform":"ruby","checksum":"e99b32b704acff16d768b3468680793ced40bfdc4537eb07e06a4be11133786e"}, -{"name":"awrence","version":"1.1.1","platform":"ruby","checksum":"9be584c97408ed92d5e1ca11740853646fe270de675f2f8dd44e8233226dfc97"}, +{"name":"awrence","version":"1.2.1","platform":"ruby","checksum":"dd1d214c12a91f449d1ef81d7ee3babc2816944e450752e7522c65521872483e"}, {"name":"aws-eventstream","version":"1.2.0","platform":"ruby","checksum":"ffa53482c92880b001ff2fb06919b9bb82fd847cbb0fa244985d2ebb6dd0d1df"}, -{"name":"aws-partitions","version":"1.703.0","platform":"ruby","checksum":"3d32fcdcb2799fe0472a9b30990035713d7a75ac8b77bd7767ef5ee2914ea748"}, +{"name":"aws-partitions","version":"1.730.0","platform":"ruby","checksum":"32aa84e7004c4b0c7cde0bd9641188a3eaf3001ec67019b201cbe47bde8e902b"}, {"name":"aws-sdk-cloudformation","version":"1.41.0","platform":"ruby","checksum":"31e47539719734413671edf9b1a31f8673fbf9688549f50c41affabbcb1c6b26"}, -{"name":"aws-sdk-core","version":"3.170.0","platform":"ruby","checksum":"59341e5cf39d70c4069201bd46f914efd2a0aaa257c5c4d02dfa602e36fc847d"}, +{"name":"aws-sdk-core","version":"3.170.1","platform":"ruby","checksum":"553ba7ea629f90cd00fb83de3f3636e9db0a38b6b48957cacdb0f63c9d69bea6"}, {"name":"aws-sdk-kms","version":"1.62.0","platform":"ruby","checksum":"b9111c698d783f3f092dcc6a8b9b7e3f53f00e6e501bdc5a4409afdcaf411a1c"}, {"name":"aws-sdk-s3","version":"1.119.1","platform":"ruby","checksum":"f7f5939f204839e20222c70823ec0dc5f10775e3538e102783f68b42f5a7f6e6"}, {"name":"aws-sigv4","version":"1.5.1","platform":"ruby","checksum":"d68c87fff4ee843b4b92b23c7f31f957f254ec6eb064181f7119124aab8b8bb4"}, +{"name":"axe-core-api","version":"4.6.0","platform":"ruby","checksum":"1b0ddec3353f108dc10363baf2282f43a5ff7f13d4e25f99071294e78f8a6c62"}, +{"name":"axe-core-rspec","version":"4.6.0","platform":"ruby","checksum":"11c25bc9dd388c137ba4e5e63d64d20092bf22c884d8ffc829a22acfbacd747f"}, +{"name":"axiom-types","version":"0.1.1","platform":"ruby","checksum":"c1ff113f3de516fa195b2db7e0a9a95fd1b08475a502ff660d04507a09980383"}, {"name":"azure-storage-blob","version":"2.0.3","platform":"ruby","checksum":"61b76118843c91776bd24bee22c74adafeb7c4bb3a858a325047dae3b59d0363"}, {"name":"azure-storage-common","version":"2.0.4","platform":"ruby","checksum":"608f4daab0e06b583b73dcffd3246ea39e78056de31630286b0cf97af7d6956b"}, {"name":"babosa","version":"1.0.4","platform":"ruby","checksum":"18dea450f595462ed7cb80595abd76b2e535db8c91b350f6c4b3d73986c5bc99"}, @@ -50,15 +53,14 @@ {"name":"bcrypt","version":"3.1.16","platform":"java","checksum":"2925a1546fa8e85bdb1b10f1fc95c4e1ea15992ada16adea4af82b0978ed662c"}, {"name":"bcrypt","version":"3.1.16","platform":"ruby","checksum":"0b8bf031ba81aa76c0f10c5a8dac779b6035d84b09af1dbb2b1a32a7e360210b"}, {"name":"benchmark","version":"0.2.0","platform":"ruby","checksum":"5f7087b794613abdd3ac9c13f4351f65b164bcb15ced2ad29508e365f9b28c77"}, -{"name":"benchmark-ips","version":"2.3.0","platform":"ruby","checksum":"12443aa327d3129aa965244f79d7d5cb0f692f0f92ba7db76fba61526a40062e"}, +{"name":"benchmark-ips","version":"2.11.0","platform":"ruby","checksum":"1eaa89841073895af0ee7ff72eb069e5c7dda01c6d6a8b3e79e363bace596dec"}, {"name":"benchmark-malloc","version":"0.2.0","platform":"ruby","checksum":"37c68f0435261634026f584d79956a35325a3027e3e6b4cc8d7575aa10537e6b"}, {"name":"benchmark-memory","version":"0.2.0","platform":"ruby","checksum":"ca1e436433b09535ee8f64f80600a5edb407cff1f6ac70e089ca238118e6ab5c"}, {"name":"benchmark-perf","version":"0.6.0","platform":"ruby","checksum":"fe2b01959f3de0f9dd34820d54ef881eb4f3589fccb7d17b63068ac92d7f9621"}, {"name":"benchmark-trend","version":"0.4.0","platform":"ruby","checksum":"de5a02a9f443babefbbd97784759820decee8554a0c273d859c02a0990845d81"}, {"name":"better_errors","version":"2.9.1","platform":"ruby","checksum":"39efc116ab04d6c4200052c5782936e4bd99906978d098992bce6bf81d054284"}, {"name":"bindata","version":"2.4.11","platform":"ruby","checksum":"c38e0c99ffcd80c10a0a7ae6c8586d2fe26bf245cbefac90bec8764523220f6a"}, -{"name":"binding_ninja","version":"0.2.3","platform":"java","checksum":"bbcf70b211d6e397493bf57c249bbec6aaf28fa7dafeb78e447b1b2f0610484f"}, -{"name":"binding_ninja","version":"0.2.3","platform":"ruby","checksum":"4a85550a0066ee4721506b4e150857486808e50c9ddfeed04bdc896bb61eca9d"}, +{"name":"binding_of_caller","version":"1.0.0","platform":"ruby","checksum":"3aad25d1d538fc6e7972978f9bf512ccd992784009947c81633bea776713161d"}, {"name":"bootsnap","version":"1.16.0","platform":"ruby","checksum":"f87410c00f69cd84a6e72a6c4bdba733f800d80d934f4315849d18ca9f288fed"}, {"name":"browser","version":"5.3.1","platform":"ruby","checksum":"62745301701ff2c6c5d32d077bb12532b20be261929dcb52c6781ed0d5658b3c"}, {"name":"builder","version":"3.2.4","platform":"ruby","checksum":"99caf08af60c8d7f3a6b004029c4c3c0bdaebced6c949165fe98f1db27fbbc10"}, @@ -80,29 +82,33 @@ {"name":"claide","version":"1.1.0","platform":"ruby","checksum":"6d3c5c089dde904d96aa30e73306d0d4bd444b1accb9b3125ce14a3c0183f82e"}, {"name":"claide-plugins","version":"0.9.2","platform":"ruby","checksum":"c7ea78bc067ab23bce8515497cdcdcb8f01c86dadfbe13c44644e382922c1c2e"}, {"name":"coderay","version":"1.1.3","platform":"ruby","checksum":"dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b"}, +{"name":"coercible","version":"1.0.0","platform":"ruby","checksum":"5081ad24352cc8435ce5472bc2faa30260c7ea7f2102cc6a9f167c4d9bffaadc"}, {"name":"colored2","version":"3.1.2","platform":"ruby","checksum":"b13c2bd7eeae2cf7356a62501d398e72fde78780bd26aec6a979578293c28b4a"}, {"name":"commonmarker","version":"0.23.6","platform":"ruby","checksum":"c8aeaaaff4ba497bf180f762db63a0069794fafb6eff221224c9c8199d337b38"}, {"name":"concurrent-ruby","version":"1.2.0","platform":"ruby","checksum":"a5e799f71e7490f24a534d58c91380267d0ae306af0cdc518d6848b93475dae2"}, {"name":"connection_pool","version":"2.3.0","platform":"ruby","checksum":"677985be912f33c90f98f229aaa0c0ddb2ef8776f21929a36eeeb25251c944da"}, {"name":"cork","version":"0.3.0","platform":"ruby","checksum":"a0a0ac50e262f8514d1abe0a14e95e71c98b24e3378690e5d044daf0013ad4bc"}, -{"name":"cose","version":"1.0.0","platform":"ruby","checksum":"520ebaad97b56d2873de02ff4e2c973f5e77ce2f8edbda454af9ee3073643bc0"}, +{"name":"cose","version":"1.3.0","platform":"ruby","checksum":"63247c66a5bc76e53926756574fe3724cc0a88707e358c90532ae2a320e98601"}, {"name":"countries","version":"4.0.1","platform":"ruby","checksum":"d32e8a3c0b22949f1a41ea6d9005f5168ffce226f8fe077d1d6be785fffa81c5"}, {"name":"crack","version":"0.4.3","platform":"ruby","checksum":"5318ba8cd9cf7e0b5feb38948048503ba4b1fdc1b6ff30a39f0a00feb6036b29"}, {"name":"crass","version":"1.0.6","platform":"ruby","checksum":"dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d"}, {"name":"creole","version":"0.5.0","platform":"ruby","checksum":"951701e2d80760f156b1cb2a93471ca97c076289becc067a33b745133ed32c03"}, {"name":"crystalball","version":"0.7.0","platform":"ruby","checksum":"6e729f372a5071daec877adb40c5df4cb25fe21f350635e2a9624373fc151ef2"}, -{"name":"css_parser","version":"1.12.0","platform":"ruby","checksum":"8b7c04bca32257da0c65bd7b1fa585df5a0fd9f5197ccd78498d5598dd900784"}, +{"name":"css_parser","version":"1.14.0","platform":"ruby","checksum":"f2ce6148cd505297b07bdbe7a5db4cce5cf530071f9b732b9a23538d6cdc0113"}, {"name":"cvss-suite","version":"3.0.1","platform":"ruby","checksum":"b5ca9e9e94032a42fd0dc28c1e305378b62c949e35ed7111fc4a1d76f68ad3f9"}, {"name":"danger","version":"8.6.1","platform":"ruby","checksum":"d95eb58b41f68d3aaa9bbef697916b6b4d161a38819517c98562531be75cdfd8"}, {"name":"danger-gitlab","version":"8.0.0","platform":"ruby","checksum":"497dd7d0f6513913de651019223d8058cf494df10acbd17de92b175dfa04a3a8"}, {"name":"database_cleaner","version":"1.7.0","platform":"ruby","checksum":"bdf833c197afac7054015bcde2567c3834c366bbfe6a377c30151ca984b32016"}, +{"name":"date","version":"3.3.3","platform":"java","checksum":"584e0a582d1eb2207b4eaac089d8a43f2ca10bea02682f286099642f15c56cce"}, +{"name":"date","version":"3.3.3","platform":"ruby","checksum":"819792019d5712b748fb15f6dfaaedef14b0328723ef23583ea35f186774530f"}, {"name":"dead_end","version":"3.1.1","platform":"ruby","checksum":"1011df7f7c0149be004e11cbbc37747760227c55305cd902fd3c06e1394b2f5b"}, +{"name":"debug_inspector","version":"1.1.0","platform":"ruby","checksum":"eaa5a2d0195e1d65fb4164e8e7e466cca2e7eb53bc5e608cf12b8bf02c3a8606"}, {"name":"deckar01-task_list","version":"2.3.2","platform":"ruby","checksum":"5a19092548d24309d8b2c2704d64cdc08a4a615823c9a722f4142edec1de8805"}, {"name":"declarative","version":"0.0.20","platform":"ruby","checksum":"8021dd6cb17ab2b61233c56903d3f5a259c5cf43c80ff332d447d395b17d9ff9"}, {"name":"declarative_policy","version":"1.1.0","platform":"ruby","checksum":"9af4cf299ade03f2bbf63908f2ce6a117d132fc714c39a128596667fb13331cb"}, -{"name":"default_value_for","version":"3.4.0","platform":"ruby","checksum":"35d2dc51675a6bedfa875778628d44b823e0d7336da9432519477174ebb0f40f"}, {"name":"deprecation_toolkit","version":"1.5.1","platform":"ruby","checksum":"a8a1ab1a19ae40ea12560b65010e099f3459ebde390b76621ef0c21c516a04ba"}, {"name":"derailed_benchmarks","version":"2.1.2","platform":"ruby","checksum":"eaadc6206ceeb5538ff8f5e04a0023d54ebdd95d04f33e8960fb95a5f189a14f"}, +{"name":"descendants_tracker","version":"0.0.4","platform":"ruby","checksum":"e9c41dd4cfbb85829a9301ea7e7c48c2a03b26f09319db230e6479ccdc780897"}, {"name":"device_detector","version":"1.0.0","platform":"ruby","checksum":"b800fb3150b00c23e87b6768011808ac1771fffaae74c3238ebaf2b782947a7d"}, {"name":"devise","version":"4.8.1","platform":"ruby","checksum":"fdd48bbe79a89e7c1152236a70479842ede48bea4fa7f4f2d8da1f872559803e"}, {"name":"devise-two-factor","version":"4.0.2","platform":"ruby","checksum":"6548d2696ed090d27046f888f4fa7380f151e0f823902d46fd9b91e7d0cac511"}, @@ -123,6 +129,8 @@ {"name":"dry-inflector","version":"0.2.0","platform":"ruby","checksum":"c7cf29c3dc9d961c115aac873ac39a4ff6988fae7f7871c473a9694c1f6fb39e"}, {"name":"dry-logic","version":"1.1.0","platform":"ruby","checksum":"eca4b39084c9d22778144b7e4cf8db20e8bab7de6d89deb220d20a9fde60b69d"}, {"name":"dry-types","version":"1.4.0","platform":"ruby","checksum":"68003bb0db3077fecd0270f4ae486a82ee76bab6d666fdc4e094380a67c9a1df"}, +{"name":"dumb_delegator","version":"1.0.0","platform":"ruby","checksum":"ff5e411816d2d8ad8e260b269e712ae3839dddb0f9f8e18d3b1a3fe08f6d2e94"}, +{"name":"duo_api","version":"1.3.0","platform":"ruby","checksum":"87c9830e190fad32fdb086b023f555a3cf5cd4d6708a992f7a32efb2ce206176"}, {"name":"e2mmap","version":"0.1.0","platform":"ruby","checksum":"45ee6bba2d97a7d91ee0885774261feee87e28c598355df31e93b56196ec0f59"}, {"name":"ecma-re-validator","version":"0.3.0","platform":"ruby","checksum":"66a95bd8c2b0641baf1fbf9bd355a0dcf13c82c6883f6f496a722420a8b6e0d7"}, {"name":"ed25519","version":"1.3.0","platform":"java","checksum":"8e5d2f8a5325c7a463d61d1a48406ce54074c610f3dccd889e6532c9527a3894"}, @@ -179,18 +187,17 @@ {"name":"flipper-active_record","version":"0.25.0","platform":"ruby","checksum":"85a5c99465e2cc6a09e91931a9998b0dbd463cd6c80dd513129377132e3eb67f"}, {"name":"flipper-active_support_cache_store","version":"0.25.0","platform":"ruby","checksum":"7282bf994b08d1a076b65c6f3b51e3dc04fcb00fa6e7b20089e60db25c7b531b"}, {"name":"fog-aliyun","version":"0.4.0","platform":"ruby","checksum":"8f2334604beb781eafbb9cd5f50141fbb2c7eb77c7f2b01f45c2e04db0e5cc38"}, -{"name":"fog-aws","version":"3.15.0","platform":"ruby","checksum":"09752931ea0c6165b018e1a89253248d86b246645086ccf19bc44fabe3381e8c"}, +{"name":"fog-aws","version":"3.18.0","platform":"ruby","checksum":"f4c5880ecfbc4edbf711dfd41140f9f17dfc68b519546d121448d2d3a5584704"}, {"name":"fog-core","version":"2.1.0","platform":"ruby","checksum":"53e5d793554d7080d015ef13cd44b54027e421d924d9dba4ce3d83f95f37eda9"}, {"name":"fog-google","version":"1.19.0","platform":"ruby","checksum":"3c909a230837fe84117fffdfd927b523821b88f61d3aeab531e1417a9810f488"}, {"name":"fog-json","version":"1.2.0","platform":"ruby","checksum":"dd4f5ab362dbc72b687240bba9d2dd841d5dfe888a285797533f85c03ea548fe"}, {"name":"fog-local","version":"0.8.0","platform":"ruby","checksum":"263b2d09e54c69d1b87ad7f235a1a1e53c8a674edcedf7512c1715765ad7ef79"}, -{"name":"fog-openstack","version":"1.0.8","platform":"ruby","checksum":"8f174ab5e5b1bc107c7da90cc7c47a24930e1566cd88ab4df447026ea8b63d9c"}, -{"name":"fog-rackspace","version":"0.1.1","platform":"ruby","checksum":"4a8c7a2432dd32321958c869f3b1b8190cf4eac292024e6ea267bc6040a44b78"}, {"name":"fog-xml","version":"0.1.3","platform":"ruby","checksum":"5604c42649ebb0d8a31bd973aa000c2dd0127f1c1c4c174b69266a2e78e37410"}, {"name":"formatador","version":"0.2.5","platform":"ruby","checksum":"80821869ddacb79e72870ff4bb1531efacd278c04f2df26bc6b4529ee13582bd"}, {"name":"fugit","version":"1.8.1","platform":"ruby","checksum":"18ffb26813869610f71bb0b7d568c3624d2b3025aeebb6600a18df0c77a6a2b2"}, {"name":"fuubar","version":"2.2.0","platform":"ruby","checksum":"9b0263c4074f39c68b37f1e4e69a7d3cfc7523c41bea43601235daa723179b4a"}, {"name":"fuzzyurl","version":"0.9.0","platform":"ruby","checksum":"542efa80f2bcaadbdc402c2f0b572f2e335a1d53e375aecad68bbb3d86860c0f"}, +{"name":"gapic-common","version":"0.18.0","platform":"ruby","checksum":"6fd55a538ce2d63026fa05f379b1aec00788cc060f76903739516ab1ca1496ab"}, {"name":"gemoji","version":"3.0.1","platform":"ruby","checksum":"80553f2f4932a7a95fb1b3c7c63f7dd937e7c8c610164bbdea28fd06eba5f36d"}, {"name":"get_process_mem","version":"0.2.7","platform":"ruby","checksum":"4afd3c3641dd6a817c09806c7d6d509d8a9984512ac38dea8b917426bbf77eba"}, {"name":"gettext","version":"3.3.6","platform":"ruby","checksum":"ee6bbd1b2f833ee52d7797fa68acbfecc4726aec6b6280fd7eab92aa0190b413"}, @@ -200,10 +207,10 @@ {"name":"gitaly","version":"15.9.0.pre.rc3","platform":"ruby","checksum":"6ac64320a70417131a4b97f5dd45d4e203d60703cc3cba156561e7f8c50a4abe"}, {"name":"gitlab","version":"4.19.0","platform":"ruby","checksum":"3f645e3e195dbc24f0834fbf83e8ccfb2056d8e9712b01a640aad418a6949679"}, {"name":"gitlab-chronic","version":"0.10.5","platform":"ruby","checksum":"f80f18dc699b708870a80685243331290bc10cfeedb6b99c92219722f729c875"}, -{"name":"gitlab-dangerfiles","version":"3.7.0","platform":"ruby","checksum":"35c5bc42e60c575ab5701192ca2384ab414b14c2963602b39e143b1aaeb7e54d"}, +{"name":"gitlab-dangerfiles","version":"3.8.0","platform":"ruby","checksum":"7ef0c3205faa38a2ada19ee5b8e4012ea696611aa02564a4a95eaf3fb26d1a7e"}, {"name":"gitlab-experiment","version":"0.7.1","platform":"ruby","checksum":"166dddb3aa83428bcaa93c35684ed01dc4d61f321fd2ae40b020806dc54a7824"}, {"name":"gitlab-fog-azure-rm","version":"1.7.0","platform":"ruby","checksum":"969c67943c54ad4c259a6acd040493f13922fbdf2211bb4eca00e71505263dc2"}, -{"name":"gitlab-labkit","version":"0.30.1","platform":"ruby","checksum":"bdedbd86014c83dfd6a50d20dbc1709697bba2bb9e3666383e5f28cbd312b113"}, +{"name":"gitlab-labkit","version":"0.31.1","platform":"ruby","checksum":"3e3a39370966b5d2739c2d9d9005c0ea27541d32cb7292e856e8bd74c720bffb"}, {"name":"gitlab-license","version":"2.2.1","platform":"ruby","checksum":"39fcf6be8b2887df8afe01b5dcbae8d08b7c5d937ff56b0fb40484a8c4f02d30"}, {"name":"gitlab-mail_room","version":"0.0.9","platform":"ruby","checksum":"6700374b5c0aa9d9ad4e711aeb677f0b7d415a6d01d3baa699efab25349d851c"}, {"name":"gitlab-markup","version":"1.9.0","platform":"ruby","checksum":"7eda045a08ec2d110084252fa13a8c9eac8bdac0e302035ca7db4b82bcbd7ed4"}, @@ -231,16 +238,20 @@ {"name":"google-cloud-core","version":"1.6.0","platform":"ruby","checksum":"ea1744cd5a3085d3072de3fab9106afc769cd198609ebb5c6eeb5f13da46b72a"}, {"name":"google-cloud-env","version":"1.6.0","platform":"ruby","checksum":"6179acb946975892c7908748df5722a4ebadfc8cf5bb7b0d8d933ca67183fa15"}, {"name":"google-cloud-errors","version":"1.3.0","platform":"ruby","checksum":"450b681e24c089a20721a01acc4408bb4a7b0df28c175aaab488da917480d64b"}, +{"name":"google-cloud-profiler-v2","version":"0.4.0","platform":"ruby","checksum":"53fc2ab175d08f54233c644310d47798feac996220916815c4fb44c937b5d3e3"}, {"name":"google-cloud-storage","version":"1.44.0","platform":"ruby","checksum":"299a1e055c9277c8120f7c10d21d37e4d8c17c7b963350c0e0bff7e9d9a570ea"}, -{"name":"google-protobuf","version":"3.21.12","platform":"java","checksum":"35362ef8abf98ad597dffee588390b8b3b2f0f3d70261c3eed3f99e564f3289d"}, -{"name":"google-protobuf","version":"3.21.12","platform":"ruby","checksum":"4b09bb7e3168cda689efebcd3373304e124b14aabf776fbf1f0a7615259c8fb5"}, -{"name":"google-protobuf","version":"3.21.12","platform":"x64-mingw-ucrt","checksum":"e4444119acd56bf4661b3f38dc2795abae2cd5c2ade88154d5fc405008fbdcf7"}, -{"name":"google-protobuf","version":"3.21.12","platform":"x64-mingw32","checksum":"e6a879e1100f04506aea352d22f70a0ed77899fc64af3ff8c24a242331be923d"}, -{"name":"google-protobuf","version":"3.21.12","platform":"x86-linux","checksum":"54bbacbca58323fab222746df30e60a55df89f699e319ce0774d5bdd637b3a54"}, -{"name":"google-protobuf","version":"3.21.12","platform":"x86-mingw32","checksum":"979e6388dd5f3171043c5a00ac2f66b2789d7fc67b18207d1aabfa1dc27d9558"}, -{"name":"google-protobuf","version":"3.21.12","platform":"x86_64-darwin","checksum":"d7e59bd1040e510fd67fb96d08be84a4e362641f5229bf3fd870e383b2913574"}, -{"name":"google-protobuf","version":"3.21.12","platform":"x86_64-linux","checksum":"cb6820a68c7807e12ca1e6b69689b833d675ed81435a2179d502575ed5db3de0"}, -{"name":"googleapis-common-protos-types","version":"1.3.0","platform":"ruby","checksum":"c5411f3197cc3e02547ded1858303b1f830b4dc89c588c142ad6c8a231050671"}, +{"name":"google-protobuf","version":"3.22.2","platform":"aarch64-linux","checksum":"21357d807fd4b7e6e423dafa98732bf9a2be2767c06ea81a8a7980e71659783a"}, +{"name":"google-protobuf","version":"3.22.2","platform":"arm64-darwin","checksum":"ee4026e3d24d2c584476dd0dd1ff4662589711709ef5a91b82d36c995bb711d1"}, +{"name":"google-protobuf","version":"3.22.2","platform":"java","checksum":"d3d5389755bcf788717f000c9de41bed64fc211c46687dd41ebf7f8545b57962"}, +{"name":"google-protobuf","version":"3.22.2","platform":"ruby","checksum":"d516c13248500fb4e1af469c2d71e8b6ecffacb6f55e9be203f01b7d0ff01eff"}, +{"name":"google-protobuf","version":"3.22.2","platform":"x64-mingw-ucrt","checksum":"c26f38dde5612793db886a19485db7d3037628edf1d35ee8b5ca1ba16c82d005"}, +{"name":"google-protobuf","version":"3.22.2","platform":"x64-mingw32","checksum":"5c36e9f519988af2ac52444f3881fc4f6f6181a6177c01bae7b8ea007c76f80b"}, +{"name":"google-protobuf","version":"3.22.2","platform":"x86-linux","checksum":"ab49eb312d414e9a7231542240a4fddc52ea8c78007b812132a2c1d9ba943e26"}, +{"name":"google-protobuf","version":"3.22.2","platform":"x86-mingw32","checksum":"7fa69f62e182bae2a32f499da9ce8e5d9412d0a5768764967a7c1d0d89492e2e"}, +{"name":"google-protobuf","version":"3.22.2","platform":"x86_64-darwin","checksum":"e716c0fc6c970d82febf2447de2c762d265c288dbc26c3043c30544c8a4d60d9"}, +{"name":"google-protobuf","version":"3.22.2","platform":"x86_64-linux","checksum":"8fd16e0115d01209494767b6182c2a9f5d257d5f3c495c513762555a46f1ab88"}, +{"name":"googleapis-common-protos","version":"1.4.0","platform":"ruby","checksum":"da2380fb5ab1563580816c74e8d684ac17512c3654c829a3ee84f6d6139de382"}, +{"name":"googleapis-common-protos-types","version":"1.5.0","platform":"ruby","checksum":"5769cf7376abc86ef7f5897a4aaca1d5c5a3c49ddabeddd2c251fcf8155f858b"}, {"name":"googleauth","version":"1.3.0","platform":"ruby","checksum":"51dd7362353cf1e90a2d01e1fb94321ae3926c776d4dc4a79db65230217ffcc2"}, {"name":"gpgme","version":"2.0.22","platform":"ruby","checksum":"7c6904952afdd0bf2c7c3ed6de98a5143f86c6b7390dbcd9d7012bddfa3ec862"}, {"name":"grape","version":"1.5.2","platform":"ruby","checksum":"1df3b734c3862e235174232bc629587eddda9ef3df648230827575186700ae29"}, @@ -279,7 +290,7 @@ {"name":"html2text","version":"0.2.0","platform":"ruby","checksum":"31c2f0be9ab7aa4fc780b07d5f84882ebc22a9024c29a45f4f5adfe42e92ad4f"}, {"name":"htmlbeautifier","version":"1.4.2","platform":"ruby","checksum":"9de0c98480fe80d795ed5734a11f183563cd969686f25a04609c0f5a446fa5f8"}, {"name":"htmlentities","version":"4.3.4","platform":"ruby","checksum":"125a73c6c9f2d1b62100b7c3c401e3624441b663762afa7fe428476435a673da"}, -{"name":"http","version":"5.1.0","platform":"ruby","checksum":"b21e4f0dac51f52df001f1fa3dd3b0a8aadf3d8468d3c520c0caddeeb4f1c14a"}, +{"name":"http","version":"5.1.1","platform":"ruby","checksum":"fcaec14a4f82de6d2f9cb978c07326814c6c2b42b8974f6ec166ff19c645ebaf"}, {"name":"http-accept","version":"1.7.0","platform":"ruby","checksum":"c626860682bfbb3b46462f8c39cd470fd7b0584f61b3cc9df5b2e9eb9972a126"}, {"name":"http-cookie","version":"1.0.5","platform":"ruby","checksum":"73756d46c7dbdc7023deecdb8a171348ea95a1b99810b31cfe8b4fb4e9a6318f"}, {"name":"http-form_data","version":"2.3.0","platform":"ruby","checksum":"cc4eeb1361d9876821e31d7b1cf0b68f1cf874b201d27903480479d86448a5f3"}, @@ -289,6 +300,7 @@ {"name":"i18n_data","version":"0.13.1","platform":"ruby","checksum":"e5aa99b09a69b463bb0443fc1f9540351a49f3d1541c5e91316bafa035c63f66"}, {"name":"icalendar","version":"2.8.0","platform":"ruby","checksum":"e404f970c7572bdebf6f09f9890970b68aab400ba9e609dc7d46098f28d0ee87"}, {"name":"ice_cube","version":"0.16.4","platform":"ruby","checksum":"da117e5de24bdc33931be629f9b55048641924442c7e9b72fedc05e5592531b7"}, +{"name":"ice_nine","version":"0.11.2","platform":"ruby","checksum":"5d506a7d2723d5592dc121b9928e4931742730131f22a1a37649df1c1e2e63db"}, {"name":"imagen","version":"0.1.8","platform":"ruby","checksum":"fde7b727d4fe79c6bb5ac46c1f7184bf87a6d54df54d712ad2be039d2f93a162"}, {"name":"invisible_captcha","version":"2.0.0","platform":"ruby","checksum":"a381edcb1d1b8744e9dc398ecad142c3e2ab077604645f85eeb02f9ea535c042"}, {"name":"ipaddr","version":"1.2.2","platform":"ruby","checksum":"27916ee6367d549850d3675bc020f1f1ddafbbe1cfc58635f17dfa56c42f9f79"}, @@ -313,8 +325,9 @@ {"name":"knapsack","version":"1.21.1","platform":"ruby","checksum":"82f70422adebcacec1b514f6ebff65265fc85d836e3c320718a160d8ac41cf14"}, {"name":"kramdown","version":"2.3.2","platform":"ruby","checksum":"cb4530c2e9d16481591df2c9336723683c354e5416a5dd3e447fa48215a6a71c"}, {"name":"kramdown-parser-gfm","version":"1.1.0","platform":"ruby","checksum":"fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729"}, +{"name":"kubeclient","version":"4.11.0","platform":"ruby","checksum":"4985fcd749fb8c364a668a8350a49821647f03aa52d9ee6cbc582beb8e883fcc"}, {"name":"launchy","version":"2.5.0","platform":"ruby","checksum":"954243c4255920982ce682f89a42e76372dba94770bf09c23a523e204bdebef5"}, -{"name":"lefthook","version":"1.2.9","platform":"ruby","checksum":"1fd4a768e08fc624e756597fc628b3c7991267325974a7a5cc169595b425701d"}, +{"name":"lefthook","version":"1.3.3","platform":"ruby","checksum":"8269a799d0abad6aaf188edb66a661c729abe6b74f3d8d660529d51f9ed2dc5d"}, {"name":"letter_opener","version":"1.7.0","platform":"ruby","checksum":"095bc0d58e006e5b43ea7d219e64ecf2de8d1f7d9dafc432040a845cf59b4725"}, {"name":"letter_opener_web","version":"2.0.0","platform":"ruby","checksum":"33860ad41e1785d75456500e8ca8bba8ed71ee6eaf08a98d06bbab67c5577b6f"}, {"name":"libyajl2","version":"1.2.0","platform":"ruby","checksum":"1117cd1e48db013b626e36269bbf1cef210538ca6d2e62d3fa3db9ded005b258"}, @@ -329,7 +342,7 @@ {"name":"lookbook","version":"1.5.3","platform":"ruby","checksum":"4a0ff475af85de0dcdf45a5541fbc40dd8f66669a559efe8297c1d7fee028b38"}, {"name":"lru_redux","version":"1.1.0","platform":"ruby","checksum":"ee71d0ccab164c51de146c27b480a68b3631d5b4297b8ffe8eda1c72de87affb"}, {"name":"lumberjack","version":"1.2.7","platform":"ruby","checksum":"a5c6aae6b4234f1420dbcd80b23e3bca0817bd239440dde097ebe3fa63c63b1f"}, -{"name":"mail","version":"2.7.1","platform":"ruby","checksum":"ec2a3d489f7510b90d8eaa3f6abaad7038cf1d663cdf8ee66d0214a0bdf99c03"}, +{"name":"mail","version":"2.8.1","platform":"ruby","checksum":"ec3b9fadcf2b3755c78785cb17bc9a0ca9ee9857108a64b6f5cfc9c0b5bfc9ad"}, {"name":"marcel","version":"1.0.2","platform":"ruby","checksum":"a013b677ef46cbcb49fd5c59b3d35803d2ee04dd75d8bfdc43533fc5a31f7e4e"}, {"name":"marginalia","version":"1.11.1","platform":"ruby","checksum":"cb63212ab63e42746e27595e912cb20408a1a28bcd0edde55d15b7c45fa289cf"}, {"name":"memoist","version":"0.16.2","platform":"ruby","checksum":"a52c53a3f25b5875151670b2f3fd44388633486dc0f09f9a7150ead1e3bf3c45"}, @@ -360,25 +373,29 @@ {"name":"nap","version":"1.1.0","platform":"ruby","checksum":"949691660f9d041d75be611bb2a8d2fd559c467537deac241f4097d9b5eea576"}, {"name":"nenv","version":"0.3.0","platform":"ruby","checksum":"d9de6d8fb7072228463bf61843159419c969edb34b3cef51832b516ae7972765"}, {"name":"net-http-persistent","version":"4.0.1","platform":"ruby","checksum":"2752f4cce05fd1c45e0537c6f3a98fa5a4899efd5f88e63c104ed5f05cbddef9"}, +{"name":"net-imap","version":"0.3.4","platform":"ruby","checksum":"a82a59e2a429433dc54cae5a8b2979ffe49da8c66085740811bfa337dc3729b5"}, {"name":"net-ldap","version":"0.17.1","platform":"ruby","checksum":"52571b55f9157120833ac1667f2969ce0139251811d0a9b64657c1c135069cf9"}, {"name":"net-ntp","version":"2.1.3","platform":"ruby","checksum":"5bc73f4102bde0d1872bd3b293608ae99d9f5007d744f21919c6a565eda9267d"}, +{"name":"net-pop","version":"0.1.2","platform":"ruby","checksum":"848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3"}, +{"name":"net-protocol","version":"0.1.3","platform":"ruby","checksum":"ad43e2be965ede676683c047b2c3d76762aa49a764779d98312a10da04622c14"}, {"name":"net-scp","version":"3.0.0","platform":"ruby","checksum":"8fc6c80365b95230c6bfc529dbea3893d2d81724855bfb01cbf385866e1c902c"}, +{"name":"net-smtp","version":"0.3.3","platform":"ruby","checksum":"3d51dcaa981b74aff2d89cbe89de4503bc2d682365ea5176366e950a0d68d5b0"}, {"name":"net-ssh","version":"6.0.0","platform":"ruby","checksum":"6290ddcb232380cae79b772af924e12f57fe1dcd0f71254411dd21c04f7b13d0"}, {"name":"netrc","version":"0.11.0","platform":"ruby","checksum":"de1ce33da8c99ab1d97871726cba75151113f117146becbe45aa85cb3dabee3f"}, {"name":"nio4r","version":"2.5.8","platform":"java","checksum":"b2b1800f6bf7ce4b797ca8b639ad278a99c9c904fb087a91d944f38e4bd71401"}, {"name":"nio4r","version":"2.5.8","platform":"ruby","checksum":"3becb4ad95ab8ac0a9bd2e1b16466869402be62848082bf6329ae9091f276676"}, {"name":"no_proxy_fix","version":"0.1.2","platform":"ruby","checksum":"4e9b4c31bb146de7fcf347dc1087bb13ac2039b56d50aa019e61036256abcd00"}, -{"name":"nokogiri","version":"1.14.1","platform":"aarch64-linux","checksum":"99594e8b94f576644ac640a223d74c79e840218948e963aa635f0254927bff10"}, -{"name":"nokogiri","version":"1.14.1","platform":"arm-linux","checksum":"1dc9b7821e1fa1f3fda40659662e51a4b3692acc4ee6342ee34a6a537fc1d5d8"}, -{"name":"nokogiri","version":"1.14.1","platform":"arm64-darwin","checksum":"1a693df86da8c4c97b01d614470f9c3e10b9c755de8803fbfcfffe0f9dff522a"}, -{"name":"nokogiri","version":"1.14.1","platform":"java","checksum":"c1f87a8f7bc56028deb2aecbb29e9b318405f7c468b29047aede78b41bc735a2"}, -{"name":"nokogiri","version":"1.14.1","platform":"ruby","checksum":"b2db3af7769c29cd77d5f39cd3d0b65ab10975bdecf04be71d683f9c9abe2663"}, -{"name":"nokogiri","version":"1.14.1","platform":"x64-mingw-ucrt","checksum":"2463a1ae0be5f06a10f3f3b374c2b743bff6280db993d488511a19bb7bc7cb7c"}, -{"name":"nokogiri","version":"1.14.1","platform":"x64-mingw32","checksum":"f3a2b0ceedf51d776b39dc759ce191a4df842d7d4f5900c64f33d4753db39877"}, -{"name":"nokogiri","version":"1.14.1","platform":"x86-linux","checksum":"f395d6c28c822b0877cfb0c71781f05243c034b4823359ab25b3288a73b9fc82"}, -{"name":"nokogiri","version":"1.14.1","platform":"x86-mingw32","checksum":"be34b32fe74e82bffca5b1f3df8727c8fdc828762b6dddab53a11cd8f8515785"}, -{"name":"nokogiri","version":"1.14.1","platform":"x86_64-darwin","checksum":"9b14091f77086c4f0f09451ba3acd1b5f7e0076fb34fc536682170fa9f1a5074"}, -{"name":"nokogiri","version":"1.14.1","platform":"x86_64-linux","checksum":"21d234c51582b292e2e1e02e6c30eea9188894348985d6910aa8e993749c0aff"}, +{"name":"nokogiri","version":"1.14.2","platform":"aarch64-linux","checksum":"966acf4f6c1fba10518f86498141cf44265564ac5a65dcc8496b65f8c354f776"}, +{"name":"nokogiri","version":"1.14.2","platform":"arm-linux","checksum":"8a3a35cadae4a800ddc0b967394257343d62196d9d059b54e38cf067981db428"}, +{"name":"nokogiri","version":"1.14.2","platform":"arm64-darwin","checksum":"81404cd014ecb597725c3847523c2ee365191a968d0b5f7d857e03f388c57631"}, +{"name":"nokogiri","version":"1.14.2","platform":"java","checksum":"0a39222af14e75eb0243e8d969345e03b90c0e02b0f33c61f1ebb6ae53538bb5"}, +{"name":"nokogiri","version":"1.14.2","platform":"ruby","checksum":"c765a74aac6cf430a710bb0b6038b8ee11f177393cd6ae8dadc7a44a6e2658b6"}, +{"name":"nokogiri","version":"1.14.2","platform":"x64-mingw-ucrt","checksum":"62a18f9213a0ceeaf563d1bc7ccfd93273323c4356ded58a5617c59bc4635bc5"}, +{"name":"nokogiri","version":"1.14.2","platform":"x64-mingw32","checksum":"54f6ac2c15a7a88f431bb5e23f4616aa8fc97a92eb63336bcf65b7050f2d3be0"}, +{"name":"nokogiri","version":"1.14.2","platform":"x86-linux","checksum":"c42fa0856f01f901954898e28c3c2b4dce0e843056b1b126f441d06e887e1b77"}, +{"name":"nokogiri","version":"1.14.2","platform":"x86-mingw32","checksum":"f940d9c8e47b0f19875465376f2d1c8911bc9489ac9a48c124579819dc4a7f19"}, +{"name":"nokogiri","version":"1.14.2","platform":"x86_64-darwin","checksum":"2508978f5ca28944919973f6300f0a7355fbe72604ab6a6913f1630be1030265"}, +{"name":"nokogiri","version":"1.14.2","platform":"x86_64-linux","checksum":"bc6405e1f3ddac6e401f82d775f1c0c24c6e58c371b3fadaca0596d5d511e476"}, {"name":"notiffany","version":"0.1.3","platform":"ruby","checksum":"d37669605b7f8dcb04e004e6373e2a780b98c776f8eb503ac9578557d7808738"}, {"name":"numerizer","version":"0.2.0","platform":"ruby","checksum":"e58076d5ee5370417b7e52d9cb25836d62acd1b8d9a194c308707986c1705d7b"}, {"name":"oauth","version":"0.5.6","platform":"ruby","checksum":"4085fe28e0c5e2434135e00a6555294fd2a4ff96a98d1bdecdcd619fc6368dff"}, @@ -405,7 +422,7 @@ {"name":"open4","version":"1.3.4","platform":"ruby","checksum":"a1df037310624ecc1ea1d81264b11c83e96d0c3c1c6043108d37d396dcd0f4b1"}, {"name":"openid_connect","version":"1.3.0","platform":"ruby","checksum":"a796855096850cc01140e37ea6ae9fd14f2be818b9b5bc698418063dfe228770"}, {"name":"openssl","version":"2.2.2","platform":"ruby","checksum":"53f72382bac046c36c37049c7ec9d5597d42628d140b5cfbcd61e0226c0ca077"}, -{"name":"openssl-signature_algorithm","version":"0.4.0","platform":"ruby","checksum":"e53a225b773784935249cf4c61238c6cf0e1e464e78ae2f8ddaf995fb22ca991"}, +{"name":"openssl-signature_algorithm","version":"1.3.0","platform":"ruby","checksum":"a3b40b5e8276162d4a6e50c7c97cdaf1446f9b2c3946a6fa2c14628e0c957e80"}, {"name":"opentracing","version":"0.5.0","platform":"ruby","checksum":"deb5d7abe6b0e7631d866d8cb5ee7bb9352650a504a32f61591302bc510b9286"}, {"name":"optimist","version":"3.0.1","platform":"ruby","checksum":"336b753676d6117cad9301fac7e91dab4228f747d4e7179891ad3a163c64e2ed"}, {"name":"org-ruby","version":"0.9.12","platform":"ruby","checksum":"93cbec3a4470cb9dca6a4a98dc276a6434ea9d9e7bc2d42ea33c3aedd5d1c974"}, @@ -430,7 +447,7 @@ {"name":"premailer","version":"1.16.0","platform":"ruby","checksum":"03e4402c448e6bae13fb5f6301a8bde4f3508e1bff90ae7c0972c7be94694786"}, {"name":"premailer-rails","version":"1.10.3","platform":"ruby","checksum":"7cdcb97027866f7a81c490c6d15ada7f39666b5f6375f0821b7e97e0483b112f"}, {"name":"proc_to_ast","version":"0.1.0","platform":"ruby","checksum":"92a73fa66e2250a83f8589f818b0751bcf227c68f85916202df7af85082f8691"}, -{"name":"prometheus-client-mmap","version":"0.17.0","platform":"ruby","checksum":"766d3706f7b26fed5a177843ab15b5b0dc108f9677d8bdbe0c4b5d9375c2af24"}, +{"name":"prometheus-client-mmap","version":"0.19.1","platform":"ruby","checksum":"718b5f1aacab79877b30ae2f897fbf0c6a6d15d7f6e03928abb50a76ba479c7d"}, {"name":"pry","version":"0.14.2","platform":"java","checksum":"fd780670977ba04ff7ee32dabd4d02fe4bf02e977afe8809832d5dca1412862e"}, {"name":"pry","version":"0.14.2","platform":"ruby","checksum":"c4fe54efedaca1d351280b45b8849af363184696fcac1c72e0415f9bdac4334d"}, {"name":"pry-byebug","version":"3.10.1","platform":"ruby","checksum":"c8f975c32255bfdb29e151f5532130be64ff3d0042dc858d0907e849125581f8"}, @@ -491,7 +508,7 @@ {"name":"rexml","version":"3.2.5","platform":"ruby","checksum":"a33c3bf95fda7983ec7f05054f3a985af41dbc25a0339843bd2479e93cabb123"}, {"name":"rinku","version":"2.0.0","platform":"ruby","checksum":"3e695aaf9f24baba3af45823b5c427b58a624582132f18482320e2737f9f8a85"}, {"name":"rotp","version":"6.2.0","platform":"ruby","checksum":"239a2eefba6f1bd4157b2c735d0f975598e0ef94823eea2f35d103d2e5cc0787"}, -{"name":"rouge","version":"3.30.0","platform":"ruby","checksum":"a3d353222aa72e49e2c86726c0bcfd719f82592f57d494474655f48e669eceb6"}, +{"name":"rouge","version":"4.1.0","platform":"ruby","checksum":"0f6fc19a0d66db782f6fa67f56356af4ef001cd43bbd8ad5aa798a081de4dd10"}, {"name":"rqrcode","version":"0.7.0","platform":"ruby","checksum":"8b3a5cba9cc199ba2d781a7c767cb55679f29a3621aa0506a799cec3760d16a1"}, {"name":"rqrcode-rails3","version":"0.1.7","platform":"ruby","checksum":"6f0582f26485123e5ed6f2a8a2871f00d86d353e0f58c8429a5a13212bcf48c4"}, {"name":"rspec","version":"3.12.0","platform":"ruby","checksum":"ccc41799a43509dc0be84070e3f0410ac95cbd480ae7b6c245543eb64162399c"}, @@ -499,7 +516,9 @@ {"name":"rspec-core","version":"3.12.0","platform":"ruby","checksum":"c466f4137966526e177d2156ca45c249eeecc7ed519b23ae2fb80c4675406bc5"}, {"name":"rspec-expectations","version":"3.12.2","platform":"ruby","checksum":"8652db70b25ae3378b7274477a906b6ad1833a7b7cfbb001a03f49dd1c1d6a0d"}, {"name":"rspec-mocks","version":"3.12.3","platform":"ruby","checksum":"cc0a1176707e641a2c66c71fe769486fec57d7df8ec7e34320f8957a1363026b"}, -{"name":"rspec-parameterized","version":"0.5.0","platform":"ruby","checksum":"f163ac07b5edd1eeb13136480623db7020852c70cf0ad2fa98e31384ae162454"}, +{"name":"rspec-parameterized","version":"1.0.0","platform":"ruby","checksum":"9c07b043c72afbd23dd9a1dd48c06f46bc2fb1a6d875c6703e254932ba28b386"}, +{"name":"rspec-parameterized-core","version":"1.0.0","platform":"ruby","checksum":"287b494985e79821160af63aba4f91db8dbfa9a21cb200db34ba38f40e16ccc1"}, +{"name":"rspec-parameterized-table_syntax","version":"1.0.0","platform":"ruby","checksum":"d7df951eff9c5dd367ca7d5f9ae4853bb7ab7941f9d5b35bba361d112704988c"}, {"name":"rspec-rails","version":"6.0.1","platform":"ruby","checksum":"016c8ebd5b38ce5cbce949de2f5b28f2bde7bb78d4de26940516713597b26e34"}, {"name":"rspec-retry","version":"0.6.1","platform":"ruby","checksum":"86b7e8513c5b0c713c2e28854f4d996deb8efa6304eef50f0ad68ee6c563d8da"}, {"name":"rspec-support","version":"3.12.0","platform":"ruby","checksum":"dd4d44b247ff679b95b5607ac5641d197a5f9b1d33f916123cb98fc5f917c58b"}, @@ -513,7 +532,7 @@ {"name":"rubocop-rails","version":"2.17.4","platform":"ruby","checksum":"8004149a14372d3d6cededd000357879fa7eb0421403a7a26bc717e2a98bbedb"}, {"name":"rubocop-rspec","version":"2.18.1","platform":"ruby","checksum":"41c6455630fc98b809ebca047413389e2b7e3f68975028365c07bfea878db5ee"}, {"name":"ruby-fogbugz","version":"0.3.0","platform":"ruby","checksum":"5e04cde474648f498a71cf1e1a7ab42c66b953862fbe224f793ec0a7a1d5f657"}, -{"name":"ruby-magic","version":"0.5.4","platform":"ruby","checksum":"2c17b185130d10a83791f63a40baa358c4b138af37da3f4dab53690121c421d5"}, +{"name":"ruby-magic","version":"0.6.0","platform":"ruby","checksum":"7b2138877b7d23aff812c95564eba6473b74b815ef85beb0eb792e729a2b6101"}, {"name":"ruby-progressbar","version":"1.11.0","platform":"ruby","checksum":"cc127db3866dc414ffccbf92928a241e585b3aa2b758a5563e74a6ee0f57d50a"}, {"name":"ruby-saml","version":"1.13.0","platform":"ruby","checksum":"d31cbdf5fb8fdd6aa3187e48dba3085cfeb751af30276a5739aa3659a66f069c"}, {"name":"ruby-statistics","version":"3.0.0","platform":"ruby","checksum":"610301370346931cb701e3a8d3d3e28eb65681162cae6066c0c11abf20efdc81"}, @@ -533,7 +552,6 @@ {"name":"sassc-rails","version":"2.1.0","platform":"ruby","checksum":"764dcc74e06930e3483caf0d595084d11f2b0fefd6539abf487cdddfba6cafa2"}, {"name":"sawyer","version":"0.9.2","platform":"ruby","checksum":"fa3a72d62a4525517b18857ddb78926aab3424de0129be6772a8e2ba240e7aca"}, {"name":"sd_notify","version":"0.1.1","platform":"ruby","checksum":"cbc7ac6caa7cedd26b30a72b5eeb6f36050dc0752df263452ea24fb5a4ad3131"}, -{"name":"securecompare","version":"1.0.0","platform":"ruby","checksum":"cb0c6599deaaedf6d28f8d88538b06e7198c4826b1b8edb1dbeb44a2162fc62b"}, {"name":"seed-fu","version":"2.3.7","platform":"ruby","checksum":"f19673443e9af799b730e3d4eca6a89b39e5a36825015dffd00d02ea3365cf74"}, {"name":"selenium-webdriver","version":"3.142.7","platform":"ruby","checksum":"dea0993e0e4fdb364f0453144814c0e6099a411d17396807c6cac666d0ddac29"}, {"name":"sentry-rails","version":"5.1.1","platform":"ruby","checksum":"906ef0a776ddc35884ab8b548856ba81c607e3fdee7c9c9f7c44efccc16a657f"}, @@ -580,7 +598,7 @@ {"name":"sqlite3","version":"1.6.0","platform":"x86_64-linux","checksum":"a2488dcf0e72928bab2b15b934113ce8d7a3b4031277e362d66e40956d5c709e"}, {"name":"ssh_data","version":"1.3.0","platform":"ruby","checksum":"ec7c1e95a3aebeee412147998f4c147b4b05da6ed0aafda6083f9449318eaac0"}, {"name":"ssrf_filter","version":"1.0.8","platform":"ruby","checksum":"03f49f54837e407d43ee93ec733a8a94dc1bcf8185647ac61606e63aaedaa0db"}, -{"name":"stackprof","version":"0.2.21","platform":"ruby","checksum":"2b6406c55dc2e134b2789c4cc631d96e67da87821a166f4ae12f15bec5cff5ae"}, +{"name":"stackprof","version":"0.2.23","platform":"ruby","checksum":"5c930b229c27bc64a2a0eb5e7203d76756ba0567bad7bf5290921ee1ed50230b"}, {"name":"state_machines","version":"0.5.0","platform":"ruby","checksum":"23e6249d374a920b528dccade403518b4abbd83841a3e2c9ef13e6f1a009b102"}, {"name":"state_machines-activemodel","version":"0.8.0","platform":"ruby","checksum":"e932dab190d4be044fb5f9cab01a3ea0b092c5f113d4676c6c0a0d49bf738d2c"}, {"name":"state_machines-activerecord","version":"0.8.0","platform":"ruby","checksum":"072fb701b8ab03de0608297f6c55dc34ed096e556fa8f77e556f3c461c71aab6"}, @@ -601,20 +619,23 @@ {"name":"test_file_finder","version":"0.1.4","platform":"ruby","checksum":"bc36d8339eac4fb9dc36514a7c5f4d389ac2fb6d010716fc715c5c8fbb98eacd"}, {"name":"text","version":"1.3.1","platform":"ruby","checksum":"2fbbbc82c1ce79c4195b13018a87cbb00d762bda39241bb3cdc32792759dd3f4"}, {"name":"thor","version":"1.2.1","platform":"ruby","checksum":"b1752153dc9c6b8d3fcaa665e9e1a00a3e73f28da5e238b81c404502e539d446"}, +{"name":"thread_safe","version":"0.3.6","platform":"java","checksum":"bb28394cd0924c068981adee71f36a81c85c92e7d74d3f62372bd51489a0e0c2"}, +{"name":"thread_safe","version":"0.3.6","platform":"ruby","checksum":"9ed7072821b51c57e8d6b7011a8e282e25aeea3a4065eab326e43f66f063b05a"}, {"name":"thrift","version":"0.16.0","platform":"ruby","checksum":"d023286ea89e30444c9f1c28dd76107f87d8aaf85fe1742da1d8cd3b5417dcce"}, {"name":"tilt","version":"2.0.11","platform":"ruby","checksum":"7b180fc472cbdeb186c85d31c0f2d1e61a2c0d77e1d9fd0ca28482a9d972d6a0"}, {"name":"timeliness","version":"0.3.10","platform":"ruby","checksum":"c357233ce19dc53148e8b29dfddde134689f18f52b32928e9dfe12ebcf4a773f"}, +{"name":"timeout","version":"0.3.2","platform":"ruby","checksum":"269b765ea2fb052fc2bfb8d3be2c90d60fe1161f92bf971c91d6151b8a6bcddd"}, {"name":"timfel-krb5-auth","version":"0.8.3","platform":"ruby","checksum":"ab388c9d747fa3cd95baf2cc1c03253e372d8c680adcc543670f4f099854bb80"}, {"name":"tins","version":"1.31.1","platform":"ruby","checksum":"51c4a347c25c630d310cbc2c040ffb84e266c8227f2ade881f1130ee4f9fbecf"}, {"name":"toml-rb","version":"2.2.0","platform":"ruby","checksum":"a1e2c54ac3cc9d49861004f75f0648b3622ac03a76abe105358c31553227d9a6"}, {"name":"tomlrb","version":"1.3.0","platform":"ruby","checksum":"68666bf53fa70ba686a48a7435ce7e086f5227c58c4c993bd9792f4760f2a503"}, -{"name":"tpm-key_attestation","version":"0.9.0","platform":"ruby","checksum":"e469ad9111a68dab4d04596e1c0621d7c877c2e3e247f765af3c04f1adf2b8cd"}, +{"name":"tpm-key_attestation","version":"0.12.0","platform":"ruby","checksum":"e133d80cf24fef0e7a7dfad00fd6aeff01fc79875fbfc66cd8537bbd622b1e6d"}, {"name":"trailblazer-option","version":"0.1.2","platform":"ruby","checksum":"20e4f12ea4e1f718c8007e7944ca21a329eee4eed9e0fa5dde6e8ad8ac4344a3"}, {"name":"train-core","version":"3.4.9","platform":"ruby","checksum":"d7ad8fa9a379c43a30baaaf1141af1cb28349d386c054f7fc81d169a625d6edd"}, {"name":"truncato","version":"0.7.12","platform":"ruby","checksum":"fed9e8a04fa35fd1a64506cd2089761bae4adfe47e756c3ce98a5c43856c9c4c"}, {"name":"tty-color","version":"0.6.0","platform":"ruby","checksum":"6f9c37ca3a4e2367fb2e6d09722762647d6f455c111f05b59f35730eeb24332a"}, {"name":"tty-cursor","version":"0.7.1","platform":"ruby","checksum":"79534185e6a777888d88628b14b6a1fdf5154a603f285f80b1753e1908e0bf48"}, -{"name":"tty-markdown","version":"0.7.1","platform":"ruby","checksum":"062face5613adc2ec3d500e4c06e6b090699a97cad62d9dfa55d645f60ebdc92"}, +{"name":"tty-markdown","version":"0.7.2","platform":"ruby","checksum":"1ed81db97028d006ba81e2cfd9fe0a04b0eb28650ad0d4086ed6e5627f4ac511"}, {"name":"tty-prompt","version":"0.23.1","platform":"ruby","checksum":"fcdbce905238993f27eecfdf67597a636bc839d92192f6a0eef22b8166449ec8"}, {"name":"tty-reader","version":"0.9.0","platform":"ruby","checksum":"c62972c985c0b1566f0e56743b6a7882f979d3dc32ff491ed490a076f899c2b1"}, {"name":"tty-screen","version":"0.8.1","platform":"ruby","checksum":"6508657c38f32bdca64880abe201ce237d80c94146e1f9b911cba3c7823659a2"}, @@ -633,7 +654,7 @@ {"name":"unicode_utils","version":"1.4.0","platform":"ruby","checksum":"b922d0cf2313b6b7136ada6645ce7154ffc86418ca07d53b058efe9eb72f2a40"}, {"name":"uniform_notifier","version":"1.16.0","platform":"ruby","checksum":"99b39ee4a0864e3b49f375b5e5803eb26d35ed6eb1719c96407573a87bc4dbb5"}, {"name":"unleash","version":"3.2.2","platform":"ruby","checksum":"0f6e56498de920de66a01bceffb93933693ade646bb853fc70eb16bd1026b93b"}, -{"name":"unparser","version":"0.6.0","platform":"ruby","checksum":"4afa0540583032d28a623e65f057809fdbed6dc84bd8a1de93262e1aa4618608"}, +{"name":"unparser","version":"0.6.7","platform":"ruby","checksum":"ae42e73edfa273766e66c166368fb75ca5972cd8ec50c536253e0f6299a9dec8"}, {"name":"uri_template","version":"0.7.0","platform":"ruby","checksum":"312c8fe13700db86ac9d05ea997af3db03abdf50c65b1801d775bc7a695f185d"}, {"name":"valid_email","version":"0.1.3","platform":"ruby","checksum":"b81452b51b64c4beb67913f68db52c20ecb4d73d45512f5b282ab4a3f4416570"}, {"name":"validate_email","version":"0.1.6","platform":"ruby","checksum":"9dfe9016d527b17a8d3a6e95e4dc50a125400eef899d13d4cc2a254393f82ee4"}, @@ -642,10 +663,11 @@ {"name":"version_gem","version":"1.1.0","platform":"ruby","checksum":"6b009518020db57f51ec7b410213fae2bf692baea9f1b51770db97fbc93d9a80"}, {"name":"version_sorter","version":"2.3.0","platform":"ruby","checksum":"2147f2a1a3804fbb8f60d268b7d7c1ec717e6dd727ffe2c165b4e05e82efe1da"}, {"name":"view_component","version":"2.74.1","platform":"ruby","checksum":"0bbd47a9c11455a45043dc01aa604db708654718a4d8755c911425482e8392c0"}, +{"name":"virtus","version":"2.0.0","platform":"ruby","checksum":"8841dae4eb7fcc097320ba5ea516bf1839e5d056c61ee27138aa4bddd6e3d1c2"}, {"name":"vmstat","version":"2.3.0","platform":"ruby","checksum":"ab5446a3e3bd0a9cdb9d9ac69a0bbd119c4f161d945a0846a519dd7018af656d"}, {"name":"warden","version":"1.2.9","platform":"ruby","checksum":"46684f885d35a69dbb883deabf85a222c8e427a957804719e143005df7a1efd0"}, {"name":"warning","version":"1.3.0","platform":"ruby","checksum":"23695a5d8e50bd5c46068931b529bee0b28e4982cbcefbe77d867800dde8069e"}, -{"name":"webauthn","version":"2.3.0","platform":"ruby","checksum":"96fbee59f4a45219f1dae96f467b693de144f871be9ec6ea357168624dacd89e"}, +{"name":"webauthn","version":"3.0.0","platform":"ruby","checksum":"3f77d422c2a8a4b31e56cf42f83414bd066e0506e9896936e1730262dc4a20e6"}, {"name":"webfinger","version":"1.2.0","platform":"ruby","checksum":"7814ef1c85da47514f65c6e5ca14205fa9ce41ea2a70785e0c872842162852a2"}, {"name":"webmock","version":"3.9.1","platform":"ruby","checksum":"bcf6822456b234fb1bed2b0a89bff31fe0641214b44f6ba4ced2b824cf31337d"}, {"name":"webrick","version":"1.6.1","platform":"ruby","checksum":"0b4d1eab918f5f53333c690ad470825e51844ce9851e403a3fd47d6a84d9d67c"}, diff --git a/Gemfile.lock b/Gemfile.lock index c988145616..b624e39085 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,6 +10,15 @@ PATH bundler-checksum (0.1.0) bundler +PATH + remote: vendor/gems/cloud_profiler_agent + specs: + cloud_profiler_agent (0.0.1.pre) + google-cloud-profiler-v2 (~> 0.3) + google-protobuf (~> 3.13) + googleauth (>= 0.14) + stackprof (~> 0.2) + PATH remote: vendor/gems/devise-pbkdf2-encryptable specs: @@ -30,15 +39,6 @@ PATH diffy (~> 3.4) oj (~> 3.13.16) -PATH - remote: vendor/gems/kubeclient - specs: - kubeclient (4.9.4.pre.gitlab1) - http (>= 3.0, < 6.0) - jsonpath (~> 1.0) - recursive-open-struct (~> 1.1, >= 1.1.1) - rest-client (~> 2.0) - PATH remote: vendor/gems/mail-smtp_pool specs: @@ -184,10 +184,10 @@ GEM faraday_middleware (~> 1.0) faraday_middleware-multi_json (~> 0.0) oauth2 (>= 1.4, < 3) - asciidoctor (2.0.17) + asciidoctor (2.0.18) asciidoctor-include-ext (0.4.0) asciidoctor (>= 1.5.6, < 3.0.0) - asciidoctor-kroki (0.7.0) + asciidoctor-kroki (0.8.0) asciidoctor (~> 2.0) asciidoctor-plantuml (0.0.16) asciidoctor (>= 2.0.17, < 3.0.0) @@ -198,13 +198,13 @@ GEM autoprefixer-rails (10.2.5.1) execjs (> 0) awesome_print (1.9.2) - awrence (1.1.1) + awrence (1.2.1) aws-eventstream (1.2.0) - aws-partitions (1.703.0) + aws-partitions (1.730.0) aws-sdk-cloudformation (1.41.0) aws-sdk-core (~> 3, >= 3.99.0) aws-sigv4 (~> 1.1) - aws-sdk-core (3.170.0) + aws-sdk-core (3.170.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) @@ -218,6 +218,17 @@ GEM aws-sigv4 (~> 1.4) aws-sigv4 (1.5.1) aws-eventstream (~> 1, >= 1.0.2) + axe-core-api (4.6.0) + dumb_delegator + virtus + axe-core-rspec (4.6.0) + axe-core-api + dumb_delegator + virtus + axiom-types (0.1.1) + descendants_tracker (~> 0.0.4) + ice_nine (~> 0.11.0) + thread_safe (~> 0.3, >= 0.3.1) azure-storage-blob (2.0.3) azure-storage-common (~> 2.0) nokogiri (~> 1, >= 1.10.8) @@ -232,7 +243,7 @@ GEM batch-loader (2.0.1) bcrypt (3.1.16) benchmark (0.2.0) - benchmark-ips (2.3.0) + benchmark-ips (2.11.0) benchmark-malloc (0.2.0) benchmark-memory (0.2.0) memory_profiler (~> 1) @@ -243,7 +254,8 @@ GEM erubi (>= 1.0.0) rack (>= 0.9.0) bindata (2.4.11) - binding_ninja (0.2.3) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) bootsnap (1.16.0) msgpack (~> 1.2) browser (5.3.1) @@ -292,15 +304,17 @@ GEM nap open4 (~> 1.3) coderay (1.1.3) + coercible (1.0.0) + descendants_tracker (~> 0.0.1) colored2 (3.1.2) commonmarker (0.23.6) concurrent-ruby (1.2.0) connection_pool (2.3.0) cork (0.3.0) colored2 (~> 3.1) - cose (1.0.0) + cose (1.3.0) cbor (~> 0.5.9) - openssl-signature_algorithm (~> 0.4.0) + openssl-signature_algorithm (~> 1.0) countries (4.0.1) i18n_data (~> 0.13.0) sixarm_ruby_unaccent (~> 1.1) @@ -310,7 +324,7 @@ GEM creole (0.5.0) crystalball (0.7.0) git - css_parser (1.12.0) + css_parser (1.14.0) addressable cvss-suite (3.0.1) danger (8.6.1) @@ -330,13 +344,13 @@ GEM danger gitlab (~> 4.2, >= 4.2.0) database_cleaner (1.7.0) + date (3.3.3) dead_end (3.1.1) + debug_inspector (1.1.0) deckar01-task_list (2.3.2) html-pipeline declarative (0.0.20) declarative_policy (1.1.0) - default_value_for (3.4.0) - activerecord (>= 3.2.0, < 7.0) deprecation_toolkit (1.5.1) activesupport (>= 4.2) derailed_benchmarks (2.1.2) @@ -351,6 +365,8 @@ GEM rake (> 10, < 14) ruby-statistics (>= 2.1) thor (>= 0.19, < 2) + descendants_tracker (0.0.4) + thread_safe (~> 0.3, >= 0.3.1) device_detector (1.0.0) devise (4.8.1) bcrypt (~> 3.0) @@ -400,6 +416,8 @@ GEM dry-equalizer (~> 0.3) dry-inflector (~> 0.1, >= 0.1.2) dry-logic (~> 1.0, >= 1.0.2) + dumb_delegator (1.0.0) + duo_api (1.3.0) e2mmap (0.1.0) ecma-re-validator (0.3.0) regexp_parser (~> 2.0) @@ -502,7 +520,7 @@ GEM fog-json ipaddress (~> 0.8) xml-simple (~> 1.1) - fog-aws (3.15.0) + fog-aws (3.18.0) fog-core (~> 2.1) fog-json (~> 1.1) fog-xml (~> 0.1) @@ -528,15 +546,6 @@ GEM multi_json (~> 1.10) fog-local (0.8.0) fog-core (>= 1.27, < 3.0) - fog-openstack (1.0.8) - fog-core (~> 2.1) - fog-json (>= 1.0) - ipaddress (>= 0.8) - fog-rackspace (0.1.1) - fog-core (>= 1.35) - fog-json (>= 1.0) - fog-xml (>= 0.1) - ipaddress (>= 0.8) fog-xml (0.1.3) fog-core nokogiri (>= 1.5.11, < 2.0.0) @@ -548,6 +557,14 @@ GEM rspec-core (~> 3.0) ruby-progressbar (~> 1.4) fuzzyurl (0.9.0) + gapic-common (0.18.0) + faraday (>= 1.9, < 3.a) + faraday-retry (>= 1.0, < 3.a) + google-protobuf (~> 3.14) + googleapis-common-protos (>= 1.3.12, < 2.a) + googleapis-common-protos-types (>= 1.3.1, < 2.a) + googleauth (~> 1.0) + grpc (~> 1.36) gemoji (3.0.1) get_process_mem (0.2.7) ffi (~> 1.0) @@ -570,7 +587,7 @@ GEM terminal-table (>= 1.5.1) gitlab-chronic (0.10.5) numerizer (~> 0.2) - gitlab-dangerfiles (3.7.0) + gitlab-dangerfiles (3.8.0) danger (>= 8.4.5) danger-gitlab (>= 8.0.0) rake @@ -584,7 +601,7 @@ GEM fog-json (~> 1.2.0) mime-types ms_rest_azure (~> 0.12.0) - gitlab-labkit (0.30.1) + gitlab-labkit (0.31.1) actionpack (>= 5.0.0, < 8.0.0) activesupport (>= 5.0.0, < 8.0.0) grpc (>= 1.37) @@ -660,6 +677,9 @@ GEM google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) google-cloud-errors (1.3.0) + google-cloud-profiler-v2 (0.4.0) + gapic-common (>= 0.18.0, < 2.a) + google-cloud-errors (~> 1.0) google-cloud-storage (1.44.0) addressable (~> 2.8) digest-crc (~> 0.4) @@ -668,8 +688,12 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - google-protobuf (3.21.12) - googleapis-common-protos-types (1.3.0) + google-protobuf (3.22.2) + googleapis-common-protos (1.4.0) + google-protobuf (~> 3.14) + googleapis-common-protos-types (~> 1.2) + grpc (~> 1.27) + googleapis-common-protos-types (1.5.0) google-protobuf (~> 3.14) googleauth (1.3.0) faraday (>= 0.17.3, < 3.a) @@ -770,7 +794,7 @@ GEM nokogiri (~> 1.6) htmlbeautifier (1.4.2) htmlentities (4.3.4) - http (5.1.0) + http (5.1.1) addressable (~> 2.8) http-cookie (~> 1.0) http-form_data (~> 2.2) @@ -789,6 +813,7 @@ GEM icalendar (2.8.0) ice_cube (~> 0.16) ice_cube (0.16.4) + ice_nine (0.11.2) imagen (0.1.8) parser (>= 2.5, != 2.5.1.1) invisible_captcha (2.0.0) @@ -843,9 +868,14 @@ GEM rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) + kubeclient (4.11.0) + http (>= 3.0, < 6.0) + jsonpath (~> 1.0) + recursive-open-struct (~> 1.1, >= 1.1.1) + rest-client (~> 2.0) launchy (2.5.0) addressable (~> 2.7) - lefthook (1.2.9) + lefthook (1.3.3) letter_opener (1.7.0) launchy (~> 2.2) letter_opener_web (2.0.0) @@ -898,8 +928,11 @@ GEM zeitwerk (~> 2.5) lru_redux (1.1.0) lumberjack (1.2.7) - mail (2.7.1) + mail (2.8.1) mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp marcel (1.0.2) marginalia (1.11.1) actionpack (>= 5.2) @@ -943,15 +976,24 @@ GEM nenv (0.3.0) net-http-persistent (4.0.1) connection_pool (~> 2.2) + net-imap (0.3.4) + date + net-protocol net-ldap (0.17.1) net-ntp (2.1.3) + net-pop (0.1.2) + net-protocol + net-protocol (0.1.3) + timeout net-scp (3.0.0) net-ssh (>= 2.6.5, < 7.0.0) + net-smtp (0.3.3) + net-protocol net-ssh (6.0.0) netrc (0.11.0) nio4r (2.5.8) no_proxy_fix (0.1.2) - nokogiri (1.14.1) + nokogiri (1.14.2) mini_portile2 (~> 2.8.0) racc (~> 1.4) notiffany (0.1.3) @@ -1041,7 +1083,8 @@ GEM webfinger (>= 1.0.1) openssl (2.2.2) ipaddr - openssl-signature_algorithm (0.4.0) + openssl-signature_algorithm (1.3.0) + openssl (> 2.0) opentracing (0.5.0) optimist (3.0.1) org-ruby (0.9.12) @@ -1097,7 +1140,7 @@ GEM coderay parser unparser - prometheus-client-mmap (0.17.0) + prometheus-client-mmap (0.19.1) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) @@ -1223,7 +1266,7 @@ GEM rexml (3.2.5) rinku (2.0.0) rotp (6.2.0) - rouge (3.30.0) + rouge (4.1.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -1245,12 +1288,17 @@ GEM rspec-mocks (3.12.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-parameterized (0.5.0) - binding_ninja (>= 0.2.3) + rspec-parameterized (1.0.0) + rspec-parameterized-core (< 2) + rspec-parameterized-table_syntax (< 2) + rspec-parameterized-core (1.0.0) parser proc_to_ast rspec (>= 2.13, < 4) unparser + rspec-parameterized-table_syntax (1.0.0) + binding_of_caller + rspec-parameterized-core (< 2) rspec-rails (6.0.1) actionpack (>= 6.1) activesupport (>= 6.1) @@ -1298,8 +1346,8 @@ GEM ruby-fogbugz (0.3.0) crack (~> 0.4) multipart-post (~> 2.0) - ruby-magic (0.5.4) - mini_portile2 (~> 2.6) + ruby-magic (0.6.0) + mini_portile2 (~> 2.8) ruby-progressbar (1.11.0) ruby-saml (1.13.0) nokogiri (>= 1.10.5) @@ -1335,7 +1383,6 @@ GEM addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) sd_notify (0.1.1) - securecompare (1.0.0) seed-fu (2.3.7) activerecord (>= 3.1) activesupport (>= 3.1) @@ -1425,7 +1472,7 @@ GEM mini_portile2 (~> 2.8.0) ssh_data (1.3.0) ssrf_filter (1.0.8) - stackprof (0.2.21) + stackprof (0.2.23) state_machines (0.5.0) state_machines-activemodel (0.8.0) activemodel (>= 5.1) @@ -1463,18 +1510,21 @@ GEM faraday (~> 1.0) text (1.3.1) thor (1.2.1) + thread_safe (0.3.6) thrift (0.16.0) tilt (2.0.11) timeliness (0.3.10) + timeout (0.3.2) timfel-krb5-auth (0.8.3) tins (1.31.1) sync toml-rb (2.2.0) citrus (~> 3.0, > 3.0) tomlrb (1.3.0) - tpm-key_attestation (0.9.0) + tpm-key_attestation (0.12.0) bindata (~> 2.4) - openssl-signature_algorithm (~> 0.4.0) + openssl (> 2.0) + openssl-signature_algorithm (~> 1.0) trailblazer-option (0.1.2) train-core (3.4.9) addressable (~> 2.5) @@ -1488,10 +1538,10 @@ GEM nokogiri (>= 1.7.0, <= 2.0) tty-color (0.6.0) tty-cursor (0.7.1) - tty-markdown (0.7.1) + tty-markdown (0.7.2) kramdown (>= 1.16.2, < 3.0) pastel (~> 0.8) - rouge (~> 3.14) + rouge (>= 3.14, < 5.0) strings (~> 0.2.0) tty-color (~> 0.5) tty-screen (~> 0.8) @@ -1521,9 +1571,9 @@ GEM uniform_notifier (1.16.0) unleash (3.2.2) murmurhash3 (~> 0.1.6) - unparser (0.6.0) + unparser (0.6.7) diff-lcs (~> 1.3) - parser (>= 3.0.0) + parser (>= 3.2.0) uri_template (0.7.0) valid_email (0.1.3) activemodel @@ -1543,20 +1593,23 @@ GEM activesupport (>= 5.0.0, < 8.0) concurrent-ruby (~> 1.0) method_source (~> 1.0) + virtus (2.0.0) + axiom-types (~> 0.1) + coercible (~> 1.0) + descendants_tracker (~> 0.0, >= 0.0.3) vmstat (2.3.0) warden (1.2.9) rack (>= 2.0.9) warning (1.3.0) - webauthn (2.3.0) + webauthn (3.0.0) android_key_attestation (~> 0.3.0) awrence (~> 1.1) bindata (~> 2.4) cbor (~> 0.5.9) - cose (~> 1.0) - openssl (~> 2.0) + cose (~> 1.1) + openssl (>= 2.2) safety_net_attestation (~> 0.4.0) - securecompare (~> 1.0) - tpm-key_attestation (~> 0.9.0) + tpm-key_attestation (~> 0.12.0) webfinger (1.2.0) activesupport httpclient (>= 2.4) @@ -1587,7 +1640,7 @@ PLATFORMS ruby DEPENDENCIES - CFPropertyList + CFPropertyList (~> 3.0.0) RedCloth (~> 4.3.2) acme-client (~> 2.0) activerecord-explain-analyze (~> 0.1) @@ -1598,22 +1651,23 @@ DEPENDENCIES app_store_connect arr-pm (~> 0.0.12) asana (~> 0.10.13) - asciidoctor (~> 2.0.17) + asciidoctor (~> 2.0.18) asciidoctor-include-ext (~> 0.4.0) - asciidoctor-kroki (~> 0.7.0) + asciidoctor-kroki (~> 0.8.0) asciidoctor-plantuml (~> 0.0.16) atlassian-jwt (~> 0.2.0) attr_encrypted (~> 3.2.4)! autoprefixer-rails (= 10.2.5.1) awesome_print aws-sdk-cloudformation (~> 1) - aws-sdk-core (~> 3.170.0) + aws-sdk-core (~> 3.170.1) aws-sdk-s3 (~> 1.119.1) + axe-core-rspec babosa (~> 1.0.4) base32 (~> 0.3.0) batch-loader (~> 2.0.1) bcrypt (~> 3.1, >= 3.1.14) - benchmark-ips (~> 2.3.0) + benchmark-ips (~> 2.11.0) benchmark-memory (~> 0.1) better_errors (~> 2.9.1) bootsnap (~> 1.16.0) @@ -1625,6 +1679,7 @@ DEPENDENCIES capybara-screenshot (~> 1.0.22) carrierwave (~> 1.3) charlock_holmes (~> 0.7.7) + cloud_profiler_agent (~> 0.0.0)! commonmarker (~> 0.23.6) concurrent-ruby (~> 1.1) connection_pool (~> 2.0) @@ -1635,7 +1690,6 @@ DEPENDENCIES database_cleaner (~> 1.7.0) deckar01-task_list (= 2.3.2) declarative_policy (~> 1.1.0) - default_value_for (~> 3.4.0) deprecation_toolkit (~> 1.5.1) derailed_benchmarks device_detector @@ -1647,6 +1701,7 @@ DEPENDENCIES discordrb-webhooks (~> 3.4) doorkeeper (~> 5.5) doorkeeper-openid_connect (~> 1.8) + duo_api (~> 1.3) ed25519 (~> 1.3.0) elasticsearch-api (= 7.13.3) elasticsearch-model (~> 7.2) @@ -1663,12 +1718,10 @@ DEPENDENCIES flipper-active_record (~> 0.25.0) flipper-active_support_cache_store (~> 0.25.0) fog-aliyun (~> 0.4) - fog-aws (~> 3.15) + fog-aws (~> 3.18) fog-core (= 2.1.0) fog-google (~> 1.19) fog-local (~> 0.8) - fog-openstack (~> 1.0) - fog-rackspace (~> 0.1.1) fugit (~> 1.8.1) fuubar (~> 2.2.0) gettext (~> 3.3) @@ -1676,10 +1729,10 @@ DEPENDENCIES gettext_i18n_rails_js (~> 1.3) gitaly (~> 15.9.0.pre.rc3) gitlab-chronic (~> 0.10.5) - gitlab-dangerfiles (~> 3.7.0) + gitlab-dangerfiles (~> 3.8.0) gitlab-experiment (~> 0.7.1) gitlab-fog-azure-rm (~> 1.7.0) - gitlab-labkit (~> 0.30.1) + gitlab-labkit (~> 0.31.1) gitlab-license (~> 2.2.1) gitlab-mail_room (~> 0.0.9) gitlab-markup (~> 1.9.0) @@ -1699,7 +1752,7 @@ DEPENDENCIES google-apis-serviceusage_v1 (~> 0.28.0) google-apis-sqladmin_v1beta4 (~> 0.41.0) google-cloud-storage (~> 1.44.0) - google-protobuf (~> 3.21, >= 3.21.12) + google-protobuf (~> 3.22, >= 3.22.2) gpgme (~> 2.0.22) grape (~> 1.5.2) grape-entity (~> 0.10.0) @@ -1737,8 +1790,8 @@ DEPENDENCIES kas-grpc (~> 0.0.2) knapsack (~> 1.21.1) kramdown (~> 2.3.1) - kubeclient (~> 4.9.3)! - lefthook (~> 1.2.9) + kubeclient (~> 4.11.0) + lefthook (~> 1.3.3) letter_opener_web (~> 2.0.0) license_finder (~> 7.0) licensee (~> 9.15) @@ -1748,7 +1801,7 @@ DEPENDENCIES loofah (~> 2.19.1) lookbook (~> 1.5, >= 1.5.3) lru_redux - mail (= 2.7.1) + mail (= 2.8.1) mail-smtp_pool (~> 0.1.0)! marginalia (~> 1.11.1) memory_profiler (~> 1.0) @@ -1758,7 +1811,8 @@ DEPENDENCIES multi_json (~> 1.14.1) net-ldap (~> 0.17.1) net-ntp - nokogiri (~> 1.14.1) + net-protocol (~> 0.1.3) + nokogiri (~> 1.14.2) oauth2 (~> 2.0) octokit (~> 4.15) ohai (~> 16.10) @@ -1793,7 +1847,7 @@ DEPENDENCIES pg_query (~> 2.2, >= 2.2.1) png_quantizator (~> 0.2.1) premailer-rails (~> 1.10.3) - prometheus-client-mmap (~> 0.17) + prometheus-client-mmap (~> 0.19) pry-byebug pry-rails (~> 0.3.9) pry-shell (~> 0.6.1) @@ -1820,17 +1874,17 @@ DEPENDENCIES responders (~> 3.0) retriable (~> 3.1.2) rexml (~> 3.2.5) - rouge (~> 3.30.0) + rouge (~> 4.1.0) rqrcode-rails3 (~> 0.1.7) rspec-benchmark (~> 0.6.0) - rspec-parameterized + rspec-parameterized (~> 1.0) rspec-rails (~> 6.0.1) rspec-retry (~> 0.6.1) rspec_junit_formatter rspec_profiling (~> 0.0.6) rubocop ruby-fogbugz (~> 0.3.0) - ruby-magic (~> 0.5) + ruby-magic (~> 0.6) ruby-progressbar (~> 1.10) ruby-saml (~> 1.13.0) ruby_parser (~> 3.19) @@ -1863,7 +1917,7 @@ DEPENDENCIES sprite-factory (~> 1.7) sprockets (~> 3.7.0) ssh_data (~> 1.3) - stackprof (~> 0.2.21) + stackprof (~> 0.2.23) state_machines-activerecord (~> 0.8.0) sys-filesystem (~> 1.4.3) tanuki_emoji (~> 0.6) @@ -1886,11 +1940,11 @@ DEPENDENCIES view_component (~> 2.74.1) vmstat (~> 2.3.0) warning (~> 1.3.0) - webauthn (~> 2.3) + webauthn (~> 3.0) webmock (~> 3.9.1) webrick (~> 1.6.1) wikicloth (= 0.8.1) yajl-ruby (~> 1.4.3) BUNDLED WITH - 2.4.6 + 2.4.8 diff --git a/README.md b/README.md index 29d5d59997..b61af1b1f4 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Instructions on how to start GitLab and how to run the tests can be found in the GitLab is a Ruby on Rails application that runs on the following software: - Ubuntu/Debian/CentOS/RHEL/OpenSUSE -- Ruby (MRI) 2.7.7 +- Ruby (MRI) 3.0.5 - Git 2.33+ - Redis 5.0+ - PostgreSQL 12+ diff --git a/VERSION b/VERSION index 63e48abe4e..13aef295bb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -15.9.8 \ No newline at end of file +15.10.7 \ No newline at end of file diff --git a/app/assets/images/learn_gitlab/section_code.svg b/app/assets/images/learn_gitlab/section_code.svg new file mode 100644 index 0000000000..da170c93be --- /dev/null +++ b/app/assets/images/learn_gitlab/section_code.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/assets/javascripts/access_tokens/components/new_access_token_app.vue b/app/assets/javascripts/access_tokens/components/new_access_token_app.vue index d24285af5c..02159d4d52 100644 --- a/app/assets/javascripts/access_tokens/components/new_access_token_app.vue +++ b/app/assets/javascripts/access_tokens/components/new_access_token_app.vue @@ -1,6 +1,6 @@ + + diff --git a/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue b/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue new file mode 100644 index 0000000000..b60fe3ae9b --- /dev/null +++ b/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue @@ -0,0 +1,109 @@ + + + diff --git a/app/assets/javascripts/admin/abuse_reports/components/app.vue b/app/assets/javascripts/admin/abuse_reports/components/app.vue new file mode 100644 index 0000000000..e1e75a4f8d --- /dev/null +++ b/app/assets/javascripts/admin/abuse_reports/components/app.vue @@ -0,0 +1,63 @@ + + diff --git a/app/assets/javascripts/admin/abuse_reports/constants.js b/app/assets/javascripts/admin/abuse_reports/constants.js new file mode 100644 index 0000000000..ee2e9ab2cb --- /dev/null +++ b/app/assets/javascripts/admin/abuse_reports/constants.js @@ -0,0 +1,81 @@ +import { getUsers } from '~/rest_api'; +import BaseToken from '~/vue_shared/components/filtered_search_bar/tokens/base_token.vue'; +import UserToken from '~/vue_shared/components/filtered_search_bar/tokens/user_token.vue'; +import { + OPERATORS_IS, + TOKEN_TITLE_STATUS, +} from '~/vue_shared/components/filtered_search_bar/constants'; +import { __ } from '~/locale'; + +const STATUS_OPTIONS = [ + { value: 'closed', title: __('Closed') }, + { value: 'open', title: __('Open') }, +]; + +export const FILTERED_SEARCH_TOKEN_USER = { + type: 'user', + icon: 'user', + title: __('User'), + token: UserToken, + unique: true, + operators: OPERATORS_IS, + fetchUsers: getUsers, + defaultUsers: [], +}; + +export const FILTERED_SEARCH_TOKEN_REPORTER = { + ...FILTERED_SEARCH_TOKEN_USER, + type: 'reporter', + title: __('Reporter'), +}; + +export const FILTERED_SEARCH_TOKEN_STATUS = { + type: 'status', + icon: 'status', + title: TOKEN_TITLE_STATUS, + token: BaseToken, + unique: true, + options: STATUS_OPTIONS, + operators: OPERATORS_IS, +}; + +export const DEFAULT_SORT = 'created_at_desc'; + +export const SORT_OPTIONS = [ + { + id: 10, + title: __('Created date'), + sortDirection: { + descending: DEFAULT_SORT, + ascending: 'created_at_asc', + }, + }, + { + id: 20, + title: __('Updated date'), + sortDirection: { + descending: 'updated_at_desc', + ascending: 'updated_at_asc', + }, + }, +]; + +export const isValidSortKey = (key) => + SORT_OPTIONS.some( + (sort) => sort.sortDirection.ascending === key || sort.sortDirection.descending === key, + ); + +export const FILTERED_SEARCH_TOKEN_CATEGORY = { + type: 'category', + icon: 'label', + title: __('Category'), + token: BaseToken, + unique: true, + operators: OPERATORS_IS, +}; + +export const FILTERED_SEARCH_TOKENS = [ + FILTERED_SEARCH_TOKEN_USER, + FILTERED_SEARCH_TOKEN_REPORTER, + FILTERED_SEARCH_TOKEN_STATUS, +]; diff --git a/app/assets/javascripts/admin/abuse_reports/index.js b/app/assets/javascripts/admin/abuse_reports/index.js new file mode 100644 index 0000000000..dbc466af2d --- /dev/null +++ b/app/assets/javascripts/admin/abuse_reports/index.js @@ -0,0 +1,31 @@ +import Vue from 'vue'; +import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; +import AbuseReportsApp from './components/app.vue'; + +export const initAbuseReportsApp = () => { + const el = document.querySelector('#js-abuse-reports-list-app'); + + if (!el) { + return null; + } + + const { abuseReportsData } = el.dataset; + const { categories, reports, pagination } = convertObjectPropsToCamelCase( + JSON.parse(abuseReportsData), + { + deep: true, + }, + ); + + return new Vue({ + el, + provide: { categories }, + render: (createElement) => + createElement(AbuseReportsApp, { + props: { + abuseReports: reports, + pagination, + }, + }), + }); +}; diff --git a/app/assets/javascripts/admin/abuse_reports/utils.js b/app/assets/javascripts/admin/abuse_reports/utils.js new file mode 100644 index 0000000000..8422190108 --- /dev/null +++ b/app/assets/javascripts/admin/abuse_reports/utils.js @@ -0,0 +1,6 @@ +import { FILTERED_SEARCH_TOKEN_CATEGORY } from './constants'; + +export const buildFilteredSearchCategoryToken = (categories) => { + const options = categories.map((c) => ({ value: c, title: c })); + return { ...FILTERED_SEARCH_TOKEN_CATEGORY, options }; +}; diff --git a/app/assets/javascripts/admin/application_settings/network_outbound.js b/app/assets/javascripts/admin/application_settings/network_outbound.js new file mode 100644 index 0000000000..ad7ed85131 --- /dev/null +++ b/app/assets/javascripts/admin/application_settings/network_outbound.js @@ -0,0 +1,28 @@ +export default () => { + const denyAllRequests = document.querySelector('.js-deny-all-requests'); + + if (!denyAllRequests) { + return; + } + + denyAllRequests.addEventListener('change', () => { + const denyAll = denyAllRequests.checked; + const allowLocalRequests = document.querySelectorAll('.js-allow-local-requests'); + const denyAllRequestsWarning = document.querySelector('.js-deny-all-requests-warning'); + + if (denyAll) { + denyAllRequestsWarning.classList.remove('gl-display-none'); + } else { + denyAllRequestsWarning.classList.add('gl-display-none'); + } + + allowLocalRequests.forEach((allowLocalRequest) => { + /* eslint-disable no-param-reassign */ + if (denyAll) { + allowLocalRequest.checked = false; + } + allowLocalRequest.disabled = denyAll; + /* eslint-enable no-param-reassign */ + }); + }); +}; diff --git a/app/assets/javascripts/admin/broadcast_messages/components/base.vue b/app/assets/javascripts/admin/broadcast_messages/components/base.vue index f869d21d55..c28cd26661 100644 --- a/app/assets/javascripts/admin/broadcast_messages/components/base.vue +++ b/app/assets/javascripts/admin/broadcast_messages/components/base.vue @@ -2,7 +2,7 @@ import { GlPagination } from '@gitlab/ui'; import { redirectTo } from '~/lib/utils/url_utility'; import { buildUrlWithCurrentLocation } from '~/lib/utils/common_utils'; -import { createAlert, VARIANT_DANGER } from '~/flash'; +import { createAlert, VARIANT_DANGER } from '~/alert'; import { s__ } from '~/locale'; import axios from '~/lib/utils/axios_utils'; import { NEW_BROADCAST_MESSAGE } from '../constants'; diff --git a/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue b/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue index 36796708e7..4482198675 100644 --- a/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue +++ b/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue @@ -12,16 +12,19 @@ import { } from '@gitlab/ui'; import axios from '~/lib/utils/axios_utils'; import { s__ } from '~/locale'; -import { createAlert, VARIANT_DANGER } from '~/flash'; +import { createAlert, VARIANT_DANGER } from '~/alert'; import { redirectTo } from '~/lib/utils/url_utility'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; -import { BROADCAST_MESSAGES_PATH, THEMES, TYPES, TYPE_BANNER } from '../constants'; +import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants'; +import SafeHtml from '~/vue_shared/directives/safe_html'; +import { THEMES, TYPES, TYPE_BANNER } from '../constants'; import MessageFormGroup from './message_form_group.vue'; import DatetimePicker from './datetime_picker.vue'; const FORM_HEADERS = { headers: { 'Content-Type': 'application/json; charset=utf-8' } }; export default { + DEFAULT_DEBOUNCE_AND_THROTTLE_MS, name: 'MessageForm', components: { DatetimePicker, @@ -36,8 +39,21 @@ export default { GlFormTextarea, MessageFormGroup, }, + directives: { + SafeHtml, + }, mixins: [glFeatureFlagsMixin()], - inject: ['targetAccessLevelOptions'], + inject: { + targetAccessLevelOptions: { + default: [[]], + }, + messagesPath: { + default: '', + }, + previewPath: { + default: '', + }, + }, i18n: { message: s__('BroadcastMessages|Message'), messagePlaceholder: s__('BroadcastMessages|Your message here'), @@ -81,6 +97,7 @@ export default { })), startsAt: new Date(this.broadcastMessage.startsAt.getTime()), endsAt: new Date(this.broadcastMessage.endsAt.getTime()), + renderedMessage: '', }; }, computed: { @@ -91,15 +108,15 @@ export default { return this.message.trim() === ''; }, messagePreview() { - return this.messageBlank ? this.$options.i18n.messagePlaceholder : this.message; + return this.messageBlank ? this.$options.i18n.messagePlaceholder : this.renderedMessage; }, isAddForm() { return !this.broadcastMessage.id; }, formPath() { return this.isAddForm - ? BROADCAST_MESSAGES_PATH - : `${BROADCAST_MESSAGES_PATH}/${this.broadcastMessage.id}`; + ? this.messagesPath + : `${this.messagesPath}/${this.broadcastMessage.id}`; }, formPayload() { return JSON.stringify({ @@ -114,13 +131,18 @@ export default { }); }, }, + watch: { + message() { + this.renderPreview(); + }, + }, methods: { async onSubmit() { this.loading = true; const success = await this.submitForm(); if (success) { - redirectTo(BROADCAST_MESSAGES_PATH); + redirectTo(this.messagesPath); } else { this.loading = false; } @@ -140,13 +162,31 @@ export default { } return true; }, + + async renderPreview() { + try { + const res = await axios.post(this.previewPath, this.formPayload, FORM_HEADERS); + this.renderedMessage = res.data; + } catch (e) { + this.renderedMessage = ''; + } + }, + }, + safeHtmlConfig: { + ADD_TAGS: ['use'], }, };
-
+
{{ s__('ValueStreamEvent|Stage time (median)') }}
-
{{ pathItem.metric }}
+
{{ pathItem.metric }}
-
+
{{ s__('ValueStreamEvent|Items in stage') }}
-
+
+
+
+ {{ s__('ValueStreamEvent|Only items that reached their stop event.') }} +
+
-
+
{{ s__('ValueStreamEvent|Start') }}
{ @@ -18,7 +24,7 @@ export const setSelectedValueStream = ({ commit, dispatch }, valueStream) => { export const fetchValueStreamStages = ({ commit, state }) => { const { - endpoints: { fullPath }, + namespace: { fullPath }, selectedValueStream: { id }, } = state; commit(types.REQUEST_VALUE_STREAM_STAGES); @@ -41,7 +47,7 @@ export const receiveValueStreamsSuccess = ({ commit, dispatch }, data = []) => { export const fetchValueStreams = ({ commit, dispatch, state }) => { const { - endpoints: { fullPath }, + namespace: { fullPath }, } = state; commit(types.REQUEST_VALUE_STREAMS); @@ -180,7 +186,8 @@ export const initializeVsa = async ({ commit, dispatch }, initialData = {}) => { commit(types.INITIALIZE_VSA, initialData); const { - endpoints: { fullPath, groupPath, milestonesPath = '', labelsPath = '' }, + groupPath, + namespace, selectedAuthor, selectedMilestone, selectedAssigneeList, @@ -189,10 +196,10 @@ export const initializeVsa = async ({ commit, dispatch }, initialData = {}) => { } = initialData; dispatch('filters/setEndpoints', { - labelsEndpoint: labelsPath, - milestonesEndpoint: milestonesPath, + labelsEndpoint: constructPathWithNamespace(namespace, LABELS_ENDPOINT), + milestonesEndpoint: constructPathWithNamespace(namespace, MILESTONES_ENDPOINT), groupEndpoint: groupPath, - projectEndpoint: fullPath, + projectEndpoint: namespace.fullPath, }); dispatch('filters/initialize', { diff --git a/app/assets/javascripts/analytics/cycle_analytics/store/getters.js b/app/assets/javascripts/analytics/cycle_analytics/store/getters.js index 83068cabf0..f5ed922c60 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/store/getters.js +++ b/app/assets/javascripts/analytics/cycle_analytics/store/getters.js @@ -15,11 +15,11 @@ export const pathNavigationData = ({ stages, medians, stageCounts, selectedStage export const requestParams = (state) => { const { - endpoints: { fullPath }, + namespace: { fullPath }, selectedValueStream: { id: valueStreamId }, selectedStage: { id: stageId = null }, } = state; - return { requestPath: fullPath, valueStreamId, stageId }; + return { namespacePath: fullPath, valueStreamId, stageId }; }; export const paginationParams = ({ pagination: { page, sort, direction } }) => ({ diff --git a/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js b/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js index 8567529caf..4af96fc96e 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js +++ b/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js @@ -1,15 +1,16 @@ import Vue from 'vue'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; -import { PAGINATION_SORT_FIELD_END_EVENT, PAGINATION_SORT_DIRECTION_DESC } from '../constants'; import { formatMedianValues } from '../utils'; +import { PAGINATION_SORT_FIELD_END_EVENT, PAGINATION_SORT_DIRECTION_DESC } from '../constants'; import * as types from './mutation_types'; export default { [types.INITIALIZE_VSA]( state, - { endpoints, features, createdBefore, createdAfter, pagination = {} }, + { groupPath, features, createdBefore, createdAfter, pagination = {}, namespace = {} }, ) { - state.endpoints = endpoints; + state.groupPath = groupPath; + state.namespace = namespace; state.createdBefore = createdBefore; state.createdAfter = createdAfter; state.features = features; diff --git a/app/assets/javascripts/analytics/cycle_analytics/store/state.js b/app/assets/javascripts/analytics/cycle_analytics/store/state.js index 00dd2e5388..0c51656c59 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/store/state.js +++ b/app/assets/javascripts/analytics/cycle_analytics/store/state.js @@ -6,7 +6,11 @@ import { export default () => ({ id: null, features: {}, - endpoints: {}, + groupPath: {}, + namespace: { + name: null, + fullPath: null, + }, createdAfter: null, createdBefore: null, stages: [], diff --git a/app/assets/javascripts/analytics/cycle_analytics/utils.js b/app/assets/javascripts/analytics/cycle_analytics/utils.js index 428bb11b95..9265ff952e 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/utils.js +++ b/app/assets/javascripts/analytics/cycle_analytics/utils.js @@ -1,5 +1,6 @@ import { parseSeconds } from '~/lib/utils/datetime_utility'; import { formatTimeAsSummary } from '~/lib/utils/datetime/date_format_utility'; +import { joinPaths } from '~/lib/utils/url_utility'; /** * Takes the stages and median data, combined with the selected stage, to build an @@ -77,7 +78,11 @@ export const filterStagesByHiddenStatus = (stages = [], isHidden = true) => */ const extractFeatures = (gon) => ({ + // licensed feature toggles cycleAnalyticsForGroups: Boolean(gon?.licensed_features?.cycleAnalyticsForGroups), + groupLevelAnalyticsDashboard: Boolean(gon?.licensed_features?.groupLevelAnalyticsDashboard), + // feature flags + groupAnalyticsDashboardsPage: Boolean(gon?.features?.groupAnalyticsDashboardsPage), }); /** @@ -87,27 +92,21 @@ const extractFeatures = (gon) => ({ * @returns {Object} - The initial data to load the app with */ export const buildCycleAnalyticsInitialData = ({ - fullPath, - requestPath, projectId, - groupId, groupPath, - labelsPath, - milestonesPath, stage, createdAfter, createdBefore, + namespaceName, + namespaceFullPath, gon, } = {}) => { return { projectId: parseInt(projectId, 10), - endpoints: { - requestPath, - fullPath, - labelsPath, - milestonesPath, - groupId: parseInt(groupId, 10), - groupPath, + groupPath: `groups/${groupPath}`, + namespace: { + name: namespaceName, + fullPath: namespaceFullPath, }, createdAfter: new Date(createdAfter), createdBefore: new Date(createdBefore), @@ -115,3 +114,6 @@ export const buildCycleAnalyticsInitialData = ({ features: extractFeatures(gon), }; }; + +export const constructPathWithNamespace = ({ fullPath }, endpoint) => + joinPaths('/', fullPath, endpoint); diff --git a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue index 5bb60d91f1..98193de4a1 100644 --- a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue +++ b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue @@ -32,11 +32,6 @@ export default { GlTruncate, }, props: { - groupId: { - type: Number, - required: false, - default: null, - }, groupNamespace: { type: String, required: true, diff --git a/app/assets/javascripts/analytics/shared/components/value_stream_metrics.vue b/app/assets/javascripts/analytics/shared/components/value_stream_metrics.vue index cc7b554f32..3082897af7 100644 --- a/app/assets/javascripts/analytics/shared/components/value_stream_metrics.vue +++ b/app/assets/javascripts/analytics/shared/components/value_stream_metrics.vue @@ -1,9 +1,10 @@ + diff --git a/app/assets/javascripts/analytics/shared/utils.js b/app/assets/javascripts/analytics/shared/utils.js index aafbf64276..a85f3fb373 100644 --- a/app/assets/javascripts/analytics/shared/utils.js +++ b/app/assets/javascripts/analytics/shared/utils.js @@ -1,6 +1,7 @@ import { flatten } from 'lodash'; import dateFormat from '~/lib/dateformat'; import { slugify } from '~/lib/utils/text_utility'; +import { joinPaths } from '~/lib/utils/url_utility'; import { urlQueryToFilter } from '~/vue_shared/components/filtered_search_bar/filtered_search_utils'; import { dateFormats, METRICS_POPOVER_CONTENT } from './constants'; @@ -119,3 +120,21 @@ export const fetchMetricsData = (requests = [], requestPath, params) => { prepareTimeMetricsData(flatten(responses), METRICS_POPOVER_CONTENT), ); }; + +/** + * Generates a URL link to the VSD dashboard based on the group + * and project paths passed into the method. + * + * @param {String} groupPath - Path of the specified group + * @param {Array} projectPaths - Array of project paths to include in the `query` parameter + * @returns a URL or blank string if there is no groupPath set + */ +export const generateValueStreamsDashboardLink = (groupPath, projectPaths = []) => { + if (groupPath.length) { + const query = projectPaths.length ? `?query=${projectPaths.join(',')}` : ''; + const dashboardsSlug = '/-/analytics/dashboards/value_streams_dashboard'; + const segments = [gon.relative_url_root || '', '/', groupPath, dashboardsSlug]; + return joinPaths(...segments).concat(query); + } + return ''; +}; diff --git a/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue b/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue index 5651789e2c..1fd1f91bda 100644 --- a/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue +++ b/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue @@ -1,7 +1,7 @@ + diff --git a/app/assets/javascripts/artifacts/components/artifacts_table_row_details.vue b/app/assets/javascripts/artifacts/components/artifacts_table_row_details.vue index 4a826d0d46..7d675251ff 100644 --- a/app/assets/javascripts/artifacts/components/artifacts_table_row_details.vue +++ b/app/assets/javascripts/artifacts/components/artifacts_table_row_details.vue @@ -1,5 +1,5 @@ + diff --git a/app/assets/javascripts/artifacts/constants.js b/app/assets/javascripts/artifacts/constants.js index da562b03bf..4ac20d963d 100644 --- a/app/assets/javascripts/artifacts/constants.js +++ b/app/assets/javascripts/artifacts/constants.js @@ -54,6 +54,45 @@ export const I18N_FEEDBACK_BANNER_BODY = s__( export const I18N_FEEDBACK_BANNER_BUTTON = s__('Artifacts|Take a quick survey'); export const FEEDBACK_URL = 'https://gitlab.fra1.qualtrics.com/jfe/form/SV_cI9rAUI20Vo2St8'; +export const BULK_DELETE_FEATURE_FLAG = 'ciJobArtifactBulkDestroy'; +export const I18N_BULK_DELETE_BANNER = (count) => + sprintf( + n__( + 'Artifacts|%{strongStart}%{count}%{strongEnd} artifact selected', + 'Artifacts|%{strongStart}%{count}%{strongEnd} artifacts selected', + count, + ), + { + count, + }, + ); +export const I18N_BULK_DELETE_CLEAR_SELECTION = s__('Artifacts|Clear selection'); +export const I18N_BULK_DELETE_DELETE_SELECTED = s__('Artifacts|Delete selected'); + +export const BULK_DELETE_MODAL_ID = 'artifacts-bulk-delete-modal'; +export const I18N_BULK_DELETE_MODAL_TITLE = (count) => + n__('Artifacts|Delete %d artifact?', 'Artifacts|Delete %d artifacts?', count); +export const I18N_BULK_DELETE_BODY = (count) => + sprintf( + n__( + 'Artifacts|The selected artifact will be permanently deleted. Any reports generated from these artifacts will be empty.', + 'Artifacts|The selected artifacts will be permanently deleted. Any reports generated from these artifacts will be empty.', + count, + ), + { count }, + ); +export const I18N_BULK_DELETE_ACTION = (count) => + n__('Artifacts|Delete %d artifact', 'Artifacts|Delete %d artifacts', count); + +export const I18N_BULK_DELETE_PARTIAL_ERROR = s__( + 'Artifacts|An error occurred while deleting. Some artifacts may not have been deleted.', +); +export const I18N_BULK_DELETE_ERROR = s__( + 'Artifacts|Something went wrong while deleting. Please refresh the page to try again.', +); +export const I18N_BULK_DELETE_CONFIRMATION_TOAST = (count) => + n__('Artifacts|%d selected artifact deleted', 'Artifacts|%d selected artifacts deleted', count); + export const INITIAL_CURRENT_PAGE = 1; export const INITIAL_PREVIOUS_PAGE_CURSOR = ''; export const INITIAL_NEXT_PAGE_CURSOR = ''; diff --git a/app/assets/javascripts/artifacts/graphql/mutations/bulk_destroy_job_artifacts.mutation.graphql b/app/assets/javascripts/artifacts/graphql/mutations/bulk_destroy_job_artifacts.mutation.graphql new file mode 100644 index 0000000000..421b9258ca --- /dev/null +++ b/app/assets/javascripts/artifacts/graphql/mutations/bulk_destroy_job_artifacts.mutation.graphql @@ -0,0 +1,7 @@ +mutation bulkDestroyJobArtifacts($projectId: ProjectID!, $ids: [CiJobArtifactID!]!) { + bulkDestroyJobArtifacts(input: { projectId: $projectId, ids: $ids }) { + destroyedCount + destroyedIds + errors + } +} diff --git a/app/assets/javascripts/artifacts/index.js b/app/assets/javascripts/artifacts/index.js index a62b3daa96..6e795fd9bd 100644 --- a/app/assets/javascripts/artifacts/index.js +++ b/app/assets/javascripts/artifacts/index.js @@ -1,3 +1,4 @@ +import { GlToast } from '@gitlab/ui'; import Vue from 'vue'; import VueApollo from 'vue-apollo'; import createDefaultClient from '~/lib/graphql'; @@ -5,6 +6,7 @@ import { parseBoolean } from '~/lib/utils/common_utils'; import App from './components/app.vue'; Vue.use(VueApollo); +Vue.use(GlToast); const apolloProvider = new VueApollo({ defaultClient: createDefaultClient(), @@ -17,13 +19,19 @@ export const initArtifactsTable = () => { return false; } - const { projectPath, canDestroyArtifacts, artifactsManagementFeedbackImagePath } = el.dataset; + const { + projectPath, + projectId, + canDestroyArtifacts, + artifactsManagementFeedbackImagePath, + } = el.dataset; return new Vue({ el, apolloProvider, provide: { projectPath, + projectId, canDestroyArtifacts: parseBoolean(canDestroyArtifacts), artifactsManagementFeedbackImagePath, }, diff --git a/app/assets/javascripts/authentication/mount_2fa.js b/app/assets/javascripts/authentication/mount_2fa.js index 52ed67b8c7..29dcab9ed4 100644 --- a/app/assets/javascripts/authentication/mount_2fa.js +++ b/app/assets/javascripts/authentication/mount_2fa.js @@ -1,29 +1,9 @@ -import $ from 'jquery'; -import initU2F from './u2f'; -import U2FRegister from './u2f/register'; -import initWebauthn from './webauthn'; -import WebAuthnRegister from './webauthn/register'; +import { initWebauthnAuthenticate, initWebauthnRegister } from './webauthn'; export const mount2faAuthentication = () => { - if (gon.webauthn) { - initWebauthn(); - } else { - initU2F(); - } + initWebauthnAuthenticate(); }; export const mount2faRegistration = () => { - const el = $('#js-register-token-2fa'); - - if (!el.length) { - return; - } - - if (gon.webauthn) { - const webauthnRegister = new WebAuthnRegister(el, gon.webauthn); - webauthnRegister.start(); - } else { - const u2fRegister = new U2FRegister(el, gon.u2f); - u2fRegister.start(); - } + initWebauthnRegister(); }; diff --git a/app/assets/javascripts/authentication/two_factor_auth/components/manage_two_factor_form.vue b/app/assets/javascripts/authentication/two_factor_auth/components/manage_two_factor_form.vue index 484c6524d0..98ed2a3173 100644 --- a/app/assets/javascripts/authentication/two_factor_auth/components/manage_two_factor_form.vue +++ b/app/assets/javascripts/authentication/two_factor_auth/components/manage_two_factor_form.vue @@ -6,10 +6,8 @@ import { __ } from '~/locale'; export const i18n = { currentPassword: __('Current password'), confirmTitle: __('Are you sure?'), - confirmWebAuthn: __( - 'This will invalidate your registered applications and U2F / WebAuthn devices.', - ), - confirm: __('This will invalidate your registered applications and U2F devices.'), + confirmWebAuthn: __('This will invalidate your registered applications and WebAuthn devices.'), + confirm: __('This will invalidate your registered applications and WebAuthn devices.'), disableTwoFactor: __('Disable two-factor authentication'), disable: __('Disable'), cancel: __('Cancel'), diff --git a/app/assets/javascripts/authentication/u2f/authenticate.js b/app/assets/javascripts/authentication/u2f/authenticate.js deleted file mode 100644 index 22eca904f3..0000000000 --- a/app/assets/javascripts/authentication/u2f/authenticate.js +++ /dev/null @@ -1,106 +0,0 @@ -import $ from 'jquery'; -import { template as lodashTemplate, omit } from 'lodash'; -import U2FError from './error'; -import importU2FLibrary from './util'; - -// Authenticate U2F (universal 2nd factor) devices for users to authenticate with. -// -// State Flow #1: setup -> in_progress -> authenticated -> POST to server -// State Flow #2: setup -> in_progress -> error -> setup -export default class U2FAuthenticate { - constructor(container, form, u2fParams, fallbackButton, fallbackUI) { - this.u2fUtils = null; - this.container = container; - this.renderAuthenticated = this.renderAuthenticated.bind(this); - this.renderError = this.renderError.bind(this); - this.renderInProgress = this.renderInProgress.bind(this); - this.renderTemplate = this.renderTemplate.bind(this); - this.authenticate = this.authenticate.bind(this); - this.start = this.start.bind(this); - this.appId = u2fParams.app_id; - this.challenge = u2fParams.challenge; - this.form = form; - this.fallbackButton = fallbackButton; - this.fallbackUI = fallbackUI; - if (this.fallbackButton) { - this.fallbackButton.addEventListener('click', this.switchToFallbackUI.bind(this)); - } - - // The U2F Javascript API v1.1 requires a single challenge, with - // _no challenges per-request_. The U2F Javascript API v1.0 requires a - // challenge per-request, which is done by copying the single challenge - // into every request. - // - // In either case, we don't need the per-request challenges that the server - // has generated, so we can remove them. - // - // Note: The server library fixes this behaviour in (unreleased) version 1.0.0. - // This can be removed once we upgrade. - // https://github.com/castle/ruby-u2f/commit/103f428071a81cd3d5f80c2e77d522d5029946a4 - this.signRequests = u2fParams.sign_requests.map((request) => omit(request, 'challenge')); - - this.templates = { - inProgress: '#js-authenticate-token-2fa-in-progress', - error: '#js-authenticate-token-2fa-error', - authenticated: '#js-authenticate-token-2fa-authenticated', - }; - } - - start() { - return importU2FLibrary() - .then((utils) => { - this.u2fUtils = utils; - this.renderInProgress(); - }) - .catch(() => this.switchToFallbackUI()); - } - - authenticate() { - return this.u2fUtils.sign( - this.appId, - this.challenge, - this.signRequests, - (response) => { - if (response.errorCode) { - const error = new U2FError(response.errorCode, 'authenticate'); - return this.renderError(error); - } - return this.renderAuthenticated(JSON.stringify(response)); - }, - 10, - ); - } - - renderTemplate(name, params) { - const templateString = $(this.templates[name]).html(); - const template = lodashTemplate(templateString); - return this.container.html(template(params)); - } - - renderInProgress() { - this.renderTemplate('inProgress'); - return this.authenticate(); - } - - renderError(error) { - this.renderTemplate('error', { - error_message: error.message(), - error_name: error.errorCode, - }); - return this.container.find('#js-token-2fa-try-again').on('click', this.renderInProgress); - } - - renderAuthenticated(deviceResponse) { - this.renderTemplate('authenticated'); - const container = this.container[0]; - container.querySelector('#js-device-response').value = deviceResponse; - container.querySelector(this.form).submit(); - this.fallbackButton.classList.add('hidden'); - } - - switchToFallbackUI() { - this.fallbackButton.classList.add('hidden'); - this.container[0].classList.add('hidden'); - this.fallbackUI.classList.remove('hidden'); - } -} diff --git a/app/assets/javascripts/authentication/u2f/error.js b/app/assets/javascripts/authentication/u2f/error.js deleted file mode 100644 index ca0fc0700a..0000000000 --- a/app/assets/javascripts/authentication/u2f/error.js +++ /dev/null @@ -1,26 +0,0 @@ -import { __ } from '~/locale'; - -export default class U2FError { - constructor(errorCode, u2fFlowType) { - this.errorCode = errorCode; - this.message = this.message.bind(this); - this.httpsDisabled = window.location.protocol !== 'https:'; - this.u2fFlowType = u2fFlowType; - } - - message() { - if (this.errorCode === window.u2f.ErrorCodes.BAD_REQUEST && this.httpsDisabled) { - return __( - 'U2F only works with HTTPS-enabled websites. Contact your administrator for more details.', - ); - } else if (this.errorCode === window.u2f.ErrorCodes.DEVICE_INELIGIBLE) { - if (this.u2fFlowType === 'authenticate') { - return __('This device has not been registered with us.'); - } - if (this.u2fFlowType === 'register') { - return __('This device has already been registered with us.'); - } - } - return __('There was a problem communicating with your device.'); - } -} diff --git a/app/assets/javascripts/authentication/u2f/index.js b/app/assets/javascripts/authentication/u2f/index.js deleted file mode 100644 index f129acca1c..0000000000 --- a/app/assets/javascripts/authentication/u2f/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import $ from 'jquery'; -import U2FAuthenticate from './authenticate'; - -export default () => { - if (!gon.u2f) return; - - const u2fAuthenticate = new U2FAuthenticate( - $('#js-authenticate-token-2fa'), - '#js-login-token-2fa-form', - gon.u2f, - document.querySelector('#js-login-2fa-device'), - document.querySelector('.js-2fa-form'), - ); - u2fAuthenticate.start(); - // needed in rspec (FakeU2fDevice) - gl.u2fAuthenticate = u2fAuthenticate; -}; diff --git a/app/assets/javascripts/authentication/u2f/register.js b/app/assets/javascripts/authentication/u2f/register.js deleted file mode 100644 index 6c98f0978b..0000000000 --- a/app/assets/javascripts/authentication/u2f/register.js +++ /dev/null @@ -1,102 +0,0 @@ -import $ from 'jquery'; -import { template as lodashTemplate } from 'lodash'; -import { __ } from '~/locale'; -import U2FError from './error'; -import importU2FLibrary from './util'; - -// Register U2F (universal 2nd factor) devices for users to authenticate with. -// -// State Flow #1: setup -> in_progress -> registered -> POST to server -// State Flow #2: setup -> in_progress -> error -> setup -export default class U2FRegister { - constructor(container, u2fParams) { - this.u2fUtils = null; - this.container = container; - this.renderNotSupported = this.renderNotSupported.bind(this); - this.renderRegistered = this.renderRegistered.bind(this); - this.renderError = this.renderError.bind(this); - this.renderInProgress = this.renderInProgress.bind(this); - this.renderSetup = this.renderSetup.bind(this); - this.renderTemplate = this.renderTemplate.bind(this); - this.register = this.register.bind(this); - this.start = this.start.bind(this); - this.appId = u2fParams.app_id; - this.registerRequests = u2fParams.register_requests; - this.signRequests = u2fParams.sign_requests; - - this.templates = { - message: '#js-register-2fa-message', - setup: '#js-register-token-2fa-setup', - error: '#js-register-token-2fa-error', - registered: '#js-register-token-2fa-registered', - }; - } - - start() { - return importU2FLibrary() - .then((utils) => { - this.u2fUtils = utils; - this.renderSetup(); - }) - .catch(() => this.renderNotSupported()); - } - - register() { - return this.u2fUtils.register( - this.appId, - this.registerRequests, - this.signRequests, - (response) => { - if (response.errorCode) { - const error = new U2FError(response.errorCode, 'register'); - return this.renderError(error); - } - return this.renderRegistered(JSON.stringify(response)); - }, - 10, - ); - } - - renderTemplate(name, params) { - const templateString = $(this.templates[name]).html(); - const template = lodashTemplate(templateString); - return this.container.html(template(params)); - } - - renderSetup() { - this.renderTemplate('setup'); - return this.container.find('#js-setup-token-2fa-device').on('click', this.renderInProgress); - } - - renderInProgress() { - this.renderTemplate('message', { - message: __( - 'Trying to communicate with your device. Plug it in (if needed) and press the button on the device now.', - ), - }); - return this.register(); - } - - renderError(error) { - this.renderTemplate('error', { - error_message: error.message(), - error_name: error.errorCode, - }); - return this.container.find('#js-token-2fa-try-again').on('click', this.renderSetup); - } - - renderRegistered(deviceResponse) { - this.renderTemplate('registered'); - // Prefer to do this instead of interpolating using Underscore templates - // because of JSON escaping issues. - return this.container.find('#js-device-response').val(deviceResponse); - } - - renderNotSupported() { - return this.renderTemplate('message', { - message: __( - "Your browser doesn't support U2F. Please use Google Chrome desktop (version 41 or newer).", - ), - }); - } -} diff --git a/app/assets/javascripts/authentication/u2f/util.js b/app/assets/javascripts/authentication/u2f/util.js deleted file mode 100644 index b706481c02..0000000000 --- a/app/assets/javascripts/authentication/u2f/util.js +++ /dev/null @@ -1,40 +0,0 @@ -function isOpera(userAgent) { - return userAgent.indexOf('Opera') >= 0 || userAgent.indexOf('OPR') >= 0; -} - -function getOperaVersion(userAgent) { - const match = userAgent.match(/OPR[^0-9]*([0-9]+)[^0-9]+/); - return match ? parseInt(match[1], 10) : false; -} - -function isChrome(userAgent) { - return userAgent.indexOf('Chrom') >= 0 && !isOpera(userAgent); -} - -function getChromeVersion(userAgent) { - const match = userAgent.match(/Chrom(?:e|ium)\/([0-9]+)\./); - return match ? parseInt(match[1], 10) : false; -} - -export function canInjectU2fApi(userAgent) { - const isSupportedChrome = isChrome(userAgent) && getChromeVersion(userAgent) >= 41; - const isSupportedOpera = isOpera(userAgent) && getOperaVersion(userAgent) >= 40; - const isMobile = - userAgent.indexOf('droid') >= 0 || - userAgent.indexOf('CriOS') >= 0 || - /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); - return (isSupportedChrome || isSupportedOpera) && !isMobile; -} - -export default function importU2FLibrary() { - if (window.u2f) { - return Promise.resolve(window.u2f); - } - - const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : ''; - if (canInjectU2fApi(userAgent) || (gon && gon.test_env)) { - return import(/* webpackMode: "eager" */ 'vendor/u2f').then(() => window.u2f); - } - - return Promise.reject(); -} diff --git a/app/assets/javascripts/authentication/webauthn/authenticate.js b/app/assets/javascripts/authentication/webauthn/authenticate.js index 47cb7a40f7..748945a680 100644 --- a/app/assets/javascripts/authentication/webauthn/authenticate.js +++ b/app/assets/javascripts/authentication/webauthn/authenticate.js @@ -1,3 +1,4 @@ +import { WEBAUTHN_AUTHENTICATE } from './constants'; import WebAuthnError from './error'; import WebAuthnFlow from './flow'; import { supported, convertGetParams, convertGetResponse } from './util'; @@ -44,7 +45,7 @@ export default class WebAuthnAuthenticate { this.renderAuthenticated(JSON.stringify(convertedResponse)); }) .catch((err) => { - this.flow.renderError(new WebAuthnError(err, 'authenticate')); + this.flow.renderError(new WebAuthnError(err, WEBAUTHN_AUTHENTICATE)); }); } diff --git a/app/assets/javascripts/authentication/webauthn/components/registration.vue b/app/assets/javascripts/authentication/webauthn/components/registration.vue new file mode 100644 index 0000000000..84132a7d06 --- /dev/null +++ b/app/assets/javascripts/authentication/webauthn/components/registration.vue @@ -0,0 +1,226 @@ + + + diff --git a/app/assets/javascripts/authentication/webauthn/constants.js b/app/assets/javascripts/authentication/webauthn/constants.js new file mode 100644 index 0000000000..c41e6d2bd5 --- /dev/null +++ b/app/assets/javascripts/authentication/webauthn/constants.js @@ -0,0 +1,46 @@ +import { __ } from '~/locale'; +import { helpPagePath } from '~/helpers/help_page_helper'; + +export const I18N_BUTTON_REGISTER = __('Register device'); +export const I18N_BUTTON_SETUP = __('Set up new device'); +export const I18N_BUTTON_TRY_AGAIN = __('Try again?'); +export const I18N_DEVICE_NAME = __('Device name'); +export const I18N_DEVICE_NAME_DESCRIPTION = __( + 'Excluding USB security keys, you should include the browser name together with the device name.', +); +export const I18N_DEVICE_NAME_PLACEHOLDER = __('Macbook Touch ID on Edge'); +export const I18N_ERROR_HTTP = __( + 'WebAuthn only works with HTTPS-enabled websites. Contact your administrator for more details.', +); +export const I18N_ERROR_UNSUPPORTED_BROWSER = __( + "Your browser doesn't support WebAuthn. Please use a supported browser, e.g. Chrome (67+) or Firefox (60+).", +); +export const I18N_INFO_TEXT = __( + 'Your device needs to be set up. Plug it in (if needed) and click the button on the left.', +); +export const I18N_NOTICE = __( + 'You must save your recovery codes after you first register a two-factor authenticator, so you do not lose access to your account. %{linkStart}See the documentation on managing your WebAuthn device for more information.%{linkEnd}', +); +export const I18N_PASSWORD = __('Current password'); +export const I18N_PASSWORD_DESCRIPTION = __( + 'Your current password is required to register a new device.', +); +export const I18N_STATUS_SUCCESS = __( + 'Your device was successfully set up! Give it a name and register it with the GitLab server.', +); +export const I18N_STATUS_WAITING = __( + 'Trying to communicate with your device. Plug it in (if needed) and press the button on the device now.', +); + +export const STATE_ERROR = 'error'; +export const STATE_READY = 'ready'; +export const STATE_SUCCESS = 'success'; +export const STATE_UNSUPPORTED = 'unsupported'; +export const STATE_WAITING = 'waiting'; + +export const WEBAUTHN_AUTHENTICATE = 'authenticate'; +export const WEBAUTHN_REGISTER = 'register'; +export const WEBAUTHN_DOCUMENTATION_PATH = helpPagePath( + 'user/profile/account/two_factor_authentication', + { anchor: 'set-up-a-webauthn-device' }, +); diff --git a/app/assets/javascripts/authentication/webauthn/error.js b/app/assets/javascripts/authentication/webauthn/error.js index a1a3f861c2..40dbecd8bc 100644 --- a/app/assets/javascripts/authentication/webauthn/error.js +++ b/app/assets/javascripts/authentication/webauthn/error.js @@ -1,5 +1,6 @@ import { __ } from '~/locale'; -import { isHTTPS, FLOW_AUTHENTICATE, FLOW_REGISTER } from './util'; +import { WEBAUTHN_AUTHENTICATE, WEBAUTHN_REGISTER } from './constants'; +import { isHTTPS } from './util'; export default class WebAuthnError { constructor(error, flowType) { @@ -13,9 +14,9 @@ export default class WebAuthnError { message() { if (this.errorName === 'NotSupportedError') { return __('Your device is not compatible with GitLab. Please try another device'); - } else if (this.errorName === 'InvalidStateError' && this.flowType === FLOW_AUTHENTICATE) { + } else if (this.errorName === 'InvalidStateError' && this.flowType === WEBAUTHN_AUTHENTICATE) { return __('This device has not been registered with us.'); - } else if (this.errorName === 'InvalidStateError' && this.flowType === FLOW_REGISTER) { + } else if (this.errorName === 'InvalidStateError' && this.flowType === WEBAUTHN_REGISTER) { return __('This device has already been registered with us.'); } else if (this.errorName === 'SecurityError' && this.httpsDisabled) { return __( diff --git a/app/assets/javascripts/authentication/webauthn/index.js b/app/assets/javascripts/authentication/webauthn/index.js index bbf694c769..1fbe89d109 100644 --- a/app/assets/javascripts/authentication/webauthn/index.js +++ b/app/assets/javascripts/authentication/webauthn/index.js @@ -1,7 +1,12 @@ import $ from 'jquery'; import WebAuthnAuthenticate from './authenticate'; +import WebAuthnRegister from './register'; + +export const initWebauthnAuthenticate = () => { + if (!gon.webauthn) { + return; + } -export default () => { const webauthnAuthenticate = new WebAuthnAuthenticate( $('#js-authenticate-token-2fa'), '#js-login-token-2fa-form', @@ -11,3 +16,14 @@ export default () => { ); webauthnAuthenticate.start(); }; + +export const initWebauthnRegister = () => { + const el = $('#js-register-token-2fa'); + + if (!el.length) { + return; + } + + const webauthnRegister = new WebAuthnRegister(el, gon.webauthn); + webauthnRegister.start(); +}; diff --git a/app/assets/javascripts/authentication/webauthn/register.js b/app/assets/javascripts/authentication/webauthn/register.js index 62ebf85abe..c00d3ede2c 100644 --- a/app/assets/javascripts/authentication/webauthn/register.js +++ b/app/assets/javascripts/authentication/webauthn/register.js @@ -2,6 +2,7 @@ import { __ } from '~/locale'; import WebAuthnError from './error'; import WebAuthnFlow from './flow'; import { supported, isHTTPS, convertCreateParams, convertCreateResponse } from './util'; +import { WEBAUTHN_REGISTER } from './constants'; // Register WebAuthn devices for users to authenticate with. // @@ -40,7 +41,7 @@ export default class WebAuthnRegister { publicKey: this.webauthnOptions, }) .then((cred) => this.renderRegistered(JSON.stringify(convertCreateResponse(cred)))) - .catch((err) => this.flow.renderError(new WebAuthnError(err, 'register'))); + .catch((err) => this.flow.renderError(new WebAuthnError(err, WEBAUTHN_REGISTER))); } renderSetup() { diff --git a/app/assets/javascripts/authentication/webauthn/registration.js b/app/assets/javascripts/authentication/webauthn/registration.js new file mode 100644 index 0000000000..67906a2485 --- /dev/null +++ b/app/assets/javascripts/authentication/webauthn/registration.js @@ -0,0 +1,22 @@ +import Vue from 'vue'; +import WebAuthnRegistration from '~/authentication/webauthn/components/registration.vue'; +import { parseBoolean } from '~/lib/utils/common_utils'; + +export const initWebAuthnRegistration = () => { + const el = document.querySelector('#js-device-registration'); + + if (!el) { + return null; + } + + const { initialError, passwordRequired, targetPath } = el.dataset; + + return new Vue({ + el, + name: 'WebAuthnRegistrationRoot', + provide: { initialError, passwordRequired: parseBoolean(passwordRequired), targetPath }, + render(h) { + return h(WebAuthnRegistration); + }, + }); +}; diff --git a/app/assets/javascripts/authentication/webauthn/util.js b/app/assets/javascripts/authentication/webauthn/util.js index 2a0740cf48..0ff0f0e6a2 100644 --- a/app/assets/javascripts/authentication/webauthn/util.js +++ b/app/assets/javascripts/authentication/webauthn/util.js @@ -1,9 +1,6 @@ export function supported() { return Boolean( - navigator.credentials && - navigator.credentials.create && - navigator.credentials.get && - window.PublicKeyCredential, + navigator.credentials?.create && navigator.credentials?.get && window.PublicKeyCredential, ); } @@ -11,9 +8,6 @@ export function isHTTPS() { return window.location.protocol.startsWith('https'); } -export const FLOW_AUTHENTICATE = 'authenticate'; -export const FLOW_REGISTER = 'register'; - /** * Converts a base64 string to an ArrayBuffer * diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 1855fb9ed8..de67e01d65 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -7,7 +7,7 @@ import { getEmojiScoreWithIntent } from '~/emoji/utils'; import { getCookie, setCookie, scrollToElement } from '~/lib/utils/common_utils'; import * as Emoji from '~/emoji'; import { dispose, fixTitle } from '~/tooltips'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from './lib/utils/axios_utils'; import { isInVueNoteablePage } from './lib/utils/dom_utils'; import { __ } from './locale'; diff --git a/app/assets/javascripts/badges/components/badge_form.vue b/app/assets/javascripts/badges/components/badge_form.vue index c95c90d5da..1a80030c7e 100644 --- a/app/assets/javascripts/badges/components/badge_form.vue +++ b/app/assets/javascripts/badges/components/badge_form.vue @@ -3,7 +3,7 @@ import { GlLoadingIcon, GlFormInput, GlFormGroup, GlButton } from '@gitlab/ui'; import { escape, debounce } from 'lodash'; import { mapActions, mapState } from 'vuex'; import SafeHtml from '~/vue_shared/directives/safe_html'; -import { createAlert, VARIANT_INFO } from '~/flash'; +import { createAlert, VARIANT_INFO } from '~/alert'; import { s__, sprintf } from '~/locale'; import createEmptyBadge from '../empty_badge'; import { PLACEHOLDERS } from '../constants'; diff --git a/app/assets/javascripts/badges/components/badge_settings.vue b/app/assets/javascripts/badges/components/badge_settings.vue index a7a21d6547..09f997d73a 100644 --- a/app/assets/javascripts/badges/components/badge_settings.vue +++ b/app/assets/javascripts/badges/components/badge_settings.vue @@ -1,7 +1,7 @@ diff --git a/app/assets/javascripts/boards/components/board_add_new_column_form.vue b/app/assets/javascripts/boards/components/board_add_new_column_form.vue index 1899d42fa4..259423df07 100644 --- a/app/assets/javascripts/boards/components/board_add_new_column_form.vue +++ b/app/assets/javascripts/boards/components/board_add_new_column_form.vue @@ -1,12 +1,5 @@ diff --git a/app/assets/javascripts/boards/components/board_column.vue b/app/assets/javascripts/boards/components/board_column.vue index 708e1539c6..83ba538168 100644 --- a/app/assets/javascripts/boards/components/board_column.vue +++ b/app/assets/javascripts/boards/components/board_column.vue @@ -20,6 +20,10 @@ export default { type: String, required: true, }, + filters: { + type: Object, + required: true, + }, }, computed: { ...mapState(['filterParams', 'highlightedLists']), @@ -33,11 +37,14 @@ export default { isListDraggable() { return isListDraggable(this.list); }, + filtersToUse() { + return this.isApolloBoard ? this.filters : this.filterParams; + }, }, watch: { filterParams: { handler() { - if (this.list.id && !this.list.collapsed) { + if (!this.isApolloBoard && this.list.id && !this.list.collapsed) { this.fetchItemsForList({ listId: this.list.id }); } }, @@ -46,7 +53,7 @@ export default { }, 'list.id': { handler(id) { - if (id) { + if (!this.isApolloBoard && id) { this.fetchItemsForList({ listId: this.list.id }); } }, @@ -83,13 +90,13 @@ export default { class="board-inner gl-display-flex gl-flex-direction-column gl-relative gl-h-full gl-rounded-base gl-bg-gray-50" :class="{ 'board-column-highlighted': highlighted }" > - +
diff --git a/app/assets/javascripts/boards/components/board_content.vue b/app/assets/javascripts/boards/components/board_content.vue index 8a37719eae..84a8781db1 100644 --- a/app/assets/javascripts/boards/components/board_content.vue +++ b/app/assets/javascripts/boards/components/board_content.vue @@ -3,9 +3,10 @@ import { GlAlert } from '@gitlab/ui'; import { breakpoints } from '@gitlab/ui/dist/utils'; import { sortBy, throttle } from 'lodash'; import Draggable from 'vuedraggable'; -import { mapState, mapGetters, mapActions } from 'vuex'; +import { mapState, mapActions } from 'vuex'; import { contentTop } from '~/lib/utils/common_utils'; import { s__ } from '~/locale'; +import eventHub from '~/boards/eventhub'; import { formatBoardLists } from 'ee_else_ce/boards/boards_util'; import BoardAddNewColumn from 'ee_else_ce/boards/components/board_add_new_column.vue'; import { defaultSortableOptions } from '~/sortable/constants'; @@ -44,6 +45,14 @@ export default { type: String, required: true, }, + filterParams: { + type: Object, + required: true, + }, + isSwimlanesOn: { + type: Boolean, + required: true, + }, }, data() { return { @@ -80,7 +89,6 @@ export default { }, computed: { ...mapState(['boardLists', 'error', 'addColumnForm']), - ...mapGetters(['isSwimlanesOn']), addColumnFormVisible() { return this.addColumnForm?.visible; }, @@ -92,7 +100,7 @@ export default { }), fullPath: this.fullPath, boardId: this.boardId, - filterParams: this.filterParams, + filters: this.filterParams, }; }, boardListsToUse() { @@ -126,6 +134,12 @@ export default { return this.isApolloBoard ? this.apolloError : this.error; }, }, + created() { + eventHub.$on('updateBoard', this.refetchLists); + }, + beforeDestroy() { + eventHub.$off('updateBoard', this.refetchLists); + }, mounted() { this.setBoardHeight(); @@ -152,6 +166,9 @@ export default { this.boardHeight = `${window.innerHeight - this.$el.getBoundingClientRect().top}px`; } }, + refetchLists() { + this.$apollo.queries.boardListsApollo.refetch(); + }, }, }; @@ -176,6 +193,7 @@ export default { ref="board" :board-id="boardId" :list="list" + :filters="filterParams" :data-draggable-item-type="$options.draggableItemTypes.list" :class="{ 'gl-xs-display-none!': addColumnFormVisible }" /> @@ -190,6 +208,7 @@ export default { ref="swimlanes" :lists="boardListsToUse" :can-admin-list="canAdminList" + :filters="filterParams" :style="{ height: boardHeight }" /> diff --git a/app/assets/javascripts/boards/components/board_content_sidebar.vue b/app/assets/javascripts/boards/components/board_content_sidebar.vue index 6227f185ed..675878683a 100644 --- a/app/assets/javascripts/boards/components/board_content_sidebar.vue +++ b/app/assets/javascripts/boards/components/board_content_sidebar.vue @@ -6,9 +6,9 @@ import SidebarDropdownWidget from 'ee_else_ce/sidebar/components/sidebar_dropdow import { __, sprintf } from '~/locale'; import BoardSidebarTimeTracker from '~/boards/components/sidebar/board_sidebar_time_tracker.vue'; import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue'; -import { BoardType, ISSUABLE, INCIDENT } from '~/boards/constants'; +import { ISSUABLE, INCIDENT } from '~/boards/constants'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; -import { TYPE_ISSUE } from '~/issues/constants'; +import { TYPE_ISSUE, WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants'; import SidebarAssigneesWidget from '~/sidebar/components/assignees/sidebar_assignees_widget.vue'; import SidebarConfidentialityWidget from '~/sidebar/components/confidential/sidebar_confidentiality_widget.vue'; import SidebarDateWidget from '~/sidebar/components/date/sidebar_date_widget.vue'; @@ -16,7 +16,6 @@ import SidebarSeverityWidget from '~/sidebar/components/severity/sidebar_severit import SidebarSubscriptionsWidget from '~/sidebar/components/subscriptions/sidebar_subscriptions_widget.vue'; import SidebarTodoWidget from '~/sidebar/components/todo_toggle/sidebar_todo_widget.vue'; import SidebarLabelsWidget from '~/sidebar/components/labels/labels_select_widget/labels_select_root.vue'; -import { LabelType } from '~/sidebar/components/labels/labels_select_widget/constants'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; export default { @@ -98,7 +97,7 @@ export default { return this.activeBoardItem?.referencePath?.split('#')[0] || ''; }, parentType() { - return this.isGroupBoard ? BoardType.group : BoardType.project; + return this.isGroupBoard ? WORKSPACE_GROUP : WORKSPACE_PROJECT; }, createLabelTitle() { return sprintf(__('Create %{workspace} label'), { @@ -114,7 +113,7 @@ export default { return this.isGroupBoard ? this.groupPathForActiveIssue : this.projectPathForActiveIssue; }, labelType() { - return this.isGroupBoard ? LabelType.group : LabelType.project; + return this.isGroupBoard ? WORKSPACE_GROUP : WORKSPACE_PROJECT; }, labelsFilterPath() { return this.isGroupBoard diff --git a/app/assets/javascripts/boards/components/board_filtered_search.vue b/app/assets/javascripts/boards/components/board_filtered_search.vue index 1bc5d91056..2e14afad96 100644 --- a/app/assets/javascripts/boards/components/board_filtered_search.vue +++ b/app/assets/javascripts/boards/components/board_filtered_search.vue @@ -1,7 +1,7 @@ @@ -73,15 +95,27 @@ export default { > - - + +
- - + +
diff --git a/app/assets/javascripts/boards/components/boards_selector.vue b/app/assets/javascripts/boards/components/boards_selector.vue index a1a49386b3..4aec286a5f 100644 --- a/app/assets/javascripts/boards/components/boards_selector.vue +++ b/app/assets/javascripts/boards/components/boards_selector.vue @@ -8,6 +8,7 @@ import { GlDropdownItem, GlModalDirective, } from '@gitlab/ui'; +import { produce } from 'immer'; import { throttle } from 'lodash'; import { mapActions, mapState } from 'vuex'; @@ -89,6 +90,9 @@ export default { parentType() { return this.boardType; }, + boardQuery() { + return this.isGroupBoard ? groupBoardsQuery : projectBoardsQuery; + }, loading() { return this.loadingRecentBoards || this.loadingBoards; }, @@ -155,9 +159,6 @@ export default { name: node.name, })); }, - boardQuery() { - return this.isGroupBoard ? groupBoardsQuery : projectBoardsQuery; - }, recentBoardsQuery() { return this.isGroupBoard ? groupRecentBoardsQuery : projectRecentBoardsQuery; }, @@ -191,6 +192,29 @@ export default { }, }); }, + addBoard(board) { + const { defaultClient: store } = this.$apollo.provider.clients; + + const sourceData = store.readQuery({ + query: this.boardQuery, + variables: { fullPath: this.fullPath }, + }); + + const newData = produce(sourceData, (draftState) => { + draftState[this.parentType].boards.edges = [ + ...draftState[this.parentType].boards.edges, + { node: board }, + ]; + }); + + store.writeQuery({ + query: this.boardQuery, + variables: { fullPath: this.fullPath }, + data: newData, + }); + + this.$emit('switchBoard', board.id); + }, isScrolledUp() { const { content } = this.$refs; @@ -226,14 +250,12 @@ export default { boardType: this.boardType, }); }, - fullBoardId(boardId) { - return fullBoardId(boardId); - }, async switchBoard(boardId, e) { if (isMetaKey(e)) { window.open(`${this.boardBaseUrl}/${boardId}`, '_blank'); } else if (this.isApolloBoard) { - this.$emit('switchBoard', this.fullBoardId(boardId)); + this.$emit('switchBoard', fullBoardId(boardId)); + updateHistory({ url: `${this.boardBaseUrl}/${boardId}` }); } else { this.unsetActiveId(); this.fetchCurrentBoard(boardId); @@ -357,6 +379,7 @@ export default { :weights="weights" :current-board="boardToUse" :current-page="currentPage" + @addBoard="addBoard" @cancel="cancel" /> diff --git a/app/assets/javascripts/boards/components/config_toggle.vue b/app/assets/javascripts/boards/components/config_toggle.vue index 7002fd4429..dd3b947287 100644 --- a/app/assets/javascripts/boards/components/config_toggle.vue +++ b/app/assets/javascripts/boards/components/config_toggle.vue @@ -16,6 +16,13 @@ export default { }, mixins: [Tracking.mixin()], inject: ['canAdminList'], + props: { + boardHasScope: { + type: Boolean, + required: false, + default: false, + }, + }, computed: { ...mapGetters(['hasScope']), buttonText() { @@ -40,7 +47,7 @@ export default { v-gl-modal-directive="'board-config-modal'" v-gl-tooltip :title="tooltipTitle" - :class="{ 'dot-highlight': hasScope }" + :class="{ 'dot-highlight': hasScope || boardHasScope }" data-qa-selector="boards_config_button" @click.prevent="showPage" > diff --git a/app/assets/javascripts/boards/components/issue_board_filtered_search.vue b/app/assets/javascripts/boards/components/issue_board_filtered_search.vue index 7749391ec6..cdcc7b8e5a 100644 --- a/app/assets/javascripts/boards/components/issue_board_filtered_search.vue +++ b/app/assets/javascripts/boards/components/issue_board_filtered_search.vue @@ -1,12 +1,11 @@ diff --git a/app/assets/javascripts/boards/constants.js b/app/assets/javascripts/boards/constants.js index 712e3e1ac4..b557dc9205 100644 --- a/app/assets/javascripts/boards/constants.js +++ b/app/assets/javascripts/boards/constants.js @@ -1,5 +1,5 @@ import boardListsQuery from 'ee_else_ce/boards/graphql/board_lists.query.graphql'; -import { TYPE_ISSUE } from '~/issues/constants'; +import { TYPE_EPIC, TYPE_ISSUE, WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants'; import { s__, __ } from '~/locale'; import updateEpicSubscriptionMutation from '~/sidebar/queries/update_epic_subscription.mutation.graphql'; import updateEpicTitleMutation from '~/sidebar/queries/update_epic_title.mutation.graphql'; @@ -12,19 +12,6 @@ import groupBoardQuery from './graphql/group_board.query.graphql'; import projectBoardQuery from './graphql/project_board.query.graphql'; import listIssuesQuery from './graphql/lists_issues.query.graphql'; -/* eslint-disable-next-line @gitlab/require-i18n-strings */ -export const AssigneeIdParamValues = ['Any', 'None']; - -export const issuableTypes = { - issue: 'issue', - epic: 'epic', -}; - -export const BoardType = { - project: 'project', - group: 'group', -}; - export const ListType = { assignee: 'assignee', milestone: 'milestone', @@ -64,10 +51,10 @@ export const INCIDENT = 'INCIDENT'; export const flashAnimationDuration = 2000; export const boardQuery = { - [BoardType.group]: { + [WORKSPACE_GROUP]: { query: groupBoardQuery, }, - [BoardType.project]: { + [WORKSPACE_PROJECT]: { query: projectBoardQuery, }, }; @@ -94,7 +81,7 @@ export const titleQueries = { [TYPE_ISSUE]: { mutation: issueSetTitleMutation, }, - [issuableTypes.epic]: { + [TYPE_EPIC]: { mutation: updateEpicTitleMutation, }, }; @@ -103,7 +90,7 @@ export const subscriptionQueries = { [TYPE_ISSUE]: { mutation: issueSetSubscriptionMutation, }, - [issuableTypes.epic]: { + [TYPE_EPIC]: { mutation: updateEpicSubscriptionMutation, }, }; @@ -143,6 +130,7 @@ export const MilestoneFilterType = { started: 'Started', upcoming: 'Upcoming', }; +/* eslint-enable @gitlab/require-i18n-strings */ export const DraggableItemTypes = { card: 'card', @@ -155,7 +143,6 @@ export const MilestoneIDs = { }; export default { - BoardType, ListType, }; @@ -178,3 +165,5 @@ export const BOARD_CARD_MOVE_TO_POSITIONS_OPTIONS = [ action: () => {}, }, ]; + +export const GroupByParamType = {}; diff --git a/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql b/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql index 9e6c26063e..14811b435e 100644 --- a/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql +++ b/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql @@ -1,5 +1,5 @@ query GroupBoardMilestones($fullPath: ID!, $searchTerm: String, $state: MilestoneStateEnum) { - group(fullPath: $fullPath) { + workspace: group(fullPath: $fullPath) { id milestones( includeAncestors: true diff --git a/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql b/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql index 02aa08f90e..9af92a6ff2 100644 --- a/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql +++ b/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql @@ -1,5 +1,5 @@ query ProjectBoardMilestones($fullPath: ID!, $searchTerm: String, $state: MilestoneStateEnum) { - project(fullPath: $fullPath) { + workspace: project(fullPath: $fullPath) { id milestones( searchTitle: $searchTerm diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index 4c6f341828..67388284d3 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -3,9 +3,8 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import BoardApp from '~/boards/components/board_app.vue'; import '~/boards/filters/due_date_filters'; -import { BoardType } from '~/boards/constants'; import store from '~/boards/stores'; -import { TYPE_ISSUE } from '~/issues/constants'; +import { TYPE_ISSUE, WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants'; import { NavigationType, isLoggedIn, @@ -68,8 +67,8 @@ function mountBoardApp(el) { initialFilterParams, boardBaseUrl: el.dataset.boardBaseUrl, boardType, - isGroupBoard: boardType === BoardType.group, - isProjectBoard: boardType === BoardType.project, + isGroupBoard: boardType === WORKSPACE_GROUP, + isProjectBoard: boardType === WORKSPACE_PROJECT, currentUserId: gon.current_user_id || null, boardWeight: el.dataset.boardWeight ? parseInt(el.dataset.boardWeight, 10) : null, labelsManagePath: el.dataset.labelsManagePath, diff --git a/app/assets/javascripts/boards/issue_board_filters.js b/app/assets/javascripts/boards/issue_board_filters.js index 7e9b68778d..27efb3f775 100644 --- a/app/assets/javascripts/boards/issue_board_filters.js +++ b/app/assets/javascripts/boards/issue_board_filters.js @@ -1,5 +1,7 @@ import groupBoardMembers from '~/boards/graphql/group_board_members.query.graphql'; import projectBoardMembers from '~/boards/graphql/project_board_members.query.graphql'; +import groupBoardMilestonesQuery from './graphql/group_board_milestones.query.graphql'; +import projectBoardMilestonesQuery from './graphql/project_board_milestones.query.graphql'; import boardLabels from './graphql/board_labels.query.graphql'; export default function issueBoardFilters(apollo, fullPath, isGroupBoard) { @@ -37,8 +39,27 @@ export default function issueBoardFilters(apollo, fullPath, isGroupBoard) { .then(transformLabels); }; + const fetchMilestones = (searchTerm) => { + const variables = { + fullPath, + searchTerm, + }; + + const query = isGroupBoard ? groupBoardMilestonesQuery : projectBoardMilestonesQuery; + + return apollo + .query({ + query, + variables, + }) + .then(({ data }) => { + return data.workspace?.milestones.nodes; + }); + }; + return { fetchLabels, fetchUsers, + fetchMilestones, }; } diff --git a/app/assets/javascripts/boards/stores/actions.js b/app/assets/javascripts/boards/stores/actions.js index 1b4e633472..a144054d68 100644 --- a/app/assets/javascripts/boards/stores/actions.js +++ b/app/assets/javascripts/boards/stores/actions.js @@ -1,7 +1,6 @@ import * as Sentry from '@sentry/browser'; import { sortBy } from 'lodash'; import { - BoardType, ListType, inactiveId, flashAnimationDuration, @@ -34,7 +33,7 @@ import totalCountAndWeightQuery from 'ee_else_ce/boards/graphql/board_lists_defe import { fetchPolicies } from '~/lib/graphql'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { defaultClient as gqlClient } from '~/graphql_shared/issuable_client'; -import { TYPE_ISSUE } from '~/issues/constants'; +import { TYPE_ISSUE, WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { queryToObject } from '~/lib/utils/url_utility'; import { s__ } from '~/locale'; @@ -61,7 +60,7 @@ export default { return gqlClient .query({ - query: boardType === BoardType.group ? groupBoardQuery : projectBoardQuery, + query: boardType === WORKSPACE_GROUP ? groupBoardQuery : projectBoardQuery, variables, }) .then(({ data }) => { @@ -139,8 +138,8 @@ export default { boardId: fullBoardId, filters: filterParams, ...(issuableType === TYPE_ISSUE && { - isGroup: boardType === BoardType.group, - isProject: boardType === BoardType.project, + isGroup: boardType === WORKSPACE_GROUP, + isProject: boardType === WORKSPACE_PROJECT, }), }; @@ -234,8 +233,8 @@ export default { const variables = { fullPath, searchTerm, - isGroup: boardType === BoardType.group, - isProject: boardType === BoardType.project, + isGroup: boardType === WORKSPACE_GROUP, + isProject: boardType === WORKSPACE_PROJECT, }; commit(types.RECEIVE_LABELS_REQUEST); @@ -268,10 +267,10 @@ export default { }; let query; - if (boardType === BoardType.project) { + if (boardType === WORKSPACE_PROJECT) { query = projectBoardMilestonesQuery; } - if (boardType === BoardType.group) { + if (boardType === WORKSPACE_GROUP) { query = groupBoardMilestonesQuery; } @@ -286,8 +285,8 @@ export default { variables, }) .then(({ data }) => { - const errors = data[boardType]?.errors; - const milestones = data[boardType]?.milestones.nodes; + const errors = data.workspace?.errors; + const milestones = data.workspace?.milestones.nodes; if (errors?.[0]) { throw new Error(errors[0]); @@ -431,8 +430,8 @@ export default { boardId: fullBoardId, id: listId, filters: filterParams, - isGroup: boardType === BoardType.group, - isProject: boardType === BoardType.project, + isGroup: boardType === WORKSPACE_GROUP, + isProject: boardType === WORKSPACE_PROJECT, first: DEFAULT_BOARD_LIST_ITEMS_SIZE, after: fetchNext ? state.pageInfoByListId[listId].endCursor : undefined, }; @@ -710,7 +709,7 @@ export default { ) => { const input = formatIssueInput(issueInput, boardConfig); - if (boardType === BoardType.project) { + if (boardType === WORKSPACE_PROJECT) { input.projectPath = fullPath; } diff --git a/app/assets/javascripts/boards/stores/mutations.js b/app/assets/javascripts/boards/stores/mutations.js index fef5862f31..505c011b03 100644 --- a/app/assets/javascripts/boards/stores/mutations.js +++ b/app/assets/javascripts/boards/stores/mutations.js @@ -1,18 +1,19 @@ import { cloneDeep, pull, union } from 'lodash'; import Vue from 'vue'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; +import { TYPE_EPIC } from '~/issues/constants'; import { s__, __ } from '~/locale'; import { formatIssue } from '../boards_util'; -import { issuableTypes } from '../constants'; import * as mutationTypes from './mutation_types'; const updateListItemsCount = ({ state, listId, value }) => { const list = state.boardLists[listId]; - if (state.issuableType === issuableTypes.epic) { - Vue.set(state.boardLists, listId, { ...list, epicsCount: list.epicsCount + value }); - } else { - Vue.set(state.boardLists, listId, { ...list }); + if (state.issuableType === TYPE_EPIC) { + const listItem = cloneDeep(state.boardLists[listId]); + listItem.metadataepicsCount += value; + Vue.set(state.boardLists[listId], listId, listItem); } + Vue.set(state.boardLists, listId, { ...list }); }; export const removeItemFromList = ({ state, listId, itemId, reordering = false }) => { diff --git a/app/assets/javascripts/branches/divergence_graph.js b/app/assets/javascripts/branches/divergence_graph.js index d05b53f1a5..54abc9c45a 100644 --- a/app/assets/javascripts/branches/divergence_graph.js +++ b/app/assets/javascripts/branches/divergence_graph.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { __ } from '~/locale'; import DivergenceGraph from './components/divergence_graph.vue'; diff --git a/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_settings.vue b/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_settings.vue index 3c6114b38c..257c3309e1 100644 --- a/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_settings.vue +++ b/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_settings.vue @@ -38,6 +38,10 @@ export default { required: false, default: 0, }, + pageInfo: { + type: Object, + required: true, + }, variables: { type: Array, required: true, @@ -87,8 +91,12 @@ export default { :entity="entity" :is-loading="isLoading" :max-variable-limit="maxVariableLimit" + :page-info="pageInfo" :variables="variables" + @handle-prev-page="$emit('handle-prev-page')" + @handle-next-page="$emit('handle-next-page')" @set-selected-variable="setSelectedVariable" + @sort-changed="(val) => $emit('sort-changed', val)" /> -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __ } from '~/locale'; +import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { mapEnvironmentNames, reportMessageToSentry } from '../utils'; import { ADD_MUTATION_ACTION, DELETE_MUTATION_ACTION, + SORT_DIRECTIONS, UPDATE_MUTATION_ACTION, environmentFetchErrorText, genericMutationErrorText, @@ -16,6 +18,7 @@ export default { components: { CiVariableSettings, }, + mixins: [glFeatureFlagsMixin()], inject: ['endpoint'], props: { areScopedVariablesAvailable: { @@ -97,6 +100,7 @@ export default { loadingCounter: 0, maxVariableLimit: 0, pageInfo: {}, + sortDirection: SORT_DIRECTIONS.ASC, }; }, apollo: { @@ -107,6 +111,8 @@ export default { variables() { return { fullPath: this.fullPath || undefined, + first: this.pageSize, + sort: this.sortDirection, }; }, update(data) { @@ -116,21 +122,23 @@ export default { this.maxVariableLimit = this.queryData.ciVariables.lookup(data)?.limit || 0; this.pageInfo = this.queryData.ciVariables.lookup(data)?.pageInfo || this.pageInfo; - this.hasNextPage = this.pageInfo?.hasNextPage || false; - // Because graphQL has a limit of 100 items, - // we batch load all the variables by making successive queries - // to keep the same UX. As a safeguard, we make sure that we cannot go over - // 20 consecutive API calls, which means 2000 variables loaded maximum. - if (!this.hasNextPage) { - this.isLoadingMoreItems = false; - } else if (this.loadingCounter < 20) { - this.hasNextPage = false; - this.fetchMoreVariables(); - this.loadingCounter += 1; - } else { - createAlert({ message: this.$options.tooManyCallsError }); - reportMessageToSentry(this.componentName, this.$options.tooManyCallsError, {}); + if (!this.glFeatures?.ciVariablesPages) { + this.hasNextPage = this.pageInfo?.hasNextPage || false; + // Because graphQL has a limit of 100 items, + // we batch load all the variables by making successive queries + // to keep the same UX. As a safeguard, we make sure that we cannot go over + // 20 consecutive API calls, which means 2000 variables loaded maximum. + if (!this.hasNextPage) { + this.isLoadingMoreItems = false; + } else if (this.loadingCounter < 20) { + this.hasNextPage = false; + this.fetchMoreVariables(); + this.loadingCounter += 1; + } else { + createAlert({ message: this.$options.tooManyCallsError }); + reportMessageToSentry(this.componentName, this.$options.tooManyCallsError, {}); + } } }, error() { @@ -172,6 +180,9 @@ export default { this.isLoadingMoreItems ); }, + pageSize() { + return this.glFeatures?.ciVariablesPages ? 20 : 100; + }, }, methods: { addVariable(variable) { @@ -189,6 +200,31 @@ export default { }, }); }, + handlePrevPage() { + this.$apollo.queries.ciVariables.fetchMore({ + variables: { + before: this.pageInfo.startCursor, + first: null, + last: this.pageSize, + }, + }); + }, + handleNextPage() { + this.$apollo.queries.ciVariables.fetchMore({ + variables: { + after: this.pageInfo.endCursor, + first: this.pageSize, + last: null, + }, + }); + }, + async handleSortChanged({ sortDesc }) { + this.sortDirection = sortDesc ? SORT_DIRECTIONS.DESC : SORT_DIRECTIONS.ASC; + + // Wait for the new sort direction to be updated and then refetch + await this.$nextTick(); + this.$apollo.queries.ciVariables.refetch(); + }, updateVariable(variable) { this.variableMutation(UPDATE_MUTATION_ACTION, variable); }, @@ -230,13 +266,17 @@ export default { diff --git a/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_table.vue b/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_table.vue index 345a8def49..5e367ff33b 100644 --- a/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_table.vue +++ b/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_table.vue @@ -4,6 +4,7 @@ import { GlButton, GlLoadingIcon, GlModalDirective, + GlKeysetPagination, GlTable, GlTooltipDirective, } from '@gitlab/ui'; @@ -56,6 +57,7 @@ export default { components: { GlAlert, GlButton, + GlKeysetPagination, GlLoadingIcon, GlTable, }, @@ -78,6 +80,10 @@ export default { type: Number, required: true, }, + pageInfo: { + type: Object, + required: true, + }, variables: { type: Array, required: true, @@ -165,6 +171,28 @@ export default { > {{ exceedsVariableLimitText }} +
+ {{ valuesButtonText }} + {{ __('Add variable') }} +
diff --git a/app/assets/javascripts/ci/ci_variable_list/constants.js b/app/assets/javascripts/ci/ci_variable_list/constants.js index 627ace1b28..c77d8c67bc 100644 --- a/app/assets/javascripts/ci/ci_variable_list/constants.js +++ b/app/assets/javascripts/ci/ci_variable_list/constants.js @@ -2,6 +2,11 @@ import { __, s__ } from '~/locale'; export const ADD_CI_VARIABLE_MODAL_ID = 'add-ci-variable'; +export const SORT_DIRECTIONS = { + ASC: 'KEY_ASC', + DESC: 'KEY_DESC', +}; + // This const will be deprecated once we remove VueX from the section export const displayText = { variableText: __('Variable'), diff --git a/app/assets/javascripts/ci/ci_variable_list/graphql/queries/group_variables.query.graphql b/app/assets/javascripts/ci/ci_variable_list/graphql/queries/group_variables.query.graphql index 538502fdd3..4a64a24573 100644 --- a/app/assets/javascripts/ci/ci_variable_list/graphql/queries/group_variables.query.graphql +++ b/app/assets/javascripts/ci/ci_variable_list/graphql/queries/group_variables.query.graphql @@ -1,10 +1,17 @@ #import "~/ci/ci_variable_list/graphql/fragments/ci_variable.fragment.graphql" #import "~/graphql_shared/fragments/page_info.fragment.graphql" -query getGroupVariables($after: String, $first: Int = 100, $fullPath: ID!) { +query getGroupVariables( + $after: String + $before: String + $first: Int + $fullPath: ID! + $last: Int + $sort: CiVariableSort = KEY_ASC +) { group(fullPath: $fullPath) { id - ciVariables(after: $after, first: $first) { + ciVariables(after: $after, before: $before, first: $first, last: $last, sort: $sort) { limit pageInfo { ...PageInfo diff --git a/app/assets/javascripts/ci/ci_variable_list/graphql/queries/project_variables.query.graphql b/app/assets/javascripts/ci/ci_variable_list/graphql/queries/project_variables.query.graphql index af0cd2d0b2..03a7142080 100644 --- a/app/assets/javascripts/ci/ci_variable_list/graphql/queries/project_variables.query.graphql +++ b/app/assets/javascripts/ci/ci_variable_list/graphql/queries/project_variables.query.graphql @@ -1,10 +1,17 @@ #import "~/ci/ci_variable_list/graphql/fragments/ci_variable.fragment.graphql" #import "~/graphql_shared/fragments/page_info.fragment.graphql" -query getProjectVariables($after: String, $first: Int = 100, $fullPath: ID!) { +query getProjectVariables( + $after: String + $before: String + $first: Int + $fullPath: ID! + $last: Int + $sort: CiVariableSort = KEY_ASC +) { project(fullPath: $fullPath) { id - ciVariables(after: $after, first: $first) { + ciVariables(after: $after, before: $before, first: $first, last: $last, sort: $sort) { limit pageInfo { ...PageInfo diff --git a/app/assets/javascripts/ci/ci_variable_list/graphql/queries/variables.query.graphql b/app/assets/javascripts/ci/ci_variable_list/graphql/queries/variables.query.graphql index b8dd6f5f56..adf539a44a 100644 --- a/app/assets/javascripts/ci/ci_variable_list/graphql/queries/variables.query.graphql +++ b/app/assets/javascripts/ci/ci_variable_list/graphql/queries/variables.query.graphql @@ -1,8 +1,14 @@ #import "~/ci/ci_variable_list/graphql/fragments/ci_variable.fragment.graphql" #import "~/graphql_shared/fragments/page_info.fragment.graphql" -query getVariables($after: String, $first: Int = 100) { - ciVariables(after: $after, first: $first) { +query getVariables( + $after: String + $before: String + $first: Int + $last: Int + $sort: CiVariableSort = KEY_ASC +) { + ciVariables(after: $after, before: $before, first: $first, last: $last, sort: $sort) { pageInfo { ...PageInfo } diff --git a/app/assets/javascripts/ci/ci_variable_list/graphql/settings.js b/app/assets/javascripts/ci/ci_variable_list/graphql/settings.js index cafe3df35d..7ed0418d5f 100644 --- a/app/assets/javascripts/ci/ci_variable_list/graphql/settings.js +++ b/app/assets/javascripts/ci/ci_variable_list/graphql/settings.js @@ -205,33 +205,40 @@ export const mergeVariables = (existing, incoming, { args }) => { return result; }; -export const cacheConfig = { - cacheConfig: { - typePolicies: { - Query: { - fields: { - ciVariables: { - keyArgs: false, - merge: mergeVariables, +export const mergeOnlyIncomings = (_, incoming) => { + return incoming; +}; + +export const generateCacheConfig = (isVariablePagesEnabled = false) => { + const merge = isVariablePagesEnabled ? mergeOnlyIncomings : mergeVariables; + return { + cacheConfig: { + typePolicies: { + Query: { + fields: { + ciVariables: { + keyArgs: false, + merge, + }, }, }, - }, - Project: { - fields: { - ciVariables: { - keyArgs: ['fullPath', 'endpoint', 'id'], - merge: mergeVariables, + Project: { + fields: { + ciVariables: { + keyArgs: ['fullPath'], + merge, + }, }, }, - }, - Group: { - fields: { - ciVariables: { - keyArgs: ['fullPath'], - merge: mergeVariables, + Group: { + fields: { + ciVariables: { + keyArgs: ['fullPath'], + merge, + }, }, }, }, }, - }, + }; }; diff --git a/app/assets/javascripts/ci/ci_variable_list/index.js b/app/assets/javascripts/ci/ci_variable_list/index.js index 4270c3c67f..3ed56201f0 100644 --- a/app/assets/javascripts/ci/ci_variable_list/index.js +++ b/app/assets/javascripts/ci/ci_variable_list/index.js @@ -5,7 +5,7 @@ import { parseBoolean } from '~/lib/utils/common_utils'; import CiAdminVariables from './components/ci_admin_variables.vue'; import CiGroupVariables from './components/ci_group_variables.vue'; import CiProjectVariables from './components/ci_project_variables.vue'; -import { cacheConfig, resolvers } from './graphql/settings'; +import { generateCacheConfig, resolvers } from './graphql/settings'; const mountCiVariableListApp = (containerEl) => { const { @@ -42,8 +42,13 @@ const mountCiVariableListApp = (containerEl) => { Vue.use(VueApollo); + // If the feature flag `ci_variables_pages` is enabled, + // we are using the default cache config with pages. const apolloProvider = new VueApollo({ - defaultClient: createDefaultClient(resolvers, cacheConfig), + defaultClient: createDefaultClient( + resolvers, + generateCacheConfig(window.gon?.features?.ciVariablesPages), + ), }); return new Vue({ diff --git a/app/assets/javascripts/ci/pipeline_editor/components/editor/text_editor.vue b/app/assets/javascripts/ci/pipeline_editor/components/editor/text_editor.vue index 891c40482d..1192f0bf41 100644 --- a/app/assets/javascripts/ci/pipeline_editor/components/editor/text_editor.vue +++ b/app/assets/javascripts/ci/pipeline_editor/components/editor/text_editor.vue @@ -2,6 +2,7 @@ import { EDITOR_READY_EVENT } from '~/editor/constants'; import { CiSchemaExtension } from '~/editor/extensions/source_editor_ci_schema_ext'; import SourceEditor from '~/vue_shared/components/source_editor.vue'; +import eventHub, { SCROLL_EDITOR_TO_BOTTOM } from '~/ci/pipeline_editor/event_hub'; import { SOURCE_EDITOR_DEBOUNCE } from '../../constants'; export default { @@ -16,6 +17,12 @@ export default { }, inject: ['ciConfigPath'], inheritAttrs: false, + created() { + eventHub.$on(SCROLL_EDITOR_TO_BOTTOM, this.scrollEditorToBottom); + }, + beforeDestroy() { + eventHub.$off(SCROLL_EDITOR_TO_BOTTOM, this.scrollEditorToBottom); + }, methods: { onCiConfigUpdate(content) { this.$emit('updateCiConfig', content); @@ -24,6 +31,10 @@ export default { instance.use({ definition: CiSchemaExtension }); instance.registerCiSchema(); }, + scrollEditorToBottom() { + const editor = this.$refs.editor.getEditor(); + editor.setScrollTop(editor.getScrollHeight()); + }, }, readyEvent: EDITOR_READY_EVENT, }; diff --git a/app/assets/javascripts/ci/pipeline_editor/components/header/validation_segment.vue b/app/assets/javascripts/ci/pipeline_editor/components/header/validation_segment.vue index 84c0eef441..8553256f13 100644 --- a/app/assets/javascripts/ci/pipeline_editor/components/header/validation_segment.vue +++ b/app/assets/javascripts/ci/pipeline_editor/components/header/validation_segment.vue @@ -1,8 +1,7 @@ + diff --git a/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/job_setup_item.vue b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/job_setup_item.vue new file mode 100644 index 0000000000..a25b3ca09f --- /dev/null +++ b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/accordion_items/job_setup_item.vue @@ -0,0 +1,89 @@ + + diff --git a/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/constants.js b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/constants.js index 1c122fd5e3..994a6e719f 100644 --- a/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/constants.js +++ b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/constants.js @@ -1,7 +1,41 @@ -import { s__ } from '~/locale'; +import { __, s__ } from '~/locale'; export const DRAWER_CONTAINER_CLASS = '.content-wrapper'; +export const JOB_TEMPLATE = { + name: '', + stage: '', + script: '', + tags: [], + image: { + name: '', + entrypoint: [''], + }, + services: [ + { + name: '', + entrypoint: [''], + }, + ], + artifacts: { + paths: [''], + exclude: [''], + }, + cache: { + paths: [''], + key: '', + }, +}; + export const i18n = { ADD_JOB: s__('JobAssistant|Add job'), + SCRIPT: s__('JobAssistant|Script'), + JOB_NAME: s__('JobAssistant|Job name'), + JOB_SETUP: s__('JobAssistant|Job Setup'), + STAGE: s__('JobAssistant|Stage (optional)'), + TAGS: s__('JobAssistant|Tags (optional)'), + IMAGE: s__('JobAssistant|Image'), + IMAGE_NAME: s__('JobAssistant|Image name (optional)'), + IMAGE_ENTRYPOINT: s__('JobAssistant|Image entrypoint (optional)'), + THIS_FIELD_IS_REQUIRED: __('This field is required'), }; diff --git a/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/job_assistant_drawer.vue b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/job_assistant_drawer.vue index 65c87df21c..9f68b97b32 100644 --- a/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/job_assistant_drawer.vue +++ b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/job_assistant_drawer.vue @@ -1,13 +1,25 @@ @@ -44,6 +125,16 @@ export default { + + + + diff --git a/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/utils.js b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/utils.js new file mode 100644 index 0000000000..83e7574c4d --- /dev/null +++ b/app/assets/javascripts/ci/pipeline_editor/components/job_assistant_drawer/utils.js @@ -0,0 +1,22 @@ +import { isEmpty, isObject, isArray, isString, reject, omitBy, mapValues, map, trim } from 'lodash'; + +const isEmptyValue = (val) => (isObject(val) || isString(val)) && isEmpty(val); +const trimText = (val) => (isString(val) ? trim(val) : val); + +export const removeEmptyObj = (obj) => { + if (isArray(obj)) { + return reject(map(obj, removeEmptyObj), isEmptyValue); + } else if (isObject(obj)) { + return omitBy(mapValues(obj, removeEmptyObj), isEmptyValue); + } + return obj; +}; + +export const trimFields = (data) => { + if (isArray(data)) { + return data.map(trimFields); + } else if (isObject(data)) { + return mapValues(data, trimFields); + } + return trimText(data); +}; diff --git a/app/assets/javascripts/ci/pipeline_editor/event_hub.js b/app/assets/javascripts/ci/pipeline_editor/event_hub.js new file mode 100644 index 0000000000..c64eaf5ef5 --- /dev/null +++ b/app/assets/javascripts/ci/pipeline_editor/event_hub.js @@ -0,0 +1,5 @@ +import createEventHub from '~/helpers/event_hub_factory'; + +export default createEventHub(); + +export const SCROLL_EDITOR_TO_BOTTOM = Symbol('scrollEditorToBottom'); diff --git a/app/assets/javascripts/ci/pipeline_editor/index.js b/app/assets/javascripts/ci/pipeline_editor/index.js index 6d91c33983..d65a7c321c 100644 --- a/app/assets/javascripts/ci/pipeline_editor/index.js +++ b/app/assets/javascripts/ci/pipeline_editor/index.js @@ -12,6 +12,7 @@ import getPipelineEtag from './graphql/queries/client/pipeline_etag.query.graphq import { resolvers } from './graphql/resolvers'; import typeDefs from './graphql/typedefs.graphql'; import PipelineEditorApp from './pipeline_editor_app.vue'; +import createStore from './store'; export const initPipelineEditor = (selector = '#js-pipeline-editor') => { const el = document.querySelector(selector); @@ -29,12 +30,12 @@ export const initPipelineEditor = (selector = '#js-pipeline-editor') => { ciExamplesHelpPagePath, ciHelpPagePath, ciLintPath, + ciTroubleshootingPath, defaultBranch, emptyStateIllustrationPath, helpPaths, includesHelpPagePath, lintHelpPagePath, - lintUnavailableHelpPagePath, needsHelpPagePath, newMergeRequestPath, pipelinePagePath, @@ -111,14 +112,18 @@ export const initPipelineEditor = (selector = '#js-pipeline-editor') => { }, }); + const store = createStore(); + return new Vue({ el, + store, apolloProvider, provide: { ciConfigPath, ciExamplesHelpPagePath, ciHelpPagePath, ciLintPath, + ciTroubleshootingPath, configurationPaths, dataMethod: 'graphql', defaultBranch, @@ -126,7 +131,6 @@ export const initPipelineEditor = (selector = '#js-pipeline-editor') => { helpPaths, includesHelpPagePath, lintHelpPagePath, - lintUnavailableHelpPagePath, needsHelpPagePath, newMergeRequestPath, pipelinePagePath, diff --git a/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue b/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue index ff848a973e..7b3c4d6f74 100644 --- a/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue +++ b/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue @@ -1,10 +1,12 @@ @@ -94,6 +98,7 @@ export default { diff --git a/app/assets/javascripts/ci/runner/admin_register_runner/admin_register_runner_app.vue b/app/assets/javascripts/ci/runner/admin_register_runner/admin_register_runner_app.vue new file mode 100644 index 0000000000..cd38dc0715 --- /dev/null +++ b/app/assets/javascripts/ci/runner/admin_register_runner/admin_register_runner_app.vue @@ -0,0 +1,69 @@ + + diff --git a/app/assets/javascripts/ci/runner/admin_register_runner/index.js b/app/assets/javascripts/ci/runner/admin_register_runner/index.js new file mode 100644 index 0000000000..bd43a5e8ce --- /dev/null +++ b/app/assets/javascripts/ci/runner/admin_register_runner/index.js @@ -0,0 +1,36 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import { showAlertFromLocalStorage } from '../local_storage_alert/show_alert_from_local_storage'; +import AdminRegisterRunnerApp from './admin_register_runner_app.vue'; + +Vue.use(VueApollo); + +export const initAdminRegisterRunner = (selector = '#js-admin-register-runner') => { + showAlertFromLocalStorage(); + + const el = document.querySelector(selector); + + if (!el) { + return null; + } + + const { runnerId, runnersPath } = el.dataset; + + const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient(), + }); + + return new Vue({ + el, + apolloProvider, + render(h) { + return h(AdminRegisterRunnerApp, { + props: { + runnerId, + runnersPath, + }, + }); + }, + }); +}; diff --git a/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue b/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue index 8d4303778a..36fb1cee52 100644 --- a/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue +++ b/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue @@ -1,5 +1,5 @@ + diff --git a/app/assets/javascripts/ci/runner/components/registration/platforms_drawer.vue b/app/assets/javascripts/ci/runner/components/registration/platforms_drawer.vue new file mode 100644 index 0000000000..ff182c61cc --- /dev/null +++ b/app/assets/javascripts/ci/runner/components/registration/platforms_drawer.vue @@ -0,0 +1,135 @@ + + diff --git a/app/assets/javascripts/ci/runner/components/registration/registration_instructions.vue b/app/assets/javascripts/ci/runner/components/registration/registration_instructions.vue new file mode 100644 index 0000000000..2f3c172666 --- /dev/null +++ b/app/assets/javascripts/ci/runner/components/registration/registration_instructions.vue @@ -0,0 +1,241 @@ + + diff --git a/app/assets/javascripts/ci/runner/components/registration/registration_token_reset_dropdown_item.vue b/app/assets/javascripts/ci/runner/components/registration/registration_token_reset_dropdown_item.vue index ac2793654c..6ce88fc54d 100644 --- a/app/assets/javascripts/ci/runner/components/registration/registration_token_reset_dropdown_item.vue +++ b/app/assets/javascripts/ci/runner/components/registration/registration_token_reset_dropdown_item.vue @@ -1,6 +1,6 @@ + diff --git a/app/assets/javascripts/ci/runner/components/runner_delete_button.vue b/app/assets/javascripts/ci/runner/components/runner_delete_button.vue index f02e6bce5c..020487fc72 100644 --- a/app/assets/javascripts/ci/runner/components/runner_delete_button.vue +++ b/app/assets/javascripts/ci/runner/components/runner_delete_button.vue @@ -1,7 +1,7 @@ + diff --git a/app/assets/javascripts/commit/components/x509_certificate_details.vue b/app/assets/javascripts/commit/components/x509_certificate_details.vue new file mode 100644 index 0000000000..6880fab904 --- /dev/null +++ b/app/assets/javascripts/commit/components/x509_certificate_details.vue @@ -0,0 +1,45 @@ + + + diff --git a/app/assets/javascripts/commit/constants.js b/app/assets/javascripts/commit/constants.js new file mode 100644 index 0000000000..4f865e99e4 --- /dev/null +++ b/app/assets/javascripts/commit/constants.js @@ -0,0 +1,104 @@ +import { __, s__ } from '~/locale'; + +export const X509_CERTIFICATE_KEY_IDENTIFIER_TITLE = __('Subject Key Identifier:'); + +export const verificationStatuses = { + VERIFIED: 'VERIFIED', + UNVERIFIED: 'UNVERIFIED', + UNVERIFIED_KEY: 'UNVERIFIED_KEY', + UNKNOWN_KEY: 'UNKNOWN_KEY', + OTHER_USER: 'OTHER_USER', + SAME_USER_DIFFERENT_EMAIL: 'SAME_USER_DIFFERENT_EMAIL', + MULTIPLE_SIGNATURES: 'MULTIPLE_SIGNATURES', + REVOKED_KEY: 'REVOKED_KEY', +}; + +export const signatureTypes = { + /* eslint-disable @gitlab/require-i18n-strings */ + GPG: 'GpgSignature', + X509: 'X509Signature', + SSH: 'SshSignature', + /* eslint-enable @gitlab/require-i18n-strings */ +}; + +const UNVERIFIED_CONFIG = { + variant: 'muted', + label: __('Unverified'), + title: __('Unverified signature'), + description: __('This commit was signed with an unverified signature.'), +}; + +export const statusConfig = { + [verificationStatuses.VERIFIED]: { + variant: 'success', + label: __('Verified'), + title: __('Verified commit'), + description: __( + 'This commit was signed with a verified signature and the committer email was verified to belong to the same user.', + ), + }, + [verificationStatuses.UNVERIFIED]: { + ...UNVERIFIED_CONFIG, + }, + [verificationStatuses.UNVERIFIED_KEY]: { + ...UNVERIFIED_CONFIG, + }, + [verificationStatuses.UNKNOWN_KEY]: { + ...UNVERIFIED_CONFIG, + }, + [verificationStatuses.OTHER_USER]: { + variant: 'muted', + label: __('Unverified'), + title: __("Different user's signature"), + description: __('This commit was signed with an unverified signature.'), + }, + [verificationStatuses.SAME_USER_DIFFERENT_EMAIL]: { + variant: 'muted', + label: __('Unverified'), + title: __('GPG key mismatch'), + description: __( + 'This commit was signed with a verified signature, but the committer email is not associated with the GPG Key.', + ), + }, + [verificationStatuses.MULTIPLE_SIGNATURES]: { + variant: 'muted', + label: __('Unverified'), + title: __('Multiple signatures'), + description: __('This commit was signed with multiple signatures.'), + }, + [verificationStatuses.REVOKED_KEY]: { + variant: 'muted', + label: __('Unverified'), + title: s__('CommitSignature|Unverified signature'), + description: s__('CommitSignature|This commit was signed with a key that was revoked.'), + }, +}; + +export const typeConfig = { + [signatureTypes.GPG]: { + keyLabel: __('GPG Key ID:'), + keyNamespace: 'gpgKeyPrimaryKeyid', + helpLink: { + label: __('Learn about signing commits'), + path: 'user/project/repository/gpg_signed_commits/index.md', + }, + }, + [signatureTypes.X509]: { + keyLabel: '', + helpLink: { + label: __('Learn more about X.509 signed commits'), + path: '/user/project/repository/x509_signed_commits/index.md', + }, + subjectTitle: __('Certificate Subject'), + issuerTitle: __('Certificate Issuer'), + keyIdentifierTitle: __('Subject Key Identifier:'), + }, + [signatureTypes.SSH]: { + keyLabel: __('SSH key fingerprint:'), + keyNamespace: 'keyFingerprintSha256', + helpLink: { + label: __('Learn about signing commits with SSH keys.'), + path: '/user/project/repository/ssh_signed_commits/index.md', + }, + }, +}; diff --git a/app/assets/javascripts/commit_merge_requests.js b/app/assets/javascripts/commit_merge_requests.js index d40cbe589c..38abb7bebb 100644 --- a/app/assets/javascripts/commit_merge_requests.js +++ b/app/assets/javascripts/commit_merge_requests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from './lib/utils/axios_utils'; import { n__, s__ } from './locale'; diff --git a/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue b/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue index 196f5537a9..97762ff549 100644 --- a/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue +++ b/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue @@ -1,6 +1,6 @@ @@ -168,30 +211,37 @@ export default { class="md-area" :class="{ 'is-focused': focused }" > - +
+
+ {{ placeholder }} +
+
+
+ +
+ +
-
diff --git a/app/assets/javascripts/content_editor/components/formatting_toolbar.vue b/app/assets/javascripts/content_editor/components/formatting_toolbar.vue index 36ca3b8cfb..a5be63fa89 100644 --- a/app/assets/javascripts/content_editor/components/formatting_toolbar.vue +++ b/app/assets/javascripts/content_editor/components/formatting_toolbar.vue @@ -1,5 +1,5 @@ diff --git a/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue b/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue index c307601e67..49eb11f808 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue @@ -1,7 +1,7 @@ - - diff --git a/app/assets/javascripts/vue_shared/components/source_editor.vue b/app/assets/javascripts/vue_shared/components/source_editor.vue index 1925c5d406..7b7d3d48d9 100644 --- a/app/assets/javascripts/vue_shared/components/source_editor.vue +++ b/app/assets/javascripts/vue_shared/components/source_editor.vue @@ -2,6 +2,7 @@ import { debounce, isEmpty } from 'lodash'; import { CONTENT_UPDATE_DEBOUNCE, EDITOR_READY_EVENT } from '~/editor/constants'; import Editor from '~/editor/source_editor'; +import { markRaw } from '~/lib/utils/vue3compat/mark_raw'; function initSourceEditor({ el, ...args }) { const editor = new Editor({ @@ -10,10 +11,12 @@ function initSourceEditor({ el, ...args }) { }, }); - return editor.createInstance({ - el, - ...args, - }); + return markRaw( + editor.createInstance({ + el, + ...args, + }), + ); } export default { diff --git a/app/assets/javascripts/vue_shared/components/source_viewer/constants.js b/app/assets/javascripts/vue_shared/components/source_viewer/constants.js index 15335ea6ed..514b626ed9 100644 --- a/app/assets/javascripts/vue_shared/components/source_viewer/constants.js +++ b/app/assets/javascripts/vue_shared/components/source_viewer/constants.js @@ -141,8 +141,6 @@ export const BIDI_CHARS_CLASS_LIST = 'unicode-bidi has-tooltip'; export const BIDI_CHAR_TOOLTIP = 'Potentially unwanted character detected: Unicode BiDi Control'; -export const HLJS_ON_AFTER_HIGHLIGHT = 'after:highlight'; - // We fallback to highlighting these languages with Rouge, see the following issue for more detail: // https://gitlab.com/gitlab-org/gitlab/-/issues/384375#note_1212752013 export const LEGACY_FALLBACKS = ['python']; diff --git a/app/assets/javascripts/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue b/app/assets/javascripts/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue index 09414e679b..bda88a48e4 100644 --- a/app/assets/javascripts/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue +++ b/app/assets/javascripts/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue @@ -21,6 +21,11 @@ export default { required: false, default: 'top', }, + boundary: { + type: String, + required: false, + default: '', + }, truncateTarget: { type: [String, Function], required: false, @@ -44,6 +49,8 @@ export default { title: this.title, placement: this.placement, disabled: this.tooltipDisabled, + // Only set the tooltip boundary if it's truthy + ...(this.boundary && { boundary: this.boundary }), }; }, }, diff --git a/app/assets/javascripts/vue_shared/components/upload_dropzone/upload_dropzone.vue b/app/assets/javascripts/vue_shared/components/upload_dropzone/upload_dropzone.vue index a001b6bdf2..23fbf211d5 100644 --- a/app/assets/javascripts/vue_shared/components/upload_dropzone/upload_dropzone.vue +++ b/app/assets/javascripts/vue_shared/components/upload_dropzone/upload_dropzone.vue @@ -149,7 +149,7 @@ export default { >