From 029fca15f43ad62a0c8e19f43708c6c1f9d554b2 Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Tue, 28 Jul 2020 23:09:34 +0530 Subject: [PATCH] New upstream version 13.2.1 --- .gitignore | 1 + .gitlab-ci.yml | 3 + .gitlab/CODEOWNERS | 14 +- .gitlab/ci/build-images.gitlab-ci.yml | 31 + .gitlab/ci/docs.gitlab-ci.yml | 9 + .gitlab/ci/frontend.gitlab-ci.yml | 49 +- .gitlab/ci/global.gitlab-ci.yml | 21 +- .gitlab/ci/qa.gitlab-ci.yml | 1 - .gitlab/ci/rails.gitlab-ci.yml | 362 +- .gitlab/ci/reports.gitlab-ci.yml | 13 +- .gitlab/ci/review.gitlab-ci.yml | 321 +- .gitlab/ci/rules.gitlab-ci.yml | 199 +- .gitlab/ci/setup.gitlab-ci.yml | 1 + .gitlab/ci/yaml.gitlab-ci.yml | 4 +- .gitlab/issue_templates/Feature proposal.md | 9 +- .../Security developer workflow.md | 12 +- .../merge_request_templates/Documentation.md | 6 +- .../Security Release.md | 22 +- .haml-lint.yml | 7 + .haml-lint_todo.yml | 5 - .markdownlint.json | 1 + .prettierignore | 1 + .rubocop.yml | 22 + .rubocop_todo.yml | 419 +- CHANGELOG.md | 742 +- Dangerfile | 1 + GITALY_SERVER_VERSION | 2 +- GITLAB_ELASTICSEARCH_INDEXER_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 32 +- Gemfile.lock | 107 +- VERSION | 2 +- app/assets/images/confluence.svg | 1 + app/assets/images/logos/jira-gray.svg | 1 + .../components/alert_details.vue | 54 +- .../alert_management_empty_state.vue | 90 + .../alert_management_list_wrapper.vue | 75 + ...nt_list.vue => alert_management_table.vue} | 250 +- .../components/alert_metrics.vue | 56 + .../components/alert_sidebar.vue | 50 +- .../components/alert_status.vue | 129 + .../components/sidebar/sidebar_assignees.vue | 64 +- .../components/sidebar/sidebar_header.vue | 27 +- .../components/sidebar/sidebar_status.vue | 99 +- .../components/sidebar/sidebar_todo.vue | 106 +- .../components/system_notes/system_note.vue | 2 +- .../javascripts/alert_management/details.js | 54 +- .../fragments/alert_note.fragment.graphql | 23 +- .../fragments/detail_item.fragment.graphql | 2 + .../fragments/list_item.fragment.graphql | 1 - ...l => alert_set_assignees.mutation.graphql} | 9 +- .../mutations/alert_todo_create.graphql | 11 + .../mutations/create_issue_from_alert.graphql | 8 - .../create_issue_from_alert.mutation.graphql | 8 + .../toggle_sidebar_status.mutation.graphql | 3 + .../mutations/update_alert_status.graphql | 10 - .../update_alert_status.mutation.graphql | 17 + .../graphql/queries/details.query.graphql | 12 +- .../graphql/queries/get_alerts.query.graphql | 54 +- .../queries/get_count_by_status.query.graphql | 18 +- .../queries/sidebar_status.query.graphql | 3 + .../javascripts/alert_management/list.js | 16 +- .../components/alerts_service_form.vue | 23 +- .../alerts_service_settings/index.js | 4 + .../components/alerts_settings_form.vue | 563 + .../javascripts/alerts_settings/constants.js | 50 + .../javascripts/alerts_settings/index.js | 67 + .../alerts_settings/services/index.js | 36 + app/assets/javascripts/api.js | 43 +- app/assets/javascripts/awards_handler.js | 8 +- .../badges/components/badge_form.vue | 2 +- .../batch_comments/components/draft_note.vue | 11 +- .../components/parallel_draft_comment_row.vue | 8 +- .../components/preview_dropdown.vue | 2 +- .../components/preview_item.vue | 15 +- .../collapse_sidebar_on_window_resize.js | 41 + app/assets/javascripts/behaviors/gl_emoji.js | 88 +- app/assets/javascripts/behaviors/index.js | 4 + .../behaviors/markdown/copy_as_gfm.js | 4 +- .../behaviors/markdown/render_mermaid.js | 2 +- app/assets/javascripts/behaviors/select2.js | 23 + .../behaviors/shortcuts/shortcuts_toggle.vue | 28 +- .../blob_header_viewer_switcher.vue | 12 +- .../javascripts/blob/components/constants.js | 2 +- .../blob/notebook/notebook_viewer.vue | 4 +- .../javascripts/blob/pdf/pdf_viewer.vue | 2 +- app/assets/javascripts/blob/sketch/index.js | 2 +- .../components/popover.vue | 31 +- app/assets/javascripts/blob/viewer/index.js | 5 + .../javascripts/blob_edit/blob_bundle.js | 7 +- app/assets/javascripts/blob_edit/constants.js | 4 + app/assets/javascripts/blob_edit/edit_blob.js | 83 +- .../javascripts/boards/components/board.js | 192 - .../boards/components/board_content.vue | 3 +- .../boards/components/board_list_header.vue | 78 +- .../boards/components/board_new_issue.vue | 19 +- .../boards/components/boards_selector.vue | 2 +- .../boards/components/issue_card_inner.vue | 4 +- .../boards/components/modal/header.vue | 2 +- app/assets/javascripts/boards/index.js | 12 +- app/assets/javascripts/boards/models/list.js | 21 +- .../boards/queries/board.fragment.graphql | 2 +- .../board_list_shared.fragment.graphql | 20 +- .../javascripts/boards/stores/boards_store.js | 24 + app/assets/javascripts/boards/toggle_focus.js | 2 +- .../components/ci_key_field.vue | 169 - .../ci_variable_autocomplete_tokens.js | 14 - .../components/ci_variable_modal.vue | 81 +- .../ci_variable_list/store/actions.js | 28 +- .../ci_variable_list/store/mutation_types.js | 6 + .../ci_variable_list/store/mutations.js | 35 +- .../ci_variable_list/store/state.js | 4 +- .../ci_variable_list/store/utils.js | 4 +- .../javascripts/close_reopen_report_toggle.js | 7 +- .../javascripts/clusters/clusters_bundle.js | 3 +- .../ingress_modsecurity_settings.vue | 8 +- .../remove_cluster_confirmation.vue | 19 +- .../components/ancestor_notice.vue | 34 + .../clusters_list/components/clusters.vue | 39 +- .../clusters_list/store/actions.js | 30 +- .../clusters_list/store/mutation_types.js | 3 +- .../clusters_list/store/mutations.js | 7 +- .../javascripts/clusters_list/store/state.js | 4 +- .../code_navigation/components/popover.vue | 92 +- .../code_navigation/store/actions.js | 6 +- .../code_navigation/utils/index.js | 1 + .../javascripts/commit_merge_requests.js | 4 +- app/assets/javascripts/commons/polyfills.js | 45 +- .../commons/polyfills/custom_event.js | 21 - .../javascripts/commons/polyfills/element.js | 74 - .../javascripts/commons/polyfills/event.js | 22 - .../javascripts/commons/polyfills/nodelist.js | 14 - .../polyfills/request_idle_callback.js | 24 - .../javascripts/commons/polyfills/svg.js | 11 - .../components/stage_nav_item.vue | 5 - .../deploy_keys/components/app.vue | 8 +- .../components/design_destroyer.vue | 2 +- .../design_notes/design_discussion.vue | 4 +- .../design_notes/design_reply_form.vue | 5 +- .../components/toolbar/index.vue | 2 +- .../components/upload/design_dropzone.vue | 2 +- .../graphql/fragments/design.fragment.graphql | 6 +- ...t.graphql => design_list.fragment.graphql} | 0 ...t.graphql => design_note.fragment.graphql} | 2 +- ...ent.graphql => diff_refs.fragment.graphql} | 0 ...> create_image_diff_note.mutation.graphql} | 2 +- ...n.graphql => create_note.mutation.graphql} | 2 +- ...raphql => destroy_design.mutation.graphql} | 0 ...toggle_resolve_discussion.mutation.graphql | 2 +- .../update_active_discussion.mutation.graphql | 2 +- ...> update_image_diff_note.mutation.graphql} | 2 +- .../mutations/update_note.mutation.graphql | 2 +- ...graphql => upload_design.mutation.graphql} | 2 +- ...a.query.graphql => app_data.query.graphql} | 0 ...query.graphql => get_design.query.graphql} | 0 .../queries/get_design_list.query.graphql | 2 +- .../javascripts/design_management/index.js | 3 + .../design_management/mixins/all_versions.js | 2 +- .../design_management/pages/design/index.vue | 12 +- .../design_management/pages/index.vue | 2 +- .../design_management/utils/tracking.js | 27 +- .../design_management_new/components/app.vue | 3 + .../components/delete_button.vue | 81 + .../components/design_destroyer.vue | 67 + .../components/design_note_pin.vue | 61 + .../design_notes/design_discussion.vue | 297 + .../components/design_notes/design_note.vue | 156 + .../design_notes/design_reply_form.vue | 141 + .../design_notes/toggle_replies_widget.vue | 70 + .../components/design_overlay.vue | 287 + .../components/design_presentation.vue | 322 + .../components/design_scaler.vue | 65 + .../components/design_sidebar.vue | 178 + .../components/image.vue | 110 + .../components/list/item.vue | 174 + .../components/toolbar/index.vue | 124 + .../components/toolbar/pagination.vue | 83 + .../components/toolbar/pagination_button.vue | 48 + .../components/upload/button.vue | 59 + .../components/upload/design_dropzone.vue | 136 + .../upload/design_version_dropdown.vue | 76 + .../design_management_new/constants.js | 16 + .../design_management_new/graphql.js | 45 + .../graphql/fragments/design.fragment.graphql | 24 + .../fragments/design_list.fragment.graphql | 8 + .../fragments/design_note.fragment.graphql | 29 + .../fragments/diff_refs.fragment.graphql | 5 + ...iscussion_resolved_status.fragment.graphql | 9 + .../note_permissions.fragment.graphql | 3 + .../fragments/version.fragment.graphql | 4 + .../create_image_diff_note.mutation.graphql | 21 + .../mutations/create_note.mutation.graphql | 10 + .../mutations/destroy_design.mutation.graphql | 10 + ...toggle_resolve_discussion.mutation.graphql | 17 + .../update_active_discussion.mutation.graphql | 3 + .../update_image_diff_note.mutation.graphql | 10 + .../mutations/update_note.mutation.graphql | 10 + .../mutations/upload_design.mutation.graphql | 21 + .../queries/active_discussion.query.graphql | 6 + .../queries/design_permissions.query.graphql | 10 + .../graphql/queries/get_design.query.graphql | 31 + .../queries/get_design_list.query.graphql | 26 + .../graphql/typedefs.graphql | 12 + .../design_management_new/index.js | 33 + .../mixins/all_designs.js | 49 + .../mixins/all_versions.js | 59 + .../pages/design/index.vue | 367 + .../design_management_new/pages/index.vue | 346 + .../design_management_new/router/constants.js | 2 + .../design_management_new/router/index.js | 32 + .../design_management_new/router/routes.js | 29 + .../utils/cache_update.js | 276 + .../utils/design_management_utils.js | 128 + .../utils/error_messages.js | 95 + .../design_management_new/utils/tracking.js | 27 + .../javascripts/diffs/components/app.vue | 56 +- .../diffs/components/diff_file.vue | 5 + .../diffs/components/diff_file_header.vue | 24 +- .../diffs/components/diff_file_row.vue | 13 +- .../diffs/components/diff_line_note_form.vue | 35 +- .../diffs/components/diff_table_cell.vue | 107 +- .../components/inline_diff_table_row.vue | 16 +- .../diffs/components/inline_diff_view.vue | 15 +- .../diffs/components/no_changes.vue | 8 +- .../components/parallel_diff_table_row.vue | 13 +- .../diffs/components/parallel_diff_view.vue | 15 +- .../diffs/components/tree_list.vue | 3 +- app/assets/javascripts/diffs/constants.js | 6 +- app/assets/javascripts/diffs/index.js | 16 +- app/assets/javascripts/diffs/store/actions.js | 70 +- .../diffs/store/modules/diff_state.js | 11 +- app/assets/javascripts/diffs/store/utils.js | 9 + app/assets/javascripts/editor/editor_lite.js | 25 +- .../javascripts/editor/editor_markdown_ext.js | 99 + app/assets/javascripts/emoji/index.js | 88 +- .../environments/components/container.vue | 7 +- .../environments/components/empty_state.vue | 20 +- .../components/environments_app.vue | 6 +- .../components/environments_table.vue | 2 +- .../environments/mixins/environments_mixin.js | 4 +- .../javascripts/environments/mount_show.js | 2 +- .../components/error_details.vue | 47 +- .../components/stacktrace_entry.vue | 9 +- .../queries/details.query.graphql | 50 +- .../components/error_tracking_form.vue | 4 +- .../javascripts/filtered_search/constants.js | 2 + .../filtered_search/dropdown_emoji.js | 2 +- .../filtered_search/dropdown_user.js | 2 +- .../filtered_search_manager.js | 8 +- .../filtered_search_tokenizer.js | 8 +- .../stores/recent_searches_store.js | 12 +- .../filtered_search/visual_token_value.js | 20 +- app/assets/javascripts/gfm_auto_complete.js | 22 +- app/assets/javascripts/gl_field_error.js | 2 +- app/assets/javascripts/gl_field_errors.js | 23 +- app/assets/javascripts/gl_form.js | 13 +- .../fragments/user.fragment.graphql | 7 + .../groups/components/group_item.vue | 4 +- .../javascripts/groups/components/groups.vue | 2 +- .../groups/components/item_caret.vue | 2 +- app/assets/javascripts/header.js | 5 +- .../javascripts/helpers/event_hub_factory.js | 109 +- .../javascripts/helpers/monitor_helper.js | 22 +- .../ide/components/branches/item.vue | 2 +- .../ide/components/commit_sidebar/actions.vue | 2 +- .../components/commit_sidebar/empty_state.vue | 2 +- .../commit_sidebar/list_collapsed.vue | 2 +- .../commit_sidebar/message_field.vue | 2 +- .../new_merge_request_option.vue | 2 +- .../components/commit_sidebar/radio_group.vue | 2 +- .../commit_sidebar/success_message.vue | 2 +- .../ide/components/file_row_extra.vue | 2 +- .../ide/components/file_templates/bar.vue | 2 +- app/assets/javascripts/ide/components/ide.vue | 9 +- .../javascripts/ide/components/ide_review.vue | 2 +- .../ide/components/ide_status_list.vue | 17 +- .../javascripts/ide/components/jobs/item.vue | 2 +- .../javascripts/ide/components/jobs/list.vue | 2 +- .../javascripts/ide/components/jobs/stage.vue | 2 +- .../ide/components/merge_requests/item.vue | 2 +- .../ide/components/merge_requests/list.vue | 2 +- .../ide/components/new_dropdown/index.vue | 2 + .../ide/components/new_dropdown/modal.vue | 5 +- .../ide/components/pipelines/list.vue | 4 +- .../ide/components/repo_editor.vue | 3 +- .../ide/components/terminal/empty_state.vue | 2 +- app/assets/javascripts/ide/lib/editor.js | 7 +- .../javascripts/ide/lib/schemas/index.js | 4 + .../javascripts/ide/lib/schemas/json/index.js | 8 + .../ide/lib/schemas/yaml/gitlab_ci.js | 4 + .../javascripts/ide/lib/schemas/yaml/index.js | 12 + .../queries/getUserPermissions.query.graphql | 4 +- app/assets/javascripts/ide/services/gql.js | 23 +- app/assets/javascripts/ide/services/index.js | 12 +- .../javascripts/ide/stores/actions/file.js | 81 +- .../ide/stores/actions/merge_request.js | 1 + .../javascripts/ide/stores/mutation_types.js | 1 - .../javascripts/ide/stores/mutations.js | 9 - app/assets/javascripts/ide/stores/utils.js | 7 - app/assets/javascripts/ide/utils.js | 15 +- .../components/bitbucket_status_table.vue | 2 +- .../import_projects/store/actions.js | 15 +- app/assets/javascripts/importer_status.js | 6 +- .../components/alerts_form.vue | 139 + .../components/incidents_settings_tabs.vue | 61 + .../components/pagerduty_form.vue | 183 + .../incidents_settings/constants.js | 83 + .../incidents_settings_service.js | 32 + .../javascripts/incidents_settings/index.js | 46 + .../edit/components/active_toggle.vue | 12 +- .../edit/components/dynamic_field.vue | 22 +- .../edit/components/integration_form.vue | 82 +- .../edit/components/jira_issues_fields.vue | 151 + .../edit/components/jira_trigger_fields.vue | 58 +- .../edit/components/override_dropdown.vue | 63 + .../edit/components/trigger_fields.vue | 7 +- .../javascripts/integrations/edit/index.js | 97 +- .../integrations/edit/store/actions.js | 4 + .../integrations/edit/store/getters.js | 6 + .../integrations/edit/store/index.js | 17 + .../integrations/edit/store/mutation_types.js | 2 + .../integrations/edit/store/mutations.js | 7 + .../integrations/edit/store/state.js | 9 + .../integrations/integration_settings_form.js | 5 +- .../issuable_bulk_update_actions.js | 79 +- .../issuable_bulk_update_sidebar.js | 16 + .../issuable_suggestions/components/app.vue | 2 +- .../issuable_suggestions/components/item.vue | 6 +- .../issuables_list/components/issuable.vue | 121 +- .../components/issuable_list_root_app.vue | 52 +- .../components/issuables_list_app.vue | 187 +- .../javascripts/issuables_list/constants.js | 23 + .../javascripts/issuables_list/index.js | 2 +- .../get_issues_list_details.query.graphql | 5 +- app/assets/javascripts/issue.js | 10 +- .../javascripts/issue_show/components/app.vue | 2 +- .../issue_show/components/edit_actions.vue | 4 +- .../components/fields/description.vue | 2 +- .../components/issuable_header_warnings.vue | 28 + .../issue_show/components/pinned_links.vue | 65 +- .../javascripts/issue_show/constants.js | 3 + app/assets/javascripts/issue_show/index.js | 12 + .../components/jira_import_app.vue | 59 +- .../components/jira_import_form.vue | 184 +- app/assets/javascripts/jira_import/index.js | 1 + .../get_jira_user_mapping.mutation.graphql | 11 + .../jira_import/utils/jira_import_utils.js | 34 + .../jobs/components/commit_block.vue | 2 +- .../jobs/components/environments_block.vue | 2 +- .../jobs/components/erased_block.vue | 2 +- .../javascripts/jobs/components/job_app.vue | 8 +- .../javascripts/jobs/components/job_log.vue | 59 - .../jobs/components/job_log_controllers.vue | 2 +- .../components/log/collapsible_section.vue | 2 +- .../javascripts/jobs/components/log/line.vue | 40 +- .../jobs/components/log/line_number.vue | 57 +- .../javascripts/jobs/components/log/log.vue | 6 +- .../jobs/components/manual_variables_form.vue | 10 +- .../jobs/components/stuck_block.vue | 2 +- .../jobs/components/trigger_block.vue | 2 +- app/assets/javascripts/jobs/store/actions.js | 2 +- .../javascripts/jobs/store/mutations.js | 16 +- app/assets/javascripts/jobs/store/state.js | 4 +- app/assets/javascripts/jobs/store/utils.js | 6 +- app/assets/javascripts/labels_select.js | 51 +- app/assets/javascripts/lazy_loader.js | 29 +- .../lib/utils/axios_startup_calls.js | 52 + .../javascripts/lib/utils/axios_utils.js | 3 + .../javascripts/lib/utils/common_utils.js | 97 +- app/assets/javascripts/lib/utils/constants.js | 2 + .../javascripts/lib/utils/datetime_utility.js | 7 +- app/assets/javascripts/lib/utils/dom_utils.js | 22 + app/assets/javascripts/lib/utils/grammar.js | 18 +- .../javascripts/lib/utils/text_markdown.js | 43 +- .../javascripts/lib/utils/text_utility.js | 81 +- .../javascripts/lib/utils/url_utility.js | 13 +- .../logs/components/environment_logs.vue | 41 +- .../logs/components/log_control_buttons.vue | 37 +- app/assets/javascripts/logs/constants.js | 6 + app/assets/javascripts/logs/stores/actions.js | 38 +- .../javascripts/logs/stores/mutation_types.js | 4 + .../javascripts/logs/stores/mutations.js | 23 + app/assets/javascripts/logs/stores/state.js | 10 + app/assets/javascripts/main.js | 98 +- app/assets/javascripts/members.js | 3 +- app/assets/javascripts/merge_request.js | 11 +- app/assets/javascripts/merge_request_tabs.js | 2 + .../monitoring/components/charts/anomaly.vue | 2 +- .../monitoring/components/charts/heatmap.vue | 5 +- .../monitoring/components/charts/options.js | 18 +- .../components/charts/single_stat.vue | 11 + .../components/charts/stacked_column.vue | 4 +- .../components/charts/time_series.vue | 2 +- .../components/create_dashboard_modal.vue | 66 + .../monitoring/components/dashboard.vue | 121 +- .../components/dashboard_header.vue | 168 +- .../monitoring/components/dashboard_panel.vue | 67 +- .../components/dashboards_dropdown.vue | 85 +- .../components/duplicate_dashboard_modal.vue | 95 + .../monitoring/components/empty_state.vue | 74 +- .../monitoring/components/graph_group.vue | 19 +- .../monitoring/components/refresh_button.vue | 163 + ...custom_variable.vue => dropdown_field.vue} | 19 +- .../{text_variable.vue => text_field.vue} | 2 +- .../components/variables_section.vue | 33 +- .../javascripts/monitoring/constants.js | 30 + .../javascripts/monitoring/format_date.js | 1 + .../javascripts/monitoring/monitoring_app.js | 35 +- .../monitoring/pages/dashboard_page.vue | 11 + ...tDashboardValidationWarnings.query.graphql | 18 + .../monitoring/router/constants.js | 1 + .../javascripts/monitoring/router/routes.js | 9 +- .../javascripts/monitoring/stores/actions.js | 124 +- .../javascripts/monitoring/stores/getters.js | 35 +- .../monitoring/stores/mutation_types.js | 13 +- .../monitoring/stores/mutations.js | 67 +- .../javascripts/monitoring/stores/state.js | 31 +- .../javascripts/monitoring/stores/utils.js | 198 +- .../monitoring/stores/variable_mapping.js | 158 +- app/assets/javascripts/monitoring/utils.js | 51 +- .../namespace_storage_limit_alert.js | 20 - app/assets/javascripts/notes.js | 2 +- .../notes/components/comment_form.vue | 42 +- .../notes/components/discussion_notes.vue | 10 +- .../components/multiline_comment_form.vue | 45 +- .../components/multiline_comment_utils.js | 78 +- .../notes/components/note_actions.vue | 23 +- .../notes/components/note_form.vue | 18 +- .../notes/components/noteable_note.vue | 79 +- .../notes/components/sort_discussion.vue | 5 +- .../notes/mixins/diff_line_note_form.js | 5 + .../notes/mixins/discussion_navigation.js | 13 +- .../javascripts/notes/stores/actions.js | 46 +- .../javascripts/notes/stores/modules/index.js | 10 + .../notes/stores/mutation_types.js | 3 + .../javascripts/notes/stores/mutations.js | 12 + app/assets/javascripts/notes/stores/utils.js | 8 + .../admin/abuse_reports/abuse_reports.js | 2 +- .../pages/admin/clusters/show/index.js | 2 + .../pages/admin/groups/show/index.js | 24 +- .../javascripts/pages/admin/projects/index.js | 22 +- app/assets/javascripts/pages/constants.js | 1 + .../pages/groups/clusters/show/index.js | 2 + .../pages/groups/group_members/index.js | 30 + .../pages/groups/group_members/index/index.js | 14 - .../pages/groups/new/group_path_validator.js | 10 +- .../pages/groups/settings/ci_cd/show/index.js | 9 + .../pages/groups/shared/group_details.js | 3 - .../javascripts/pages/profiles/show/index.js | 5 +- .../projects/clusters/show/cluster_health.js | 18 + .../pages/projects/clusters/show/index.js | 2 + .../pages/projects/commit/pipelines/index.js | 2 + .../javascripts/pages/projects/edit/index.js | 7 + .../forks/new/components/fork_groups_list.vue | 91 + .../new/components/fork_groups_list_item.vue | 147 + .../graphs/components/code_coverage.vue | 20 +- .../integrations/jira/issues/index/index.js | 5 + .../issues/service_desk/filtered_search.js | 30 + .../projects/issues/service_desk/index.js | 11 + .../javascripts/pages/projects/issues/show.js | 20 +- .../pages/projects/metrics_dashboard/index.js | 3 + .../components/interval_pattern_input.vue | 215 +- .../pages/projects/pipelines/index/index.js | 3 +- .../pages/projects/project_members/index.js | 26 +- .../pages/projects/releases/new/index.js | 7 + .../settings/operations/show/index.js | 4 + .../permissions/components/settings_panel.vue | 2 +- .../javascripts/pages/projects/show/index.js | 27 +- .../pages/projects/tree/show/index.js | 45 +- .../pages/search/init_filtered_search.js | 2 + .../pages/sessions/new/length_validator.js | 19 +- .../pages/sessions/new/username_validator.js | 2 +- .../wikis/components/delete_wiki_modal.vue | 15 +- .../javascripts/pages/shared/wikis/wikis.js | 19 + .../components/request_selector.vue | 2 +- .../javascripts/persistent_user_callout.js | 35 +- .../javascripts/persistent_user_callouts.js | 3 + .../pipelines/components/dag/constants.js | 5 + .../pipelines/components/dag/dag.vue | 117 +- .../components/dag/dag_annotations.vue | 73 + .../pipelines/components/dag/dag_graph.vue | 70 +- .../pipelines/components/dag/interactions.js | 50 +- .../components/graph/graph_component.vue | 16 +- .../pipelines/components/graph/job_item.vue | 14 +- .../components/graph/linked_pipeline.vue | 53 +- .../graph/linked_pipelines_column.vue | 6 +- .../graph/stage_column_component.vue | 6 + .../pipelines/components/header_component.vue | 2 +- .../{ => pipelines_list}/blank_state.vue | 0 .../{ => pipelines_list}/empty_state.vue | 0 .../{ => pipelines_list}/nav_controls.vue | 2 +- .../pipeline_stop_modal.vue | 0 .../pipeline_triggerer.vue | 4 +- .../{ => pipelines_list}/pipeline_url.vue | 30 +- .../{ => pipelines_list}/pipelines.vue | 56 +- .../pipelines_actions.vue | 2 +- .../pipelines_artifacts.vue | 0 .../pipelines_filtered_search.vue | 0 .../{ => pipelines_list}/pipelines_table.vue | 8 +- .../pipelines_table_row.vue | 26 +- .../components/{ => pipelines_list}/stage.vue | 14 +- .../{ => pipelines_list}/time_ago.vue | 6 +- .../tokens/pipeline_branch_name_token.vue | 2 +- .../tokens/pipeline_status_token.vue | 0 .../tokens/pipeline_tag_name_token.vue | 2 +- .../tokens/pipeline_trigger_author_token.vue | 2 +- .../components/test_reports/test_reports.vue | 36 +- .../test_reports/test_suite_table.vue | 30 +- .../components/test_reports/test_summary.vue | 4 +- .../test_reports/test_summary_table.vue | 16 +- app/assets/javascripts/pipelines/constants.js | 1 + .../javascripts/pipelines/mixins/pipelines.js | 12 +- .../pipelines/pipeline_details_bundle.js | 56 +- .../pipelines/stores/test_reports/actions.js | 45 +- .../pipelines/stores/test_reports/getters.js | 12 +- .../pipelines/stores/test_reports/index.js | 13 +- .../stores/test_reports/mutation_types.js | 4 +- .../stores/test_reports/mutations.js | 14 +- .../pipelines/stores/test_reports/state.js | 13 +- .../projects/commits/store/actions.js | 2 +- .../projects/components/remove_modal.vue | 108 + .../components/pipelines_area_chart.vue | 2 +- .../projects/project_remove_modal.js | 24 + .../components/service_desk_root.vue | 160 + .../components/service_desk_setting.vue | 169 + .../settings_service_desk/event_hub.js | 3 + .../projects/settings_service_desk/index.js | 41 + .../services/service_desk_service.js | 27 + .../components/reset_key.vue | 36 +- .../javascripts/prometheus_alerts/index.js | 3 +- .../ref/components/ref_results_section.vue | 124 + .../ref/components/ref_selector.vue | 186 + app/assets/javascripts/ref/constants.js | 19 + app/assets/javascripts/ref/stores/actions.js | 65 + app/assets/javascripts/ref/stores/getters.js | 5 + app/assets/javascripts/ref/stores/index.js | 16 + .../javascripts/ref/stores/mutation_types.js | 16 + .../javascripts/ref/stores/mutations.js | 91 + app/assets/javascripts/ref/stores/state.js | 24 + .../explorer/components/delete_button.vue | 56 + .../components/details_page/details_row.vue | 26 + .../components/details_page/tags_list.vue | 77 + .../components/details_page/tags_list_row.vue | 220 + .../components/details_page/tags_table.vue | 210 - .../explorer/components/list_item.vue | 128 + .../list_page/group_empty_state.vue | 3 +- .../components/list_page/image_list.vue | 3 +- .../components/list_page/image_list_row.vue | 120 +- .../list_page/project_empty_state.vue | 60 +- .../registry/explorer/constants/details.js | 36 +- .../registry/explorer/pages/details.vue | 29 +- .../registry/explorer/pages/list.vue | 1 - .../components/registry_settings_app.vue | 48 +- .../settings/components/settings_form.vue | 57 +- .../registry/settings/constants.js | 14 + .../components/expiration_policy_fields.vue | 63 +- .../javascripts/registry/shared/constants.js | 20 +- .../javascripts/registry/shared/utils.js | 2 +- .../components/related_merge_requests.vue | 2 +- .../releases/components/app_new.vue | 9 + .../releases/components/app_show.vue | 2 +- .../releases/components/evidence_block.vue | 2 +- .../releases/components/release_block.vue | 2 +- .../components/release_block_assets.vue | 10 +- .../components/release_block_header.vue | 2 +- .../components/release_block_metadata.vue | 2 +- .../release_block_milestone_info.vue | 4 +- app/assets/javascripts/releases/mount_new.js | 20 + .../releases/stores/modules/detail/state.js | 12 +- .../components/accessibility_issue_body.vue | 10 +- .../components/codequality_issue_body.vue | 42 + .../grouped_codequality_reports_app.vue | 83 + .../codequality_report/store/actions.js | 30 + .../codequality_report/store/getters.js | 58 + .../reports/codequality_report/store/index.js | 16 + .../store/mutation_types.js | 5 + .../codequality_report/store/mutations.js | 24 + .../reports/codequality_report/store/state.js | 15 + .../store/utils/codequality_comparison.js | 41 + .../workers/codequality_comparison_worker.js | 28 + .../components/grouped_test_reports_app.vue | 25 + .../reports/components/issue_body.js | 3 + .../reports/components/report_item.vue | 2 +- .../reports/components/report_section.vue | 10 +- .../reports/components/summary_row.vue | 9 +- .../reports/components/test_issue_body.vue | 4 +- .../repository/components/table/index.vue | 3 +- .../repository/components/table/row.vue | 6 + .../repository/components/tree_content.vue | 6 - .../repository/components/web_ide_link.vue | 47 + app/assets/javascripts/repository/graphql.js | 2 +- app/assets/javascripts/repository/index.js | 22 +- .../repository/queries/getFiles.query.graphql | 4 +- .../getVueFileListLfsBadge.query.graphql | 3 - ...search_input.js => search_autocomplete.js} | 207 +- .../serverless/components/environment_row.vue | 2 +- .../components/function_details.vue | 2 +- .../serverless/components/functions.vue | 12 +- .../set_status_modal_wrapper.vue | 5 +- .../confidential_issue_sidebar.vue | 24 +- .../components/confidential/edit_form.vue | 9 +- .../confidential/edit_form_buttons.vue | 55 +- ...update_issue_confidential.mutation.graphql | 7 + .../components/lock/edit_form_buttons.vue | 2 +- .../javascripts/sidebar/mount_sidebar.js | 29 +- .../queries/sidebarDetails.query.graphql | 6 +- ...lsForHealthStatusFeatureFlag.query.graphql | 6 +- .../javascripts/snippets/components/edit.vue | 112 +- .../javascripts/snippets/components/show.vue | 13 +- .../snippets/components/snippet_blob_edit.vue | 98 +- .../snippets/components/snippet_blob_view.vue | 70 +- .../snippets/components/snippet_header.vue | 9 +- app/assets/javascripts/snippets/constants.js | 5 + .../fragments/project.fragment.graphql | 4 +- .../fragments/snippetBase.fragment.graphql | 2 +- .../javascripts/snippets/mixins/snippets.js | 4 + .../mutations/deleteSnippet.mutation.graphql | 4 +- .../queries/projectPermissions.query.graphql | 2 +- .../snippets/queries/snippet.query.graphql | 2 +- .../queries/userPermissions.query.graphql | 2 +- .../components/edit_area.vue | 51 +- .../static_site_editor/constants.js | 2 + .../submit_content_changes.mutation.graphql | 2 +- .../graphql/queries/app_data.query.graphql | 2 +- .../queries/source_content.query.graphql | 2 +- .../resolvers/submit_content_changes.js | 4 +- .../graphql/typedefs.graphql | 2 +- .../static_site_editor/image_repository.js | 20 + .../static_site_editor/pages/home.vue | 7 +- .../services/image_service.js | 9 + .../services/parse_source_file.js | 40 +- .../services/submit_content_changes.js | 32 +- app/assets/javascripts/user_popovers.js | 3 + app/assets/javascripts/users_select/index.js | 6 +- .../components/approvals/approvals.vue | 212 + .../approvals/approvals_summary.vue | 70 + .../approvals/approvals_summary_optional.vue | 50 + .../components/approvals/messages.js | 11 + .../components/loading.vue | 2 +- .../components/mr_collapsible_extension.vue | 15 +- .../components/mr_widget_author.vue | 4 +- .../mr_widget_expandable_section.vue | 72 + .../components/mr_widget_header.vue | 15 +- .../components/mr_widget_icon.vue | 2 +- .../components/mr_widget_pipeline.vue | 109 +- .../mr_widget_pipeline_container.vue | 3 +- .../components/mr_widget_status_icon.vue | 2 +- .../components/mr_widget_suggest_pipeline.vue | 121 +- .../components/mr_widget_terraform_plan.vue | 139 - .../components/states/commit_edit.vue | 2 +- .../components/states/commits_header.vue | 2 +- .../states/mr_widget_auto_merge_enabled.vue | 6 +- .../components/states/mr_widget_checking.vue | 2 +- .../states/mr_widget_pipeline_tour.vue | 136 - .../components/states/ready_to_merge.vue | 31 +- .../components/states/squash_before_merge.vue | 13 +- .../mr_widget_terraform_container.vue | 140 + .../components/terraform/terraform_plan.vue | 111 + .../vue_merge_request_widget/constants.js | 1 + .../vue_merge_request_widget/index.js | 10 +- .../mixins/approvals.js | 19 + .../mixins/ready_to_merge.js | 2 +- .../mr_widget_options.vue | 33 +- .../services/mr_widget_service.js | 16 + .../stores/get_state_key.js | 4 +- .../stores/mr_widget_store.js | 32 +- .../components/file_finder/index.vue | 2 +- .../components/file_finder/item.vue | 2 +- .../vue_shared/components/file_icon.vue | 24 +- .../vue_shared/components/file_row.vue | 7 +- .../filtered_search_bar_root.vue | 65 +- .../tokens/author_token.vue | 16 +- .../vue_shared/components/gl_mentions.vue | 30 +- .../vue_shared/components/gl_modal_vuex.vue | 9 + .../issue/related_issuable_item.vue | 2 +- .../vue_shared/components/loading_button.vue | 2 +- .../vue_shared/components/markdown/field.vue | 33 +- .../vue_shared/components/markdown/header.vue | 3 +- .../components/markdown/suggestion_diff.vue | 1 + .../markdown/suggestion_diff_header.vue | 31 +- .../components/markdown/toolbar.vue | 4 +- .../components/markdown/toolbar_button.vue | 1 - .../noteable_warning.vue} | 48 +- .../components/notes/system_note.vue | 2 +- .../pagination/table_pagination.vue | 4 +- .../project_selector/project_list_item.vue | 31 +- .../project_selector/project_selector.vue | 5 +- .../components/remove_member_modal.vue | 78 + .../components/resizable_chart/constants.js | 6 + .../resizable_chart/skeleton_loader.vue | 95 + .../rich_content_editor/constants.js | 8 +- .../modals/add_image/add_image_modal.vue | 147 + .../modals/add_image/upload_image_tab.vue | 56 + .../modals/add_image_modal.vue | 74 - .../rich_content_editor.vue | 75 +- .../services/build_custom_renderer.js | 68 + .../build_html_to_markdown_renderer.js | 53 + .../{ => services}/editor_service.js | 16 +- .../renderers/build_uneditable_token.js | 63 + .../renderers/render_embedded_ruby_text.js | 13 + .../render_font_awesome_html_inline.js | 11 + .../services/renderers/render_html_block.js | 9 + .../render_identifier_instance_text.js | 40 + .../renderers/render_identifier_paragraph.js | 16 + .../renderers/render_kramdown_list.js | 27 + .../renderers/render_kramdown_text.js | 13 + .../sidebar/labels_select/dropdown_button.vue | 10 +- .../labels_select/dropdown_search_input.vue | 24 +- .../sidebar/labels_select_vue/constants.js | 1 + .../labels_select_vue/dropdown_button.vue | 8 +- .../dropdown_contents_create_view.vue | 8 +- .../dropdown_contents_labels_view.vue | 23 +- .../labels_select_vue/labels_select_root.vue | 19 +- .../labels_select_vue/store/getters.js | 9 +- .../sidebar/labels_select_vue/store/state.js | 1 + .../components/user_popover/user_popover.vue | 98 +- .../javascripts/vue_shared/constants.js | 2 + app/assets/stylesheets/application.scss | 29 +- app/assets/stylesheets/application_dark.scss | 4 +- app/assets/stylesheets/behaviors.scss | 3 +- .../stylesheets/bootstrap_migration.scss | 19 +- .../components/design_management/design.scss | 12 +- .../design_management/design_list_item.scss | 14 + .../stylesheets/components/popover.scss | 49 +- .../stylesheets/components/ref_selector.scss | 17 + .../components/related_items_list.scss | 29 +- .../components/rich_content_editor.scss | 61 +- .../stylesheets/disable_animations.scss | 2 + app/assets/stylesheets/emoji_sprites.scss | 1796 +- app/assets/stylesheets/errors.scss | 5 +- app/assets/stylesheets/framework.scss | 2 +- app/assets/stylesheets/framework/awards.scss | 2 +- .../framework/broadcast_messages.scss | 2 +- app/assets/stylesheets/framework/buttons.scss | 21 +- app/assets/stylesheets/framework/common.scss | 54 - .../framework/contextual_sidebar.scss | 6 +- .../stylesheets/framework/dropdowns.scss | 21 +- app/assets/stylesheets/framework/files.scss | 23 +- app/assets/stylesheets/framework/filters.scss | 8 +- app/assets/stylesheets/framework/forms.scss | 6 +- .../stylesheets/framework/gitlab_theme.scss | 27 +- app/assets/stylesheets/framework/header.scss | 6 +- app/assets/stylesheets/framework/images.scss | 2 +- .../stylesheets/framework/issue_box.scss | 1 + app/assets/stylesheets/framework/job_log.scss | 2 +- .../stylesheets/framework/memory_graph.scss | 2 +- app/assets/stylesheets/framework/mixins.scss | 3 +- .../secondary_navigation_elements.scss | 4 +- app/assets/stylesheets/framework/sidebar.scss | 2 +- .../framework/stacked_progress_bar.scss | 2 +- .../framework/system_messages.scss | 3 +- .../stylesheets/framework/timeline.scss | 8 +- .../stylesheets/framework/typography.scss | 6 +- .../stylesheets/framework/variables.scss | 53 +- .../framework/variables_overrides.scss | 8 +- .../stylesheets/highlight/themes/dark.scss | 17 +- .../stylesheets/highlight/themes/monokai.scss | 7 +- .../stylesheets/highlight/themes/none.scss | 9 +- .../highlight/themes/solarized-dark.scss | 12 +- .../highlight/themes/solarized-light.scss | 12 +- .../stylesheets/highlight/themes/white.scss | 2 +- app/assets/stylesheets/mailer.scss | 6 +- .../page_bundles/_ide_theme_overrides.scss | 12 +- app/assets/stylesheets/page_bundles/ide.scss | 16 +- .../ide_themes/_solarized-dark.scss | 2 +- .../pages/alert_management/details.scss | 4 +- .../pages/alert_management/list.scss | 33 +- app/assets/stylesheets/pages/boards.scss | 15 +- app/assets/stylesheets/pages/branches.scss | 4 +- app/assets/stylesheets/pages/builds.scss | 2 +- .../stylesheets/pages/container_registry.scss | 47 - app/assets/stylesheets/pages/diff.scss | 3 +- app/assets/stylesheets/pages/editor.scss | 5 +- .../stylesheets/pages/environment_logs.scss | 4 - app/assets/stylesheets/pages/issuable.scss | 20 +- .../pages/issues/issue_count_badge.scss | 2 - .../stylesheets/pages/issues/issues_list.scss | 5 + app/assets/stylesheets/pages/labels.scss | 68 +- .../stylesheets/pages/merge_requests.scss | 42 +- app/assets/stylesheets/pages/note_form.scss | 16 +- app/assets/stylesheets/pages/notes.scss | 9 +- app/assets/stylesheets/pages/pipelines.scss | 13 +- .../pages/profiles/preferences.scss | 5 - app/assets/stylesheets/pages/prometheus.scss | 2 +- app/assets/stylesheets/pages/runners.scss | 3 +- .../stylesheets/pages/service_desk.scss | 7 + app/assets/stylesheets/pages/settings.scss | 2 +- app/assets/stylesheets/pages/sherlock.scss | 6 +- app/assets/stylesheets/pages/wiki.scss | 4 + app/assets/stylesheets/performance_bar.scss | 2 +- app/assets/stylesheets/snippets.scss | 7 +- app/assets/stylesheets/themes/_dark.scss | 10 + app/assets/stylesheets/utilities.scss | 21 + .../admin/application_settings_controller.rb | 1 + app/controllers/admin/clusters_controller.rb | 9 +- app/controllers/admin/jobs_controller.rb | 4 +- app/controllers/admin/services_controller.rb | 11 +- app/controllers/application_controller.rb | 12 +- app/controllers/autocomplete_controller.rb | 16 +- app/controllers/chaos_controller.rb | 1 - app/controllers/clusters/base_controller.rb | 2 +- .../clusters/clusters_controller.rb | 25 + .../controller_with_feature_category.rb | 45 + .../config.rb | 38 + app/controllers/concerns/filters_events.rb | 14 + .../concerns/integrations_actions.rb | 8 +- app/controllers/concerns/issuable_actions.rb | 12 +- .../concerns/issuable_collections.rb | 55 +- app/controllers/concerns/known_sign_in.rb | 19 +- .../concerns/membership_actions.rb | 5 +- .../metrics/dashboard/prometheus_api_proxy.rb | 53 + app/controllers/concerns/metrics_dashboard.rb | 14 +- app/controllers/concerns/notes_actions.rb | 84 +- .../concerns/renders_member_access.rb | 6 - .../concerns/renders_projects_list.rb | 13 + app/controllers/concerns/service_params.rb | 4 +- .../concerns/snippets/blobs_actions.rb | 53 + .../concerns/snippets/send_blob.rb | 22 + app/controllers/concerns/snippets_actions.rb | 19 +- app/controllers/concerns/snippets_sort.rb | 9 + app/controllers/concerns/wiki_actions.rb | 49 +- .../dashboard/projects_controller.rb | 3 +- .../dashboard/snippets_controller.rb | 3 +- app/controllers/dashboard/todos_controller.rb | 3 + app/controllers/dashboard_controller.rb | 1 + .../explore/projects_controller.rb | 1 + .../groups/application_controller.rb | 8 +- app/controllers/groups/boards_controller.rb | 1 - app/controllers/groups/clusters_controller.rb | 10 +- app/controllers/groups/runners_controller.rb | 12 +- .../groups/settings/ci_cd_controller.rb | 8 + .../groups/variables_controller.rb | 4 +- app/controllers/groups_controller.rb | 1 + app/controllers/ide_controller.rb | 1 + app/controllers/import/base_controller.rb | 11 +- .../import/bitbucket_controller.rb | 17 +- .../import/bitbucket_server_controller.rb | 46 +- app/controllers/import/fogbugz_controller.rb | 18 +- app/controllers/import/gitea_controller.rb | 14 +- app/controllers/import/github_controller.rb | 101 +- app/controllers/import/gitlab_controller.rb | 20 +- .../instance_statistics/cohorts_controller.rb | 4 + .../dev_ops_score_controller.rb | 4 + app/controllers/invites_controller.rb | 19 + .../oauth/applications_controller.rb | 6 + .../omniauth_callbacks_controller.rb | 2 +- app/controllers/profiles/keys_controller.rb | 21 - .../personal_access_tokens_controller.rb | 10 +- .../profiles/preferences_controller.rb | 1 + .../projects/application_controller.rb | 6 +- app/controllers/projects/blob_controller.rb | 7 +- app/controllers/projects/boards_controller.rb | 1 - .../projects/ci/lints_controller.rb | 2 +- .../projects/clusters_controller.rb | 11 +- .../projects/confluences_controller.rb | 14 + .../projects/cycle_analytics_controller.rb | 3 + .../projects/deployments_controller.rb | 1 - .../environments/prometheus_api_controller.rb | 48 +- .../projects/environments_controller.rb | 4 + app/controllers/projects/forks_controller.rb | 1 + app/controllers/projects/graphs_controller.rb | 3 + .../projects/imports_controller.rb | 7 +- .../pager_duty_incidents_controller.rb | 35 + app/controllers/projects/issues_controller.rb | 31 +- app/controllers/projects/jobs_controller.rb | 10 +- app/controllers/projects/logs_controller.rb | 46 +- .../merge_requests/application_controller.rb | 9 +- .../merge_requests/creations_controller.rb | 4 +- .../merge_requests/diffs_controller.rb | 9 + .../projects/merge_requests_controller.rb | 29 +- .../projects/metrics_dashboard_controller.rb | 33 + .../pipelines/application_controller.rb | 24 + .../projects/pipelines/stages_controller.rb | 29 + .../projects/pipelines/tests_controller.rb | 59 + .../projects/pipelines_controller.rb | 25 +- app/controllers/projects/refs_controller.rb | 15 - .../projects/releases_controller.rb | 21 +- .../projects/service_desk_controller.rb | 45 + .../projects/services_controller.rb | 9 +- .../settings/operations_controller.rb | 29 +- .../projects/snippets/blobs_controller.rb | 5 + .../projects/snippets_controller.rb | 6 +- app/controllers/projects/stages_controller.rb | 25 - .../projects/static_site_editor_controller.rb | 3 + app/controllers/projects/tree_controller.rb | 18 +- .../projects/variables_controller.rb | 4 +- app/controllers/projects/wikis_controller.rb | 1 - app/controllers/projects_controller.rb | 9 +- .../experience_levels_controller.rb | 9 +- app/controllers/registrations_controller.rb | 8 +- app/controllers/root_controller.rb | 5 + app/controllers/search_controller.rb | 15 + app/controllers/snippets/blobs_controller.rb | 7 + app/controllers/snippets_controller.rb | 2 +- app/controllers/users_controller.rb | 7 + app/finders/branches_finder.rb | 26 +- app/finders/ci/pipelines_finder.rb | 2 +- .../ci/pipelines_for_merge_request_finder.rb | 44 +- app/finders/ci/runner_jobs_finder.rb | 2 +- app/finders/ci/variables_finder.rb | 31 + app/finders/events_finder.rb | 9 +- app/finders/group_projects_finder.rb | 55 +- app/finders/issuable_finder/params.rb | 4 +- app/finders/issues_finder.rb | 1 + app/finders/issues_finder/params.rb | 17 +- app/finders/notes_finder.rb | 9 +- .../packages/composer/packages_finder.rb | 16 + .../packages/conan/package_file_finder.rb | 28 + app/finders/packages/conan/package_finder.rb | 32 + app/finders/packages/go/module_finder.rb | 29 + app/finders/packages/go/version_finder.rb | 44 + app/finders/packages/group_packages_finder.rb | 70 + app/finders/packages/maven/package_finder.rb | 62 + app/finders/packages/npm/package_finder.rb | 29 + app/finders/packages/nuget/package_finder.rb | 31 + app/finders/packages/package_file_finder.rb | 36 + app/finders/packages/package_finder.rb | 16 + app/finders/packages/packages_finder.rb | 41 + app/finders/packages/tags_finder.rb | 26 + app/finders/personal_access_tokens_finder.rb | 2 + app/finders/projects_finder.rb | 10 + .../resource_milestone_event_finder.rb | 71 +- app/finders/resource_state_event_finder.rb | 30 + app/finders/snippets_finder.rb | 23 +- app/finders/todos_finder.rb | 23 +- .../alert_management/alerts/todo/create.rb | 30 + .../mutations/alert_management/base.rb | 5 + .../alert_management/update_alert_status.rb | 4 +- app/graphql/mutations/award_emojis/add.rb | 2 +- app/graphql/mutations/award_emojis/remove.rb | 2 +- app/graphql/mutations/award_emojis/toggle.rb | 2 +- app/graphql/mutations/base_mutation.rb | 2 + .../concerns/mutations/resolves_issuable.rb | 29 +- .../container_expiration_policies/update.rb | 10 + app/graphql/mutations/issues/set_locked.rb | 26 + app/graphql/mutations/jira_import/start.rb | 9 +- .../mutations/merge_requests/update.rb | 39 + app/graphql/mutations/notes/create/base.rb | 8 +- app/graphql/mutations/snippets/create.rb | 26 +- app/graphql/mutations/snippets/update.rb | 18 +- app/graphql/mutations/todos/mark_all_done.rb | 6 + app/graphql/mutations/todos/restore_many.rb | 8 +- app/graphql/resolvers/base_resolver.rb | 5 + .../ci_configuration/sast_resolver.rb | 17 + .../concerns/resolves_merge_requests.rb | 28 +- .../resolvers/environments_resolver.rb | 2 +- app/graphql/resolvers/issues_resolver.rb | 17 +- app/graphql/resolvers/last_commit_resolver.rb | 2 +- app/graphql/resolvers/milestone_resolver.rb | 6 +- app/graphql/resolvers/packages_resolver.rb | 19 + .../projects/jira_projects_resolver.rb | 42 +- app/graphql/resolvers/projects_resolver.rb | 2 +- app/graphql/resolvers/release_resolver.rb | 2 + app/graphql/resolvers/releases_resolver.rb | 2 + .../types/alert_management/alert_sort_enum.rb | 8 +- .../types/alert_management/alert_type.rb | 6 + .../sast/analyzers_entity_type.rb | 25 + .../ci_configuration/sast/entity_type.rb | 34 + .../sast/options_entity_type.rb | 19 + .../types/ci_configuration/sast/type.rb | 22 + .../types/container_expiration_policy_type.rb | 4 +- app/graphql/types/deprecated_mutations.rb | 19 + app/graphql/types/diff_stats_summary_type.rb | 25 + app/graphql/types/diff_stats_type.rb | 19 + .../sentry_detailed_error_type.rb | 8 +- .../sentry_error_collection_type.rb | 2 +- app/graphql/types/global_id_type.rb | 64 + app/graphql/types/issue_connection_type.rb | 13 + app/graphql/types/issue_type.rb | 4 + app/graphql/types/jira_user_type.rb | 6 +- .../types/jira_users_mapping_input_type.rb | 18 + app/graphql/types/merge_request_type.rb | 26 + app/graphql/types/milestone_stats_type.rb | 16 + app/graphql/types/milestone_type.rb | 11 + app/graphql/types/mutation_type.rb | 4 + app/graphql/types/namespace_type.rb | 2 + app/graphql/types/notes/note_type.rb | 6 + app/graphql/types/package_type.rb | 16 + app/graphql/types/package_type_enum.rb | 9 + app/graphql/types/project_statistics_type.rb | 2 + app/graphql/types/project_type.rb | 19 +- .../projects/services/jira_service_type.rb | 2 +- app/graphql/types/query_type.rb | 4 - ...ink_type.rb => release_asset_link_type.rb} | 7 +- ...num.rb => release_asset_link_type_enum.rb} | 4 +- app/graphql/types/release_assets_type.rb | 5 +- app/graphql/types/release_links_type.rb | 23 + app/graphql/types/release_source_type.rb | 3 +- app/graphql/types/release_type.rb | 14 +- .../types/root_storage_statistics_type.rb | 1 + app/graphql/types/todo_target_enum.rb | 1 + app/graphql/types/tree/blob_type.rb | 2 + app/graphql/types/untrusted_regexp.rb | 22 + app/helpers/analytics/unique_visits_helper.rb | 32 + app/helpers/application_helper.rb | 9 + app/helpers/application_settings_helper.rb | 10 +- app/helpers/auto_devops_helper.rb | 4 + app/helpers/blob_helper.rb | 3 +- app/helpers/builds_helper.rb | 38 - app/helpers/ci/builds_helper.rb | 40 + app/helpers/ci/jobs_helper.rb | 23 + app/helpers/ci/pipeline_schedules_helper.rb | 15 + app/helpers/ci/runners_helper.rb | 45 + app/helpers/ci/status_helper.rb | 148 + app/helpers/ci/variables_helper.rb | 54 + app/helpers/ci_status_helper.rb | 146 - app/helpers/ci_variables_helper.rb | 52 - app/helpers/clusters_helper.rb | 8 +- app/helpers/commits_helper.rb | 12 +- app/helpers/cookies_helper.rb | 16 +- app/helpers/dashboard_helper.rb | 2 +- app/helpers/diff_helper.rb | 7 +- app/helpers/dropdowns_helper.rb | 5 +- app/helpers/environments_helper.rb | 26 +- app/helpers/events_helper.rb | 64 +- app/helpers/export_helper.rb | 2 +- app/helpers/gitlab_routing_helper.rb | 30 + app/helpers/groups_helper.rb | 4 + app/helpers/icons_helper.rb | 19 +- app/helpers/ide_helper.rb | 4 +- app/helpers/import_helper.rb | 6 +- app/helpers/issuables_helper.rb | 17 +- app/helpers/issues_helper.rb | 7 +- app/helpers/jobs_helper.rb | 19 - app/helpers/markup_helper.rb | 1 - app/helpers/members_helper.rb | 8 + app/helpers/merge_requests_helper.rb | 2 +- app/helpers/namespaces_helper.rb | 39 - app/helpers/nav_helper.rb | 2 +- app/helpers/notify_helper.rb | 11 + app/helpers/onboarding_experiment_helper.rb | 9 - app/helpers/operations_helper.rb | 54 + app/helpers/pipeline_schedules_helper.rb | 13 - app/helpers/preferences_helper.rb | 5 +- .../projects/alert_management_helper.rb | 16 +- app/helpers/projects_helper.rb | 35 +- app/helpers/releases_helper.rb | 27 +- app/helpers/runners_helper.rb | 43 - app/helpers/search_helper.rb | 109 +- app/helpers/services_helper.rb | 75 +- app/helpers/storage_helper.rb | 5 +- app/helpers/system_note_helper.rb | 4 +- app/helpers/todos_helper.rb | 20 +- app/helpers/tree_helper.rb | 2 + app/helpers/wiki_helper.rb | 44 +- app/mailers/emails/merge_requests.rb | 7 + app/mailers/emails/service_desk.rb | 92 + app/mailers/notify.rb | 1 + app/mailers/previews/notify_preview.rb | 16 + app/models/active_session.rb | 17 +- app/models/alert_management/alert.rb | 50 +- app/models/application_record.rb | 8 + .../application_setting_implementation.rb | 10 +- app/models/approval.rb | 11 + app/models/audit_event.rb | 18 +- app/models/blob_viewer/image.rb | 2 +- app/models/blob_viewer/notebook.rb | 2 +- app/models/blob_viewer/open_api.rb | 4 +- app/models/blob_viewer/rich.rb | 2 +- app/models/blob_viewer/svg.rb | 2 +- app/models/ci/build.rb | 22 +- app/models/ci/build_metadata.rb | 1 + app/models/ci/build_need.rb | 2 + app/models/ci/build_trace.rb | 26 +- app/models/ci/build_trace_chunks/redis.rb | 5 +- app/models/ci/instance_variable.rb | 8 - app/models/ci/job_artifact.rb | 53 +- app/models/ci/pipeline.rb | 144 +- app/models/ci/pipeline_enums.rb | 5 +- app/models/ci/pipeline_message.rb | 25 + app/models/ci/ref.rb | 2 +- app/models/ci/runner.rb | 4 + app/models/ci/stage.rb | 6 +- app/models/ci/variable.rb | 2 + app/models/clusters/applications/cilium.rb | 21 + .../clusters/applications/prometheus.rb | 3 + app/models/clusters/applications/runner.rb | 2 +- app/models/clusters/cluster.rb | 71 +- app/models/clusters/platforms/kubernetes.rb | 11 +- app/models/commit.rb | 6 +- app/models/commit_collection.rb | 11 + app/models/commit_status.rb | 3 +- .../analytics/cycle_analytics/stage.rb | 2 +- app/models/concerns/approvable_base.rb | 20 + app/models/concerns/avatarable.rb | 6 + app/models/concerns/bulk_insert_safe.rb | 8 +- app/models/concerns/ci/contextable.rb | 2 - app/models/concerns/ci/has_status.rb | 168 + app/models/concerns/ci/metadatable.rb | 2 + app/models/concerns/deployment_platform.rb | 22 +- app/models/concerns/has_repository.rb | 8 +- app/models/concerns/has_status.rb | 166 - app/models/concerns/integration.rb | 14 + app/models/concerns/issuable.rb | 6 +- app/models/concerns/noteable.rb | 4 + app/models/concerns/partitioned_table.rb | 21 + app/models/concerns/reactive_caching.rb | 8 +- app/models/concerns/routable.rb | 9 +- .../concerns/update_project_statistics.rb | 12 +- app/models/custom_emoji.rb | 22 + app/models/deploy_keys_project.rb | 1 + app/models/diff_viewer/image.rb | 2 +- app/models/environment.rb | 23 +- app/models/epic.rb | 2 - app/models/event.rb | 4 - app/models/event_collection.rb | 9 +- app/models/group.rb | 53 + .../project_incident_management_setting.rb | 19 + app/models/issue.rb | 6 + app/models/issue_assignee.rb | 5 +- app/models/iteration.rb | 5 +- app/models/label.rb | 4 - app/models/lfs_objects_project.rb | 2 +- app/models/member.rb | 9 + app/models/members/group_member.rb | 9 +- app/models/merge_request.rb | 71 +- app/models/merge_request_assignee.rb | 4 +- app/models/merge_request_diff.rb | 8 +- app/models/namespace.rb | 17 +- app/models/namespace/root_storage_size.rb | 31 - .../namespace/root_storage_statistics.rb | 26 +- app/models/namespace/traversal_hierarchy.rb | 84 + app/models/namespace_setting.rb | 9 + app/models/note.rb | 9 +- app/models/packages.rb | 6 + app/models/packages/build_info.rb | 6 + app/models/packages/composer/metadatum.rb | 14 + app/models/packages/conan.rb | 8 + app/models/packages/conan/file_metadatum.rb | 32 + app/models/packages/conan/metadatum.rb | 41 + app/models/packages/dependency.rb | 47 + app/models/packages/dependency_link.rb | 19 + app/models/packages/go/module.rb | 93 + app/models/packages/go/module_version.rb | 115 + app/models/packages/maven.rb | 8 + app/models/packages/maven/metadatum.rb | 28 + app/models/packages/nuget.rb | 8 + .../nuget/dependency_link_metadatum.rb | 19 + app/models/packages/nuget/metadatum.rb | 27 + app/models/packages/package.rb | 195 + app/models/packages/package_file.rb | 56 + app/models/packages/pypi.rb | 8 + app/models/packages/pypi/metadatum.rb | 19 + app/models/packages/sem_ver.rb | 54 + app/models/packages/tag.rb | 18 + .../prometheus_dashboard.rb | 20 +- .../prometheus_panel.rb | 11 +- .../prometheus_panel_group.rb | 11 +- app/models/personal_access_token.rb | 8 +- app/models/plan.rb | 2 +- app/models/plan_limits.rb | 33 +- app/models/product_analytics_event.rb | 22 + app/models/project.rb | 100 +- app/models/project_services/alerts_service.rb | 2 + .../project_services/bugzilla_service.rb | 4 +- .../project_services/confluence_service.rb | 91 + .../custom_issue_tracker_service.rb | 6 +- .../gitlab_issue_tracker_service.rb | 4 +- .../project_services/issue_tracker_service.rb | 32 - app/models/project_services/jira_service.rb | 12 +- .../project_services/prometheus_service.rb | 44 +- .../project_services/redmine_service.rb | 4 +- .../project_services/youtrack_service.rb | 5 +- app/models/project_setting.rb | 15 + app/models/project_statistics.rb | 38 +- app/models/prometheus_alert.rb | 1 + app/models/prometheus_metric.rb | 1 + app/models/repository.rb | 21 +- app/models/resource_event.rb | 1 + app/models/resource_state_event.rb | 6 + app/models/service.rb | 38 +- app/models/service_desk_setting.rb | 30 + app/models/snippet.rb | 13 +- app/models/snippet_input_action.rb | 9 +- app/models/snippet_statistics.rb | 69 + app/models/state_note.rb | 34 +- app/models/suggestion.rb | 21 +- app/models/synthetic_note.rb | 18 +- app/models/system_note_metadata.rb | 3 +- app/models/todo.rb | 24 +- app/models/user.rb | 47 +- app/models/user_callout_enums.rb | 3 +- app/models/user_detail.rb | 26 + app/models/webauthn_registration.rb | 11 + app/models/wiki_page.rb | 4 + app/policies/base_policy.rb | 6 + app/policies/concerns/find_group_projects.rb | 4 +- app/policies/concerns/policy_actor.rb | 4 + app/policies/global_policy.rb | 3 + app/policies/group_policy.rb | 17 + app/policies/merge_request_policy.rb | 4 + app/policies/packages/package_policy.rb | 6 + app/policies/project_member_policy.rb | 5 +- app/policies/project_policy.rb | 28 +- app/policies/releases/source_policy.rb | 6 - .../alert_management/alert_presenter.rb | 101 + .../prometheus_alert_presenter.rb | 27 + app/presenters/ci/pipeline_presenter.rb | 11 + app/presenters/clusterable_presenter.rb | 20 +- app/presenters/clusters/cluster_presenter.rb | 42 + app/presenters/group_clusterable_presenter.rb | 4 + .../instance_clusterable_presenter.rb | 4 + app/presenters/merge_request_presenter.rb | 18 + .../packages/composer/packages_presenter.rb | 71 + .../packages/conan/package_presenter.rb | 114 + .../packages/detail/package_presenter.rb | 75 + .../packages/go/module_version_presenter.rb | 19 + .../packages/npm/package_presenter.rb | 87 + .../nuget/package_metadata_presenter.rb | 25 + .../nuget/packages_metadata_presenter.rb | 63 + .../nuget/packages_versions_presenter.rb | 15 + .../packages/nuget/presenter_helpers.rb | 113 + .../nuget/search_results_presenter.rb | 56 + .../packages/nuget/service_index_presenter.rb | 85 + .../packages/pypi/package_presenter.rb | 75 + .../project_clusterable_presenter.rb | 4 + app/presenters/project_presenter.rb | 2 +- .../projects/prometheus/alert_presenter.rb | 38 +- app/presenters/release_presenter.rb | 14 +- app/presenters/snippet_blob_presenter.rb | 14 +- app/serializers/build_trace_entity.rb | 3 +- app/serializers/ci/group_variable_entity.rb | 6 + .../ci/group_variable_serializer.rb | 7 + app/serializers/ci/variable_entity.rb | 7 + app/serializers/ci/variable_serializer.rb | 7 + app/serializers/cluster_application_entity.rb | 2 +- app/serializers/cluster_entity.rb | 4 + app/serializers/cluster_serializer.rb | 1 + app/serializers/deploy_key_entity.rb | 5 + app/serializers/diff_file_base_entity.rb | 8 +- app/serializers/evidences/release_entity.rb | 2 + app/serializers/fork_namespace_entity.rb | 52 + app/serializers/fork_namespace_serializer.rb | 5 + app/serializers/group_variable_entity.rb | 4 - app/serializers/group_variable_serializer.rb | 5 - ...merge_request_poll_cached_widget_entity.rb | 24 + .../merge_request_poll_widget_entity.rb | 16 + .../merge_request_widget_entity.rb | 34 +- app/serializers/pipeline_entity.rb | 4 + app/serializers/pipeline_serializer.rb | 4 +- app/serializers/service_event_entity.rb | 2 +- app/serializers/service_field_entity.rb | 2 + app/serializers/stage_entity.rb | 4 +- app/serializers/suggestion_entity.rb | 31 +- app/serializers/test_report_summary_entity.rb | 7 + .../test_report_summary_serializer.rb | 5 + app/serializers/test_suite_entity.rb | 8 +- app/serializers/test_suite_serializer.rb | 5 + app/serializers/test_suite_summary_entity.rb | 7 + app/serializers/triggered_pipeline_entity.rb | 8 +- app/serializers/variable_entity.rb | 5 - app/serializers/variable_serializer.rb | 5 - .../access_token_validation_service.rb | 10 +- .../admin/propagate_integration_service.rb | 18 +- .../alerts/todo/create_service.rb | 51 + .../alert_management/alerts/update_service.rb | 123 +- .../create_alert_issue_service.rb | 67 +- .../process_prometheus_alert_service.rb | 18 +- .../update_alert_status_service.rb | 63 - app/services/audit_event_service.rb | 4 + .../project_create_service.rb | 2 +- .../project_group_link_create_service.rb | 70 + app/services/auto_merge/base_service.rb | 6 +- .../merge_when_pipeline_succeeds_service.rb | 8 + app/services/branches/delete_service.rb | 7 + .../ci/authorize_job_artifact_service.rb | 53 - .../ci/create_job_artifacts_service.rb | 122 +- app/services/ci/create_pipeline_service.rb | 29 +- .../destroy_expired_job_artifacts_service.rb | 2 +- .../atomic_processing_service.rb | 2 +- .../status_collection.rb | 2 +- .../legacy_processing_service.rb | 4 +- app/services/ci/process_pipeline_service.rb | 10 + app/services/ci/register_job_service.rb | 19 +- app/services/ci/retry_build_service.rb | 8 +- app/services/ci/unlock_artifacts_service.rb | 33 + app/services/clusters/create_service.rb | 11 - ...e_cluster_applications_artifact_service.rb | 2 +- .../concerns/exclusive_lease_guard.rb | 2 +- .../concerns/incident_management/settings.rb | 2 + .../deploy_keys/collect_keys_service.rb | 27 + app/services/event_create_service.rb | 58 +- app/services/files/base_service.rb | 2 +- app/services/git/branch_push_service.rb | 7 + app/services/git/tag_push_service.rb | 18 + app/services/git/wiki_push_service.rb | 2 +- app/services/gpg_keys/destroy_service.rb | 9 + app/services/groups/create_service.rb | 10 +- .../groups/update_shared_runners_service.rb | 50 + .../import/bitbucket_server_service.rb | 104 + .../create_incident_label_service.rb | 40 + .../create_issue_service.rb | 55 +- .../create_incident_issue_service.rb | 72 + .../pager_duty/process_webhook_service.rb | 71 + app/services/issuable/bulk_update_service.rb | 59 +- app/services/issuable_base_service.rb | 39 +- app/services/issues/move_service.rb | 11 + app/services/jira/requests/base.rb | 22 +- app/services/jira/requests/projects.rb | 32 - .../jira/requests/projects/list_service.rb | 47 + .../jira_import/start_import_service.rb | 20 +- app/services/jira_import/users_mapper.rb | 7 +- .../labels/available_labels_service.rb | 2 +- app/services/labels/transfer_service.rb | 25 +- app/services/members/create_service.rb | 2 +- app/services/members/destroy_service.rb | 29 +- .../members/unassign_issuables_service.rb | 23 + .../merge_requests/approval_service.rb | 56 + app/services/merge_requests/base_service.rb | 16 +- .../merge_requests/create_pipeline_service.rb | 20 +- app/services/merge_requests/create_service.rb | 6 - .../merge_requests/ff_merge_service.rb | 2 +- .../merge_requests/merge_base_service.rb | 2 +- app/services/merge_requests/merge_service.rb | 3 + .../merge_requests/post_merge_service.rb | 1 + .../merge_requests/remove_approval_service.rb | 43 + app/services/merge_requests/squash_service.rb | 7 + app/services/merge_requests/update_service.rb | 56 +- .../metrics/dashboard/base_service.rb | 22 +- .../dashboard/clone_dashboard_service.rb | 66 +- .../dashboard/cluster_dashboard_service.rb | 40 + .../cluster_metrics_embed_service.rb | 37 + .../dashboard/custom_dashboard_service.rb | 5 +- .../dashboard/gitlab_alert_embed_service.rb | 2 +- .../dashboard/grafana_metric_embed_service.rb | 6 +- .../dashboard/pod_dashboard_service.rb | 9 + .../dashboard/predefined_dashboard_service.rb | 15 +- .../self_monitoring_dashboard_service.rb | 15 +- .../dashboard/system_dashboard_service.rb | 15 +- .../dashboard/transient_embed_service.rb | 4 +- .../namespaces/check_storage_size_service.rb | 95 - app/services/notes/post_process_service.rb | 22 +- app/services/notes/quick_actions_service.rb | 2 +- app/services/notes/update_service.rb | 10 + app/services/notification_service.rb | 24 + .../composer/composer_json_service.rb | 31 + .../composer/create_package_service.rb | 57 + .../composer/version_parser_service.rb | 33 + .../conan/create_package_file_service.rb | 31 + .../packages/conan/create_package_service.rb | 19 + app/services/packages/conan/search_service.rb | 58 + .../packages/create_dependency_service.rb | 82 + .../packages/create_package_file_service.rb | 22 + .../packages/maven/create_package_service.rb | 28 + .../maven/find_or_create_package_service.rb | 41 + .../packages/npm/create_package_service.rb | 91 + .../packages/npm/create_tag_service.rb | 34 + .../nuget/create_dependency_service.rb | 71 + .../packages/nuget/create_package_service.rb | 23 + .../nuget/metadata_extraction_service.rb | 106 + app/services/packages/nuget/search_service.rb | 101 + .../packages/nuget/sync_metadatum_service.rb | 50 + .../update_package_from_metadata_service.rb | 125 + .../packages/pypi/create_package_service.rb | 40 + app/services/packages/remove_tag_service.rb | 16 + app/services/packages/update_tags_service.rb | 41 + .../last_used_service.rb | 28 + app/services/post_receive_service.rb | 15 - app/services/projects/after_import_service.rb | 2 +- .../projects/alerting/notify_service.rb | 9 +- .../projects/batch_forks_count_service.rb | 23 + .../delete_tags_service.rb | 25 +- app/services/projects/create_service.rb | 17 +- app/services/projects/forks_count_service.rb | 2 + .../projects/group_links/create_service.rb | 22 +- .../projects/operations/update_service.rb | 13 +- .../alerts/create_events_service.rb | 71 - .../prometheus/alerts/notify_service.rb | 15 +- .../projects/propagate_service_template.rb | 18 +- .../projects/update_remote_mirror_service.rb | 2 +- .../update_repository_storage_service.rb | 22 +- app/services/prometheus/proxy_service.rb | 10 +- .../proxy_variable_substitution_service.rb | 42 + .../releases/create_evidence_service.rb | 10 +- app/services/repositories/base_service.rb | 5 +- app/services/repositories/destroy_service.rb | 11 +- .../repositories/shell_destroy_service.rb | 2 +- .../resource_access_tokens/create_service.rb | 10 +- .../resource_access_tokens/revoke_service.rb | 2 +- .../base_synthetic_notes_builder_service.rb | 20 +- .../resource_events/change_state_service.rb | 38 +- .../synthetic_label_notes_builder_service.rb | 2 +- ...nthetic_milestone_notes_builder_service.rb | 2 +- .../synthetic_state_notes_builder_service.rb | 2 +- .../service_desk_settings/update_service.rb | 19 + app/services/snippets/base_service.rb | 20 +- app/services/snippets/create_service.rb | 10 +- app/services/snippets/update_service.rb | 7 +- .../snippets/update_statistics_service.rb | 28 + app/services/spam/spam_verdict_service.rb | 11 +- app/services/system_note_service.rb | 32 + .../system_notes/alert_management_service.rb | 37 + .../system_notes/issuables_service.rb | 25 +- .../system_notes/merge_requests_service.rb | 21 +- app/services/tags/destroy_service.rb | 8 + .../terraform/remote_state_handler.rb | 45 +- app/services/todo_service.rb | 6 +- .../update_container_registry_info_service.rb | 24 + app/services/users/block_service.rb | 2 +- app/services/wiki_pages/base_service.rb | 2 - .../wiki_pages/event_create_service.rb | 2 - app/uploaders/object_storage.rb | 6 +- .../packages/package_file_uploader.rb | 30 + app/validators/addressable_url_validator.rb | 6 +- app/validators/array_members_validator.rb | 21 + .../json_schemas/build_metadata_secrets.json | 30 + .../sast_ui_schema.json | 153 + app/views/admin/appearances/_form.html.haml | 4 +- app/views/admin/appearances/show.html.haml | 2 +- .../_account_and_limit.html.haml | 4 +- .../application_settings/_ci_cd.html.haml | 2 +- .../application_settings/_email.html.haml | 2 +- .../_import_export_limits.html.haml | 34 + .../_initial_branch_name.html.haml | 12 + .../application_settings/_registry.html.haml | 2 +- .../_repository_storage.html.haml | 2 +- .../application_settings/_signin.html.haml | 9 + .../application_settings/_usage.html.haml | 2 +- .../application_settings/ci/_header.html.haml | 2 +- .../application_settings/ci_cd.html.haml | 2 +- .../integrations.html.haml | 2 +- .../application_settings/network.html.haml | 11 + .../application_settings/repository.html.haml | 12 + app/views/admin/applications/edit.html.haml | 4 +- app/views/admin/applications/index.html.haml | 2 +- app/views/admin/applications/new.html.haml | 4 +- app/views/admin/applications/show.html.haml | 4 +- .../admin/background_jobs/show.html.haml | 2 +- .../admin/broadcast_messages/edit.html.haml | 4 +- .../admin/broadcast_messages/index.html.haml | 4 +- app/views/admin/dashboard/index.html.haml | 5 +- app/views/admin/deploy_keys/new.html.haml | 2 +- .../admin/gitaly_servers/index.html.haml | 1 + app/views/admin/groups/index.html.haml | 2 +- app/views/admin/groups/show.html.haml | 2 + app/views/admin/hook_logs/_index.html.haml | 2 +- app/views/admin/hook_logs/show.html.haml | 4 +- app/views/admin/hooks/_form.html.haml | 2 +- app/views/admin/hooks/edit.html.haml | 4 +- app/views/admin/hooks/index.html.haml | 4 +- .../impersonation_tokens/index.html.haml | 2 +- app/views/admin/jobs/index.html.haml | 3 +- app/views/admin/keys/show.html.haml | 2 +- app/views/admin/projects/show.html.haml | 89 +- .../admin/requests_profiles/index.html.haml | 4 +- app/views/admin/runners/_runner.html.haml | 4 +- .../admin/runners/_sort_dropdown.html.haml | 2 +- app/views/admin/runners/index.html.haml | 1 + app/views/admin/runners/show.html.haml | 1 + app/views/admin/services/_form.html.haml | 2 +- app/views/admin/services/edit.html.haml | 5 +- app/views/admin/services/index.html.haml | 33 +- app/views/admin/sessions/new.html.haml | 2 +- app/views/admin/spam_logs/index.html.haml | 2 +- app/views/admin/system_info/show.html.haml | 6 +- .../admin/users/_access_levels.html.haml | 29 +- app/views/admin/users/_head.html.haml | 2 +- .../admin/users/_user_listing_note.html.haml | 2 +- app/views/admin/users/edit.html.haml | 2 +- app/views/admin/users/index.html.haml | 6 +- app/views/admin/users/keys.html.haml | 4 +- app/views/admin/users/new.html.haml | 2 +- app/views/admin/users/projects.html.haml | 8 +- app/views/admin/users/show.html.haml | 24 +- app/views/ci/group_variables/_index.html.haml | 4 +- .../_variable_header.html.haml | 4 +- app/views/ci/variables/_content.html.haml | 2 +- .../_environment_scope_header.html.haml | 2 +- app/views/ci/variables/_header.html.haml | 2 +- app/views/ci/variables/_index.html.haml | 4 +- .../ci/variables/_variable_header.html.haml | 6 +- .../ci/variables/_variable_row.html.haml | 6 +- .../clusters/_advanced_settings.html.haml | 4 +- .../_gcp_signup_offer_banner.html.haml | 2 +- .../_gitlab_integration_form.html.haml | 15 +- app/views/clusters/clusters/_health.html.haml | 6 + .../clusters/clusters/_health_tab.html.haml | 5 + .../_multiple_clusters_message.html.haml | 6 + .../clusters/clusters/_sidebar.html.haml | 2 +- .../clusters/clusters/aws/_new.html.haml | 4 +- .../clusters/clusters/gcp/_form.html.haml | 13 +- app/views/clusters/clusters/index.html.haml | 11 +- app/views/clusters/clusters/new.html.haml | 2 +- app/views/clusters/clusters/show.html.haml | 4 +- .../clusters/clusters/user/_form.html.haml | 8 +- app/views/dashboard/_projects_head.html.haml | 4 +- app/views/dashboard/activity.html.haml | 4 +- app/views/dashboard/groups/index.html.haml | 4 +- .../dashboard/milestones/index.html.haml | 4 +- app/views/dashboard/projects/index.html.haml | 4 +- app/views/dashboard/snippets/index.html.haml | 4 +- app/views/dashboard/todos/_todo.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 6 +- ...onfirmation_instructions_account.html.haml | 4 +- ...confirmation_instructions_account.text.erb | 5 +- ...firmation_instructions_secondary.html.haml | 2 +- ...nfirmation_instructions_secondary.text.erb | 2 +- app/views/devise/registrations/new.html.haml | 2 +- app/views/devise/sessions/new.html.haml | 2 +- .../devise/sessions/two_factor.html.haml | 4 +- ...mental_separate_sign_up_flow_box.html.haml | 3 +- app/views/devise/shared/_signup_box.html.haml | 3 +- app/views/discussions/_discussion.html.haml | 2 +- .../doorkeeper/applications/_form.html.haml | 2 +- .../doorkeeper/applications/index.html.haml | 6 +- .../doorkeeper/applications/show.html.haml | 2 +- .../doorkeeper/authorizations/new.html.haml | 2 +- app/views/events/_event.html.haml | 2 + app/views/events/event/_common.html.haml | 10 +- .../events/event/_created_project.html.haml | 2 +- app/views/events/event/_design.html.haml | 11 + app/views/events/event/_note.html.haml | 4 +- app/views/events/event/_push.html.haml | 4 +- app/views/events/event/_wiki.html.haml | 2 +- app/views/explore/snippets/index.html.haml | 4 +- app/views/groups/_flash_messages.html.haml | 2 +- app/views/groups/_home_panel.html.haml | 10 +- app/views/groups/activity.html.haml | 2 +- app/views/groups/edit.html.haml | 1 + .../groups/group_members/index.html.haml | 3 +- app/views/groups/issues.html.haml | 2 +- app/views/groups/labels/edit.html.haml | 2 +- app/views/groups/labels/index.html.haml | 6 +- app/views/groups/merge_requests.html.haml | 2 +- app/views/groups/milestones/_form.html.haml | 6 +- app/views/groups/milestones/index.html.haml | 4 +- app/views/groups/new.html.haml | 2 +- app/views/groups/projects.html.haml | 5 +- .../groups/runners/_group_runners.html.haml | 10 - app/views/groups/runners/_index.html.haml | 94 + app/views/groups/runners/_runner.html.haml | 107 +- app/views/groups/settings/_general.html.haml | 2 +- app/views/groups/settings/_lfs.html.haml | 2 +- .../groups/settings/_permissions.html.haml | 9 +- .../groups/settings/ci_cd/_form.html.haml | 2 +- .../groups/settings/ci_cd/show.html.haml | 4 +- app/views/groups/show.html.haml | 5 +- app/views/help/_shortcuts.html.haml | 8 +- app/views/help/index.html.haml | 4 +- .../help/instance_configuration.html.haml | 2 +- app/views/help/show.html.haml | 2 +- app/views/help/ui.html.haml | 2 +- app/views/ide/_show.html.haml | 2 +- app/views/import/bitbucket/status.html.haml | 91 +- .../import/bitbucket_server/new.html.haml | 4 +- .../import/bitbucket_server/status.html.haml | 96 +- app/views/import/fogbugz/status.html.haml | 65 +- app/views/import/gitlab/status.html.haml | 55 +- .../import/gitlab_projects/new.html.haml | 5 +- app/views/import/manifest/new.html.haml | 4 +- app/views/import/manifest/status.html.haml | 4 +- .../cohorts/index.html.haml | 3 +- .../dev_ops_score/_callout.html.haml | 2 +- .../dev_ops_score/_disabled.html.haml | 2 +- .../dev_ops_score/index.html.haml | 2 +- app/views/invites/show.html.haml | 10 +- .../kaminari/gitlab/_paginator.html.haml | 2 +- .../kaminari/gitlab/_without_count.html.haml | 2 +- app/views/layouts/_head.html.haml | 3 +- app/views/layouts/_img_loader.html.haml | 17 + app/views/layouts/_page.html.haml | 1 + app/views/layouts/_search.html.haml | 5 +- app/views/layouts/_startup_js.html.haml | 13 + app/views/layouts/application.html.haml | 2 +- .../header/_current_user_dropdown.html.haml | 1 - .../layouts/header/_help_dropdown.html.haml | 1 - app/views/layouts/header/_new_dropdown.haml | 1 + app/views/layouts/nav/_dashboard.html.haml | 6 +- .../layouts/nav/sidebar/_admin.html.haml | 8 +- .../layouts/nav/sidebar/_group.html.haml | 5 +- .../layouts/nav/sidebar/_project.html.haml | 65 +- .../layouts/nav/sidebar/_wiki_link.html.haml | 11 + app/views/layouts/service_desk.html.haml | 24 + app/views/layouts/snippets.html.haml | 1 + .../closed_merge_request_email.html.haml | 3 +- .../closed_merge_request_email.text.haml | 2 +- .../merge_request_status_email.html.haml | 3 +- .../merge_request_status_email.text.haml | 2 +- .../merge_request_unmergeable_email.html.haml | 2 +- .../merge_request_unmergeable_email.text.haml | 2 +- ...rge_when_pipeline_succeeds_email.html.haml | 159 + ...rge_when_pipeline_succeeds_email.text.haml | 8 + .../merged_merge_request_email.html.haml | 2 +- app/views/notify/new_issue_email.html.haml | 2 +- ...w_mention_in_merge_request_email.html.haml | 2 +- .../push_to_merge_request_email.html.haml | 2 +- .../push_to_merge_request_email.text.haml | 4 +- .../resolved_all_discussions_email.html.haml | 3 +- .../service_desk_new_note_email.html.haml | 5 + .../service_desk_new_note_email.text.erb | 6 + .../service_desk_thank_you_email.html.haml | 2 + .../service_desk_thank_you_email.text.erb | 6 + app/views/profiles/_event_table.html.haml | 2 +- app/views/profiles/accounts/show.html.haml | 10 +- .../active_sessions/_active_session.html.haml | 4 +- .../profiles/active_sessions/index.html.haml | 4 +- app/views/profiles/audit_log.html.haml | 2 +- app/views/profiles/chat_names/index.html.haml | 2 +- app/views/profiles/chat_names/new.html.haml | 2 +- app/views/profiles/emails/index.html.haml | 10 +- app/views/profiles/gpg_keys/_form.html.haml | 2 +- app/views/profiles/gpg_keys/_key.html.haml | 6 +- app/views/profiles/gpg_keys/index.html.haml | 4 +- app/views/profiles/keys/_form.html.haml | 4 +- app/views/profiles/keys/_key.html.haml | 8 +- .../profiles/keys/_key_details.html.haml | 2 +- app/views/profiles/keys/index.html.haml | 6 +- .../notifications/_group_settings.html.haml | 2 +- .../notifications/_project_settings.html.haml | 2 +- .../profiles/notifications/show.html.haml | 6 +- app/views/profiles/passwords/edit.html.haml | 6 +- .../personal_access_tokens/index.html.haml | 8 +- app/views/profiles/preferences/show.html.haml | 20 +- app/views/profiles/show.html.haml | 11 +- .../two_factor_auths/_codes.html.haml | 2 +- .../profiles/two_factor_auths/show.html.haml | 14 +- app/views/projects/_files.html.haml | 23 +- app/views/projects/_flash_messages.html.haml | 2 +- app/views/projects/_home_panel.html.haml | 10 +- .../projects/_import_project_pane.html.haml | 6 +- .../_merge_request_settings.html.haml | 3 + ..._request_squash_options_settings.html.haml | 42 + app/views/projects/_readme.html.haml | 14 +- app/views/projects/_remove.html.haml | 7 +- .../projects/_service_desk_settings.html.haml | 19 + app/views/projects/_wiki.html.haml | 2 +- app/views/projects/artifacts/browse.html.haml | 2 +- app/views/projects/artifacts/file.html.haml | 2 +- app/views/projects/blame/show.html.haml | 2 +- app/views/projects/blob/_editor.html.haml | 10 +- .../projects/blob/_header_content.html.haml | 2 +- app/views/projects/blob/_viewer.html.haml | 2 +- .../projects/blob/_viewer_switcher.html.haml | 4 +- app/views/projects/blob/edit.html.haml | 9 +- app/views/projects/blob/new.html.haml | 10 +- .../projects/blob/viewers/_license.html.haml | 2 +- .../projects/blob/viewers/_loading.html.haml | 2 +- .../viewers/_metrics_dashboard_yml.html.haml | 2 +- .../projects/blob/viewers/_sketch.html.haml | 2 +- .../projects/blob/viewers/_stl.html.haml | 4 +- app/views/projects/branches/_branch.html.haml | 8 +- app/views/projects/branches/new.html.haml | 2 +- app/views/projects/buttons/_clone.html.haml | 2 +- .../projects/buttons/_download.html.haml | 8 +- app/views/projects/cleanup/_show.html.haml | 2 +- .../projects/commit/_commit_box.html.haml | 4 +- .../commit/_limit_exceeded_message.html.haml | 2 +- app/views/projects/commits/show.html.haml | 10 +- app/views/projects/compare/_form.html.haml | 6 +- app/views/projects/compare/index.html.haml | 4 +- app/views/projects/confluences/show.html.haml | 13 + .../projects/cycle_analytics/show.html.haml | 2 +- .../projects/default_branch/_show.html.haml | 2 +- app/views/projects/deploy_keys/edit.html.haml | 2 +- app/views/projects/diffs/_diffs.html.haml | 2 + .../projects/diffs/_file_header.html.haml | 2 +- app/views/projects/diffs/_stats.html.haml | 4 +- app/views/projects/edit.html.haml | 2 +- app/views/projects/empty.html.haml | 6 +- .../projects/environments/_form.html.haml | 4 +- app/views/projects/find_file/show.html.haml | 4 +- .../projects/forks/_fork_button.html.haml | 8 +- app/views/projects/forks/new.html.haml | 6 +- app/views/projects/hook_logs/_index.html.haml | 2 +- app/views/projects/hook_logs/show.html.haml | 4 +- app/views/projects/hooks/edit.html.haml | 4 +- app/views/projects/hooks/index.html.haml | 4 +- app/views/projects/import/jira/show.html.haml | 1 + app/views/projects/imports/new.html.haml | 2 +- .../_alert_moved_from_service_desk.html.haml | 10 + .../issues/_by_email_description.html.haml | 4 +- .../issues/_design_management.html.haml | 34 +- .../projects/issues/_discussion.html.haml | 2 +- app/views/projects/issues/_issue.html.haml | 2 +- app/views/projects/issues/_issues.html.haml | 21 +- app/views/projects/issues/_nav_btns.html.haml | 2 +- .../projects/issues/_new_branch.html.haml | 2 +- .../_service_desk_info_content.html.haml | 39 + app/views/projects/issues/edit.html.haml | 2 +- .../issues/export_csv/_modal.html.haml | 2 +- .../issues/import_csv/_button.html.haml | 5 +- app/views/projects/issues/index.html.haml | 2 +- .../projects/issues/service_desk.html.haml | 21 + app/views/projects/issues/show.html.haml | 23 +- app/views/projects/jobs/index.html.haml | 2 +- app/views/projects/jobs/show.html.haml | 2 + app/views/projects/jobs/terminal.html.haml | 6 +- app/views/projects/labels/edit.html.haml | 6 +- app/views/projects/labels/index.html.haml | 4 +- app/views/projects/labels/new.html.haml | 6 +- .../merge_requests/_approvals_count.html.haml | 13 + .../merge_requests/_discussion.html.haml | 2 +- .../merge_requests/_merge_request.html.haml | 2 +- .../merge_requests/_mr_title.html.haml | 2 +- .../merge_requests/_nav_btns.html.haml | 2 +- .../projects/merge_requests/_widget.html.haml | 7 +- .../merge_requests/conflicts/show.html.haml | 2 +- .../creations/_new_submit.html.haml | 4 +- .../merge_requests/creations/new.html.haml | 6 +- .../diffs/_commit_widget.html.haml | 2 +- .../projects/merge_requests/edit.html.haml | 2 +- .../projects/merge_requests/index.html.haml | 2 +- .../projects/merge_requests/invalid.html.haml | 2 +- .../projects/merge_requests/show.html.haml | 14 +- app/views/projects/milestones/_form.html.haml | 6 +- app/views/projects/milestones/index.html.haml | 2 +- app/views/projects/milestones/show.html.haml | 4 +- .../projects/mirrors/_instructions.html.haml | 2 +- .../projects/mirrors/_ssh_host_keys.html.haml | 4 +- app/views/projects/network/show.html.haml | 6 +- app/views/projects/new.html.haml | 4 +- app/views/projects/no_repo.html.haml | 3 +- app/views/projects/notes/_actions.html.haml | 2 +- .../notes/_more_actions_dropdown.html.haml | 4 +- app/views/projects/pages/show.html.haml | 2 +- .../_pipeline_schedule.html.haml | 4 +- app/views/projects/pipelines/_stage.html.haml | 2 +- .../projects/pipelines/_with_tabs.html.haml | 10 +- app/views/projects/pipelines/index.html.haml | 1 + app/views/projects/pipelines/show.html.haml | 4 +- .../projects/project_members/index.html.haml | 3 +- .../_built_in_templates.html.haml | 4 +- .../_project_fields_form.html.haml | 2 +- .../shared/_matching_branch.html.haml | 2 +- .../protected_branches/show.html.haml | 4 +- .../_create_protected_tag.html.haml | 3 +- .../shared/_create_protected_tag.html.haml | 2 +- .../protected_tags/shared/_dropdown.html.haml | 2 +- .../protected_tags/shared/_index.html.haml | 2 +- .../shared/_matching_tag.html.haml | 2 +- .../shared/_protected_tag.html.haml | 2 +- .../projects/protected_tags/show.html.haml | 4 +- app/views/projects/refs/logs_tree.js.haml | 23 - app/views/projects/releases/new.html.haml | 3 + .../serverless/functions/index.html.haml | 4 +- app/views/projects/services/_form.html.haml | 11 +- .../projects/services/alerts/_help.html.haml | 7 +- .../projects/services/alerts/_top.html.haml | 8 + .../_configuration_banner.html.haml | 4 +- .../prometheus/_custom_metrics.html.haml | 2 +- .../prometheus/_external_alerts.html.haml | 4 +- .../services/prometheus/_help.html.haml | 2 +- .../services/prometheus/_metrics.html.haml | 2 +- .../services/prometheus/_show.html.haml | 2 +- .../services/prometheus/_top.html.haml | 10 + .../projects/settings/_general.html.haml | 2 +- .../settings/access_tokens/index.html.haml | 2 +- .../settings/ci_cd/_autodevops_form.html.haml | 6 +- .../projects/settings/ci_cd/_form.html.haml | 4 +- .../projects/settings/ci_cd/show.html.haml | 6 +- .../settings/integrations/show.html.haml | 2 +- .../operations/_alert_management.html.haml | 14 + .../_configuration_banner.html.haml | 4 +- .../settings/operations/_incidents.html.haml | 33 +- .../settings/operations/_prometheus.html.haml | 2 +- .../settings/operations/show.html.haml | 1 + app/views/projects/show.html.haml | 5 +- .../sidebar/_issues_service_desk.html.haml | 3 + .../projects/snippets/_actions.html.haml | 2 +- .../projects/starrers/_starrer.html.haml | 2 +- app/views/projects/tags/_tag.html.haml | 4 +- app/views/projects/tags/index.html.haml | 2 +- app/views/projects/tags/new.html.haml | 10 +- .../projects/tags/releases/edit.html.haml | 6 +- app/views/projects/tags/show.html.haml | 8 +- app/views/projects/tree/_readme.html.haml | 2 +- .../tree/_tree_commit_column.html.haml | 3 - .../projects/tree/_tree_content.html.haml | 2 +- .../projects/tree/_tree_header.html.haml | 81 +- app/views/projects/tree/_tree_row.html.haml | 2 +- app/views/projects/tree/show.html.haml | 4 - app/views/projects/triggers/_index.html.haml | 12 +- .../projects/triggers/_trigger.html.haml | 2 +- app/views/projects/triggers/edit.html.haml | 4 +- app/views/projects/wikis/git_access.html.haml | 3 +- app/views/search/_category.html.haml | 4 +- app/views/search/results/_issue.html.haml | 2 +- .../search/results/_merge_request.html.haml | 4 +- app/views/search/results/_note.html.haml | 2 +- app/views/search/show.html.haml | 2 +- .../sent_notifications/unsubscribe.html.haml | 4 +- app/views/shared/_commit_well.html.haml | 2 +- app/views/shared/_event_filter.html.haml | 8 +- app/views/shared/_field.html.haml | 2 +- .../shared/_issuable_meta_data.html.haml | 8 +- app/views/shared/_label_row.html.haml | 4 +- app/views/shared/_md_preview.html.haml | 4 +- app/views/shared/_milestone_expired.html.haml | 6 +- .../_milestones_sort_dropdown.html.haml | 2 +- .../_namespace_storage_limit_alert.html.haml | 26 - app/views/shared/_service_settings.html.haml | 25 +- .../shared/_sidebar_toggle_button.html.haml | 4 +- app/views/shared/_zen.html.haml | 2 +- .../shared/access_tokens/_form.html.haml | 2 +- .../shared/access_tokens/_table.html.haml | 16 +- app/views/shared/boards/_show.html.haml | 1 - .../shared/boards/components/_board.html.haml | 82 - .../dashboard/_no_filter_selected.html.haml | 2 +- .../shared/deploy_tokens/_form.html.haml | 2 +- .../deploy_tokens/_new_deploy_token.html.haml | 4 +- .../shared/empty_states/_wikis.html.haml | 4 + .../empty_states/_wikis_layout.html.haml | 2 +- .../icons/_service_desk_callout.svg | 1 + .../icons/_service_desk_empty_state.svg | 1 + .../icons/_service_desk_setup.svg | 39 + app/views/shared/file_hooks/_index.html.haml | 4 +- .../form_elements/_description.html.haml | 12 +- app/views/shared/groups/_dropdown.html.haml | 2 +- app/views/shared/icons/_icon_service_desk.svg | 1 + app/views/shared/integrations/edit.html.haml | 1 + .../_board_create_list_dropdown.html.haml | 2 +- .../issuable/_bulk_update_sidebar.html.haml | 16 + .../issuable/_close_reopen_button.html.haml | 11 +- .../_close_reopen_report_toggle.html.haml | 11 +- app/views/shared/issuable/_form.html.haml | 4 +- .../shared/issuable/_search_bar.html.haml | 4 +- app/views/shared/issuable/_sidebar.html.haml | 4 +- .../shared/issuable/_sort_dropdown.html.haml | 2 +- .../issuable/form/_branch_chooser.html.haml | 2 +- .../issuable/form/_contribution.html.haml | 2 +- .../form/_default_templates.html.haml | 2 +- .../issuable/form/_merge_params.html.haml | 23 +- .../shared/issuable/form/_title.html.haml | 4 +- app/views/shared/members/_member.html.haml | 14 +- app/views/shared/members/_requests.html.haml | 2 +- .../milestones/_deprecation_message.html.haml | 2 +- .../shared/milestones/_description.html.haml | 5 +- .../shared/milestones/_form_dates.html.haml | 8 +- app/views/shared/milestones/_header.html.haml | 2 +- .../shared/milestones/_issues_tab.html.haml | 2 +- .../milestones/_merge_requests_tab.haml | 2 +- .../shared/milestones/_milestone.html.haml | 9 +- .../shared/milestones/_sidebar.html.haml | 4 +- .../shared/milestones/_tab_loading.html.haml | 2 +- app/views/shared/milestones/_tabs.html.haml | 4 +- app/views/shared/milestones/_top.html.haml | 2 +- .../shared/notes/_comment_button.html.haml | 4 +- app/views/shared/notes/_edit_form.html.haml | 4 +- app/views/shared/notes/_form.html.haml | 2 +- app/views/shared/notes/_hints.html.haml | 15 +- app/views/shared/notes/_note.html.haml | 4 +- .../shared/notes/_notes_with_form.html.haml | 4 +- .../notifications/_new_button.html.haml | 2 +- .../projects/_edit_information.html.haml | 2 +- app/views/shared/projects/_project.html.haml | 25 +- .../promotions/_promote_servicedesk.html.haml | 13 + .../runners/_runner_description.html.haml | 2 +- app/views/shared/runners/show.html.haml | 2 +- app/views/shared/snippets/_header.html.haml | 2 +- app/views/shared/snippets/_snippet.html.haml | 2 +- app/views/shared/web_hooks/_hook.html.haml | 2 +- app/views/shared/web_hooks/_index.html.haml | 2 +- app/views/shared/wikis/_form.html.haml | 4 +- .../shared/wikis/_pages_wiki_page.html.haml | 2 +- app/views/shared/wikis/_sidebar.html.haml | 8 +- .../shared/wikis/_sidebar_wiki_page.html.haml | 2 +- app/views/shared/wikis/diff.html.haml | 32 + app/views/shared/wikis/edit.html.haml | 10 +- app/views/shared/wikis/history.html.haml | 57 +- app/views/shared/wikis/pages.html.haml | 4 +- app/views/shared/wikis/show.html.haml | 15 +- .../sherlock/file_samples/show.html.haml | 4 +- .../sherlock/queries/_backtrace.html.haml | 2 +- app/views/sherlock/queries/_general.html.haml | 2 +- .../sherlock/transactions/_general.html.haml | 2 +- app/views/snippets/_actions.html.haml | 2 +- app/views/snippets/new.html.haml | 2 +- app/views/snippets/notes/_actions.html.haml | 2 +- app/views/users/_overview.html.haml | 6 +- app/views/users/show.html.haml | 7 +- app/workers/all_queues.yml | 97 +- .../project_group_link_create_worker.rb | 21 + app/workers/build_finished_worker.rb | 1 + ...ipeline_success_unlock_artifacts_worker.rb | 20 + .../ci/ref_delete_unlock_artifacts_worker.rb | 22 + .../concerns/project_export_options.rb | 25 - app/workers/concerns/reenqueuer.rb | 6 +- app/workers/concerns/worker_attributes.rb | 64 +- app/workers/delete_merged_branches_worker.rb | 1 - .../gitlab/jira_import/import_issue_worker.rb | 2 +- app/workers/group_export_worker.rb | 1 + .../pager_duty/process_incident_worker.rb | 42 + .../process_alert_worker.rb | 36 +- .../process_prometheus_alert_worker.rb | 69 +- .../unassign_issuables_worker.rb | 32 + app/workers/new_release_worker.rb | 18 - .../packages/nuget/extraction_worker.rb | 25 + app/workers/partition_creation_worker.rb | 15 + app/workers/pipeline_update_worker.rb | 4 +- app/workers/post_receive.rb | 2 +- app/workers/process_commit_worker.rb | 2 +- app/workers/project_export_worker.rb | 3 +- ...roject_update_repository_storage_worker.rb | 4 +- app/workers/repository_check/batch_worker.rb | 4 +- .../single_repository_worker.rb | 2 +- app/workers/repository_import_worker.rb | 3 +- .../service_desk_email_receiver_worker.rb | 15 + app/workers/stuck_import_jobs_worker.rb | 19 - .../update_container_registry_info_worker.rb | 15 + bin/changelog | 21 +- bin/feature-flag | 291 + bin/rspec-stackprof | 3 +- config/application.rb | 3 + config/dependency_decisions.yml | 6 - config/environments/development.rb | 2 - config/environments/production.rb | 2 - config/environments/test.rb | 4 + config/feature_categories.yml | 8 +- config/gitlab.yml.example | 50 +- config/initializers/01_secret_token.rb | 12 +- config/initializers/0_inject_feature_flags.rb | 5 + config/initializers/1_postgresql_only.rb | 2 + config/initializers/1_settings.rb | 55 +- config/initializers/action_cable.rb | 8 +- .../action_dispatch_journey_formatter.rb | 4 +- .../actionpack_generate_old_csrf_token.rb | 33 - .../active_record_schema_ignore_tables.rb | 3 + ...nfig_initializers_active_record_locking.rb | 46 - .../initializers/doorkeeper_openid_connect.rb | 4 +- config/initializers/flipper.rb | 1 - config/initializers/grape_patch.rb | 31 + config/initializers/lograge.rb | 1 + config/initializers/multi_json.rb | 5 + config/initializers/oj.rb | 4 + config/initializers/postgres_partitioning.rb | 10 + config/initializers/rack_attack.rb | 13 + config/initializers/rack_timeout.rb | 2 - config/initializers/stackprof.rb | 101 + .../000_inflections.rb | 1 + config/karma.config.js | 2 +- config/locales/devise.en.yml | 4 +- config/locales/en.yml | 2 + config/object_store_settings.rb | 132 +- config/plugins/monaco_webpack.js | 17 + config/prometheus/cluster_metrics.yml | 91 +- config/prometheus/common_metrics.yml | 24 +- config/prometheus/queries_cluster_metrics.yml | 65 + config/routes.rb | 21 +- config/routes/import.rb | 4 - config/routes/issues.rb | 1 + config/routes/pipelines.rb | 10 +- config/routes/project.rb | 34 +- config/routes/snippets.rb | 9 + config/routes/user.rb | 2 +- config/routes/wiki.rb | 6 +- config/settings.rb | 7 +- config/sidekiq_queues.yml | 8 +- config/webpack.config.js | 4 +- crowdin.yml | 4 +- danger/changelog/Dangerfile | 10 +- danger/documentation/Dangerfile | 38 +- danger/metadata/Dangerfile | 6 +- danger/plugins/sidekiq_queues.rb | 10 + danger/roulette/Dangerfile | 37 +- danger/sidekiq_queues/Dangerfile | 27 + danger/specs/Dangerfile | 8 +- db/fixtures/development/24_forks.rb | 33 +- db/fixtures/development/26_packages.rb | 159 + .../27_product_analytics_events.rb | 56 + ...39_create_merge_request_assignees_table.rb | 2 - ...2144316_create_milestone_releases_table.rb | 2 - ...90927055500_create_description_versions.rb | 2 - .../20191112212815_create_web_authn_table.rb | 26 + ...1118053631_add_group_deletion_schedules.rb | 2 - ...19_create_gitlab_subscription_histories.rb | 2 - .../20200214025454_add_canonical_emails.rb | 2 - .../20200227165129_create_user_details.rb | 2 - .../20200229171700_create_custom_emojis.rb | 29 + .../20200305020458_add_label_restore_table.rb | 31 + ...05020459_add_label_restore_foreign_keys.rb | 35 + ...0200311093210_create_user_highest_roles.rb | 2 - ...200326122700_create_diff_note_positions.rb | 2 - db/migrate/20200330203837_recreate_ci_ref.rb | 2 - ...ect_compliance_framework_settings_table.rb | 2 - ...7182205_create_partitioned_foreign_keys.rb | 2 - ...create_project_repository_storage_moves.rb | 2 - ...20200408125046_create_ci_freeze_periods.rb | 2 - ..._create_status_page_published_incidents.rb | 2 - ...17044453_create_alert_management_alerts.rb | 2 - ...420104303_add_group_import_states_table.rb | 2 - ..._create_metrics_users_starred_dashboard.rb | 2 - ...0422091541_create_ci_instance_variables.rb | 2 - ...ners_enabled_and_override_to_namespaces.rb | 21 + ...9_create_nuget_dependency_link_metadata.rb | 2 - ...30130048_create_packages_nuget_metadata.rb | 2 - ...20200430174637_create_group_deploy_keys.rb | 2 - ...81937_add_web_authn_xid_to_user_details.rb | 12 + ...text_limit_to_user_details_webauthn_xid.rb | 16 + ...xt_limit_to_webauthn_registrations_name.rb | 16 + ...o_webauthn_registrations_credential_xid.rb | 16 + ...ey_from_webauthn_registrations_to_users.rb | 21 + ...create_alert_management_alert_assignees.rb | 2 - ...22205606_create_group_deploy_keys_group.rb | 25 + ...4346_add_source_to_resource_state_event.rb | 21 + ...0526193555_add_squash_option_to_project.rb | 9 + ...val_rule_name_for_code_owners_rule_type.rb | 116 + ...200527211605_add_locked_to_ci_pipelines.rb | 19 + ...01128_add_secrets_to_ci_builds_metadata.rb | 19 + ...143628_create_project_security_settings.rb | 2 - ...604145731_create_board_user_preferences.rb | 2 - ...ze_and_project_id_to_project_statistics.rb | 17 + ...ze_and_project_id_to_project_statistics.rb | 17 + ...ze_and_project_id_to_project_statistics.rb | 17 + ...9012539_add_traversal_ids_to_namespaces.rb | 19 + ...0130002_create_vulnerability_statistics.rb | 30 + ...ance_frameworks_to_application_settings.rb | 19 + ...osed_by_fields_to_resource_state_events.rb | 17 + ...y_known_sign_in_to_application_settings.rb | 9 + ...047_create_clusters_applications_cilium.rb | 14 + ...n_limits_for_max_size_per_artifact_type.rb | 48 + ...031_add_author_id_index_to_audit_events.rb | 22 + ...7000757_clean_up_file_store_lfs_objects.rb | 21 + .../20200617001001_clean_up_store_uploads.rb | 21 + ...18_clean_up_file_store_ci_job_artifacts.rb | 23 + .../20200617150041_create_namespace_limits.rb | 22 + ...add_deploy_key_id_to_push_access_levels.rb | 22 + ..._index_on_id_and_created_at_to_snippets.rb | 17 + ...ma_without_lock_version_null_constraint.rb | 20 + ...evious_schema_with_lock_version_indices.rb | 22 + ..._add_has_confluence_to_project_settings.rb | 19 + ...27_add_project_key_to_jira_tracker_data.rb | 12 + ..._limit_to_jira_tracker_data_project_key.rb | 17 + ...eus_alert_id_to_alert_management_alerts.rb | 16 + ...06_add_vendor_to_vulnerability_scanners.rb | 23 + ..._limit_to_vulnerability_scanners_vendor.rb | 17 + ...add_snippets_size_to_project_statistics.rb | 9 + ...0200622103836_create_snippet_statistics.rb | 24 + ...04923_create_ci_pipeline_messages_table.rb | 27 + ...dex_ci_job_artifacts_file_store_is_null.rb | 18 + ...ve_index_lfs_objects_file_store_is_null.rb | 18 + ...0320_remove_index_uploads_store_is_null.rb | 18 + ...rge_request_id_to_resource_state_events.rb | 33 + ...23090030_add_author_name_to_audit_event.rb | 22 + ...121135_create_dynamic_partitions_schema.rb | 19 + ..._diffs_file_by_file_to_user_preferences.rb | 21 + ...23141544_create_elastic_reindexing_task.rb | 33 + ...3170000_create_static_partitions_schema.rb | 19 + ...00623185440_add_product_analytics_table.rb | 202 + ...11_add_storage_size_limit_to_plan_limit.rb | 9 + ...ics_cycle_analytics_group_value_streams.rb | 33 + ..._stream_to_cycle_analytics_group_stages.rb | 19 + ...ult_branch_name_to_application_settings.rb | 12 + ..._environment_to_alert_management_alerts.rb | 25 + ...nippets_size_to_root_storage_statistics.rb | 19 + ...add_last_used_to_personal_access_tokens.rb | 19 + ...2_add_partial_index_to_locked_pipelines.rb | 17 + ...ult_branch_name_to_application_settings.rb | 17 + ...rop_partitions_dynamic_schema_if_exists.rb | 14 + ...aintenance_mode_application_to_settings.rb | 29 + ...dex_on_metric_identifier_and_project_id.rb | 17 + ...0630091656_add_bio_html_to_user_details.rb | 24 + ...ount_target_to_elastic_reindexing_tasks.rb | 9 + ...ign_key_to_cycle_analytics_group_stages.rb | 22 + ...t_export_limits_to_application_settings.rb | 15 + ...d_delayed_project_removal_to_namespaces.rb | 19 + ...205710_create_background_migration_jobs.rb | 29 + ...nique_on_vulnerability_statistics_table.rb | 17 + ...nge_prometheus_metrics_identifier_index.rb | 22 + ...keys_from_ci_daily_report_results_table.rb | 21 + ...0200703124823_create_namespace_settings.rb | 22 + ...add_issues_enabled_to_jira_tracker_data.rb | 9 + ...stic_batch_project_indexer_worker_queue.rb | 11 + ...st_unique_index_alert_management_alerts.rb | 35 + ...ry_storage_increase_to_namespace_limits.rb | 9 + ...drop_old_non_unique_index_on_mr_metrics.rb | 18 + ..._add_browser_performance_to_plan_limits.rb | 9 + ...849_add_load_performance_to_plan_limits.rb | 9 + ...to_project_incident_management_settings.rb | 13 + ...5332_change_issues_create_limit_default.rb | 19 + ...ject_incident_management_settings_token.rb | 18 + .../20200712084655_create_dast_sites.rb | 27 + ...0200712235622_create_dast_site_profiles.rb | 28 + ...n_job_index_for_partitioning_migrations.rb | 18 + ...9_add_index_on_package_files_file_store.rb | 17 + ...6044023_add_entity_path_to_audit_events.rb | 21 + ...xt_limit_on_entity_path_to_audit_events.rb | 17 + ...54_remove_duplicate_labels_from_project.rb | 130 + ...ueness_index_to_label_title_and_project.rb | 21 + ...igrate_vulnerability_dismissal_feedback.rb | 36 + .../20200526115436_dedup_mr_metrics.rb | 65 + ...22_set_lock_version_not_null_constraint.rb | 23 + ...8203426_set_proper_lock_version_indices.rb | 29 + ...0608205813_set_lock_version_to_not_null.rb | 31 + ...08212030_lock_version_cleanup_for_epics.rb | 18 + ...lock_version_cleanup_for_merge_requests.rb | 18 + ...8212549_lock_version_cleanup_for_issues.rb | 18 + ...2652_lock_version_cleanup_for_ci_stages.rb | 18 + ...2807_lock_version_cleanup_for_ci_builds.rb | 18 + ...4_lock_version_cleanup_for_ci_pipelines.rb | 18 + ...ex_on_locked_state_id_to_merge_requests.rb | 2 +- ...57_unconfirm_wrongfully_verified_emails.rb | 31 + ...ore_not_null_constraint_on_lfs_objects.rb} | 6 +- ...idate_store_not_null_constraint_uploads.rb | 17 + ...not_null_constraint_on_ci_job_artifacts.rb | 17 + ...20200618152212_update_secure_smau_index.rb | 23 + ...ve_gitlab_issue_tracker_service_records.rb | 28 + ...ing_approvers_per_merge_request_indices.rb | 26 + ...alue_stream_to_groups_with_group_stages.rb | 55 + ...ign_key_on_cycle_analytics_group_stages.rb | 19 + ...064117_generate_missing_routes_for_bots.rb | 92 + ...00703125016_backfill_namespace_settings.rb | 29 + ...created_at_where_source_to_ci_pipelines.rb | 17 + ...nd_status_and_created_at_to_deployments.rb | 19 + ...4619_drop_ci_daily_report_results_table.rb | 24 + ...ule_populate_project_snippet_statistics.rb | 30 + ...102418_delete_user_callout_alerts_moved.rb | 28 + ...ruby_objects_in_details_on_audit_events.rb | 18 + ...0200713071042_confirm_project_bot_users.rb | 30 + db/structure.sql | 10056 +++++- doc/.vale/gitlab/Acronyms.yml | 16 +- doc/.vale/gitlab/AlertBoxStyle.yml | 16 + doc/.vale/gitlab/BadgeCapitalization.yml | 2 +- doc/.vale/gitlab/British.yml | 2 +- doc/.vale/gitlab/CodeblockFences.yml | 2 +- doc/.vale/gitlab/Contractions.yml | 14 +- doc/.vale/gitlab/CurlStringsQuoted.yml | 2 +- doc/.vale/gitlab/CurrentStatus.yml | 13 + doc/.vale/gitlab/FirstPerson.yml | 2 +- doc/.vale/gitlab/FutureTense.yml | 17 + doc/.vale/gitlab/InternalLinkExtension.yml | 2 +- doc/.vale/gitlab/LatinTerms.yml | 2 +- doc/.vale/gitlab/MeaningfulLinkWords.yml | 2 +- doc/.vale/gitlab/MergeConflictMarkers.yml | 2 +- doc/.vale/gitlab/OutdatedVersions.yml | 21 + doc/.vale/gitlab/OxfordComma.yml | 2 +- doc/.vale/gitlab/ReferenceLinks.yml | 2 +- doc/.vale/gitlab/RelativeLinks.yml | 2 +- doc/.vale/gitlab/Repetition.yml | 2 +- doc/.vale/gitlab/SentenceLength.yml | 2 +- doc/.vale/gitlab/SentenceSpacing.yml | 4 +- doc/.vale/gitlab/Spelling.yml | 2 +- doc/.vale/gitlab/SubstitutionWarning.yml | 5 +- doc/.vale/gitlab/Substitutions.yml | 2 +- doc/.vale/gitlab/VersionText.yml | 2 +- doc/.vale/gitlab/spelling-exceptions.txt | 7 +- doc/README.md | 88 +- doc/administration/audit_events.md | 7 +- doc/administration/auth/jwt.md | 3 +- .../auth/ldap/google_secure_ldap.md | 3 +- doc/administration/auth/ldap/index.md | 22 +- .../auth/ldap/ldap-troubleshooting.md | 38 +- doc/administration/auth/okta.md | 3 +- doc/administration/auth/smartcard.md | 2 +- doc/administration/feature_flags.md | 22 +- .../disaster_recovery/bring_primary_back.md | 6 +- .../geo/disaster_recovery/index.md | 19 +- .../geo/disaster_recovery/planned_failover.md | 15 +- .../geo/replication/database.md | 6 +- .../geo/replication/datatypes.md | 48 +- .../geo/replication/disable_geo.md | 93 + .../geo/replication/docker_registry.md | 2 +- .../geo/replication/external_database.md | 3 +- .../geo/replication/geo_validation_tests.md | 65 +- doc/administration/geo/replication/index.md | 30 +- .../geo/replication/location_aware_git_url.md | 2 +- .../geo/replication/multiple_servers.md | 59 +- .../geo/replication/troubleshooting.md | 9 +- .../geo/replication/updating_the_geo_nodes.md | 5 +- doc/administration/git_annex.md | 8 +- .../gitaly/img/praefect_storage_v12_10.png | Bin 59531 -> 0 bytes doc/administration/gitaly/index.md | 528 +- doc/administration/gitaly/praefect.md | 337 +- doc/administration/gitaly/reference.md | 2 +- .../high_availability/consul.md | 4 +- .../high_availability/database.md | 19 +- .../high_availability/gitlab.md | 20 +- .../high_availability/monitoring_node.md | 13 + doc/administration/high_availability/nfs.md | 26 +- .../nfs_host_client_setup.md | 19 +- doc/administration/high_availability/redis.md | 1007 +- .../high_availability/redis_source.md | 370 +- .../high_availability/sidekiq.md | 3 +- .../repository_storages_admin_ui_v12_10.png | Bin 23718 -> 0 bytes .../repository_storages_admin_ui_v13_1.png | Bin 0 -> 85160 bytes doc/administration/incoming_email.md | 22 +- doc/administration/instance_limits.md | 158 +- doc/administration/integration/plantuml.md | 3 +- doc/administration/integration/terminal.md | 3 +- doc/administration/job_artifacts.md | 46 +- doc/administration/job_logs.md | 2 +- doc/administration/lfs/index.md | 51 +- doc/administration/logs.md | 98 +- doc/administration/merge_request_diffs.md | 68 +- .../img/self_monitoring_default_dashboard.png | Bin 0 -> 51508 bytes .../gitlab_self_monitoring_project/index.md | 23 +- .../performance/grafana_configuration.md | 107 +- ...performance_bar_configuration_settings.png | Bin 16455 -> 0 bytes .../img/performance_bar_frontend.png | Bin 112089 -> 34521 bytes .../img/performance_bar_gitaly_calls.png | Bin 83212 -> 81321 bytes .../img/performance_bar_gitaly_threshold.png | Bin 19076 -> 10316 bytes .../img/performance_bar_redis_calls.png | Bin 70859 -> 17273 bytes ...rformance_bar_request_selector_warning.png | Bin 17259 -> 10175 bytes .../img/performance_bar_rugged_calls.png | Bin 105305 -> 28784 bytes .../monitoring/performance/performance_bar.md | 98 +- .../monitoring/prometheus/gitlab_exporter.md | 20 +- .../monitoring/prometheus/gitlab_metrics.md | 55 +- .../monitoring/prometheus/index.md | 102 +- doc/administration/object_storage.md | 554 +- .../operations/fast_ssh_key_lookup.md | 31 +- .../operations/filesystem_benchmarking.md | 3 +- doc/administration/operations/puma.md | 18 +- doc/administration/operations/unicorn.md | 2 +- .../packages/container_registry.md | 103 +- .../packages/dependency_proxy.md | 5 + doc/administration/packages/index.md | 3 + doc/administration/pages/index.md | 119 +- doc/administration/postgresql/index.md | 36 + .../postgresql/replication_and_failover.md | 234 +- doc/administration/postgresql/standalone.md | 3 +- doc/administration/raketasks/ldap.md | 2 +- doc/administration/raketasks/maintenance.md | 4 +- doc/administration/raketasks/praefect.md | 18 +- .../raketasks/project_import_export.md | 10 + doc/administration/redis/index.md | 42 + .../redis/replication_and_failover.md | 741 + .../replication_and_failover_external.md | 376 + doc/administration/redis/standalone.md | 63 + doc/administration/redis/troubleshooting.md | 158 + .../reference_architectures/10k_users.md | 2 +- .../reference_architectures/1k_users.md | 2 +- .../reference_architectures/25k_users.md | 2 +- .../reference_architectures/2k_users.md | 174 +- .../reference_architectures/3k_users.md | 1798 +- .../reference_architectures/50k_users.md | 2 +- .../reference_architectures/5k_users.md | 1802 +- .../reference_architectures/index.md | 10 +- .../troubleshooting.md | 251 +- .../repository_storage_paths.md | 15 +- .../repository_storage_types.md | 7 + doc/administration/server_hooks.md | 233 +- doc/administration/smime_signing_email.md | 9 +- doc/administration/terraform_state.md | 19 +- .../troubleshooting/elasticsearch.md | 3 + .../gitlab_rails_cheat_sheet.md | 20 +- .../troubleshooting/linux_cheat_sheet.md | 2 +- .../navigating_gitlab_via_rails_console.md | 4 +- .../troubleshooting/postgresql.md | 8 +- doc/administration/troubleshooting/sidekiq.md | 5 +- doc/administration/uploads.md | 50 +- doc/api/README.md | 24 +- doc/api/api_resources.md | 3 +- doc/api/boards.md | 2 +- doc/api/container_registry.md | 6 + doc/api/deploy_keys.md | 6 + doc/api/deploy_tokens.md | 6 + doc/api/deployments.md | 7 + doc/api/discussions.md | 62 +- doc/api/environments.md | 8 + doc/api/epic_issues.md | 8 +- doc/api/epic_links.md | 3 +- doc/api/epics.md | 4 +- doc/api/error_tracking.md | 6 + doc/api/feature_flag_specs.md | 8 +- doc/api/feature_flags.md | 11 +- doc/api/feature_flags_legacy.md | 6 +- doc/api/freeze_periods.md | 9 +- doc/api/geo_nodes.md | 10 +- doc/api/graphql/getting_started.md | 2 +- .../graphql/reference/gitlab_schema.graphql | 1650 +- doc/api/graphql/reference/gitlab_schema.json | 4712 ++- doc/api/graphql/reference/index.md | 281 +- doc/api/group_clusters.md | 10 +- doc/api/group_labels.md | 6 +- doc/api/group_wikis.md | 196 + doc/api/groups.md | 25 +- doc/api/import.md | 37 + doc/api/instance_clusters.md | 293 + doc/api/instance_level_ci_variables.md | 24 +- doc/api/issues.md | 65 +- doc/api/labels.md | 9 +- doc/api/members.md | 7 +- doc/api/merge_requests.md | 7 +- doc/api/metrics_dashboard_annotations.md | 7 + doc/api/metrics_user_starred_dashboards.md | 9 + doc/api/namespaces.md | 3 +- doc/api/notes.md | 1 + doc/api/packages.md | 4 +- doc/api/pipelines.md | 2 +- doc/api/project_clusters.md | 14 +- doc/api/project_level_variables.md | 35 + doc/api/project_repository_storage_moves.md | 15 +- doc/api/project_snippets.md | 22 + doc/api/projects.md | 59 +- doc/api/protected_environments.md | 7 + doc/api/releases/links.md | 2 +- doc/api/resource_milestone_events.md | 4 +- doc/api/resource_state_events.md | 212 + doc/api/resource_weight_events.md | 108 + doc/api/services.md | 38 +- doc/api/settings.md | 2 + doc/api/snippets.md | 28 + doc/api/users.md | 38 +- doc/api/vulnerability_findings.md | 2 + doc/ci/README.md | 15 +- doc/ci/caching/index.md | 56 +- doc/ci/chatops/README.md | 78 +- doc/ci/cloud_deployment/index.md | 7 +- doc/ci/directed_acyclic_graph/index.md | 16 +- doc/ci/docker/using_docker_build.md | 44 +- doc/ci/docker/using_docker_images.md | 89 +- doc/ci/docker/using_kaniko.md | 2 +- doc/ci/environments/deployment_safety.md | 6 +- doc/ci/environments/index.md | 78 +- doc/ci/environments/protected_environments.md | 2 +- doc/ci/examples/README.md | 5 +- .../index.md | 6 +- .../index.md | 16 +- doc/ci/examples/deployment/README.md | 26 +- .../deployment/composer-npm-deploy.md | 2 +- .../index.md | 196 +- .../laravel_with_gitlab_and_envoy/index.md | 2 +- doc/ci/examples/php.md | 36 +- ...and-deploy-python-application-to-heroku.md | 32 +- doc/ci/img/metrics_reports_advanced_v13_0.png | Bin 0 -> 41131 bytes doc/ci/interactive_web_terminal/index.md | 10 +- doc/ci/introduction/index.md | 15 +- doc/ci/jenkins/index.md | 26 +- doc/ci/junit_test_reports.md | 22 +- doc/ci/merge_request_pipelines/index.md | 11 +- .../pipelines_for_merged_results/index.md | 3 +- .../merge_trains/index.md | 2 +- doc/ci/metrics_reports.md | 7 + doc/ci/migration/circleci.md | 4 +- doc/ci/pipelines/index.md | 6 +- doc/ci/pipelines/job_artifacts.md | 43 +- doc/ci/pipelines/pipeline_architectures.md | 16 +- doc/ci/pipelines/settings.md | 14 +- doc/ci/review_apps/index.md | 4 - doc/ci/runners/README.md | 84 +- doc/ci/triggers/README.md | 28 +- doc/ci/troubleshooting.md | 38 + doc/ci/variables/README.md | 18 +- doc/ci/variables/predefined_variables.md | 19 +- doc/ci/yaml/README.md | 879 +- doc/ci/yaml/includes.md | 2 +- .../issue_and_merge_request_template.md | 4 +- doc/development/README.md | 3 + doc/development/api_graphql_styleguide.md | 78 +- doc/development/api_styleguide.md | 40 + doc/development/application_limits.md | 14 +- doc/development/application_secrets.md | 41 + doc/development/approval_rules.md | 280 + doc/development/architecture.md | 42 +- doc/development/changelog.md | 11 +- doc/development/chatops_on_gitlabcom.md | 4 +- .../cicd/img/ci_template_selection_v13_1.png | Bin 0 -> 21284 bytes doc/development/cicd/index.md | 8 +- doc/development/cicd/templates.md | 66 + doc/development/code_intelligence/index.md | 110 + doc/development/code_review.md | 18 +- .../contributing/issue_workflow.md | 31 +- .../contributing/merge_request_workflow.md | 3 +- doc/development/contributing/style_guides.md | 12 +- doc/development/dangerbot.md | 14 +- .../add_foreign_key_to_existing_column.md | 3 +- .../database/database_reviewer_guidelines.md | 95 + doc/development/database/index.md | 8 + doc/development/database_debugging.md | 2 +- doc/development/database_review.md | 7 +- doc/development/distributed_tracing.md | 2 +- doc/development/documentation/index.md | 280 +- .../site_architecture/global_nav.md | 22 +- .../documentation/site_architecture/index.md | 8 +- doc/development/documentation/structure.md | 11 +- doc/development/documentation/styleguide.md | 155 +- doc/development/ee_features.md | 88 +- doc/development/elasticsearch.md | 22 +- doc/development/emails.md | 4 +- doc/development/experiment_guide/index.md | 12 +- doc/development/fe_guide/accessibility.md | 2 +- .../fe_guide/development_process.md | 4 +- doc/development/fe_guide/frontend_faq.md | 17 + doc/development/fe_guide/icons.md | 3 +- doc/development/fe_guide/index.md | 4 +- doc/development/fe_guide/tooling.md | 50 +- doc/development/fe_guide/vue.md | 14 +- doc/development/fe_guide/vuex.md | 66 + .../feature_categorization/index.md | 130 + doc/development/feature_flags/controls.md | 13 +- doc/development/feature_flags/development.md | 4 +- doc/development/feature_flags/index.md | 2 +- doc/development/feature_flags/process.md | 23 +- doc/development/foreign_keys.md | 11 + doc/development/geo/framework.md | 172 +- doc/development/gitaly.md | 16 +- doc/development/go_guide/index.md | 24 +- doc/development/gotchas.md | 4 +- doc/development/i18n/externalization.md | 3 +- doc/development/i18n/proofreader.md | 1 + doc/development/import_export.md | 3 +- doc/development/import_project.md | 53 +- .../insert_into_tables_in_batches.md | 6 +- ...asticsearch_for_paid_tiers_on_gitlabcom.md | 28 + doc/development/integrations/jira_connect.md | 2 +- doc/development/integrations/secure.md | 51 +- .../secure_partner_integration.md | 9 + doc/development/licensing.md | 2 +- doc/development/migration_style_guide.md | 44 +- .../multi_version_compatibility.md | 2 +- .../new_fe_guide/development/accessibility.md | 2 +- doc/development/ordering_table_columns.md | 12 +- doc/development/packages.md | 3 +- doc/development/performance.md | 111 +- doc/development/permissions.md | 15 +- doc/development/pipelines.md | 18 +- doc/development/policies.md | 83 + doc/development/profiling.md | 3 +- doc/development/prometheus_metrics.md | 20 +- doc/development/rake_tasks.md | 3 + doc/development/redis.md | 7 + doc/development/scalability.md | 3 +- doc/development/secure_coding_guidelines.md | 75 +- doc/development/sidekiq_style_guide.md | 196 +- doc/development/telemetry/index.md | 27 +- doc/development/telemetry/snowplow.md | 176 +- doc/development/telemetry/usage_ping.md | 657 +- .../testing_guide/best_practices.md | 37 +- .../end_to_end/beginners_guide.md | 28 +- .../end_to_end/environment_selection.md | 54 + .../testing_guide/end_to_end/feature_flags.md | 2 +- .../end_to_end/rspec_metadata_tests.md | 3 +- .../testing_guide/frontend_testing.md | 96 +- doc/development/testing_guide/review_apps.md | 38 +- .../testing_guide/testing_levels.md | 2 +- .../testing_guide/testing_migrations_guide.md | 2 +- doc/development/what_requires_downtime.md | 45 +- doc/gitlab-basics/start-using-git.md | 218 +- doc/install/aws/index.md | 52 +- doc/install/installation.md | 17 +- doc/install/openshift_and_gitlab/index.md | 3 +- doc/install/requirements.md | 18 +- doc/integration/README.md | 2 + doc/integration/elasticsearch.md | 77 +- doc/integration/github.md | 2 +- doc/integration/jira_development_panel.md | 6 +- doc/integration/openid_connect_provider.md | 6 +- doc/integration/recaptcha.md | 6 + doc/integration/saml.md | 171 +- doc/migrate_ci_to_ce/README.md | 2 +- doc/operations/README.md | 5 - doc/operations/feature_flags.md | 328 + doc/operations/index.md | 20 + doc/operations/metrics/alerts.md | 110 + doc/operations/metrics/dashboards/index.md | 249 + .../metrics/dashboards/panel_types.md | 262 + .../dashboards/templating_variables.md | 128 + .../metrics/dashboards/variables.md | 59 + doc/operations/metrics/dashboards/yaml.md | 166 + .../metrics/dashboards/yaml_number_format.md | 177 + doc/operations/metrics/embed.md | 93 + doc/operations/metrics/embed_grafana.md | 65 + .../metrics/img/example-dashboard_v13_1.png | Bin 0 -> 31439 bytes doc/operations/metrics/index.md | 142 + doc/operations/tracing.md | 40 + doc/policy/maintenance.md | 50 +- doc/public_access/public_access.md | 2 +- doc/raketasks/README.md | 3 +- doc/raketasks/backup_restore.md | 90 +- doc/raketasks/cleanup.md | 20 +- doc/security/rack_attack.md | 6 +- doc/security/rate_limits.md | 1 + doc/ssh/README.md | 2 +- doc/subscriptions/index.md | 99 +- doc/tools/email.md | 4 +- doc/topics/autodevops/customize.md | 16 +- doc/topics/autodevops/index.md | 75 +- doc/topics/autodevops/quick_start_guide.md | 20 +- doc/topics/autodevops/requirements.md | 20 +- doc/topics/autodevops/stages.md | 64 +- doc/topics/autodevops/upgrading_chart.md | 72 + doc/topics/autodevops/upgrading_postgresql.md | 15 +- doc/topics/git/index.md | 3 +- doc/topics/git/lfs/index.md | 3 + doc/topics/git/lfs/migrate_to_git_lfs.md | 2 +- doc/topics/git/partial_clone.md | 5 +- doc/topics/gitlab_flow.md | 4 +- doc/topics/web_application_firewall/index.md | 11 +- .../quick_start_guide.md | 14 +- doc/university/README.md | 10 +- doc/university/bookclub/index.md | 2 +- doc/university/training/end-user/README.md | 2 +- .../training/topics/merge_requests.md | 2 +- doc/university/training/user_training.md | 2 +- doc/update/README.md | 66 +- doc/update/restore_after_failure.md | 4 +- doc/update/upgrading_from_ce_to_ee.md | 3 +- .../activating_deactivating_users.md | 2 +- doc/user/admin_area/credentials_inventory.md | 4 +- .../img/credentials_inventory_v12_6.png | Bin 52974 -> 0 bytes .../img/credentials_inventory_v13_2.png | Bin 0 -> 96526 bytes ...oval_settings_compliance_project_v13_1.png | Bin 0 -> 36819 bytes .../img/scope_mr_approval_settings_v13_1.png | Bin 0 -> 69238 bytes doc/user/admin_area/license.md | 29 +- .../admin_area/merge_requests_approvals.md | 19 + .../admin_area/monitoring/health_check.md | 8 +- .../settings/account_and_limit_settings.md | 42 +- .../settings/continuous_integration.md | 32 +- ...otification_for_unknown_sign_ins_v13_2.png | Bin 0 -> 12539 bytes .../img/import_export_rate_limits_v13_2.png | Bin 0 -> 54802 bytes .../settings/import_export_rate_limits.md | 32 + doc/user/admin_area/settings/index.md | 1 + .../settings/rate_limit_on_issues_creation.md | 7 +- .../settings/sign_in_restrictions.md | 27 +- .../visibility_and_access_controls.md | 12 +- doc/user/analytics/value_stream_analytics.md | 6 - .../configuration/index.md | 16 +- .../img/container_scanning_v13_0.png | Bin 33010 -> 0 bytes .../img/container_scanning_v13_2.png | Bin 0 -> 8658 bytes .../container_scanning/index.md | 25 +- .../coverage_fuzzing/index.md | 117 + .../dast/img/dast_all_v13_0.png | Bin 32346 -> 0 bytes .../dast/img/dast_on_demand_v13_2.png | Bin 0 -> 91775 bytes .../dast/img/dast_v13_2.png | Bin 0 -> 6763 bytes doc/user/application_security/dast/index.md | 190 +- .../dependency_scanning/analyzers.md | 7 + .../img/dependency_scanning_v13_0.png | Bin 44921 -> 0 bytes .../img/dependency_scanning_v13_2.png | Bin 0 -> 10289 bytes .../dependency_scanning/index.md | 13 +- .../img/security_configuration_page_v13_1.png | Bin 199472 -> 0 bytes .../img/security_configuration_page_v13_2.png | Bin 0 -> 51691 bytes doc/user/application_security/index.md | 54 +- .../application_security/sast/analyzers.md | 37 +- .../sast/img/sast_v13_0.png | Bin 29907 -> 0 bytes .../sast/img/sast_v13_2.png | Bin 0 -> 7703 bytes doc/user/application_security/sast/index.md | 94 +- .../img/secret-detection-merge-request-ui.png | Bin 100409 -> 0 bytes .../img/secret_detection_v13_2.png | Bin 0 -> 5863 bytes .../secret_detection/index.md | 21 +- ...up_security_dashboard_export_csv_v13_1.png | Bin 536756 -> 105028 bytes .../img/group_security_dashboard_v13_0.png | Bin 69236 -> 0 bytes .../group_security_dashboard_v13_2_noNav.png | Bin 0 -> 53913 bytes ...security_dashboard_with_projects_v13_0.png | Bin 58505 -> 0 bytes ...urity_dashboard_with_projects_v13_2_sm.png | Bin 0 -> 58332 bytes .../img/pipeline_security_dashboard_v12_6.png | Bin 59799 -> 0 bytes .../img/pipeline_security_dashboard_v13_2.png | Bin 0 -> 73101 bytes .../img/project_security_dashboard_v13_2.png | Bin 0 -> 78549 bytes .../standalone_vulnerability_page_v13_1.png | Bin 0 -> 79341 bytes .../img/vulnerability_list_table_v13_1.png | Bin 0 -> 74381 bytes .../security_dashboard/index.md | 141 +- .../threat_monitoring/index.md | 11 +- .../standalone_vulnerability_page_v12_10.png | Bin 26548 -> 0 bytes .../standalone_vulnerability_page_v13_1.png | Bin 0 -> 110282 bytes .../vulnerabilities/index.md | 8 +- doc/user/asciidoc.md | 78 +- doc/user/clusters/applications.md | 333 +- doc/user/clusters/crossplane.md | 360 +- doc/user/clusters/management_project.md | 2 +- .../img/compliance_dashboard_v12_10.png | Bin 98355 -> 0 bytes .../img/compliance_dashboard_v13_2.png | Bin 0 -> 84922 bytes .../compliance/compliance_dashboard/index.md | 3 +- .../img/policies_maintainer_add_v13_0.png | Bin 22079 -> 0 bytes .../img/policies_maintainer_add_v13_2.png | Bin 0 -> 13419 bytes .../img/policies_maintainer_edit_v13_0.png | Bin 40712 -> 0 bytes .../img/policies_maintainer_edit_v13_2.png | Bin 0 -> 20327 bytes .../compliance/license_compliance/index.md | 149 +- doc/user/discussions/index.md | 21 +- doc/user/gitlab_com/index.md | 41 +- .../group/bulk_editing/img/bulk-editing.png | Bin 99844 -> 0 bytes .../bulk_editing/img/bulk-editing_v13_2.png | Bin 0 -> 123971 bytes doc/user/group/bulk_editing/index.md | 8 +- doc/user/group/clusters/index.md | 13 +- .../img/epic_activity_sort_order_v13_2.png | Bin 0 -> 20531 bytes .../group/epics/img/epics_list_view_v12.5.png | Bin 116123 -> 0 bytes .../group/epics/img/new_epic_form_v13.2.png | Bin 0 -> 96690 bytes .../epics/img/new_epic_from_groups_v13.2.png | Bin 0 -> 78168 bytes doc/user/group/epics/index.md | 25 +- doc/user/group/epics/manage_epics.md | 71 +- doc/user/group/index.md | 64 +- doc/user/group/iterations/index.md | 29 +- .../group/roadmap/img/roadmap_view_v13_0.png | Bin 55012 -> 0 bytes .../group/roadmap/img/roadmap_view_v13_2.png | Bin 0 -> 55061 bytes doc/user/group/roadmap/index.md | 14 +- .../group/saml_sso/group_managed_accounts.md | 116 + doc/user/group/saml_sso/index.md | 279 +- doc/user/group/saml_sso/scim_setup.md | 10 +- doc/user/group/subgroups/index.md | 18 +- .../pagerduty_incidents_integration_13_2.png | Bin 0 -> 34698 bytes doc/user/incident_management/index.md | 43 +- doc/user/index.md | 2 +- .../img/terraform_plan_widget_v13_2.png | Bin 0 -> 33916 bytes doc/user/infrastructure/index.md | 213 +- doc/user/markdown.md | 46 +- .../packages/composer_repository/index.md | 4 +- doc/user/packages/conan_repository/index.md | 10 +- .../img/expiration_policy_app_v13_0.png | Bin 61601 -> 0 bytes doc/user/packages/container_registry/index.md | 103 +- .../img/group_packages_list_v13_0.png | Bin 50889 -> 0 bytes .../packages/img/package_detail_v13_0.png | Bin 46047 -> 0 bytes .../img/project_packages_list_v13_0.png | Bin 52752 -> 0 bytes doc/user/packages/index.md | 148 +- doc/user/packages/maven_repository/index.md | 12 +- doc/user/packages/npm_registry/index.md | 9 +- doc/user/packages/nuget_repository/index.md | 2 +- doc/user/packages/pypi_repository/index.md | 2 +- doc/user/permissions.md | 18 +- doc/user/profile/account/delete_account.md | 3 +- .../account/two_factor_authentication.md | 6 +- doc/user/profile/index.md | 2 +- doc/user/profile/notifications.md | 2 +- doc/user/profile/personal_access_tokens.md | 5 + doc/user/profile/preferences.md | 5 +- .../profile/unknown_sign_in_notification.md | 12 +- doc/user/project/bulk_editing.md | 6 +- .../project/clusters/add_remove_clusters.md | 80 +- doc/user/project/clusters/img/rbac.png | Bin 15960 -> 0 bytes doc/user/project/clusters/img/rbac_v13_1.png | Bin 0 -> 10680 bytes doc/user/project/clusters/index.md | 303 +- .../project/clusters/kubernetes_pod_logs.md | 4 +- .../clusters/runbooks/img/helm-install.png | Bin 71705 -> 0 bytes doc/user/project/clusters/runbooks/index.md | 10 +- doc/user/project/clusters/securing.md | 154 + doc/user/project/clusters/serverless/aws.md | 12 +- doc/user/project/clusters/serverless/index.md | 50 +- doc/user/project/code_intelligence.md | 54 + doc/user/project/code_owners.md | 163 +- doc/user/project/deploy_tokens/index.md | 27 +- doc/user/project/description_templates.md | 2 +- doc/user/project/highlighting.md | 10 +- doc/user/project/img/bulk-editing.png | Bin 197667 -> 0 bytes doc/user/project/img/bulk-editing_v13_2.png | Bin 0 -> 132734 bytes .../project/img/code_intelligence_v13_1.png | Bin 0 -> 83690 bytes .../img/sectional_code_owners_v13.2.png | Bin 0 -> 106361 bytes doc/user/project/import/gemnasium.md | 2 +- .../import_issues_from_jira_button_v12_10.png | Bin 8504 -> 8422 bytes .../import_issues_from_jira_form_v12_10.png | Bin 116641 -> 56306 bytes .../import_issues_from_jira_form_v13_2.png | Bin 0 -> 108152 bytes ...mport_issues_from_jira_projects_v12_10.png | Bin 521845 -> 0 bytes doc/user/project/import/jira.md | 57 +- doc/user/project/index.md | 93 +- doc/user/project/insights/index.md | 21 + doc/user/project/integrations/bugzilla.md | 1 - .../integrations/custom_issue_tracker.md | 2 - .../project/integrations/generic_alerts.md | 63 +- doc/user/project/integrations/github.md | 2 +- ...ctions_menu_create_new_dashboard_v13_2.png | Bin 0 -> 11479 bytes .../heatmap_chart_too_much_data_v_13_2.png | Bin 0 -> 7310 bytes .../img/jira/open_jira_issues_list_v13.2.png | Bin 0 -> 90251 bytes .../img/jira_service_page_v12_2.png | Bin 57327 -> 0 bytes .../img/metrics_settings_button_v13_2.png | Bin 0 -> 1901 bytes .../prometheus_manual_configuration_v13_2.png | Bin 0 -> 15651 bytes .../img/prometheus_service_configuration.png | Bin 5022 -> 0 bytes doc/user/project/integrations/jira.md | 95 +- .../integrations/jira_cloud_configuration.md | 2 +- .../integrations/jira_server_configuration.md | 2 +- doc/user/project/integrations/overview.md | 21 +- doc/user/project/integrations/prometheus.md | 1122 +- .../prometheus_library/nginx_ingress.md | 3 +- .../prometheus_library/nginx_ingress_vts.md | 3 +- .../project/integrations/prometheus_units.md | 174 +- doc/user/project/integrations/redmine.md | 1 - .../integrations/services_templates.md | 27 +- doc/user/project/integrations/slack.md | 60 +- doc/user/project/integrations/youtrack.md | 1 - doc/user/project/issue_board.md | 24 - .../project/issues/crosslinking_issues.md | 3 +- doc/user/project/issues/csv_import.md | 3 +- doc/user/project/issues/design_management.md | 71 +- .../design_drag_and_drop_uploads_v13_2.png | Bin 0 -> 1260905 bytes .../img/design_management_upload_v13.2.png | Bin 0 -> 62146 bytes .../issues/img/design_management_v13_2.png | Bin 0 -> 1017975 bytes doc/user/project/issues/index.md | 2 - .../project/issues/issue_data_and_actions.md | 2 +- doc/user/project/issues/managing_issues.md | 5 +- doc/user/project/labels.md | 17 +- doc/user/project/members/index.md | 27 + .../merge_requests/accessibility_testing.md | 8 +- .../browser_performance_testing.md | 166 +- .../project/merge_requests/code_quality.md | 56 +- .../merge_requests/fail_fast_testing.md | 87 + .../project/merge_requests/getting_started.md | 2 +- .../img/browser_performance_testing.png | Bin 52100 -> 95312 bytes .../img/draft_blocked_merge_button_v13_2.png | Bin 0 -> 32770 bytes .../merge_requests/img/file_by_file_v13_2.png | Bin 0 -> 81874 bytes .../img/load_performance_testing.png | Bin 0 -> 60196 bytes ...pipeline_succeeds_only_if_succeeds_msg.png | Bin 5237 -> 0 bytes .../img/wip_blocked_accept_button.png | Bin 4970 -> 0 bytes doc/user/project/merge_requests/index.md | 2 +- .../load_performance_testing.md | 197 + .../merge_requests/merge_request_approvals.md | 64 +- .../merge_request_dependencies.md | 6 +- .../merge_when_pipeline_succeeds.md | 87 +- .../reviewing_and_managing_merge_requests.md | 38 + .../merge_requests/squash_and_merge.md | 54 + .../test_coverage_visualization.md | 3 + .../testing_and_reports_in_merge_requests.md | 8 +- .../work_in_progress_merge_requests.md | 34 +- doc/user/project/milestones/index.md | 52 +- .../project/operations/alert_management.md | 130 +- .../project/operations/dashboard_settings.md | 5 + doc/user/project/operations/feature_flags.md | 260 +- .../img/alert_detail_metrics_v13_2.png | Bin 0 -> 27616 bytes .../img/alert_list_search_v13_1.png | Bin 0 -> 12166 bytes .../operations/img/alert_list_sort_v13_1.png | Bin 0 -> 13919 bytes .../operations/img/alert_list_v13_1.png | Bin 0 -> 38265 bytes .../img/alert_management_1_v13_0.png | Bin 19152 -> 0 bytes .../img/alert_management_1_v13_1.png | Bin 40053 -> 0 bytes doc/user/project/operations/index.md | 16 +- doc/user/project/operations/tracing.md | 39 +- .../index.md | 2 +- .../getting_started/fork_sample_project.md | 55 +- .../new_or_existing_website.md | 48 +- .../getting_started/pages_bundled_template.md | 33 +- .../getting_started/pages_ci_cd_template.md | 49 + .../pages_forked_sample_project.md | 56 + .../getting_started/pages_from_scratch.md | 402 + .../pages_new_project_template.md | 34 + .../pages/getting_started_part_four.md | 401 +- doc/user/project/pages/index.md | 10 +- doc/user/project/pages/introduction.md | 20 +- doc/user/project/protected_tags.md | 2 +- doc/user/project/quick_actions.md | 15 +- .../custom_notifications_dropdown_v12_5.png | Bin 14983 -> 0 bytes ...custom_notifications_new_release_v12_5.png | Bin 20811 -> 0 bytes .../releases/img/edit_release_page_v13_0.png | Bin 285708 -> 0 bytes .../milestone_list_with_releases_v12_5.png | Bin 45454 -> 105666 bytes .../img/milestone_with_releases_v12_5.png | Bin 67529 -> 0 bytes .../project/releases/img/new_tag_12_5.png | Bin 41120 -> 0 bytes .../img/release_edit_button_v12_6.png | Bin 25953 -> 0 bytes .../img/release_milestone_dropdown_v13_0.png | Bin 138986 -> 0 bytes .../img/release_with_milestone_v12_9.png | Bin 27783 -> 57689 bytes .../releases/img/releases_count_v13_2.png | Bin 0 -> 27254 bytes .../project/releases/img/releases_v12_9.png | Bin 51974 -> 0 bytes doc/user/project/releases/img/tags_12_5.png | Bin 31541 -> 0 bytes doc/user/project/releases/index.md | 532 +- doc/user/project/repository/branches/index.md | 50 +- doc/user/project/repository/index.md | 3 +- .../reducing_the_repo_size_using_git.md | 33 +- .../repository/repository_mirroring.md | 8 +- .../repository/x509_signed_commits/index.md | 6 +- .../img/requirement_archive_view_v12_10.png | Bin 112233 -> 0 bytes .../img/requirement_create_view_v12_10.png | Bin 124402 -> 0 bytes .../img/requirement_edit_view_v12_10.png | Bin 118066 -> 0 bytes ...requirements_archived_list_view_v12_10.png | Bin 68623 -> 0 bytes .../requirements_archived_list_view_v13_1.png | Bin 0 -> 47662 bytes .../img/requirements_list_v13_1.png | Bin 0 -> 113403 bytes .../img/requirements_list_view_v12_10.png | Bin 117250 -> 0 bytes doc/user/project/requirements/index.md | 70 +- doc/user/project/service_desk.md | 39 +- doc/user/project/settings/import_export.md | 15 +- doc/user/project/settings/index.md | 21 +- doc/user/project/static_site_editor/index.md | 2 +- doc/user/project/status_page/index.md | 6 +- doc/user/project/web_ide/index.md | 27 +- .../wiki/img/wiki_page_diffs_v13_2.png | Bin 0 -> 53576 bytes .../project/wiki/img/wiki_page_history.png | Bin 12101 -> 13456 bytes doc/user/project/wiki/index.md | 55 +- doc/user/search/advanced_global_search.md | 7 +- doc/user/search/advanced_search_syntax.md | 8 +- doc/user/shortcuts.md | 9 +- doc/user/snippets.md | 8 + doc/user/todos.md | 3 +- haml_lint/linter/documentation_links.rb | 100 + jest.config.base.js | 4 +- lib/api/access_requests.rb | 2 +- lib/api/admin/ci/variables.rb | 2 +- lib/api/admin/instance_clusters.rb | 134 + lib/api/admin/sidekiq.rb | 2 +- lib/api/api.rb | 27 +- lib/api/api_guard.rb | 12 +- lib/api/appearance.rb | 2 +- lib/api/applications.rb | 2 +- lib/api/avatar.rb | 2 +- lib/api/award_emoji.rb | 2 +- lib/api/badges.rb | 2 +- lib/api/boards.rb | 2 +- lib/api/branches.rb | 13 +- lib/api/broadcast_messages.rb | 2 +- lib/api/ci/pipeline_schedules.rb | 217 + lib/api/ci/pipelines.rb | 189 + lib/api/ci/runner.rb | 318 + lib/api/ci/runners.rb | 289 + lib/api/commit_statuses.rb | 4 +- lib/api/commits.rb | 2 +- lib/api/composer_packages.rb | 156 + lib/api/conan_packages.rb | 309 + lib/api/container_registry_event.rb | 2 +- lib/api/deploy_keys.rb | 2 +- lib/api/deploy_tokens.rb | 6 +- lib/api/deployments.rb | 2 +- lib/api/discussions.rb | 18 +- lib/api/entities/approvals.rb | 9 + lib/api/entities/basic_project_details.rb | 3 +- .../conan_package/conan_package_manifest.rb | 11 + .../conan_package/conan_package_snapshot.rb | 11 + .../conan_package/conan_recipe_manifest.rb | 11 + .../conan_package/conan_recipe_snapshot.rb | 11 + .../conan_package/conan_upload_urls.rb | 11 + lib/api/entities/entity_helpers.rb | 19 + lib/api/entities/go_module_version.rb | 10 + lib/api/entities/group.rb | 1 + lib/api/entities/group_detail.rb | 1 + lib/api/entities/issuable_entity.rb | 36 +- lib/api/entities/issue_basic.rb | 8 +- lib/api/entities/merge_request_approvals.rb | 23 + lib/api/entities/merge_request_basic.rb | 21 +- lib/api/entities/npm_package.rb | 11 + lib/api/entities/npm_package_tag.rb | 9 + lib/api/entities/nuget/dependency.rb | 14 + lib/api/entities/nuget/dependency_group.rb | 14 + lib/api/entities/nuget/metadatum.rb | 13 + lib/api/entities/nuget/package_metadata.rb | 13 + .../nuget/package_metadata_catalog_entry.rb | 19 + lib/api/entities/nuget/packages_metadata.rb | 12 + .../entities/nuget/packages_metadata_item.rb | 15 + lib/api/entities/nuget/packages_versions.rb | 11 + lib/api/entities/nuget/search_result.rb | 21 + .../entities/nuget/search_result_version.rb | 13 + lib/api/entities/nuget/search_results.rb | 12 + lib/api/entities/nuget/service_index.rb | 12 + lib/api/entities/package.rb | 42 + lib/api/entities/package/pipeline.rb | 11 + lib/api/entities/package_file.rb | 11 + lib/api/entities/package_version.rb | 14 + lib/api/entities/project.rb | 2 + lib/api/entities/project_statistics.rb | 1 + lib/api/entities/release.rb | 9 +- lib/api/entities/resource_state_event.rb | 18 + lib/api/entities/snippet.rb | 12 + lib/api/entities/user.rb | 2 +- lib/api/environments.rb | 2 +- lib/api/error_tracking.rb | 2 +- lib/api/events.rb | 2 +- lib/api/features.rb | 2 +- lib/api/files.rb | 4 +- lib/api/freeze_periods.rb | 2 +- lib/api/go_proxy.rb | 135 + lib/api/group_boards.rb | 2 +- lib/api/group_clusters.rb | 18 +- lib/api/group_container_repositories.rb | 2 +- lib/api/group_export.rb | 2 +- lib/api/group_import.rb | 2 +- lib/api/group_labels.rb | 2 +- lib/api/group_milestones.rb | 6 +- lib/api/group_packages.rb | 44 + lib/api/group_variables.rb | 6 +- lib/api/groups.rb | 11 +- lib/api/helpers.rb | 33 +- lib/api/helpers/common_helpers.rb | 20 + lib/api/helpers/internal_helpers.rb | 4 +- lib/api/helpers/merge_requests_helpers.rb | 40 +- .../helpers/packages/basic_auth_helpers.rb | 57 + lib/api/helpers/packages/conan/api_helpers.rb | 225 + .../packages/dependency_proxy_helpers.rb | 36 + lib/api/helpers/packages_helpers.rb | 52 + .../packages_manager_clients_helpers.rb | 63 + lib/api/helpers/projects_helpers.rb | 6 +- lib/api/helpers/runner.rb | 7 +- lib/api/helpers/services_helpers.rb | 33 +- lib/api/helpers/snippets_helpers.rb | 26 +- lib/api/helpers/users_helpers.rb | 7 + lib/api/helpers/wikis_helpers.rb | 35 + lib/api/import_bitbucket_server.rb | 44 + lib/api/import_github.rb | 2 +- lib/api/internal/base.rb | 8 +- lib/api/internal/pages.rb | 2 +- lib/api/issues.rb | 41 +- lib/api/job_artifacts.rb | 2 +- lib/api/jobs.rb | 4 +- lib/api/keys.rb | 2 +- lib/api/labels.rb | 2 +- lib/api/lint.rb | 2 +- lib/api/markdown.rb | 2 +- lib/api/maven_packages.rb | 251 + lib/api/members.rb | 12 +- lib/api/merge_request_approvals.rb | 78 + lib/api/merge_request_diffs.rb | 2 +- lib/api/merge_requests.rb | 31 +- lib/api/metrics/dashboard/annotations.rb | 2 +- lib/api/metrics/user_starred_dashboards.rb | 2 +- lib/api/milestone_responses.rb | 2 +- lib/api/namespaces.rb | 2 +- lib/api/notes.rb | 4 +- lib/api/notification_settings.rb | 2 +- lib/api/npm_packages.rb | 173 + lib/api/nuget_packages.rb | 221 + lib/api/package_files.rb | 33 + lib/api/pages.rb | 2 +- lib/api/pages_domains.rb | 2 +- lib/api/pagination_params.rb | 2 +- lib/api/pipeline_schedules.rb | 215 - lib/api/pipelines.rb | 187 - lib/api/project_clusters.rb | 18 +- lib/api/project_container_repositories.rb | 2 +- lib/api/project_events.rb | 2 +- lib/api/project_export.rb | 2 +- lib/api/project_hooks.rb | 2 +- lib/api/project_import.rb | 2 +- lib/api/project_milestones.rb | 6 +- lib/api/project_packages.rb | 71 + lib/api/project_repository_storage_moves.rb | 2 +- lib/api/project_snapshots.rb | 2 +- lib/api/project_snippets.rb | 23 +- lib/api/project_statistics.rb | 2 +- lib/api/project_templates.rb | 2 +- lib/api/projects.rb | 32 +- lib/api/projects_relation_builder.rb | 9 +- lib/api/protected_branches.rb | 2 +- lib/api/protected_tags.rb | 2 +- lib/api/pypi_packages.rb | 148 + lib/api/release/links.rb | 2 +- lib/api/releases.rb | 4 +- lib/api/remote_mirrors.rb | 2 +- lib/api/repositories.rb | 4 +- lib/api/resource_label_events.rb | 2 +- lib/api/resource_milestone_events.rb | 5 +- lib/api/resource_state_events.rb | 50 + lib/api/runner.rb | 297 - lib/api/runners.rb | 287 - lib/api/search.rb | 5 +- lib/api/services.rb | 2 +- lib/api/settings.rb | 11 +- lib/api/sidekiq_metrics.rb | 2 +- lib/api/snippets.rb | 28 +- lib/api/statistics.rb | 2 +- lib/api/submodules.rb | 2 +- lib/api/subscriptions.rb | 2 +- lib/api/suggestions.rb | 4 +- lib/api/system_hooks.rb | 2 +- lib/api/tags.rb | 2 +- lib/api/templates.rb | 2 +- lib/api/terraform/state.rb | 12 +- lib/api/todos.rb | 2 +- lib/api/triggers.rb | 4 +- lib/api/user_counts.rb | 2 +- lib/api/users.rb | 35 +- .../types/comma_separated_to_array.rb | 2 +- .../types/comma_separated_to_integer_array.rb | 15 + lib/api/validations/types/labels_list.rb | 24 - lib/api/validations/types/safe_file.rb | 15 - lib/api/validations/types/workhorse_file.rb | 13 +- lib/api/variables.rb | 32 +- lib/api/version.rb | 2 +- lib/api/wikis.rb | 218 +- lib/assets/images/bot_avatars/alert-bot.png | Bin 0 -> 9362 bytes .../images/bot_avatars/security-bot.png | Bin 0 -> 9561 bytes lib/assets/images/bot_avatars/support-bot.png | Bin 0 -> 9806 bytes lib/backup/database.rb | 10 +- .../filter/abstract_reference_filter.rb | 10 +- lib/banzai/filter/commit_trailers_filter.rb | 5 +- .../filter/external_issue_reference_filter.rb | 6 +- .../filter/inline_cluster_metrics_filter.rb | 40 + .../filter/inline_metrics_redactor_filter.rb | 4 + .../jira_import/adf_to_commonmark_filter.rb | 24 + lib/banzai/filter/project_reference_filter.rb | 6 +- lib/banzai/filter/reference_filter.rb | 87 +- lib/banzai/filter/table_of_contents_filter.rb | 11 +- lib/banzai/filter/user_reference_filter.rb | 6 +- lib/banzai/pipeline/gfm_pipeline.rb | 3 +- .../jira_import/adf_commonmark_pipeline.rb | 15 + lib/container_registry/tag.rb | 7 - lib/declarative_policy/base.rb | 25 +- lib/event_filter.rb | 21 +- lib/feature.rb | 41 +- lib/feature/definition.rb | 137 + lib/feature/shared.rb | 33 + lib/gitlab/action_cable/config.rb | 17 + lib/gitlab/alert_management/alert_params.rb | 6 +- lib/gitlab/alert_management/fingerprint.rb | 16 +- .../alerting/notification_payload_parser.rb | 11 +- .../cycle_analytics/records_fetcher.rb | 4 +- .../analytics/cycle_analytics/stage_events.rb | 2 +- .../stage_events/code_stage_start.rb | 5 + .../stage_events/issue_stage_end.rb | 9 +- .../stage_events/metrics_based_stage_event.rb | 5 + .../stage_events/plan_stage_start.rb | 9 +- .../stage_events/production_stage_end.rb | 5 + .../stage_events/stage_event.rb | 8 + .../cycle_analytics/stage_query_helpers.rb | 23 + lib/gitlab/analytics/unique_visits.rb | 60 + lib/gitlab/application_rate_limiter.rb | 24 +- lib/gitlab/auth/auth_finders.rb | 26 + lib/gitlab/background_migration.rb | 1 + .../backfill_namespace_settings.rb | 18 + .../cleanup_concurrent_schema_change.rb | 8 +- .../background_migration/digest_column.rb | 25 - .../background_migration/encrypt_columns.rb | 104 - .../encrypt_runners_tokens.rb | 32 - .../fix_pages_access_level.rb | 2 +- .../mailers/unconfirm_mailer.rb | 24 + .../unconfirm_notification_email.html.haml | 19 + .../unconfirm_notification_email.text.erb | 14 + .../models/encrypt_columns/namespace.rb | 28 - .../models/encrypt_columns/project.rb | 28 - .../models/encrypt_columns/runner.rb | 28 - .../models/encrypt_columns/settings.rb | 37 - .../models/encrypt_columns/web_hook.rb | 28 - .../populate_project_snippet_statistics.rb | 61 + ...vulnerabilities_from_dismissal_feedback.rb | 13 + .../wrongfully_confirmed_email_unconfirmer.rb | 97 + lib/gitlab/bitbucket_import/importer.rb | 11 +- lib/gitlab/bitbucket_import/metrics.rb | 41 - .../bitbucket_server_import/importer.rb | 11 +- .../cache/ci/project_pipeline_status.rb | 11 +- lib/gitlab/ci/build/releaser.rb | 17 +- lib/gitlab/ci/config.rb | 6 +- lib/gitlab/ci/config/entry/environment.rb | 2 +- lib/gitlab/ci/config/entry/job.rb | 4 +- lib/gitlab/ci/config/entry/processable.rb | 4 + lib/gitlab/ci/config/entry/release.rb | 24 +- lib/gitlab/ci/config/entry/reports.rb | 9 +- lib/gitlab/ci/features.rb | 54 +- lib/gitlab/ci/parsers/terraform/tfplan.rb | 34 +- lib/gitlab/ci/pipeline/chain/build.rb | 6 +- lib/gitlab/ci/pipeline/chain/command.rb | 8 +- .../ci/pipeline/chain/config/content.rb | 1 + .../chain/config/content/parameter.rb | 30 + .../pipeline/chain/config/content/source.rb | 2 + .../ci/pipeline/chain/config/process.rb | 12 + lib/gitlab/ci/pipeline/chain/create.rb | 4 +- lib/gitlab/ci/pipeline/chain/helpers.rb | 9 + lib/gitlab/ci/pipeline/chain/metrics.rb | 35 - .../ci/pipeline/chain/validate/abilities.rb | 2 +- .../ci/pipeline/chain/validate/repository.rb | 2 +- lib/gitlab/ci/pipeline/metrics.rb | 42 + lib/gitlab/ci/pipeline/preloader.rb | 18 +- lib/gitlab/ci/reports/test_report_summary.rb | 49 + lib/gitlab/ci/reports/test_suite.rb | 14 +- lib/gitlab/ci/reports/test_suite_summary.rb | 49 + lib/gitlab/ci/status/composite.rb | 4 +- lib/gitlab/ci/status/factory.rb | 2 +- lib/gitlab/ci/status/stage/play_manual.rb | 2 +- .../templates/Android-Fastlane.gitlab-ci.yml | 2 +- lib/gitlab/ci/templates/Android.gitlab-ci.yml | 65 +- .../ci/templates/Auto-DevOps.gitlab-ci.yml | 3 +- .../ci/templates/Composer.gitlab-ci.yml | 19 + lib/gitlab/ci/templates/Dart.gitlab-ci.yml | 22 + .../Browser-Performance-Testing.gitlab-ci.yml | 20 +- .../ci/templates/Jobs/Build.gitlab-ci.yml | 4 +- .../templates/Jobs/Code-Quality.gitlab-ci.yml | 7 +- .../DAST-Default-Branch-Deploy.gitlab-ci.yml | 3 +- .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 13 +- .../templates/Jobs/Deploy/ECS.gitlab-ci.yml | 42 +- .../Load-Performance-Testing.gitlab-ci.yml | 29 + ...Managed-Cluster-Applications.gitlab-ci.yml | 2 +- .../Security/Coverage-Fuzzing.gitlab-ci.yml | 34 + .../ci/templates/Security/DAST.gitlab-ci.yml | 7 + .../Dependency-Scanning.gitlab-ci.yml | 16 +- .../Security/License-Scanning.gitlab-ci.yml | 4 +- .../ci/templates/Security/SAST.gitlab-ci.yml | 48 +- .../Security/Secret-Detection.gitlab-ci.yml | 28 +- .../Security/Secure-Binaries.gitlab-ci.yml | 11 +- .../Verify/Browser-Performance.gitlab-ci.yml | 12 +- .../Load-Performance-Testing.gitlab-ci.yml | 23 + lib/gitlab/ci/templates/index.md | 3 + lib/gitlab/ci/templates/npm.gitlab-ci.yml | 59 + lib/gitlab/ci/yaml_processor.rb | 65 +- lib/gitlab/class_attributes.rb | 30 + lib/gitlab/code_navigation_path.rb | 12 +- lib/gitlab/conan_token.rb | 64 + lib/gitlab/config/entry/configurable.rb | 4 +- lib/gitlab/config/entry/node.rb | 11 +- lib/gitlab/config/loader/yaml.rb | 3 +- .../external_database_checker.rb | 49 +- lib/gitlab/danger/changelog.rb | 14 +- lib/gitlab/danger/commit_linter.rb | 9 - lib/gitlab/danger/helper.rb | 67 +- lib/gitlab/danger/roulette.rb | 45 +- lib/gitlab/danger/sidekiq_queues.rb | 37 + lib/gitlab/danger/teammate.rb | 80 +- lib/gitlab/database.rb | 81 +- .../database/background_migration_job.rb | 38 + lib/gitlab/database/dynamic_model_helpers.rb | 16 + lib/gitlab/database/migration_helpers.rb | 158 +- .../background_migration_helpers.rb | 157 + .../database/partitioning/monthly_strategy.rb | 96 + .../partitioning/partition_creator.rb | 87 + .../database/partitioning/time_partition.rb | 84 + .../backfill_partitioned_table.rb | 105 + .../foreign_key_helpers.rb | 2 +- .../table_management_helpers.rb | 165 +- lib/gitlab/database/schema_helpers.rb | 25 +- lib/gitlab/diff/file.rb | 8 +- lib/gitlab/diff/file_collection/base.rb | 27 +- .../merge_request_diff_base.rb | 33 +- lib/gitlab/diff/file_collection/wiki_page.rb | 24 + lib/gitlab/diff/position_tracer.rb | 4 + .../diff/position_tracer/base_strategy.rb | 1 + .../diff/position_tracer/image_strategy.rb | 10 +- .../diff/position_tracer/line_strategy.rb | 30 +- lib/gitlab/diff/stats_cache.rb | 54 + .../discussions_diff/file_collection.rb | 4 +- .../discussions_diff/highlight_cache.rb | 10 +- lib/gitlab/email/handler.rb | 5 +- lib/gitlab/email/handler/reply_processing.rb | 15 +- .../email/handler/service_desk_handler.rb | 152 + lib/gitlab/email/service_desk_receiver.rb | 23 + lib/gitlab/emoji.rb | 4 + lib/gitlab/error_tracking.rb | 15 +- lib/gitlab/error_tracking/detailed_error.rb | 1 + lib/gitlab/file_finder.rb | 2 +- lib/gitlab/git/commit.rb | 5 +- lib/gitlab/git/diff.rb | 22 +- lib/gitlab/git/repository.rb | 18 +- lib/gitlab/git/wiki.rb | 4 + lib/gitlab/git_ref_validator.rb | 4 +- lib/gitlab/gitaly_client.rb | 32 +- lib/gitlab/gitaly_client/blob_service.rb | 52 +- lib/gitlab/gitaly_client/call.rb | 72 + lib/gitlab/gitaly_client/cleanup_service.rb | 5 +- lib/gitlab/gitaly_client/commit_service.rb | 68 +- lib/gitlab/gitaly_client/conflicts_service.rb | 1 - lib/gitlab/gitaly_client/operation_service.rb | 4 + lib/gitlab/gitaly_client/ref_service.rb | 31 +- lib/gitlab/gitaly_client/remote_service.rb | 6 +- .../gitaly_client/repository_service.rb | 8 +- lib/gitlab/gl_repository.rb | 6 +- lib/gitlab/gl_repository/identifier.rb | 108 +- lib/gitlab/global_id.rb | 17 + .../graphql/authorize/authorize_resource.rb | 3 +- lib/gitlab/graphql/lazy.rb | 19 + lib/gitlab/graphql/loaders/issuable_loader.rb | 82 + lib/gitlab/graphql/mount_mutation.rb | 8 + .../query_analyzers/logger_analyzer.rb | 3 +- lib/gitlab/health_checks/probes/collection.rb | 6 + lib/gitlab/import/metrics.rb | 91 +- .../json/streaming_serializer.rb | 14 +- .../import_export/project/import_export.yml | 10 +- .../import_export/project/relation_factory.rb | 11 +- .../import_export/snippet_repo_restorer.rb | 2 + .../pager_duty/incident_issue_description.rb | 64 + .../elasticsearch_transport.rb | 16 +- lib/gitlab/instrumentation/redis.rb | 4 +- lib/gitlab/instrumentation/redis_base.rb | 37 +- .../redis_cluster_validator.rb | 106 + .../instrumentation/redis_interceptor.rb | 23 +- lib/gitlab/issuable_metadata.rb | 14 +- lib/gitlab/jira_import/issue_serializer.rb | 4 +- lib/gitlab/jira_import/user_mapper.rb | 53 - lib/gitlab/json.rb | 199 +- lib/gitlab/json_logger.rb | 2 +- lib/gitlab/kubernetes/helm.rb | 2 +- lib/gitlab/kubernetes/node.rb | 78 + lib/gitlab/lograge/custom_options.rb | 12 - lib/gitlab/marginalia/comment.rb | 4 +- lib/gitlab/markdown_cache/redis/extension.rb | 24 +- lib/gitlab/markdown_cache/redis/store.rb | 20 +- lib/gitlab/metrics/background_transaction.rb | 2 +- lib/gitlab/metrics/dashboard/errors.rb | 6 +- lib/gitlab/metrics/dashboard/finder.rb | 45 +- .../metrics/dashboard/service_selector.rb | 4 +- .../metrics/dashboard/stages/base_stage.rb | 8 + .../stages/cluster_endpoint_inserter.rb | 83 + ...nserter.rb => metric_endpoint_inserter.rb} | 10 +- lib/gitlab/metrics/dashboard/stages/sorter.rb | 4 +- .../metrics/dashboard/stages/url_validator.rb | 43 +- .../stages/variable_endpoint_inserter.rb | 34 + lib/gitlab/metrics/dashboard/url.rb | 16 + lib/gitlab/metrics/methods.rb | 2 +- lib/gitlab/metrics/sidekiq_middleware.rb | 4 +- .../metrics/subscribers/active_record.rb | 22 +- lib/gitlab/metrics/transaction.rb | 8 +- lib/gitlab/metrics/web_transaction.rb | 11 +- lib/gitlab/middleware/go.rb | 4 +- lib/gitlab/middleware/multipart.rb | 19 +- lib/gitlab/project_template.rb | 1 + lib/gitlab/prometheus_client.rb | 20 +- lib/gitlab/regex.rb | 12 + lib/gitlab/runtime.rb | 26 +- lib/gitlab/search_results.rb | 3 + lib/gitlab/seeder.rb | 3 +- lib/gitlab/service_desk.rb | 16 + lib/gitlab/service_desk_email.rb | 22 + lib/gitlab/set_cache.rb | 5 +- .../sidekiq_logging/deduplication_logger.rb | 7 +- .../strategies/until_executing.rb | 3 +- lib/gitlab/static_site_editor/config.rb | 8 +- lib/gitlab/suggestions/file_suggestion.rb | 53 +- lib/gitlab/suggestions/suggestion_set.rb | 22 +- lib/gitlab/template/service_desk_template.rb | 21 + lib/gitlab/tracking/incident_management.rb | 3 + lib/gitlab/tree_summary.rb | 2 +- lib/gitlab/updated_notes_paginator.rb | 74 + lib/gitlab/url_builder.rb | 14 +- lib/gitlab/usage_data.rb | 361 +- lib/gitlab/usage_data/topology.rb | 258 + lib/gitlab/usage_data_concerns/topology.rb | 137 - .../track_unique_actions.rb | 86 + lib/gitlab/user_access.rb | 6 - lib/gitlab/utils.rb | 12 +- lib/gitlab/utils/markdown.rb | 19 + lib/gitlab/utils/usage_data.rb | 14 +- lib/gitlab/workhorse.rb | 4 +- lib/gitlab_danger.rb | 1 + lib/google_api/auth.rb | 2 +- lib/kramdown/converter/commonmark.rb | 109 + .../parser/atlassian_document_format.rb | 381 + lib/learn_gitlab.rb | 35 + lib/object_storage/direct_upload.rb | 25 +- lib/pager_duty/webhook_payload_parser.rb | 66 + lib/peek/views/elasticsearch.rb | 2 +- lib/product_analytics/collector_app.rb | 40 + lib/product_analytics/event_params.rb | 51 + lib/quality/seeders/issues.rb | 1 + lib/quality/test_level.rb | 8 + lib/rspec_flaky/flaky_examples_collection.rb | 2 +- lib/sentry/client/issue.rb | 3 +- lib/support/logrotate/gitlab | 2 + .../imap_authentication_check.rb | 11 +- lib/tasks/cache.rake | 4 +- lib/tasks/gitlab/container_registry.rake | 16 +- lib/tasks/gitlab/db.rake | 37 + lib/tasks/gitlab/external_diffs.rake | 35 + lib/tasks/gitlab/packages/migrate.rake | 23 + locale/am_ET/gitlab.po | 1492 +- locale/ar_SA/gitlab.po | 1538 +- locale/as_IN/gitlab.po | 27977 +++++++++++++++ locale/az_AZ/gitlab.po | 1490 +- locale/bg/gitlab.po | 1490 +- locale/bn_BD/gitlab.po | 1490 +- locale/bn_IN/gitlab.po | 1490 +- locale/bs_BA/gitlab.po | 1626 +- locale/ca_ES/gitlab.po | 1576 +- locale/cs_CZ/gitlab.po | 1514 +- locale/cy_GB/gitlab.po | 1626 +- locale/da_DK/gitlab.po | 1490 +- locale/de/gitlab.po | 1996 +- locale/el_GR/gitlab.po | 1490 +- locale/eo/gitlab.po | 1490 +- locale/es/gitlab.po | 2746 +- locale/et_EE/gitlab.po | 1490 +- locale/fa_IR/gitlab.po | 1490 +- locale/fi_FI/gitlab.po | 1490 +- locale/fil_PH/gitlab.po | 1490 +- locale/fr/gitlab.po | 1498 +- locale/gitlab.pot | 2323 +- locale/gl_ES/gitlab.po | 1490 +- locale/he_IL/gitlab.po | 1514 +- locale/hi_IN/gitlab.po | 1490 +- locale/hr_HR/gitlab.po | 1508 +- locale/hu_HU/gitlab.po | 1490 +- locale/id_ID/gitlab.po | 1478 +- locale/ig_NG/gitlab.po | 27832 +++++++++++++++ locale/is_IS/gitlab.po | 1490 +- locale/it/gitlab.po | 1490 +- locale/ja/gitlab.po | 1598 +- locale/ka_GE/gitlab.po | 1490 +- locale/ko/gitlab.po | 1482 +- locale/ku_TR/gitlab.po | 1490 +- locale/lt_LT/gitlab.po | 28267 ++++++++++++++++ locale/mn_MN/gitlab.po | 1490 +- locale/nb_NO/gitlab.po | 1490 +- locale/nl_NL/gitlab.po | 1490 +- locale/pa_IN/gitlab.po | 1490 +- locale/pl_PL/gitlab.po | 1514 +- locale/pt_BR/gitlab.po | 1520 +- locale/pt_PT/gitlab.po | 1500 +- locale/ro_RO/gitlab.po | 1512 +- locale/ru/gitlab.po | 1774 +- locale/si_LK/gitlab.po | 27977 +++++++++++++++ locale/sk_SK/gitlab.po | 1514 +- locale/sl_SI/gitlab.po | 1514 +- locale/sq_AL/gitlab.po | 1490 +- locale/sr_CS/gitlab.po | 1502 +- locale/sr_SP/gitlab.po | 1502 +- locale/sv_SE/gitlab.po | 1490 +- locale/sw_KE/gitlab.po | 1490 +- locale/tr_TR/gitlab.po | 1522 +- locale/uk/gitlab.po | 1962 +- locale/ur_PK/gitlab.po | 1490 +- locale/uz_UZ/gitlab.po | 1490 +- locale/vi_VN/gitlab.po | 1478 +- locale/zh_CN/gitlab.po | 1600 +- locale/zh_HK/gitlab.po | 2380 +- locale/zh_TW/gitlab.po | 1482 +- package.json | 35 +- public/robots.txt | 87 +- qa/Dockerfile | 11 +- qa/Gemfile | 1 + qa/Gemfile.lock | 2 + qa/bin/rubymine | 9 + qa/qa.rb | 34 +- .../monitored_auto_devops/.gitlab-ci.yml | 338 - qa/qa/flow/login.rb | 4 +- qa/qa/git/repository.rb | 4 + qa/qa/page/component/ci_badge_link.rb | 2 +- qa/qa/page/component/dropdown_filter.rb | 2 +- qa/qa/page/component/issuable/sidebar.rb | 129 + qa/qa/page/component/issue_board/show.rb | 5 - qa/qa/page/component/new_snippet.rb | 80 + qa/qa/page/component/project_selector.rb | 28 + qa/qa/page/component/snippet.rb | 180 + .../web_ide/modal/create_new_file.rb | 2 +- qa/qa/page/dashboard/snippet/new.rb | 65 +- qa/qa/page/dashboard/snippet/show.rb | 97 +- qa/qa/page/group/menu.rb | 25 +- qa/qa/page/group/milestone/index.rb | 19 + qa/qa/page/group/milestone/new.rb | 29 + qa/qa/page/group/sub_menus/members.rb | 14 +- qa/qa/page/issuable/sidebar.rb | 27 - qa/qa/page/main/menu.rb | 9 +- qa/qa/page/main/two_factor_auth.rb | 22 + qa/qa/page/merge_request/show.rb | 18 +- qa/qa/page/milestone/index.rb | 21 + qa/qa/page/milestone/new.rb | 22 + qa/qa/page/milestone/show.rb | 33 + qa/qa/page/modal/delete_wiki.rb | 17 + qa/qa/page/profile/two_factor_auth.rb | 26 + qa/qa/page/project/issue/index.rb | 20 + qa/qa/page/project/issue/jira_import.rb | 25 + qa/qa/page/project/issue/show.rb | 81 +- qa/qa/page/project/job/show.rb | 3 + qa/qa/page/project/menu.rb | 5 +- qa/qa/page/project/milestone/index.rb | 20 +- qa/qa/page/project/milestone/new.rb | 29 +- .../project/operations/kubernetes/show.rb | 33 +- qa/qa/page/project/operations/metrics/show.rb | 4 +- qa/qa/page/project/pipeline/index.rb | 4 +- qa/qa/page/project/pipeline/show.rb | 5 + qa/qa/page/project/settings/incidents.rb | 6 +- qa/qa/page/project/settings/operations.rb | 2 +- qa/qa/page/project/settings/protected_tags.rb | 46 + qa/qa/page/project/settings/repository.rb | 10 + qa/qa/page/project/settings/runners.rb | 2 +- qa/qa/page/project/settings/services/jira.rb | 18 +- qa/qa/page/project/show.rb | 5 +- qa/qa/page/project/snippet/new.rb | 3 +- qa/qa/page/project/snippet/show.rb | 17 + qa/qa/page/project/sub_menus/issues.rb | 8 + qa/qa/page/project/sub_menus/repository.rb | 15 +- qa/qa/page/project/tag/index.rb | 19 + qa/qa/page/project/tag/new.rb | 41 + qa/qa/page/project/tag/show.rb | 29 + qa/qa/page/project/web_ide/edit.rb | 17 + qa/qa/page/project/wiki/edit.rb | 13 +- qa/qa/page/project/wiki/list.rb | 23 + qa/qa/page/project/wiki/show.rb | 19 +- qa/qa/page/project/wiki/sidebar.rb | 42 + qa/qa/resource/api_fabricator.rb | 14 +- qa/qa/resource/group.rb | 13 + qa/qa/resource/group_milestone.rb | 57 + qa/qa/resource/issue.rb | 1 + qa/qa/resource/members.rb | 4 + qa/qa/resource/project.rb | 6 +- qa/qa/resource/project_milestone.rb | 20 +- qa/qa/resource/repository/commit.rb | 24 + qa/qa/resource/sandbox.rb | 1 + qa/qa/resource/user.rb | 5 +- qa/qa/resource/wiki/project_page.rb | 2 +- qa/qa/runtime/env.rb | 42 +- qa/qa/service/praefect_manager.rb | 176 +- qa/qa/service/shellout.rb | 7 + .../features/api/1_manage/rate_limits_spec.rb | 2 +- .../specs/features/api/1_manage/users_spec.rb | 9 +- qa/qa/specs/features/api/2_plan/.gitkeep | 0 .../closes_issue_via_pushing_a_commit_spec.rb | 2 +- .../changing_repository_storage_spec.rb | 10 +- .../api/3_create/repository/files_spec.rb | 2 +- .../praefect_replication_queue_spec.rb | 64 + .../project_archive_compare_spec.rb | 21 +- qa/qa/specs/features/api/4_verify/.gitkeep | 0 .../api/4_verify/pipeline_deletion_spec.rb | 63 + .../api/{1_manage => 8_monitor}/.gitkeep | 0 .../create_group_with_mattermost_team_spec.rb | 2 +- .../1_manage/group/transfer_project_spec.rb | 26 +- .../browser_ui/1_manage/login/log_in_spec.rb | 2 +- .../1_manage/login/log_in_with_2fa_spec.rb | 110 + .../login/log_into_gitlab_via_ldap_spec.rb | 2 +- .../log_into_mattermost_via_gitlab_spec.rb | 2 +- .../login_via_instance_wide_saml_sso_spec.rb | 2 +- .../1_manage/login/register_spec.rb | 6 +- .../project/add_project_member_spec.rb | 2 +- .../1_manage/project/create_project_spec.rb | 2 +- .../1_manage/project/dashboard_images_spec.rb | 2 +- .../project/import_github_repo_spec.rb | 17 +- .../1_manage/project/protected_tags_spec.rb | 109 + .../project/view_project_activity_spec.rb | 2 +- .../email/trigger_email_notification_spec.rb | 2 +- .../issue/check_mentions_for_xss_spec.rb | 39 +- .../collapse_comments_in_discussions_spec.rb | 2 +- .../2_plan/issue/comment_issue_spec.rb | 2 +- .../2_plan/issue/create_issue_spec.rb | 2 +- .../2_plan/issue/export_as_csv_spec.rb | 2 +- .../issue/filter_issue_comments_spec.rb | 2 +- .../2_plan/issue/issue_suggestions_spec.rb | 2 +- .../2_plan/issue/jira_issue_import_spec.rb | 77 + .../browser_ui/2_plan/issue/mentions_spec.rb | 2 +- .../2_plan/issue_boards/focus_mode_spec.rb | 2 +- .../2_plan/milestone/assign_milestone_spec.rb | 85 + .../milestone/create_group_milestone_spec.rb | 41 + .../create_project_milestone_spec.rb | 41 + .../3_create/gitaly/high_availability_spec.rb | 14 +- .../jira/jira_basic_integration_spec.rb | 23 +- .../create_merge_request_spec.rb | 45 +- .../merge_merge_request_from_fork_spec.rb | 15 +- .../rebase_merge_request_spec.rb | 2 +- .../squash_merge_request_spec.rb | 24 +- .../view_merge_request_diff_patch_spec.rb | 2 +- .../repository/add_file_template_spec.rb | 20 +- .../add_list_delete_branches_spec.rb | 2 +- .../3_create/repository/add_ssh_key_spec.rb | 30 - .../3_create/repository/clone_spec.rb | 16 +- .../create_edit_delete_file_via_web_spec.rb | 2 +- .../move_project_create_fork_spec.rb | 2 +- .../repository/protocol_v2_push_http_spec.rb | 2 +- .../repository/protocol_v2_push_ssh_spec.rb | 2 +- .../push_http_private_token_spec.rb | 2 +- .../push_mirroring_over_http_spec.rb | 2 +- .../push_over_http_file_size_spec.rb | 2 +- .../repository/push_over_http_spec.rb | 2 +- .../repository/push_protected_branch_spec.rb | 2 +- .../repository/ssh_key_support_spec.rb | 35 + .../3_create/repository/use_ssh_key_spec.rb | 2 +- .../user_views_commit_diff_patch_spec.rb | 2 +- .../snippet/add_comment_to_snippet_spec.rb | 81 + .../clone_push_pull_personal_snippet_spec.rb | 2 +- .../clone_push_pull_project_snippet_spec.rb | 2 +- .../snippet/create_personal_snippet_spec.rb | 15 +- .../snippet/create_project_snippet_spec.rb | 2 +- .../web_ide/add_file_template_spec.rb | 7 +- .../create_first_file_in_web_ide_spec.rb | 2 +- .../web_ide/review_merge_request_spec.rb | 2 +- .../project_based_content_creation_spec.rb | 2 +- ...project_based_content_manipulation_spec.rb | 2 +- .../3_create/wiki/project_based_list_spec.rb | 73 + .../wiki/project_based_page_deletion_spec.rb | 26 + .../add_remove_ci_variable_spec.rb | 2 +- .../create_and_process_pipeline_spec.rb | 2 +- .../4_verify/runner/register_runner_spec.rb | 2 +- .../testing/view_code_coverage_spec.rb | 2 +- .../deploy_key/add_deploy_key_spec.rb | 2 +- .../deploy_key/clone_using_deploy_key_spec.rb | 5 +- .../deploy_token/add_deploy_token_spec.rb | 2 +- ...d_pipelines_dependent_relationship_spec.rb | 14 +- ...pipelines_independent_relationship_spec.rb | 14 +- .../create_project_with_auto_devops_spec.rb | 2 +- .../kubernetes/kubernetes_integration_spec.rb | 4 +- .../all_monitor_core_features_spec.rb | 15 +- .../non_devops/performance_bar_spec.rb | 4 +- qa/qa/specs/helpers/quarantine.rb | 34 +- qa/qa/support/dates.rb | 5 + qa/qa/support/otp.rb | 25 + qa/spec/runtime/api/request_spec.rb | 6 + qa/spec/runtime/env_spec.rb | 42 +- qa/spec/specs/helpers/quarantine_spec.rb | 123 +- rubocop/cop/api/grape_api_instance.rb | 42 + rubocop/cop/api/grape_array_missing_coerce.rb | 83 + rubocop/cop/graphql/authorize_types.rb | 21 +- rubocop/cop/migration/drop_table.rb | 5 + .../with_lock_retries_disallowed_method.rb | 1 + scripts/frontend/merge_coverage_frontend.js | 2 +- scripts/frontend/prettier.js | 2 +- scripts/gitaly_test.rb | 23 +- scripts/lint-doc.sh | 5 +- scripts/merge-simplecov | 1 + scripts/prepare_build.sh | 4 +- scripts/review_apps/automated_cleanup.rb | 16 +- scripts/review_apps/base-config.yaml | 14 +- scripts/review_apps/gcp_cleanup.sh | 2 +- scripts/review_apps/review-apps.sh | 74 +- scripts/rspec_helpers.sh | 4 +- scripts/trigger-build | 1 + spec/bin/feature_flag_spec.rb | 191 + spec/config/object_store_settings_spec.rb | 102 +- spec/config/settings_spec.rb | 22 + .../application_settings_controller_spec.rb | 7 + .../admin/clusters_controller_spec.rb | 33 + .../controllers/admin/jobs_controller_spec.rb | 32 + .../admin/services_controller_spec.rb | 22 +- .../application_controller_spec.rb | 22 + .../autocomplete_controller_spec.rb | 50 + .../config_spec.rb | 53 + .../controller_with_feature_category_spec.rb | 66 + .../concerns/metrics_dashboard_spec.rb | 33 +- .../concerns/renders_commits_spec.rb | 2 +- .../concerns/sorting_preference_spec.rb | 4 +- .../dashboard/projects_controller_spec.rb | 42 +- .../dashboard/snippets_controller_spec.rb | 4 +- .../dashboard/todos_controller_spec.rb | 9 + spec/controllers/dashboard_controller_spec.rb | 8 +- spec/controllers/every_controller_spec.rb | 82 + .../groups/clusters_controller_spec.rb | 40 + .../groups/imports_controller_spec.rb | 2 +- .../groups/runners_controller_spec.rb | 127 + .../groups/settings/ci_cd_controller_spec.rb | 15 +- spec/controllers/groups_controller_spec.rb | 36 +- .../import/bitbucket_controller_spec.rb | 48 +- .../bitbucket_server_controller_spec.rb | 81 +- .../import/fogbugz_controller_spec.rb | 23 +- .../import/gitlab_controller_spec.rb | 23 +- .../cohorts_controller_spec.rb | 7 + .../dev_ops_score_controller_spec.rb | 13 + spec/controllers/invites_controller_spec.rb | 39 +- .../oauth/applications_controller_spec.rb | 16 + .../profiles/keys_controller_spec.rb | 65 - .../projects/clusters_controller_spec.rb | 42 + .../cycle_analytics_controller_spec.rb | 7 + .../projects/deployments_controller_spec.rb | 46 + .../projects/discussions_controller_spec.rb | 3 +- .../prometheus_api_controller_spec.rb | 208 +- .../projects/environments_controller_spec.rb | 45 +- .../projects/graphs_controller_spec.rb | 9 + .../projects/imports_controller_spec.rb | 189 +- .../projects/issues_controller_spec.rb | 39 +- .../projects/jobs_controller_spec.rb | 103 - .../projects/logs_controller_spec.rb | 28 + .../merge_requests/diffs_controller_spec.rb | 12 + .../merge_requests/drafts_controller_spec.rb | 9 +- .../merge_requests_controller_spec.rb | 4 +- .../projects/notes_controller_spec.rb | 84 +- .../{ => pipelines}/stages_controller_spec.rb | 4 +- .../pipelines/tests_controller_spec.rb | 112 + .../projects/pipelines_controller_spec.rb | 95 +- .../project_members_controller_spec.rb | 23 + .../projects/refs_controller_spec.rb | 9 +- .../projects/releases_controller_spec.rb | 11 + .../projects/service_desk_controller_spec.rb | 111 + .../projects/services_controller_spec.rb | 19 +- .../settings/operations_controller_spec.rb | 100 +- .../snippets/blobs_controller_spec.rb | 85 + .../projects/snippets_controller_spec.rb | 28 +- .../projects/tree_controller_spec.rb | 28 - .../projects/wikis_controller_spec.rb | 2 +- spec/controllers/projects_controller_spec.rb | 91 +- .../experience_levels_controller_spec.rb | 47 +- spec/controllers/search_controller_spec.rb | 5 + .../snippets/blobs_controller_spec.rb | 61 + spec/controllers/snippets_controller_spec.rb | 6 + spec/controllers/users_controller_spec.rb | 65 + spec/db/schema_spec.rb | 92 +- spec/factories/alert_management/alerts.rb | 28 +- spec/factories/approvals.rb | 10 + spec/factories/background_migration_jobs.rb | 13 + spec/factories/ci/builds.rb | 12 + spec/factories/ci/pipelines.rb | 16 + spec/factories/clusters/applications/helm.rb | 8 + spec/factories/clusters/clusters.rb | 1 + spec/factories/custom_emoji.rb | 9 + spec/factories/deployments.rb | 2 +- spec/factories/events.rb | 2 +- spec/factories/go_module_commits.rb | 82 + spec/factories/go_module_versions.rb | 77 + spec/factories/go_modules.rb | 13 + spec/factories/groups.rb | 8 + spec/factories/namespaces.rb | 30 + spec/factories/notes.rb | 5 + spec/factories/packages.rb | 355 + spec/factories/product_analytics_event.rb | 24 + .../project_repository_storage_moves.rb | 8 + spec/factories/project_statistics.rb | 1 + spec/factories/projects.rb | 26 + spec/factories/service_desk_settings.rb | 7 + spec/factories/services.rb | 11 +- spec/factories/snippet_statistics.rb | 25 + spec/factories/terraform/state.rb | 6 + spec/factories/usage_data.rb | 16 +- .../admin_sees_project_statistics_spec.rb | 2 +- spec/features/admin/admin_users_spec.rb | 8 +- .../admin_visits_service_templates_spec.rb | 30 + .../clusters/cluster_health_dashboard_spec.rb | 93 + ...installing_applications_shared_examples.rb | 57 +- spec/features/dashboard/projects_spec.rb | 8 + .../discussion_comments/commit_spec.rb | 2 +- .../groups/container_registry_spec.rb | 2 +- spec/features/groups/empty_states_spec.rb | 2 + .../groups/import_export/import_file_spec.rb | 2 +- .../groups/members/manage_members_spec.rb | 9 +- spec/features/groups/navbar_spec.rb | 1 + spec/features/groups_spec.rb | 29 + spec/features/invites_spec.rb | 260 +- .../close_reopen_report_toggle_spec.rb | 22 +- spec/features/issuables/issuable_list_spec.rb | 10 +- spec/features/issuables/sorting_list_spec.rb | 4 + .../issues/bulk_assignment_labels_spec.rb | 45 +- .../filtered_search/filter_issues_spec.rb | 8 +- .../issues/filtered_search/search_bar_spec.rb | 2 +- spec/features/issues/gfm_autocomplete_spec.rb | 880 +- spec/features/issues/issue_detail_spec.rb | 2 +- spec/features/issues/issue_sidebar_spec.rb | 2 +- spec/features/issues/move_spec.rb | 39 + spec/features/issues/service_desk_spec.rb | 163 + spec/features/issues/update_issues_spec.rb | 1 + ...r_creates_branch_and_merge_request_spec.rb | 8 +- .../issues/user_filters_issues_spec.rb | 2 + .../issues/user_interacts_with_awards_spec.rb | 4 +- .../issues/user_sees_breadcrumb_links_spec.rb | 2 + .../issues/user_sees_empty_state_spec.rb | 4 + .../features/issues/user_sorts_issues_spec.rb | 2 + .../features/issues/user_views_issues_spec.rb | 29 + spec/features/labels_hierarchy_spec.rb | 2 +- spec/features/markdown/metrics_spec.rb | 38 +- .../maintainer_edits_fork_spec.rb | 4 +- .../merge_request/user_approves_spec.rb | 41 + .../user_closes_merge_request_spec.rb | 2 +- .../user_comments_on_diff_spec.rb | 53 +- .../user_creates_image_diff_notes_spec.rb | 2 +- .../user_edits_merge_request_spec.rb | 69 + .../user_posts_diff_notes_spec.rb | 4 +- .../user_reopens_merge_request_spec.rb | 2 +- .../merge_request/user_sees_diff_spec.rb | 2 +- .../user_sees_merge_widget_spec.rb | 10 +- .../merge_request/user_sees_pipelines_spec.rb | 113 +- .../user_suggests_changes_on_diff_spec.rb | 5 +- .../user_toggles_whitespace_changes_spec.rb | 2 +- .../user_views_diffs_file_by_file_spec.rb | 33 + .../participants_autocomplete_spec.rb | 23 + .../profiles/user_edit_preferences_spec.rb | 13 + .../profiles/user_edit_profile_spec.rb | 5 +- ...er_visits_profile_preferences_page_spec.rb | 2 +- .../user_sees_design_activity_spec.rb | 78 + .../features/projects/blobs/blob_show_spec.rb | 2 +- spec/features/projects/blobs/edit_spec.rb | 16 +- ...er_creates_new_blob_in_new_project_spec.rb | 3 +- ...ser_follows_pipeline_suggest_nudge_spec.rb | 2 + spec/features/projects/clusters/gcp_spec.rb | 26 +- spec/features/projects/clusters_spec.rb | 162 + spec/features/projects/commit/builds_spec.rb | 27 +- .../commits/user_browses_commits_spec.rb | 27 + .../user_views_confluence_page_spec.rb | 28 + .../projects/container_registry_spec.rb | 2 +- .../environments/environment_metrics_spec.rb | 11 +- .../projects/environments_pod_logs_spec.rb | 5 +- .../files/edit_file_soft_wrap_spec.rb | 22 +- .../projects/files/gitignore_dropdown_spec.rb | 2 +- .../projects/files/user_browses_files_spec.rb | 20 + .../projects/files/user_creates_files_spec.rb | 16 +- .../projects/files/user_edits_files_spec.rb | 20 +- .../import_export/test_project_export.tar.gz | Bin 3360 -> 3176 bytes .../user_paginates_designs_spec.rb | 68 +- .../user_permissions_upload_spec.rb | 29 +- .../user_uploads_designs_spec.rb | 66 +- .../user_views_design_spec.rb | 45 +- .../user_views_designs_spec.rb | 81 +- .../user_views_designs_with_svg_xss_spec.rb | 1 + spec/features/projects/jobs_spec.rb | 4 +- .../labels/issues_sorted_by_priority_spec.rb | 4 +- spec/features/projects/members/list_spec.rb | 9 +- .../members/member_leaves_project_spec.rb | 2 +- spec/features/projects/navbar_spec.rb | 2 - .../projects/pipeline_schedules_spec.rb | 2 - .../projects/pipelines/pipeline_spec.rb | 98 +- .../projects/pipelines/pipelines_spec.rb | 17 +- .../services/disable_triggers_spec.rb | 6 +- .../services/user_activates_alerts_spec.rb | 55 +- .../user_activates_issue_tracker_spec.rb | 6 +- .../services/user_activates_jira_spec.rb | 30 +- ...activates_mattermost_slash_command_spec.rb | 4 +- ...user_activates_slack_slash_command_spec.rb | 4 +- .../settings/operations_settings_spec.rb | 5 +- .../settings/registry_settings_spec.rb | 10 +- .../settings/service_desk_setting_spec.rb | 33 + ...er_manages_merge_requests_settings_spec.rb | 68 + .../user_manages_project_members_spec.rb | 9 +- .../show/user_sees_git_instructions_spec.rb | 22 + .../user_sees_setup_shortcut_buttons_spec.rb | 17 + spec/features/projects/tree/tree_show_spec.rb | 26 + .../projects/user_sees_sidebar_spec.rb | 4 + .../projects/user_sees_user_popover_spec.rb | 2 +- .../wiki/user_views_wiki_empty_spec.rb | 42 +- .../wiki/user_views_wiki_page_spec.rb | 84 +- spec/features/promotion_spec.rb | 53 + spec/features/runners_spec.rb | 120 +- .../project/snippet/public_access_spec.rb | 9 +- spec/features/signed_commits_spec.rb | 7 + spec/features/task_lists_spec.rb | 2 +- spec/features/triggers_spec.rb | 2 +- spec/features/users/login_spec.rb | 6 +- spec/features/users/signup_spec.rb | 9 +- .../alert_management/alerts_finder_spec.rb | 76 +- spec/finders/branches_finder_spec.rb | 271 +- spec/finders/ci/pipelines_finder_spec.rb | 4 +- ...pipelines_for_merge_request_finder_spec.rb | 90 +- spec/finders/ci/runner_jobs_finder_spec.rb | 4 +- spec/finders/ci/variables_finder_spec.rb | 44 + spec/finders/events_finder_spec.rb | 22 +- spec/finders/group_projects_finder_spec.rb | 44 + spec/finders/merge_requests_finder_spec.rb | 39 + spec/finders/notes_finder_spec.rb | 6 +- .../conan/package_file_finder_spec.rb | 64 + .../packages/conan/package_finder_spec.rb | 22 + .../finders/packages/go/module_finder_spec.rb | 71 + .../packages/go/version_finder_spec.rb | 160 + .../packages/group_packages_finder_spec.rb | 156 + .../packages/maven/package_finder_spec.rb | 57 + .../packages/npm/package_finder_spec.rb | 34 + .../packages/nuget/package_finder_spec.rb | 75 + .../packages/package_file_finder_spec.rb | 44 + spec/finders/packages/package_finder_spec.rb | 25 + spec/finders/packages/packages_finder_spec.rb | 90 + spec/finders/packages/tags_finder_spec.rb | 68 + .../personal_access_tokens_finder_spec.rb | 18 + spec/finders/projects_finder_spec.rb | 11 + .../resource_milestone_event_finder_spec.rb | 16 +- .../resource_state_event_finder_spec.rb | 76 + spec/finders/snippets_finder_spec.rb | 22 + spec/finders/todos_finder_spec.rb | 53 +- .../finders/user_recent_events_finder_spec.rb | 16 +- .../api/graphql/introspection.graphql | 16 +- .../api/schemas/entities/dag_job.json | 10 + .../api/schemas/entities/dag_job_group.json | 13 + .../api/schemas/entities/dag_pipeline.json | 11 + .../api/schemas/entities/dag_stage.json | 11 + .../api/schemas/evidences/build_artifact.json | 10 + .../api/schemas/evidences/release.json | 4 + .../v4/packages/composer/index.json | 29 + .../v4/packages/composer/package.json | 65 + .../v4/packages/composer/provider.json | 25 + .../public_api/v4/packages/group_package.json | 33 + .../v4/packages/group_packages.json | 4 + .../public_api/v4/packages/npm_package.json | 8 + .../v4/packages/npm_package_tags.json | 7 + .../v4/packages/npm_package_version.json | 46 + .../v4/packages/nuget/dependency_group.json | 22 + .../v4/packages/nuget/download_versions.json | 10 + .../v4/packages/nuget/package_metadata.json | 28 + .../v4/packages/nuget/packages_metadata.json | 54 + .../public_api/v4/packages/nuget/search.json | 39 + .../v4/packages/nuget/service_index.json | 19 + .../public_api/v4/packages/package.json | 41 + .../public_api/v4/packages/package_files.json | 13 + .../v4/packages/package_version.json | 19 + .../v4/packages/package_with_build.json | 10 + .../public_api/v4/packages/packages.json | 4 + .../api/schemas/public_api/v4/pipeline.json | 27 + .../api/schemas/public_api/v4/snippets.json | 10 + spec/fixtures/clusters/ca_certificate.pem | 23 + spec/fixtures/clusters/chain_certificates.pem | 100 + .../clusters/intermediate_certificate.pem | 28 + spec/fixtures/clusters/root_certificate.pem | 49 + spec/fixtures/emails/service_desk.eml | 28 + .../emails/service_desk_custom_address.eml | 27 + .../emails/service_desk_forwarded.eml | 30 + .../service_desk_forwarded_new_issue.eml | 29 + spec/fixtures/emails/service_desk_legacy.eml | 28 + .../emails/service_desk_sender_and_from.eml | 27 + .../emails/valid_reply_with_quick_actions.eml | 45 + .../corrupted_project_export.tar.gz | Bin 4352 -> 3846 bytes .../lightweight_project_export.tar.gz | Bin 3837 -> 3647 bytes .../helm/helm_list_v2_cilium_deployed.json.gz | Bin 0 -> 302 bytes .../helm/helm_list_v2_cilium_failed.json.gz | Bin 0 -> 304 bytes .../helm/helm_list_v2_cilium_missing.json.gz | Bin 0 -> 320 bytes .../gitlab/import_export/complex/project.json | 389 - .../complex/tree/project/services.ndjson | 38 +- .../gitlab/import_export/designs/project.json | 3 - .../gitlab/import_export/light/project.json | 44 - .../light/tree/project/services.ndjson | 4 +- .../with_invalid_records/project.json | 1 - .../metrics/dashboard/sample_dashboard.yml | 17 + .../schemas/custom_variable_full_syntax.json | 12 + .../schemas/custom_variable_options.json | 11 + .../schemas/custom_variable_values.json | 10 + ...ric_label_values_variable_full_syntax.json | 12 + .../metric_label_values_variable_options.json | 12 + .../schemas/text_variable_full_syntax.json | 2 +- .../metrics/dashboard/schemas/variables.json | 8 +- .../atlassian_document_format/blockquote.json | 24 + .../atlassian_document_format/blockquote.md | 2 + .../bullet_list.json | 72 + .../atlassian_document_format/bullet_list.md | 8 + .../atlassian_document_format/code_block.json | 89 + .../atlassian_document_format/code_block.md | 38 + .../atlassian_document_format/code_mark.json | 24 + .../atlassian_document_format/code_mark.md | 2 + .../complex_document.json | 964 + .../complex_document.md | 223 + .../atlassian_document_format/emoji.json | 66 + .../atlassian_document_format/emoji.md | 4 + .../atlassian_document_format/hard_break.json | 22 + .../atlassian_document_format/hard_break.md | 3 + .../atlassian_document_format/heading.json | 91 + .../atlassian_document_format/heading.md | 12 + .../inline_card.json | 46 + .../atlassian_document_format/inline_card.md | 13 + .../invalid_json.json | 16 + .../invalid_no_doc.json | 13 + .../invalid_node_type.json | 28 + .../atlassian_document_format/link_mark.json | 44 + .../atlassian_document_format/link_mark.md | 6 + .../media_group.json | 59 + .../atlassian_document_format/media_group.md | 10 + .../media_single.json | 42 + .../atlassian_document_format/media_single.md | 4 + .../atlassian_document_format/mention.json | 44 + .../atlassian_document_format/mention.md | 4 + .../ordered_list.json | 170 + .../atlassian_document_format/ordered_list.md | 25 + .../atlassian_document_format/panel.json | 117 + .../atlassian_document_format/panel.md | 12 + .../atlassian_document_format/paragraph.json | 28 + .../atlassian_document_format/paragraph.md | 4 + .../atlassian_document_format/rule.json | 9 + .../atlassian_document_format/rule.md | 2 + .../strike_sup_sub_mark.json | 56 + .../strike_sup_sub_mark.md | 3 + .../strong_em_mark.json | 53 + .../strong_em_mark.md | 2 + .../atlassian_document_format/table.json | 55 + .../atlassian_document_format/table.md | 18 + .../underline_text_color_mark.json | 40 + .../underline_text_color_mark.md | 2 + .../pager_duty/webhook_incident_trigger.json | 239 + spec/fixtures/product_analytics/event.json | 16 + .../sentry/issue_sample_response.json | 25 +- spec/frontend/__mocks__/@gitlab/ui.js | 23 +- .../document-register-element/index.js | 1 + .../frontend/__mocks__/monaco-editor/index.js | 2 + .../alert_management_detail_spec.js | 31 +- .../alert_management_empty_state_spec.js | 54 + .../alert_management_list_wrapper_spec.js | 57 + .../alert_management_sidebar_todo_spec.js | 76 + ...spec.js => alert_management_table_spec.js} | 175 +- .../components/alert_metrics_spec.js | 67 + .../components/alert_sidebar_status_spec.js | 107 - .../alert_managment_sidebar_assignees_spec.js | 29 +- .../{ => sidebar}/alert_sidebar_spec.js | 27 +- .../sidebar/alert_sidebar_status_spec.js | 129 + .../alert_management_system_note_spec.js | 8 +- .../alert_management/mocks/alerts.json | 4 +- .../alert_settings_form_spec.js.snap | 48 + .../alert_settings_form_spec.js | 233 + .../components/alerts_service_form_spec.js | 14 + spec/frontend/api_spec.js | 95 + spec/frontend/awards_handler_spec.js | 282 +- .../modules/batch_comments/actions_spec.js | 28 +- spec/frontend/behaviors/copy_as_gfm_spec.js | 5 +- spec/frontend/behaviors/gl_emoji_spec.js | 110 + .../shortcuts/shortcuts_issuable_spec.js | 2 +- .../blob_header_filepath_spec.js.snap | 1 + .../components/blob_content_error_spec.js | 6 +- .../blob_header_default_actions_spec.js | 5 +- .../blob_header_viewer_switcher_spec.js | 6 +- spec/frontend/blob/components/mock_data.js | 14 + spec/frontend/blob_edit/edit_blob_spec.js | 31 + .../boards/components/board_form_spec.js | 5 +- spec/frontend/boards/issue_card_spec.js | 2 +- .../components/ci_key_field_spec.js | 244 - .../components/ci_variable_modal_spec.js | 73 +- .../ci_variable_list/services/mock_data.js | 2 + .../ci_variable_list/store/actions_spec.js | 68 +- .../ci_variable_list/store/mutations_spec.js | 78 +- .../close_reopen_report_toggle_spec.js | 7 +- .../remove_cluster_confirmation_spec.js | 17 +- .../components/ancestor_notice_spec.js | 51 + .../clusters_list/components/clusters_spec.js | 57 +- .../clusters_list/store/actions_spec.js | 63 +- .../clusters_list/store/mutations_spec.js | 60 + .../__snapshots__/popover_spec.js.snap | 110 +- .../components/popover_spec.js | 35 +- .../code_navigation/store/actions_spec.js | 24 +- .../code_navigation/utils/index_spec.js | 2 +- .../cycle_analytics/stage_nav_item_spec.js | 3 +- .../design_notes/design_discussion_spec.js | 2 +- .../pages/design/index_spec.js | 33 +- .../design_management/pages/index_spec.js | 2 +- .../design_management/utils/tracking_spec.js | 28 +- .../design_note_pin_spec.js.snap | 42 + .../design_presentation_spec.js.snap | 104 + .../__snapshots__/design_scaler_spec.js.snap | 115 + .../__snapshots__/image_spec.js.snap | 68 + .../components/delete_button_spec.js | 51 + .../components/design_note_pin_spec.js | 49 + .../__snapshots__/design_note_spec.js.snap | 67 + .../design_reply_form_spec.js.snap | 15 + .../design_notes/design_discussion_spec.js | 322 + .../design_notes/design_note_spec.js | 170 + .../design_notes/design_reply_form_spec.js | 184 + .../toggle_replies_widget_spec.js | 98 + .../components/design_overlay_spec.js | 410 + .../components/design_presentation_spec.js | 553 + .../components/design_scaler_spec.js | 67 + .../components/design_sidebar_spec.js | 236 + .../components/image_spec.js | 133 + .../list/__snapshots__/item_spec.js.snap | 472 + .../components/list/item_spec.js | 168 + .../toolbar/__snapshots__/index_spec.js.snap | 63 + .../pagination_button_spec.js.snap | 28 + .../__snapshots__/pagination_spec.js.snap | 29 + .../components/toolbar/index_spec.js | 123 + .../toolbar/pagination_button_spec.js | 61 + .../components/toolbar/pagination_spec.js | 79 + .../upload/__snapshots__/button_spec.js.snap | 85 + .../design_dropzone_spec.js.snap | 501 + .../design_version_dropdown_spec.js.snap | 141 + .../components/upload/button_spec.js | 59 + .../components/upload/design_dropzone_spec.js | 151 + .../upload/design_version_dropdown_spec.js | 114 + .../upload/mock_data/all_versions.js | 14 + .../mock_data/all_versions.js | 8 + .../design_management_new/mock_data/design.js | 74 + .../mock_data/designs.js | 17 + .../mock_data/no_designs.js | 11 + .../design_management_new/mock_data/notes.js | 46 + .../pages/__snapshots__/index_spec.js.snap | 317 + .../design/__snapshots__/index_spec.js.snap | 216 + .../pages/design/index_spec.js | 294 + .../design_management_new/pages/index_spec.js | 571 + .../design_management_new/router_spec.js | 70 + .../utils/cache_update_spec.js | 44 + .../utils/design_management_utils_spec.js | 176 + .../utils/error_messages_spec.js | 62 + .../utils/tracking_spec.js | 59 + spec/frontend/diffs/components/app_spec.js | 55 + .../components/diff_expansion_cell_spec.js | 4 +- .../diffs/components/diff_file_header_spec.js | 1 + .../diffs/components/diff_file_row_spec.js | 11 + .../diffs/components/diff_file_spec.js | 3 + .../components/diff_gutter_avatars_spec.js | 2 +- .../components/diff_line_note_form_spec.js | 16 +- .../diffs/components/diff_table_cell_spec.js | 15 +- .../components/inline_diff_table_row_spec.js | 53 +- .../diffs/components/no_changes_spec.js | 8 + .../parallel_diff_table_row_spec.js | 28 +- spec/frontend/diffs/store/actions_spec.js | 94 +- spec/frontend/diffs/store/utils_spec.js | 22 + spec/frontend/editor/editor_lite_spec.js | 70 + .../editor/editor_markdown_ext_spec.js | 204 + spec/frontend/{ => emoji}/emoji_spec.js | 147 +- .../support}/unicode_support_map_spec.js | 0 spec/frontend/environment.js | 7 +- .../frontend/environments/emtpy_state_spec.js | 16 - .../components/error_details_spec.js | 12 +- .../filtered_search/dropdown_user_spec.js | 8 +- .../filtered_search_manager_spec.js | 4 +- .../stores/recent_searches_store_spec.js | 9 + .../visual_token_value_spec.js | 3 +- spec/frontend/fixtures/branches.rb | 52 +- spec/frontend/fixtures/commit.rb | 49 +- spec/frontend/fixtures/emojis.rb | 17 + spec/frontend/fixtures/metrics_dashboard.rb | 12 +- spec/frontend/fixtures/services.rb | 2 +- .../fixtures/static/mini_dropdown_graph.html | 24 +- ...ch_input.html => search_autocomplete.html} | 0 spec/frontend/fixtures/tags.rb | 28 + spec/frontend/gfm_auto_complete_spec.js | 2 +- spec/frontend/gl_form_spec.js | 18 + .../helpers/event_hub_factory_spec.js | 150 +- .../helpers/fake_request_animation_frame.js | 13 + .../helpers/init_vue_mr_page_helper.js | 6 +- spec/frontend/helpers/monitor_helper_spec.js | 9 - spec/frontend/helpers/test_constants.js | 22 +- spec/frontend/helpers/vue_mock_directive.js | 20 +- .../frontend/helpers/wait_using_real_timer.js | 7 + spec/frontend/ide/commit_icon_spec.js | 1 - .../ide/components/ide_status_list_spec.js | 8 +- .../jobs/__snapshots__/stage_spec.js.snap | 2 +- .../ide/components/repo_editor_spec.js | 113 +- spec/frontend/ide/helpers.js | 1 - spec/frontend/ide/lib/editor_spec.js | 22 + spec/frontend/ide/services/index_spec.js | 6 +- spec/frontend/ide/stores/actions/file_spec.js | 361 +- .../ide/stores/actions/merge_request_spec.js | 1 + spec/frontend/ide/stores/actions/tree_spec.js | 3 +- spec/frontend/ide/utils_spec.js | 52 + .../helpers/comment_indicator_helper_spec.js | 3 +- .../image_diff/helpers/utils_helper_spec.js | 3 +- spec/frontend/image_diff/image_diff_spec.js | 3 +- .../image_diff/replaced_image_diff_spec.js | 7 +- .../import_projects/store/actions_spec.js | 27 +- .../__snapshots__/alerts_form_spec.js.snap | 99 + .../incidents_settings_tabs_spec.js.snap | 63 + .../__snapshots__/pagerduty_form_spec.js.snap | 89 + .../components/alerts_form_spec.js | 49 + .../incidents_settings_service_spec.js | 55 + .../incidents_settings_tabs_spec.js | 55 + .../components/pagerduty_form_spec.js | 67 + .../edit/components/active_toggle_spec.js | 18 +- .../edit/components/dynamic_field_spec.js | 248 +- .../edit/components/integration_form_spec.js | 94 +- .../components/jira_issues_fields_spec.js | 96 + .../components/jira_trigger_fields_spec.js | 25 +- .../edit/components/trigger_fields_spec.js | 51 +- spec/frontend/integrations/edit/mock_data.js | 18 + .../integrations/edit/store/actions_spec.js | 19 + .../integrations/edit/store/getters_spec.js | 71 + .../integrations/edit/store/mutations_spec.js | 19 + .../integrations/edit/store/state_spec.js | 26 + .../components/app_spec.js | 4 +- .../components/item_spec.js | 5 +- .../issuable_suggestions/mock_data.js | 8 +- .../components/issuable_list_root_app_spec.js | 24 +- .../components/issuable_spec.js | 167 +- .../components/issuables_list_app_spec.js | 148 +- .../issuable_header_warnings_spec.js | 79 + .../components/pinned_links_spec.js | 15 +- .../jira_import_form_spec.js.snap | 277 + .../components/jira_import_app_spec.js | 208 +- .../components/jira_import_form_spec.js | 209 +- .../components/jira_import_progress_spec.js | 7 +- .../components/jira_import_setup_spec.js | 4 +- spec/frontend/jira_import/mock_data.js | 53 + .../utils/jira_import_utils_spec.js | 59 + spec/frontend/jobs/components/job_app_spec.js | 146 +- spec/frontend/jobs/components/job_log_spec.js | 65 - .../log/collapsible_section_spec.js | 4 +- spec/frontend/jobs/store/mutations_spec.js | 25 +- spec/frontend/jobs/store/utils_spec.js | 4 +- spec/frontend/lib/utils/common_utils_spec.js | 47 - .../lib/utils/datetime_utility_spec.js | 26 + spec/frontend/lib/utils/dom_utils_spec.js | 50 +- spec/frontend/lib/utils/grammar_spec.js | 12 +- spec/frontend/lib/utils/text_markdown_spec.js | 108 +- spec/frontend/lib/utils/text_utility_spec.js | 50 + spec/frontend/lib/utils/url_utility_spec.js | 8 + .../logs/components/environment_logs_spec.js | 2 + .../components/log_control_buttons_spec.js | 8 +- spec/frontend/logs/mock_data.js | 15 + spec/frontend/logs/stores/actions_spec.js | 27 + spec/frontend/logs/stores/mutations_spec.js | 35 + spec/frontend/merge_request_tabs_spec.js | 2 +- .../dashboard_template_spec.js.snap | 55 +- .../__snapshots__/empty_state_spec.js.snap | 68 +- .../components/charts/anomaly_spec.js | 133 +- .../components/charts/column_spec.js | 10 +- .../components/charts/single_stat_spec.js | 54 +- .../components/charts/time_series_spec.js | 97 +- .../components/create_dashboard_modal_spec.js | 48 + .../components/dashboard_header_spec.js | 232 + .../components/dashboard_panel_spec.js | 59 +- .../monitoring/components/dashboard_spec.js | 237 +- .../components/dashboard_template_spec.js | 4 +- .../components/dashboard_url_time_spec.js | 5 +- .../components/dashboards_dropdown_spec.js | 198 +- .../duplicate_dashboard_modal_spec.js | 111 + .../monitoring/components/empty_state_spec.js | 25 +- .../monitoring/components/graph_group_spec.js | 144 +- .../components/links_section_spec.js | 2 +- .../components/refresh_button_spec.js | 143 + ...ariable_spec.js => dropdown_field_spec.js} | 33 +- ...xt_variable_spec.js => text_field_spec.js} | 8 +- .../components/variables_section_spec.js | 63 +- spec/frontend/monitoring/fixture_data.js | 40 +- spec/frontend/monitoring/graph_data.js | 164 + spec/frontend/monitoring/mock_data.js | 594 +- .../monitoring/pages/dashboard_page_spec.js | 36 +- spec/frontend/monitoring/router_spec.js | 81 + .../frontend/monitoring/store/actions_spec.js | 1340 +- .../frontend/monitoring/store/getters_spec.js | 40 +- .../monitoring/store/mutations_spec.js | 152 +- spec/frontend/monitoring/store/utils_spec.js | 297 +- .../monitoring/store/variable_mapping_spec.js | 269 +- spec/frontend/monitoring/store_utils.js | 32 +- spec/frontend/monitoring/utils_spec.js | 55 +- .../namespace_storage_limit_alert_spec.js | 36 - .../multiline_comment_utils_spec.js | 64 +- .../notes/components/note_actions_spec.js | 66 +- .../notes/components/note_form_spec.js | 18 + .../notes/components/noteable_note_spec.js | 71 +- .../mixins/discussion_navigation_spec.js | 6 + spec/frontend/notes/old_notes_spec.js | 44 +- spec/frontend/notes/stores/actions_spec.js | 133 +- spec/frontend/notes/stores/mutation_spec.js | 34 + spec/frontend/pager_spec.js | 7 +- .../index/components/stop_jobs_modal_spec.js | 5 +- .../components/promote_label_modal_spec.js | 5 +- .../components/delete_milestone_modal_spec.js | 5 +- .../promote_milestone_modal_spec.js | 5 +- .../components/fork_groups_list_item_spec.js | 78 + .../new/components/fork_groups_list_spec.js | 133 + .../projects/graphs/code_coverage_spec.js | 6 +- .../pages/projects/graphs/mock_data.js | 91 +- .../components/interval_pattern_input_spec.js | 121 +- spec/frontend/persistent_user_callout_spec.js | 66 + spec/frontend/pipelines/blank_state_spec.js | 2 +- .../dag/__snapshots__/dag_graph_spec.js.snap | 44 +- .../components/dag/dag_annotations_spec.js | 112 + .../components/dag/dag_graph_spec.js | 4 +- .../pipelines/components/dag/dag_spec.js | 171 +- .../pipelines/components/dag/mock_data.js | 80 + .../pipelines_filtered_search_spec.js | 2 +- spec/frontend/pipelines/empty_state_spec.js | 2 +- .../frontend/pipelines/graph/job_item_spec.js | 13 +- .../pipelines/graph/linked_pipeline_spec.js | 28 +- .../graph/linked_pipelines_mock_data.js | 21 + spec/frontend/pipelines/nav_controls_spec.js | 2 +- .../pipelines/pipeline_triggerer_spec.js | 2 +- spec/frontend/pipelines/pipeline_url_spec.js | 124 +- .../pipelines/pipelines_actions_spec.js | 2 +- .../pipelines/pipelines_artifacts_spec.js | 2 +- spec/frontend/pipelines/pipelines_spec.js | 14 +- .../pipelines/pipelines_table_row_spec.js | 2 +- .../pipelines/pipelines_table_spec.js | 2 +- spec/frontend/pipelines/stage_spec.js | 2 +- .../test_reports/stores/actions_spec.js | 109 +- .../test_reports/stores/getters_spec.js | 15 +- .../test_reports/stores/mutations_spec.js | 34 +- .../test_reports/test_reports_spec.js | 71 +- .../test_reports/test_suite_table_spec.js | 11 +- .../test_reports/test_summary_spec.js | 2 +- spec/frontend/pipelines/time_ago_spec.js | 2 +- .../tokens/pipeline_branch_name_token_spec.js | 2 +- .../tokens/pipeline_status_token_spec.js | 2 +- .../tokens/pipeline_tag_name_token_spec.js | 2 +- .../pipeline_trigger_author_token_spec.js | 2 +- spec/frontend/polyfills/element_spec.js | 46 - .../projects/commits/store/actions_spec.js | 4 +- .../__snapshots__/remove_modal_spec.js.snap | 126 + .../projects/components/remove_modal_spec.js | 62 + .../pipelines_area_chart_spec.js.snap | 2 +- spec/frontend/projects/project_new_spec.js | 3 +- .../components/service_desk_root_spec.js | 226 + .../components/service_desk_setting_spec.js | 234 + .../services/service_desk_service_spec.js | 129 + .../ref/components/ref_selector_spec.js | 532 + spec/frontend/ref/stores/actions_spec.js | 180 + spec/frontend/ref/stores/getters_spec.js | 36 + spec/frontend/ref/stores/mutations_spec.js | 274 + .../explorer/components/delete_button_spec.js | 73 + .../details_page/details_row_spec.js | 43 + ...tags_state.js => empty_tags_state_spec.js} | 2 +- .../details_page/tags_list_row_spec.js | 330 + .../components/details_page/tags_list_spec.js | 146 + .../details_page/tags_table_spec.js | 286 - .../explorer/components/list_item_spec.js | 156 + .../group_empty_state_spec.js.snap | 5 +- .../project_empty_state_spec.js.snap | 95 +- .../list_page/image_list_row_spec.js | 35 +- spec/frontend/registry/explorer/mock_data.js | 10 +- .../registry/explorer/pages/details_spec.js | 53 +- spec/frontend/registry/explorer/stubs.js | 17 +- .../registry_settings_app_spec.js.snap | 18 - .../components/registry_settings_app_spec.js | 11 +- .../settings/components/settings_form_spec.js | 69 +- .../expiration_policy_fields_spec.js.snap | 20 +- .../expiration_policy_fields_spec.js | 73 +- .../releases/components/app_new_spec.js | 26 + .../components/release_block_assets_spec.js | 32 +- .../components/codequality_issue_body_spec.js | 62 + .../grouped_codequality_reports_app_spec.js | 146 + .../reports/codequality_report/mock_data.js | 90 + .../codequality_report/store/actions_spec.js | 151 + .../codequality_report/store/getters_spec.js | 95 + .../store/mutations_spec.js | 80 + .../utils/codequality_comparison_spec.js | 139 + .../grouped_test_reports_app_spec.js | 45 +- .../reports/components/report_section_spec.js | 102 +- .../reports/components/summary_row_spec.js | 43 +- .../table/__snapshots__/row_spec.js.snap | 55 + .../repository/components/table/index_spec.js | 15 +- .../repository/components/table/row_spec.js | 16 + .../components/web_ide_link_spec.js | 51 + spec/frontend/repository/utils/dom_spec.js | 3 +- ...ut_spec.js => search_autocomplete_spec.js} | 107 +- .../self_monitor_form_spec.js.snap | 4 +- .../components/self_monitor_form_spec.js | 3 +- .../confidential_issue_sidebar_spec.js.snap | 6 + .../confidential/edit_form_buttons_spec.js | 130 +- .../sidebar/confidential/edit_form_spec.js | 2 + .../confidential_issue_sidebar_spec.js | 28 +- .../frontend/snippets/components/edit_spec.js | 179 +- .../frontend/snippets/components/show_spec.js | 35 +- .../components/snippet_blob_edit_spec.js | 137 +- .../components/snippet_blob_view_spec.js | 38 +- .../components/snippet_header_spec.js | 19 +- .../components/edit_area_spec.js | 41 +- spec/frontend/static_site_editor/mock_data.js | 7 + .../services/parse_source_file_spec.js | 90 +- .../services/submit_content_changes_spec.js | 48 +- .../components/approvals/approvals_spec.js | 391 + .../approvals_summary_optional_spec.js | 57 + .../approvals/approvals_summary_spec.js | 93 + .../components/mr_widget_author_spec.js | 54 +- .../mr_widget_expandable_section_spec.js | 65 + .../components/mr_widget_header_spec.js | 35 + .../components/mr_widget_pipeline_spec.js | 306 +- .../mr_widget_suggest_pipeline_spec.js | 88 +- .../mr_widget_terraform_plan_spec.js | 107 - .../components/pipeline_tour_mock_data.js | 7 + .../mr_widget_auto_merge_enabled_spec.js | 9 + .../states/mr_widget_checking_spec.js | 2 +- .../states/mr_widget_pipeline_tour_spec.js | 143 - .../states/mr_widget_ready_to_merge_spec.js | 44 +- .../mr_widget_squash_before_merge_spec.js | 42 + .../states/pipeline_tour_mock_data.js | 10 - .../components/terraform/mock_data.js | 31 + .../mr_widget_terraform_container_spec.js | 172 + .../terraform/terraform_plan_spec.js | 95 + spec/frontend/vue_mr_widget/mock_data.js | 15 +- .../vue_mr_widget/mr_widget_options_spec.js | 6 + .../stores/get_state_key_spec.js | 8 +- .../__snapshots__/awards_list_spec.js.snap | 63 +- .../vue_shared/components/file_icon_spec.js | 27 +- .../filtered_search_bar_root_spec.js | 60 +- .../filtered_search_bar/mock_data.js | 23 + .../tokens/author_token_spec.js | 23 +- .../components/gl_modal_vuex_spec.js | 28 + .../components/issue/issue_assignees_spec.js | 2 +- .../components/issue/issue_milestone_spec.js | 2 +- .../components/issue/issue_warning_spec.js | 105 - .../issue/related_issuable_item_spec.js | 3 +- .../issue/related_issuable_mock_data.js | 18 +- .../markdown/suggestion_diff_header_spec.js | 25 +- .../noteable_warning_spec.js.snap} | 40 +- .../components/notes/noteable_warning_spec.js | 196 + .../project_list_item_spec.js | 10 + .../components/remove_member_modal_spec.js | 65 + .../resizable_chart_container_spec.js.snap | 0 .../skeleton_loader_spec.js.snap | 324 + .../resizable_chart_container_spec.js | 0 .../resizable_chart/skeleton_loader_spec.js | 55 + .../editor_service_spec.js | 62 +- .../modals/add_image/add_image_modal_spec.js | 76 + .../modals/add_image/upload_image_tab_spec.js | 41 + .../modals/add_image_modal_spec.js | 41 - .../rich_content_editor_spec.js | 47 +- .../services/build_custom_renderer_spec.js | 29 + .../build_html_to_markdown_renderer_spec.js | 50 + .../renderers/build_uneditable_token_spec.js | 88 + .../services/renderers/mock_data.js | 58 + .../renderers/render_embedded_ruby_spec.js | 30 + .../render_font_awesome_html_inline_spec.js | 33 + .../renderers/render_html_block_spec.js | 38 + .../render_identifier_instance_text_spec.js | 55 + .../render_identifier_paragraph_spec.js | 65 + .../renderers/render_kramdown_list_spec.js | 55 + .../renderers/render_kramdown_text_spec.js | 30 + .../labels_select/dropdown_button_spec.js | 3 +- .../dropdown_search_input_spec.js | 6 +- .../labels_select_vue/dropdown_button_spec.js | 56 +- .../dropdown_contents_labels_view_spec.js | 14 + .../labels_select_root_spec.js | 27 +- .../labels_select_vue/store/getters_spec.js | 19 +- .../user_popover/user_popover_spec.js | 46 +- spec/frontend/wikis_spec.js | 30 + .../ide_integration_spec.js.snap | 1 - .../alerts/set_assignees_spec.rb | 2 +- .../alerts/todo/create_spec.rb | 58 + .../update_alert_status_spec.rb | 2 +- .../mutations/resolves_issuable_spec.rb | 13 +- .../update_spec.rb | 2 +- .../mutations/issues/set_locked_spec.rb | 46 + spec/graphql/mutations/issues/update_spec.rb | 2 +- .../mutations/merge_requests/create_spec.rb | 2 +- .../merge_requests/set_assignees_spec.rb | 2 +- .../merge_requests/set_labels_spec.rb | 2 +- .../merge_requests/set_locked_spec.rb | 2 +- .../merge_requests/set_milestone_spec.rb | 2 +- .../merge_requests/set_subscription_spec.rb | 2 +- .../mutations/merge_requests/set_wip_spec.rb | 2 +- .../mutations/merge_requests/update_spec.rb | 68 + .../mutations/todos/mark_all_done_spec.rb | 5 +- .../graphql/mutations/todos/mark_done_spec.rb | 2 +- .../mutations/todos/restore_many_spec.rb | 6 +- spec/graphql/mutations/todos/restore_spec.rb | 2 +- .../alert_management/alert_resolver_spec.rb | 2 +- .../alert_status_counts_resolver_spec.rb | 2 +- spec/graphql/resolvers/base_resolver_spec.rb | 2 +- .../resolvers/board_lists_resolver_spec.rb | 2 +- .../graphql/resolvers/boards_resolver_spec.rb | 2 +- .../resolvers/branch_commit_resolver_spec.rb | 2 +- .../ci_configuration/sast_resolver_spec.rb | 28 + .../commit_pipelines_resolver_spec.rb | 2 +- .../resolvers/concerns/looks_ahead_spec.rb | 2 +- .../concerns/resolves_pipelines_spec.rb | 2 +- .../concerns/resolves_project_spec.rb | 2 +- .../design_at_version_resolver_spec.rb | 2 +- .../design_management/design_resolver_spec.rb | 2 +- .../designs_resolver_spec.rb | 2 +- .../design_at_version_resolver_spec.rb | 2 +- .../designs_at_version_resolver_spec.rb | 2 +- .../version_in_collection_resolver_spec.rb | 2 +- .../version_resolver_spec.rb | 2 +- .../versions_resolver_spec.rb | 2 +- spec/graphql/resolvers/echo_resolver_spec.rb | 2 +- .../resolvers/environments_resolver_spec.rb | 2 +- .../sentry_detailed_error_resolver_spec.rb | 2 +- .../sentry_error_collection_resolver_spec.rb | 2 +- .../sentry_errors_resolver_spec.rb | 2 +- spec/graphql/resolvers/group_resolver_spec.rb | 2 +- .../graphql/resolvers/issues_resolver_spec.rb | 38 +- .../resolvers/last_commit_resolver_spec.rb | 28 +- .../merge_request_pipelines_resolver_spec.rb | 2 +- .../resolvers/merge_requests_resolver_spec.rb | 25 +- .../resolvers/metadata_resolver_spec.rb | 2 +- .../metrics/dashboard_resolver_spec.rb | 2 +- .../dashboards/annotation_resolver_spec.rb | 2 +- .../resolvers/milestone_resolver_spec.rb | 2 +- .../namespace_projects_resolver_spec.rb | 2 +- .../resolvers/packages_resolver_spec.rb | 17 + .../project_members_resolver_spec.rb | 2 +- .../project_pipeline_resolver_spec.rb | 2 +- .../project_pipelines_resolver_spec.rb | 2 +- .../resolvers/project_resolver_spec.rb | 2 +- .../grafana_integration_resolver_spec.rb | 2 +- .../projects/jira_imports_resolver_spec.rb | 2 +- .../projects/jira_projects_resolver_spec.rb | 4 +- .../projects/services_resolver_spec.rb | 2 +- .../projects/snippets_resolver_spec.rb | 2 +- .../resolvers/projects_resolver_spec.rb | 2 +- .../resolvers/release_resolver_spec.rb | 2 +- .../resolvers/releases_resolver_spec.rb | 2 +- .../resolvers/snippets_resolver_spec.rb | 2 +- spec/graphql/resolvers/todo_resolver_spec.rb | 43 +- spec/graphql/resolvers/tree_resolver_spec.rb | 2 +- spec/graphql/resolvers/user_resolver_spec.rb | 2 +- .../resolvers/users/snippets_resolver_spec.rb | 2 +- spec/graphql/resolvers/users_resolver_spec.rb | 2 +- spec/graphql/types/access_level_enum_spec.rb | 2 +- spec/graphql/types/access_level_type_spec.rb | 2 +- .../alert_status_count_type_spec.rb | 2 +- .../types/alert_management/alert_type_spec.rb | 3 +- .../alert_management/severity_enum_spec.rb | 2 +- .../alert_management/status_enum_spec.rb | 2 +- .../award_emojis/award_emoji_type_spec.rb | 2 +- spec/graphql/types/base_enum_spec.rb | 2 +- spec/graphql/types/base_field_spec.rb | 2 +- .../types/blob_viewers/type_enum_spec.rb | 2 +- spec/graphql/types/board_list_type_spec.rb | 2 +- spec/graphql/types/board_type_spec.rb | 2 +- spec/graphql/types/branch_type_spec.rb | 2 +- .../types/ci/detailed_status_type_spec.rb | 2 +- spec/graphql/types/ci/pipeline_type_spec.rb | 2 +- .../sast/analyzers_entity_type_spec.rb | 11 + .../ci_configuration/sast/entity_type_spec.rb | 11 + .../sast/options_entity_spec.rb | 11 + .../types/ci_configuration/sast/type_spec.rb | 11 + .../types/commit_action_mode_enum_spec.rb | 2 +- .../types/commit_encoding_enum_spec.rb | 2 +- spec/graphql/types/commit_type_spec.rb | 2 +- ...ner_expiration_policy_cadence_enum_spec.rb | 2 +- ...tainer_expiration_policy_keep_enum_spec.rb | 2 +- ..._expiration_policy_older_than_enum_spec.rb | 2 +- .../container_expiration_policy_type_spec.rb | 18 +- .../design_at_version_type_spec.rb | 2 +- .../design_collection_type_spec.rb | 2 +- .../design_management/design_type_spec.rb | 2 +- .../design_version_event_enum_spec.rb | 2 +- .../design_management/version_type_spec.rb | 2 +- .../types/design_management_type_spec.rb | 2 +- spec/graphql/types/diff_refs_type_spec.rb | 2 +- spec/graphql/types/environment_type_spec.rb | 2 +- .../sentry_detailed_error_type_spec.rb | 4 +- .../sentry_error_collection_type_spec.rb | 2 +- ...entry_error_stack_trace_entry_type_spec.rb | 2 +- .../sentry_error_stack_trace_type_spec.rb | 2 +- .../error_tracking/sentry_error_type_spec.rb | 2 +- spec/graphql/types/evidence_type_spec.rb | 2 +- spec/graphql/types/global_id_type_spec.rb | 215 + .../types/grafana_integration_type_spec.rb | 2 +- spec/graphql/types/group_member_type_spec.rb | 2 +- spec/graphql/types/group_type_spec.rb | 2 +- spec/graphql/types/issuable_sort_enum_spec.rb | 2 +- .../graphql/types/issuable_state_enum_spec.rb | 2 +- .../types/issue_connection_type_spec.rb | 11 + spec/graphql/types/issue_sort_enum_spec.rb | 2 +- spec/graphql/types/issue_state_enum_spec.rb | 2 +- spec/graphql/types/issue_type_spec.rb | 102 +- spec/graphql/types/jira_import_type_spec.rb | 2 +- spec/graphql/types/jira_user_type_spec.rb | 13 + spec/graphql/types/label_type_spec.rb | 2 +- .../types/merge_request_state_enum_spec.rb | 2 +- spec/graphql/types/merge_request_type_spec.rb | 5 +- spec/graphql/types/metadata_type_spec.rb | 2 +- .../types/metrics/dashboard_type_spec.rb | 2 +- .../dashboards/annotation_type_spec.rb | 2 +- .../types/milestone_stats_type_spec.rb | 15 + spec/graphql/types/milestone_type_spec.rb | 19 +- spec/graphql/types/mutation_type_spec.rb | 28 +- spec/graphql/types/namespace_type_spec.rb | 4 +- .../types/notes/diff_position_type_spec.rb | 2 +- .../types/notes/discussion_type_spec.rb | 2 +- spec/graphql/types/notes/note_type_spec.rb | 3 +- .../graphql/types/notes/noteable_type_spec.rb | 2 +- spec/graphql/types/package_type_enum_spec.rb | 9 + spec/graphql/types/package_type_spec.rb | 15 + .../base_permission_type_spec.rb | 2 +- .../types/permission_types/issue_spec.rb | 2 +- .../permission_types/merge_request_spec.rb | 2 +- .../merge_request_type_spec.rb | 2 +- .../types/permission_types/note_spec.rb | 2 +- .../types/permission_types/project_spec.rb | 2 +- .../types/permission_types/snippet_spec.rb | 2 +- .../types/permission_types/user_spec.rb | 2 +- .../graphql/types/project_member_type_spec.rb | 2 +- .../types/project_statistics_type_spec.rb | 6 +- spec/graphql/types/project_type_spec.rb | 92 +- .../types/projects/base_service_type_spec.rb | 2 +- .../types/projects/jira_project_type_spec.rb | 2 +- .../types/projects/jira_service_type_spec.rb | 2 +- .../types/projects/service_type_spec.rb | 2 +- .../types/projects/services_enum_spec.rb | 2 +- spec/graphql/types/query_type_spec.rb | 2 +- .../types/release_asset_link_type_spec.rb | 15 + .../graphql/types/release_assets_type_spec.rb | 6 +- spec/graphql/types/release_links_type_spec.rb | 9 +- .../graphql/types/release_source_type_spec.rb | 4 +- spec/graphql/types/release_type_spec.rb | 12 +- spec/graphql/types/repository_type_spec.rb | 2 +- .../types/resolvable_interface_spec.rb | 2 +- .../root_storage_statistics_type_spec.rb | 4 +- spec/graphql/types/snippet_type_spec.rb | 2 +- spec/graphql/types/snippets/blob_type_spec.rb | 2 +- .../types/snippets/blob_viewer_type_spec.rb | 2 +- .../snippets/file_input_action_enum_spec.rb | 2 +- .../types/snippets/file_input_type_spec.rb | 2 +- spec/graphql/types/time_type_spec.rb | 2 +- spec/graphql/types/todo_type_spec.rb | 2 +- spec/graphql/types/tree/blob_type_spec.rb | 4 +- .../graphql/types/tree/submodule_type_spec.rb | 2 +- .../types/tree/tree_entry_type_spec.rb | 2 +- spec/graphql/types/tree/tree_type_spec.rb | 2 +- spec/graphql/types/tree/type_enum_spec.rb | 2 +- spec/graphql/types/untrusted_regexp_spec.rb | 52 + spec/graphql/types/user_type_spec.rb | 2 +- .../linter/documentation_links_spec.rb | 82 + spec/haml_lint/linter/no_plain_nodes_spec.rb | 2 +- spec/helpers/access_tokens_helper_spec.rb | 2 +- .../analytics/unique_visits_helper_spec.rb | 56 + spec/helpers/appearances_helper_spec.rb | 2 +- spec/helpers/application_helper_spec.rb | 12 +- .../application_settings_helper_spec.rb | 2 +- spec/helpers/auth_helper_spec.rb | 2 +- spec/helpers/auto_devops_helper_spec.rb | 8 +- spec/helpers/avatars_helper_spec.rb | 2 +- spec/helpers/award_emoji_helper_spec.rb | 2 +- spec/helpers/blame_helper_spec.rb | 2 +- spec/helpers/blob_helper_spec.rb | 10 +- spec/helpers/boards_helper_spec.rb | 2 +- .../helpers/broadcast_messages_helper_spec.rb | 2 +- spec/helpers/button_helper_spec.rb | 2 +- spec/helpers/calendar_helper_spec.rb | 2 +- spec/helpers/ci/builds_helper_spec.rb | 111 + .../ci/pipeline_schedules_helper_spec.rb | 24 + spec/helpers/{ => ci}/runners_helper_spec.rb | 2 +- .../status_helper_spec.rb} | 2 +- spec/helpers/clusters_helper_spec.rb | 26 +- spec/helpers/commits_helper_spec.rb | 16 +- spec/helpers/components_helper_spec.rb | 2 +- ...ntainer_expiration_policies_helper_spec.rb | 2 +- spec/helpers/cookies_helper_spec.rb | 42 + spec/helpers/dashboard_helper_spec.rb | 2 +- spec/helpers/defer_script_tag_helper_spec.rb | 2 +- spec/helpers/diff_helper_spec.rb | 16 +- spec/helpers/emails_helper_spec.rb | 2 +- spec/helpers/emoji_helper_spec.rb | 2 +- spec/helpers/environment_helper_spec.rb | 2 +- spec/helpers/environments_helper_spec.rb | 59 +- spec/helpers/events_helper_spec.rb | 103 +- spec/helpers/explore_helper_spec.rb | 2 +- spec/helpers/export_helper_spec.rb | 2 +- spec/helpers/external_link_helper_spec.rb | 2 +- spec/helpers/form_helper_spec.rb | 2 +- spec/helpers/git_helper_spec.rb | 2 +- spec/helpers/gitlab_routing_helper_spec.rb | 49 +- spec/helpers/graph_helper_spec.rb | 2 +- .../groups/group_members_helper_spec.rb | 2 +- spec/helpers/groups_helper_spec.rb | 2 +- spec/helpers/hooks_helper_spec.rb | 2 +- spec/helpers/icons_helper_spec.rb | 32 +- spec/helpers/import_helper_spec.rb | 2 +- .../instance_configuration_helper_spec.rb | 2 +- spec/helpers/issuables_helper_spec.rb | 26 +- spec/helpers/issues_helper_spec.rb | 26 +- spec/helpers/labels_helper_spec.rb | 2 +- spec/helpers/markup_helper_spec.rb | 2 +- spec/helpers/members_helper_spec.rb | 2 +- spec/helpers/merge_requests_helper_spec.rb | 2 +- spec/helpers/namespaces_helper_spec.rb | 94 +- spec/helpers/nav_helper_spec.rb | 2 +- spec/helpers/notes_helper_spec.rb | 2 +- spec/helpers/notifications_helper_spec.rb | 2 +- spec/helpers/notify_helper_spec.rb | 33 + .../onboarding_experiment_helper_spec.rb | 38 - spec/helpers/operations_helper_spec.rb | 160 + spec/helpers/page_layout_helper_spec.rb | 2 +- spec/helpers/pagination_helper_spec.rb | 2 +- spec/helpers/preferences_helper_spec.rb | 9 +- spec/helpers/profiles_helper_spec.rb | 2 +- .../projects/alert_management_helper_spec.rb | 33 +- .../projects/error_tracking_helper_spec.rb | 2 +- spec/helpers/projects_helper_spec.rb | 49 +- .../recaptcha_experiment_helper_spec.rb | 2 +- spec/helpers/releases_helper_spec.rb | 37 +- spec/helpers/rss_helper_spec.rb | 2 +- spec/helpers/search_helper_spec.rb | 95 +- spec/helpers/services_helper_spec.rb | 27 +- spec/helpers/sessions_helper_spec.rb | 2 +- spec/helpers/sidekiq_helper_spec.rb | 2 +- spec/helpers/snippets_helper_spec.rb | 2 +- spec/helpers/sorting_helper_spec.rb | 2 +- spec/helpers/sourcegraph_helper_spec.rb | 2 +- spec/helpers/storage_helper_spec.rb | 7 +- spec/helpers/submodule_helper_spec.rb | 2 +- .../subscribable_banner_helper_spec.rb | 2 +- spec/helpers/tab_helper_spec.rb | 2 +- spec/helpers/time_helper_spec.rb | 2 +- spec/helpers/timeboxes_helper_spec.rb | 2 +- spec/helpers/timeboxes_routing_helper_spec.rb | 2 +- spec/helpers/todos_helper_spec.rb | 81 +- spec/helpers/tracking_helper_spec.rb | 2 +- spec/helpers/tree_helper_spec.rb | 56 +- spec/helpers/user_callouts_helper_spec.rb | 6 +- spec/helpers/users_helper_spec.rb | 2 +- spec/helpers/version_check_helper_spec.rb | 2 +- spec/helpers/visibility_level_helper_spec.rb | 2 +- spec/helpers/wiki_helper_spec.rb | 54 +- spec/helpers/x509_helper_spec.rb | 2 +- .../100_patch_omniauth_saml_spec.rb | 2 +- spec/initializers/6_validations_spec.rb | 2 +- spec/initializers/action_mailer_hooks_spec.rb | 2 +- ...actionpack_generate_old_csrf_token_spec.rb | 47 - .../active_record_locking_spec.rb | 2 +- spec/initializers/asset_proxy_setting_spec.rb | 2 +- .../attr_encrypted_no_db_connection_spec.rb | 2 +- .../attr_encrypted_thread_safe_spec.rb | 2 +- spec/initializers/database_config_spec.rb | 2 +- .../direct_upload_support_spec.rb | 2 +- spec/initializers/doorkeeper_spec.rb | 2 +- .../fog_google_https_private_urls_spec.rb | 2 +- .../hangouts_chat_http_override_spec.rb | 2 +- spec/initializers/lograge_spec.rb | 32 +- spec/initializers/mail_encoding_patch_spec.rb | 2 +- .../rest-client-hostname_override_spec.rb | 2 +- spec/initializers/secret_token_spec.rb | 26 +- spec/initializers/settings_spec.rb | 2 +- spec/initializers/trusted_proxies_spec.rb | 2 +- spec/initializers/zz_metrics_spec.rb | 2 +- .../boards/components/board_spec.js | 251 - spec/javascripts/boards/mock_data.js | 1 - ...av_spec.js => fly_out_nav_browser_spec.js} | 4 + spec/javascripts/helpers/class_spec_helper.js | 9 - .../helpers/filtered_search_spec_helper.js | 1 - spec/javascripts/helpers/index.js | 3 - spec/javascripts/helpers/locale_helper.js | 11 - .../helpers/set_timeout_promise_helper.js | 4 - spec/javascripts/helpers/text_helper.js | 18 - spec/javascripts/helpers/tracking_helper.js | 5 - .../helpers/user_mock_data_helper.js | 14 - .../helpers/vue_mount_component_helper.js | 2 - .../helpers/vue_test_utils_helper.js | 5 - .../javascripts/helpers/vuex_action_helper.js | 102 - spec/javascripts/helpers/wait_for_promises.js | 1 - spec/javascripts/jobs/mock_data.js | 2 - spec/javascripts/matchers.js | 55 - .../dashboard_resize_browser_spec.js | 6 +- ...js => tooltip_on_truncate_browser_spec.js} | 4 + spec/lib/after_commit_queue_spec.rb | 2 +- spec/lib/api/api_spec.rb | 2 +- spec/lib/api/entities/branch_spec.rb | 2 +- spec/lib/api/entities/deploy_key_spec.rb | 2 +- .../api/entities/deploy_keys_project_spec.rb | 2 +- .../entities/design_management/design_spec.rb | 2 +- .../api/entities/job_request/image_spec.rb | 2 +- .../lib/api/entities/job_request/port_spec.rb | 2 +- .../entities/merge_request_approvals_spec.rb | 36 + .../api/entities/merge_request_basic_spec.rb | 43 + .../entities/nuget/dependency_group_spec.rb | 50 + .../lib/api/entities/nuget/dependency_spec.rb | 28 + spec/lib/api/entities/nuget/metadatum_spec.rb | 35 + .../package_metadata_catalog_entry_spec.rb | 43 + .../api/entities/nuget/search_result_spec.rb | 57 + .../project_import_failed_relation_spec.rb | 2 +- .../entities/project_import_status_spec.rb | 2 +- .../project_repository_storage_move_spec.rb | 2 +- spec/lib/api/entities/release_spec.rb | 2 +- spec/lib/api/entities/snippet_spec.rb | 55 +- spec/lib/api/entities/ssh_key_spec.rb | 2 +- spec/lib/api/entities/user_spec.rb | 2 +- spec/lib/api/helpers/common_helpers_spec.rb | 51 + spec/lib/api/helpers/graphql_helpers_spec.rb | 2 +- spec/lib/api/helpers/label_helpers_spec.rb | 2 +- .../packages/dependency_proxy_helpers_spec.rb | 72 + spec/lib/api/helpers/packages_helpers_spec.rb | 104 + .../packages_manager_clients_helpers_spec.rb | 154 + spec/lib/api/helpers/pagination_spec.rb | 2 +- .../api/helpers/pagination_strategies_spec.rb | 2 +- .../helpers/related_resources_helpers_spec.rb | 2 +- spec/lib/api/helpers/version_spec.rb | 2 +- spec/lib/api/helpers_spec.rb | 2 +- spec/lib/api/support/git_access_actor_spec.rb | 2 +- .../validations/validators/absence_spec.rb | 2 +- .../validators/array_none_any_spec.rb | 2 +- .../validations/validators/file_path_spec.rb | 2 +- .../validations/validators/git_ref_spec.rb | 2 +- .../validations/validators/git_sha_spec.rb | 2 +- .../validators/integer_none_any_spec.rb | 2 +- .../api/validations/validators/limit_spec.rb | 2 +- .../validators/untrusted_regexp_spec.rb | 2 +- spec/lib/backup/files_spec.rb | 2 +- spec/lib/backup/manager_spec.rb | 2 +- spec/lib/backup/repository_spec.rb | 2 +- spec/lib/backup/uploads_spec.rb | 2 +- spec/lib/banzai/color_parser_spec.rb | 2 +- spec/lib/banzai/commit_renderer_spec.rb | 2 +- .../banzai/cross_project_reference_spec.rb | 2 +- .../filter/absolute_link_filter_spec.rb | 2 +- .../filter/abstract_reference_filter_spec.rb | 2 +- .../ascii_doc_post_processing_filter_spec.rb | 2 +- .../banzai/filter/asset_proxy_filter_spec.rb | 2 +- .../banzai/filter/audio_link_filter_spec.rb | 2 +- .../lib/banzai/filter/autolink_filter_spec.rb | 2 +- .../filter/blockquote_fence_filter_spec.rb | 2 +- ...adcast_message_placeholders_filter_spec.rb | 2 +- ...adcast_message_sanitization_filter_spec.rb | 2 +- spec/lib/banzai/filter/color_filter_spec.rb | 2 +- .../commit_range_reference_filter_spec.rb | 2 +- .../filter/commit_reference_filter_spec.rb | 2 +- .../filter/commit_trailers_filter_spec.rb | 2 +- .../filter/design_reference_filter_spec.rb | 2 +- spec/lib/banzai/filter/emoji_filter_spec.rb | 2 +- .../external_issue_reference_filter_spec.rb | 2 +- .../filter/external_link_filter_spec.rb | 4 +- .../lib/banzai/filter/footnote_filter_spec.rb | 2 +- .../banzai/filter/front_matter_filter_spec.rb | 2 +- .../banzai/filter/gollum_tags_filter_spec.rb | 2 +- .../banzai/filter/html_entity_filter_spec.rb | 2 +- .../filter/image_lazy_load_filter_spec.rb | 2 +- .../banzai/filter/image_link_filter_spec.rb | 2 +- .../inline_cluster_metrics_filter_spec.rb | 25 + .../banzai/filter/inline_diff_filter_spec.rb | 2 +- .../inline_grafana_metrics_filter_spec.rb | 2 +- .../filter/inline_metrics_filter_spec.rb | 2 +- .../inline_metrics_redactor_filter_spec.rb | 22 +- .../filter/issuable_state_filter_spec.rb | 2 +- .../filter/issue_reference_filter_spec.rb | 2 +- .../adf_to_commonmark_filter_spec.rb | 28 + .../filter/label_reference_filter_spec.rb | 2 +- .../lib/banzai/filter/markdown_filter_spec.rb | 2 +- spec/lib/banzai/filter/math_filter_spec.rb | 2 +- .../merge_request_reference_filter_spec.rb | 2 +- spec/lib/banzai/filter/mermaid_filter_spec.rb | 2 +- .../filter/milestone_reference_filter_spec.rb | 2 +- spec/lib/banzai/filter/output_safety_spec.rb | 2 +- .../lib/banzai/filter/plantuml_filter_spec.rb | 2 +- .../filter/project_reference_filter_spec.rb | 2 +- .../banzai/filter/reference_filter_spec.rb | 247 +- .../filter/reference_redactor_filter_spec.rb | 2 +- .../filter/repository_link_filter_spec.rb | 2 +- .../banzai/filter/sanitization_filter_spec.rb | 2 +- .../filter/snippet_reference_filter_spec.rb | 2 +- .../banzai/filter/spaced_link_filter_spec.rb | 2 +- .../banzai/filter/suggestion_filter_spec.rb | 2 +- .../filter/syntax_highlight_filter_spec.rb | 2 +- .../filter/table_of_contents_filter_spec.rb | 2 +- .../table_of_contents_tag_filter_spec.rb | 2 +- .../banzai/filter/upload_link_filter_spec.rb | 2 +- .../filter/user_reference_filter_spec.rb | 2 +- .../banzai/filter/video_link_filter_spec.rb | 2 +- .../banzai/filter/wiki_link_filter_spec.rb | 2 +- spec/lib/banzai/filter_array_spec.rb | 2 +- spec/lib/banzai/issuable_extractor_spec.rb | 2 +- spec/lib/banzai/object_renderer_spec.rb | 2 +- .../broadcast_message_pipeline_spec.rb | 2 +- .../pipeline/description_pipeline_spec.rb | 2 +- .../banzai/pipeline/email_pipeline_spec.rb | 2 +- .../banzai/pipeline/emoji_pipeline_spec.rb | 2 +- .../lib/banzai/pipeline/full_pipeline_spec.rb | 2 +- spec/lib/banzai/pipeline/gfm_pipeline_spec.rb | 53 +- .../adf_commonmark_pipeline_spec.rb | 15 + .../pipeline/post_process_pipeline_spec.rb | 2 +- .../lib/banzai/pipeline/wiki_pipeline_spec.rb | 2 +- spec/lib/banzai/pipeline_spec.rb | 2 +- spec/lib/banzai/querying_spec.rb | 2 +- .../reference_parser/base_parser_spec.rb | 2 +- .../reference_parser/commit_parser_spec.rb | 2 +- .../commit_range_parser_spec.rb | 2 +- .../reference_parser/design_parser_spec.rb | 2 +- .../external_issue_parser_spec.rb | 2 +- .../reference_parser/issue_parser_spec.rb | 2 +- .../reference_parser/label_parser_spec.rb | 2 +- .../mentioned_group_parser_spec.rb | 2 +- .../mentioned_project_parser_spec.rb | 2 +- .../mentioned_user_parser_spec.rb | 2 +- .../merge_request_parser_spec.rb | 2 +- .../reference_parser/milestone_parser_spec.rb | 2 +- .../reference_parser/project_parser_spec.rb | 2 +- .../reference_parser/snippet_parser_spec.rb | 2 +- .../reference_parser/user_parser_spec.rb | 2 +- spec/lib/banzai/reference_redactor_spec.rb | 2 +- spec/lib/banzai/render_context_spec.rb | 2 +- spec/lib/banzai/renderer_spec.rb | 2 +- spec/lib/bitbucket/collection_spec.rb | 2 +- spec/lib/bitbucket/connection_spec.rb | 2 +- spec/lib/bitbucket/page_spec.rb | 2 +- spec/lib/bitbucket/paginator_spec.rb | 2 +- .../bitbucket/representation/comment_spec.rb | 2 +- .../bitbucket/representation/issue_spec.rb | 2 +- .../pull_request_comment_spec.rb | 2 +- .../representation/pull_request_spec.rb | 2 +- .../lib/bitbucket/representation/repo_spec.rb | 2 +- .../lib/bitbucket/representation/user_spec.rb | 2 +- spec/lib/bitbucket_server/client_spec.rb | 2 +- spec/lib/bitbucket_server/collection_spec.rb | 2 +- spec/lib/bitbucket_server/connection_spec.rb | 2 +- spec/lib/bitbucket_server/page_spec.rb | 2 +- spec/lib/bitbucket_server/paginator_spec.rb | 2 +- .../representation/activity_spec.rb | 2 +- .../representation/comment_spec.rb | 2 +- .../pull_request_comment_spec.rb | 2 +- .../representation/pull_request_spec.rb | 2 +- .../representation/repo_spec.rb | 2 +- .../lib/constraints/admin_constrainer_spec.rb | 2 +- .../constraints/feature_constrainer_spec.rb | 2 +- .../constraints/group_url_constrainer_spec.rb | 2 +- .../project_url_constrainer_spec.rb | 2 +- .../constraints/user_url_constrainer_spec.rb | 2 +- spec/lib/container_registry/blob_spec.rb | 2 +- spec/lib/container_registry/client_spec.rb | 2 +- spec/lib/container_registry/path_spec.rb | 2 +- spec/lib/container_registry/registry_spec.rb | 2 +- spec/lib/container_registry/tag_spec.rb | 2 +- spec/lib/csv_builder_spec.rb | 2 +- spec/lib/declarative_policy/overrides_spec.rb | 82 + spec/lib/declarative_policy_spec.rb | 2 +- spec/lib/event_filter_spec.rb | 45 +- spec/lib/expand_variables_spec.rb | 2 +- spec/lib/extracts_path_spec.rb | 2 +- spec/lib/extracts_ref_spec.rb | 2 +- spec/lib/feature/definition_spec.rb | 209 + spec/lib/feature/gitaly_spec.rb | 2 +- spec/lib/feature_spec.rb | 101 +- spec/lib/file_size_validator_spec.rb | 2 +- spec/lib/forever_spec.rb | 2 +- spec/lib/gitaly/server_spec.rb | 2 +- .../gitlab/access/branch_protection_spec.rb | 2 +- .../alert_management/alert_params_spec.rb | 6 +- .../alert_status_counts_spec.rb | 2 +- .../alert_management/fingerprint_spec.rb | 70 +- spec/lib/gitlab/alerting/alert_spec.rb | 2 +- .../notification_payload_parser_spec.rb | 6 +- spec/lib/gitlab/allowable_spec.rb | 2 +- .../base_query_builder_spec.rb | 2 +- .../analytics/cycle_analytics/median_spec.rb | 2 +- .../cycle_analytics/records_fetcher_spec.rb | 2 +- .../stage_events/code_stage_start_spec.rb | 2 +- .../stage_events/issue_created_spec.rb | 2 +- .../issue_first_mentioned_in_commit_spec.rb | 2 +- .../stage_events/issue_stage_end_spec.rb | 2 +- .../merge_request_created_spec.rb | 2 +- ...quest_first_deployed_to_production_spec.rb | 2 +- .../merge_request_last_build_finished_spec.rb | 2 +- .../merge_request_last_build_started_spec.rb | 2 +- .../stage_events/merge_request_merged_spec.rb | 2 +- .../stage_events/plan_stage_start_spec.rb | 2 +- .../stage_events/stage_event_spec.rb | 2 +- .../gitlab/analytics/unique_visits_spec.rb | 62 + spec/lib/gitlab/anonymous_session_spec.rb | 2 +- spec/lib/gitlab/app_json_logger_spec.rb | 2 +- spec/lib/gitlab/app_logger_spec.rb | 2 +- spec/lib/gitlab/app_text_logger_spec.rb | 2 +- spec/lib/gitlab/application_context_spec.rb | 2 +- .../gitlab/application_rate_limiter_spec.rb | 2 +- .../gitlab/asciidoc/include_processor_spec.rb | 2 +- spec/lib/gitlab/asciidoc_spec.rb | 2 +- spec/lib/gitlab/asset_proxy_spec.rb | 2 +- spec/lib/gitlab/auth/activity_spec.rb | 2 +- spec/lib/gitlab/auth/auth_finders_spec.rb | 75 +- .../gitlab/auth/blocked_user_tracker_spec.rb | 2 +- .../lib/gitlab/auth/current_user_mode_spec.rb | 2 +- spec/lib/gitlab/auth/ip_rate_limiter_spec.rb | 2 +- .../gitlab/auth/key_status_checker_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/access_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/adapter_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/auth_hash_spec.rb | 2 +- .../gitlab/auth/ldap/authentication_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/config_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/dn_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/person_spec.rb | 2 +- spec/lib/gitlab/auth/ldap/user_spec.rb | 2 +- spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb | 2 +- .../auth/o_auth/identity_linker_spec.rb | 2 +- spec/lib/gitlab/auth/o_auth/provider_spec.rb | 2 +- spec/lib/gitlab/auth/o_auth/user_spec.rb | 2 +- .../gitlab/auth/request_authenticator_spec.rb | 2 +- spec/lib/gitlab/auth/saml/auth_hash_spec.rb | 2 +- .../gitlab/auth/saml/identity_linker_spec.rb | 2 +- .../gitlab/auth/saml/origin_validator_spec.rb | 2 +- spec/lib/gitlab/auth/saml/user_spec.rb | 2 +- .../gitlab/auth/unique_ips_limiter_spec.rb | 2 +- .../auth/user_access_denied_reason_spec.rb | 2 +- spec/lib/gitlab/auth_spec.rb | 4 +- spec/lib/gitlab/authorized_keys_spec.rb | 2 +- ...d_merge_request_diff_commits_count_spec.rb | 6 +- .../archive_legacy_traces_spec.rb | 2 +- ...ployment_clusters_from_deployments_spec.rb | 2 +- ...nment_id_deployment_merge_requests_spec.rb | 2 +- ...ckfill_hashed_project_repositories_spec.rb | 2 +- ...ckfill_legacy_project_repositories_spec.rb | 2 +- .../backfill_namespace_settings_spec.rb | 23 + ...ll_project_fullpath_in_repo_config_spec.rb | 2 +- .../backfill_project_repositories_spec.rb | 2 +- .../backfill_project_settings_spec.rb | 2 +- ...backfill_push_rules_id_in_projects_spec.rb | 2 +- .../backfill_snippet_repositories_spec.rb | 18 +- .../cleanup_concurrent_schema_change_spec.rb | 28 + .../digest_column_spec.rb | 46 - .../encrypt_columns_spec.rb | 96 - .../encrypt_runners_tokens_spec.rb | 79 - .../fix_cross_project_label_links_spec.rb | 2 +- ...x_projects_without_project_feature_spec.rb | 2 +- ...rojects_without_prometheus_service_spec.rb | 2 +- .../fix_promoted_epics_discussion_ids_spec.rb | 2 +- .../fix_user_namespace_names_spec.rb | 2 +- .../fix_user_project_route_names_spec.rb | 2 +- .../legacy_upload_mover_spec.rb | 2 +- .../legacy_uploads_migrator_spec.rb | 2 +- .../link_lfs_objects_projects_spec.rb | 2 +- .../mailers/unconfirm_mailer_spec.rb | 12 + ...assignees_migration_progress_check_spec.rb | 2 +- .../migrate_build_stage_spec.rb | 8 +- ...ate_fingerprint_sha256_within_keys_spec.rb | 2 +- ...rate_issue_trackers_sensitive_data_spec.rb | 2 +- .../migrate_legacy_artifacts_spec.rb | 2 +- ...rate_null_private_profile_to_false_spec.rb | 2 +- .../migrate_pages_metadata_spec.rb | 2 +- .../migrate_stage_index_spec.rb | 32 +- .../migrate_users_bio_to_user_details_spec.rb | 2 +- .../populate_canonical_emails_spec.rb | 2 +- ...cluster_kubernetes_namespace_table_spec.rb | 2 +- ...late_merge_request_assignees_table_spec.rb | 2 +- ...opulate_project_snippet_statistics_spec.rb | 224 + .../untracked_file_spec.rb | 3 +- .../populate_untracked_uploads_spec.rb | 3 +- .../populate_user_highest_roles_table_spec.rb | 2 +- .../prepare_untracked_uploads_spec.rb | 2 +- ...recalculate_project_authorizations_spec.rb | 2 +- ...uthorizations_with_min_max_user_id_spec.rb | 2 +- .../remove_restricted_todos_spec.rb | 14 +- .../reset_merge_status_spec.rb | 2 +- .../schedule_calculate_wiki_sizes_spec.rb | 64 - ...nfidential_note_events_on_services_spec.rb | 2 +- ...nfidential_note_events_on_webhooks_spec.rb | 2 +- ...o_match_visibility_level_of_parent_spec.rb | 2 +- .../create_resource_user_mention_spec.rb | 2 +- ...gfully_confirmed_email_unconfirmer_spec.rb | 123 + spec/lib/gitlab/background_migration_spec.rb | 21 +- spec/lib/gitlab/backtrace_cleaner_spec.rb | 2 +- .../gitlab/badge/coverage/metadata_spec.rb | 2 +- spec/lib/gitlab/badge/coverage/report_spec.rb | 2 +- .../gitlab/badge/coverage/template_spec.rb | 2 +- .../gitlab/badge/pipeline/metadata_spec.rb | 2 +- spec/lib/gitlab/badge/pipeline/status_spec.rb | 2 +- .../gitlab/badge/pipeline/template_spec.rb | 2 +- spec/lib/gitlab/badge/shared/metadata.rb | 2 +- .../bare_repository_import/importer_spec.rb | 2 +- .../bare_repository_import/repository_spec.rb | 2 +- spec/lib/gitlab/batch_pop_queueing_spec.rb | 2 +- spec/lib/gitlab/batch_worker_context_spec.rb | 2 +- .../gitlab/bitbucket_import/importer_spec.rb | 26 +- .../bitbucket_import/project_creator_spec.rb | 2 +- .../bitbucket_import/wiki_formatter_spec.rb | 2 +- .../bitbucket_server_import/importer_spec.rb | 51 +- spec/lib/gitlab/blame_spec.rb | 2 +- spec/lib/gitlab/blob_helper_spec.rb | 2 +- .../branch_push_merge_commit_analyzer_spec.rb | 2 +- spec/lib/gitlab/build_access_spec.rb | 2 +- .../cache/ci/project_pipeline_status_spec.rb | 60 +- spec/lib/gitlab/cache/import/caching_spec.rb | 2 +- spec/lib/gitlab/cache/request_cache_spec.rb | 2 +- spec/lib/gitlab/changes_list_spec.rb | 2 +- spec/lib/gitlab/chat/command_spec.rb | 2 +- spec/lib/gitlab/chat/output_spec.rb | 2 +- spec/lib/gitlab/chat/responder/base_spec.rb | 2 +- .../gitlab/chat/responder/mattermost_spec.rb | 2 +- spec/lib/gitlab/chat/responder/slack_spec.rb | 2 +- spec/lib/gitlab/chat/responder_spec.rb | 2 +- spec/lib/gitlab/chat_name_token_spec.rb | 2 +- spec/lib/gitlab/chat_spec.rb | 2 +- spec/lib/gitlab/checks/branch_check_spec.rb | 2 +- spec/lib/gitlab/checks/change_access_spec.rb | 2 +- spec/lib/gitlab/checks/diff_check_spec.rb | 2 +- spec/lib/gitlab/checks/force_push_spec.rb | 2 +- spec/lib/gitlab/checks/lfs_check_spec.rb | 2 +- spec/lib/gitlab/checks/lfs_integrity_spec.rb | 2 +- .../lib/gitlab/checks/project_created_spec.rb | 2 +- spec/lib/gitlab/checks/project_moved_spec.rb | 2 +- spec/lib/gitlab/checks/push_check_spec.rb | 2 +- .../checks/push_file_count_check_spec.rb | 2 +- spec/lib/gitlab/checks/snippet_check_spec.rb | 2 +- spec/lib/gitlab/checks/tag_check_spec.rb | 2 +- spec/lib/gitlab/checks/timed_logger_spec.rb | 2 +- spec/lib/gitlab/ci/ansi2html_spec.rb | 2 +- spec/lib/gitlab/ci/ansi2json/line_spec.rb | 2 +- spec/lib/gitlab/ci/ansi2json/parser_spec.rb | 2 +- spec/lib/gitlab/ci/ansi2json/result_spec.rb | 2 +- spec/lib/gitlab/ci/ansi2json/style_spec.rb | 2 +- spec/lib/gitlab/ci/ansi2json_spec.rb | 2 +- .../gitlab/ci/artifact_file_reader_spec.rb | 2 +- .../artifacts/adapters/gzip_stream_spec.rb | 2 +- .../artifacts/adapters/raw_stream_spec.rb | 2 +- .../ci/build/artifacts/metadata/entry_spec.rb | 2 +- .../ci/build/artifacts/metadata_spec.rb | 2 +- .../gitlab/ci/build/artifacts/path_spec.rb | 2 +- .../lib/gitlab/ci/build/context/build_spec.rb | 2 +- .../gitlab/ci/build/context/global_spec.rb | 2 +- .../ci/build/credentials/factory_spec.rb | 2 +- .../ci/build/credentials/registry_spec.rb | 2 +- spec/lib/gitlab/ci/build/image_spec.rb | 2 +- .../gitlab/ci/build/policy/changes_spec.rb | 2 +- .../gitlab/ci/build/policy/kubernetes_spec.rb | 2 +- spec/lib/gitlab/ci/build/policy/refs_spec.rb | 2 +- .../gitlab/ci/build/policy/variables_spec.rb | 2 +- spec/lib/gitlab/ci/build/policy_spec.rb | 2 +- spec/lib/gitlab/ci/build/port_spec.rb | 2 +- .../ci/build/prerequisite/factory_spec.rb | 2 +- .../prerequisite/kubernetes_namespace_spec.rb | 2 +- spec/lib/gitlab/ci/build/releaser_spec.rb | 20 +- .../build/rules/rule/clause/changes_spec.rb | 2 +- .../ci/build/rules/rule/clause/exists_spec.rb | 2 +- spec/lib/gitlab/ci/build/rules/rule_spec.rb | 2 +- spec/lib/gitlab/ci/build/rules_spec.rb | 2 +- spec/lib/gitlab/ci/build/step_spec.rb | 4 +- spec/lib/gitlab/ci/charts_spec.rb | 2 +- .../ci/config/edge_stages_injector_spec.rb | 2 +- .../gitlab/ci/config/entry/artifacts_spec.rb | 2 +- .../lib/gitlab/ci/config/entry/bridge_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/cache_spec.rb | 2 +- .../gitlab/ci/config/entry/commands_spec.rb | 2 +- .../gitlab/ci/config/entry/coverage_spec.rb | 2 +- .../gitlab/ci/config/entry/default_spec.rb | 2 +- .../ci/config/entry/environment_spec.rb | 15 +- spec/lib/gitlab/ci/config/entry/files_spec.rb | 2 +- .../lib/gitlab/ci/config/entry/hidden_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/image_spec.rb | 2 +- .../gitlab/ci/config/entry/include_spec.rb | 2 +- .../ci/config/entry/inherit/default_spec.rb | 2 +- .../ci/config/entry/inherit/variables_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/job_spec.rb | 4 +- spec/lib/gitlab/ci/config/entry/jobs_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/key_spec.rb | 2 +- .../gitlab/ci/config/entry/kubernetes_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/need_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/needs_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/paths_spec.rb | 2 +- .../lib/gitlab/ci/config/entry/policy_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/port_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/ports_spec.rb | 2 +- .../lib/gitlab/ci/config/entry/prefix_spec.rb | 2 +- .../ci/config/entry/processable_spec.rb | 14 +- .../config/entry/release/assets/link_spec.rb | 2 +- .../config/entry/release/assets/links_spec.rb | 2 +- .../ci/config/entry/release/assets_spec.rb | 2 +- .../gitlab/ci/config/entry/release_spec.rb | 217 +- .../gitlab/ci/config/entry/reports_spec.rb | 5 +- spec/lib/gitlab/ci/config/entry/retry_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/root_spec.rb | 2 +- .../gitlab/ci/config/entry/rules/rule_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/rules_spec.rb | 2 +- .../lib/gitlab/ci/config/entry/script_spec.rb | 2 +- .../gitlab/ci/config/entry/service_spec.rb | 2 +- .../gitlab/ci/config/entry/services_spec.rb | 2 +- spec/lib/gitlab/ci/config/entry/stage_spec.rb | 2 +- .../lib/gitlab/ci/config/entry/stages_spec.rb | 2 +- .../gitlab/ci/config/entry/trigger_spec.rb | 2 +- .../gitlab/ci/config/entry/variables_spec.rb | 2 +- .../gitlab/ci/config/entry/workflow_spec.rb | 2 +- .../gitlab/ci/config/extendable/entry_spec.rb | 2 +- spec/lib/gitlab/ci/config/extendable_spec.rb | 2 +- .../gitlab/ci/config/external/context_spec.rb | 2 +- .../ci/config/external/file/artifact_spec.rb | 2 +- .../ci/config/external/file/base_spec.rb | 2 +- .../ci/config/external/file/local_spec.rb | 2 +- .../ci/config/external/file/project_spec.rb | 2 +- .../ci/config/external/file/remote_spec.rb | 2 +- .../ci/config/external/file/template_spec.rb | 2 +- .../gitlab/ci/config/external/mapper_spec.rb | 2 +- .../ci/config/external/processor_spec.rb | 2 +- spec/lib/gitlab/ci/config/normalizer_spec.rb | 2 +- spec/lib/gitlab/ci/config_spec.rb | 2 +- spec/lib/gitlab/ci/cron_parser_spec.rb | 2 +- spec/lib/gitlab/ci/jwt_spec.rb | 2 +- spec/lib/gitlab/ci/mask_secret_spec.rb | 2 +- .../ci/parsers/accessibility/pa11y_spec.rb | 6 +- .../ci/parsers/coverage/cobertura_spec.rb | 2 +- .../ci/parsers/terraform/tfplan_spec.rb | 89 +- spec/lib/gitlab/ci/parsers/test/junit_spec.rb | 2 +- spec/lib/gitlab/ci/parsers_spec.rb | 2 +- .../pipeline/chain/build/associations_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/build_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/command_spec.rb | 27 +- .../ci/pipeline/chain/config/content_spec.rb | 26 +- .../gitlab/ci/pipeline/chain/create_spec.rb | 2 +- .../chain/evaluate_workflow_rules_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/populate_spec.rb | 2 +- .../chain/remove_unwanted_chat_jobs_spec.rb | 2 +- .../lib/gitlab/ci/pipeline/chain/seed_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/sequence_spec.rb | 2 +- .../lib/gitlab/ci/pipeline/chain/skip_spec.rb | 2 +- .../pipeline/chain/validate/abilities_spec.rb | 2 +- .../pipeline/chain/validate/external_spec.rb | 2 +- .../chain/validate/repository_spec.rb | 2 +- spec/lib/gitlab/ci/pipeline/duration_spec.rb | 2 +- .../ci/pipeline/expression/lexeme/and_spec.rb | 2 +- .../pipeline/expression/lexeme/equals_spec.rb | 2 +- .../expression/lexeme/matches_spec.rb | 2 +- .../expression/lexeme/not_equals_spec.rb | 2 +- .../expression/lexeme/not_matches_spec.rb | 2 +- .../pipeline/expression/lexeme/null_spec.rb | 2 +- .../ci/pipeline/expression/lexeme/or_spec.rb | 2 +- .../expression/lexeme/pattern_spec.rb | 2 +- .../pipeline/expression/lexeme/string_spec.rb | 2 +- .../expression/lexeme/variable_spec.rb | 2 +- .../ci/pipeline/expression/lexer_spec.rb | 2 +- .../ci/pipeline/expression/parser_spec.rb | 2 +- .../ci/pipeline/expression/statement_spec.rb | 2 +- .../ci/pipeline/expression/token_spec.rb | 2 +- spec/lib/gitlab/ci/pipeline/preloader_spec.rb | 6 +- .../ci/pipeline/seed/build/cache_spec.rb | 4 +- .../seed/build/resource_group_spec.rb | 2 +- .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 2 +- .../ci/pipeline/seed/deployment_spec.rb | 15 +- .../ci/pipeline/seed/environment_spec.rb | 2 +- .../lib/gitlab/ci/pipeline/seed/stage_spec.rb | 2 +- .../accessibility_reports_comparer_spec.rb | 2 +- .../ci/reports/accessibility_reports_spec.rb | 2 +- .../ci/reports/coverage_reports_spec.rb | 2 +- .../ci/reports/terraform_reports_spec.rb | 2 +- spec/lib/gitlab/ci/reports/test_case_spec.rb | 2 +- .../ci/reports/test_report_summary_spec.rb | 90 + .../ci/reports/test_reports_comparer_spec.rb | 2 +- .../gitlab/ci/reports/test_reports_spec.rb | 2 +- .../ci/reports/test_suite_comparer_spec.rb | 2 +- spec/lib/gitlab/ci/reports/test_suite_spec.rb | 37 +- .../ci/reports/test_suite_summary_spec.rb | 89 + .../gitlab/ci/status/bridge/factory_spec.rb | 2 +- .../lib/gitlab/ci/status/build/action_spec.rb | 2 +- .../gitlab/ci/status/build/cancelable_spec.rb | 2 +- .../gitlab/ci/status/build/canceled_spec.rb | 2 +- .../lib/gitlab/ci/status/build/common_spec.rb | 2 +- .../gitlab/ci/status/build/created_spec.rb | 2 +- .../lib/gitlab/ci/status/build/erased_spec.rb | 2 +- .../gitlab/ci/status/build/factory_spec.rb | 2 +- .../ci/status/build/failed_allowed_spec.rb | 2 +- .../lib/gitlab/ci/status/build/failed_spec.rb | 2 +- .../lib/gitlab/ci/status/build/manual_spec.rb | 2 +- .../gitlab/ci/status/build/pending_spec.rb | 2 +- spec/lib/gitlab/ci/status/build/play_spec.rb | 2 +- .../gitlab/ci/status/build/preparing_spec.rb | 2 +- .../gitlab/ci/status/build/retried_spec.rb | 2 +- .../gitlab/ci/status/build/retryable_spec.rb | 2 +- .../gitlab/ci/status/build/scheduled_spec.rb | 2 +- .../gitlab/ci/status/build/skipped_spec.rb | 2 +- spec/lib/gitlab/ci/status/build/stop_spec.rb | 2 +- .../gitlab/ci/status/build/unschedule_spec.rb | 2 +- spec/lib/gitlab/ci/status/canceled_spec.rb | 2 +- spec/lib/gitlab/ci/status/composite_spec.rb | 10 +- spec/lib/gitlab/ci/status/created_spec.rb | 2 +- spec/lib/gitlab/ci/status/extended_spec.rb | 2 +- .../gitlab/ci/status/external/common_spec.rb | 2 +- .../gitlab/ci/status/external/factory_spec.rb | 4 +- spec/lib/gitlab/ci/status/factory_spec.rb | 4 +- spec/lib/gitlab/ci/status/failed_spec.rb | 2 +- .../lib/gitlab/ci/status/group/common_spec.rb | 2 +- .../gitlab/ci/status/group/factory_spec.rb | 2 +- spec/lib/gitlab/ci/status/manual_spec.rb | 2 +- spec/lib/gitlab/ci/status/pending_spec.rb | 2 +- .../gitlab/ci/status/pipeline/blocked_spec.rb | 2 +- .../gitlab/ci/status/pipeline/common_spec.rb | 2 +- .../gitlab/ci/status/pipeline/delayed_spec.rb | 2 +- .../gitlab/ci/status/pipeline/factory_spec.rb | 4 +- spec/lib/gitlab/ci/status/preparing_spec.rb | 2 +- spec/lib/gitlab/ci/status/running_spec.rb | 2 +- spec/lib/gitlab/ci/status/scheduled_spec.rb | 2 +- spec/lib/gitlab/ci/status/skipped_spec.rb | 2 +- .../lib/gitlab/ci/status/stage/common_spec.rb | 2 +- .../gitlab/ci/status/stage/factory_spec.rb | 6 +- .../ci/status/stage/play_manual_spec.rb | 2 +- spec/lib/gitlab/ci/status/success_spec.rb | 2 +- .../gitlab/ci/status/success_warning_spec.rb | 2 +- .../ci/status/waiting_for_resource_spec.rb | 2 +- .../Jobs/build_gitlab_ci_yaml_spec.rb | 2 +- .../Jobs/code_quality_gitlab_ci_yaml_spec.rb | 2 +- .../Jobs/deploy_gitlab_ci_yaml_spec.rb | 2 +- .../Jobs/test_gitlab_ci_yaml_spec.rb | 2 +- ...erformance_testing_gitlab_ci_yaml_spec.rb} | 26 +- .../auto_devops_gitlab_ci_yaml_spec.rb | 34 +- ...luster_applications_gitlab_ci_yaml_spec.rb | 2 +- .../lib/gitlab/ci/templates/templates_spec.rb | 2 +- spec/lib/gitlab/ci/trace/chunked_io_spec.rb | 2 +- .../gitlab/ci/trace/section_parser_spec.rb | 2 +- spec/lib/gitlab/ci/trace/stream_spec.rb | 2 +- spec/lib/gitlab/ci/trace_spec.rb | 2 +- .../ci/variables/collection/item_spec.rb | 2 +- .../gitlab/ci/variables/collection_spec.rb | 2 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 164 +- spec/lib/gitlab/ci_access_spec.rb | 2 +- spec/lib/gitlab/class_attributes_spec.rb | 41 + .../orphan_job_artifact_files_batch_spec.rb | 2 +- .../cleanup/orphan_job_artifact_files_spec.rb | 2 +- .../orphan_lfs_file_references_spec.rb | 2 +- .../gitlab/cleanup/project_uploads_spec.rb | 2 +- .../lib/gitlab/cleanup/remote_uploads_spec.rb | 2 +- .../gitlab/closing_issue_extractor_spec.rb | 2 +- .../cluster/mixins/puma_cluster_spec.rb | 2 +- .../mixins/unicorn_http_server_spec.rb | 2 +- .../puma_worker_killer_observer_spec.rb | 2 +- .../cluster/rack_timeout_observer_spec.rb | 2 +- spec/lib/gitlab/code_navigation_path_spec.rb | 4 +- spec/lib/gitlab/color_schemes_spec.rb | 2 +- spec/lib/gitlab/conan_token_spec.rb | 97 + .../gitlab/config/entry/attributable_spec.rb | 2 +- spec/lib/gitlab/config/entry/boolean_spec.rb | 2 +- .../gitlab/config/entry/configurable_spec.rb | 2 +- spec/lib/gitlab/config/entry/factory_spec.rb | 2 +- .../gitlab/config/entry/simplifiable_spec.rb | 2 +- .../lib/gitlab/config/entry/undefined_spec.rb | 2 +- .../gitlab/config/entry/unspecified_spec.rb | 2 +- .../gitlab/config/entry/validatable_spec.rb | 2 +- .../lib/gitlab/config/entry/validator_spec.rb | 2 +- spec/lib/gitlab/config/loader/yaml_spec.rb | 2 +- .../external_database_checker_spec.rb | 86 +- .../puma_rugged_checker_spec.rb | 2 +- .../gitlab/conflict/file_collection_spec.rb | 2 +- spec/lib/gitlab/conflict/file_spec.rb | 2 +- .../config_loader_spec.rb | 2 +- .../lib/gitlab/contributions_calendar_spec.rb | 2 +- .../check_collection_spec.rb | 2 +- .../cross_project_access/check_info_spec.rb | 2 +- .../class_methods_spec.rb | 2 +- spec/lib/gitlab/cross_project_access_spec.rb | 2 +- spec/lib/gitlab/crypto_helper_spec.rb | 2 +- spec/lib/gitlab/current_settings_spec.rb | 2 +- .../base_event_fetcher_spec.rb | 2 +- .../code_event_fetcher_spec.rb | 2 +- .../gitlab/cycle_analytics/code_stage_spec.rb | 2 +- .../lib/gitlab/cycle_analytics/events_spec.rb | 2 +- .../issue_event_fetcher_spec.rb | 2 +- .../cycle_analytics/issue_stage_spec.rb | 2 +- .../cycle_analytics/permissions_spec.rb | 2 +- .../plan_event_fetcher_spec.rb | 2 +- .../gitlab/cycle_analytics/plan_stage_spec.rb | 2 +- .../production_event_fetcher_spec.rb | 2 +- .../cycle_analytics/production_stage_spec.rb | 2 +- .../review_event_fetcher_spec.rb | 2 +- .../cycle_analytics/review_stage_spec.rb | 2 +- .../cycle_analytics/stage_summary_spec.rb | 2 +- .../staging_event_fetcher_spec.rb | 2 +- .../cycle_analytics/staging_stage_spec.rb | 2 +- .../cycle_analytics/summary/value_spec.rb | 2 +- .../test_event_fetcher_spec.rb | 2 +- .../gitlab/cycle_analytics/test_stage_spec.rb | 2 +- .../gitlab/cycle_analytics/updater_spec.rb | 2 +- .../gitlab/cycle_analytics/usage_data_spec.rb | 2 +- spec/lib/gitlab/daemon_spec.rb | 2 +- spec/lib/gitlab/danger/changelog_spec.rb | 42 +- spec/lib/gitlab/danger/commit_linter_spec.rb | 14 +- spec/lib/gitlab/danger/emoji_checker_spec.rb | 2 +- spec/lib/gitlab/danger/helper_spec.rb | 296 +- spec/lib/gitlab/danger/roulette_spec.rb | 271 +- spec/lib/gitlab/danger/sidekiq_queues_spec.rb | 82 + spec/lib/gitlab/danger/teammate_spec.rb | 129 +- spec/lib/gitlab/data_builder/alert_spec.rb | 2 +- spec/lib/gitlab/data_builder/build_spec.rb | 2 +- .../gitlab/data_builder/deployment_spec.rb | 2 +- spec/lib/gitlab/data_builder/note_spec.rb | 2 +- spec/lib/gitlab/data_builder/pipeline_spec.rb | 2 +- spec/lib/gitlab/data_builder/push_spec.rb | 2 +- .../lib/gitlab/data_builder/wiki_page_spec.rb | 2 +- .../database/background_migration_job_spec.rb | 125 + spec/lib/gitlab/database/batch_count_spec.rb | 2 +- .../gitlab/database/connection_timer_spec.rb | 2 +- .../count/exact_count_strategy_spec.rb | 2 +- .../count/reltuples_count_strategy_spec.rb | 2 +- .../count/tablesample_count_strategy_spec.rb | 2 +- spec/lib/gitlab/database/count_spec.rb | 2 +- .../gitlab/database/custom_structure_spec.rb | 2 +- .../database/dynamic_model_helpers_spec.rb | 28 + spec/lib/gitlab/database/grant_spec.rb | 2 +- .../gitlab/database/migration_helpers_spec.rb | 288 +- .../background_migration_helpers_spec.rb | 276 + .../database/multi_threaded_migration_spec.rb | 2 +- .../database/obsolete_ignored_columns_spec.rb | 2 +- .../partitioning/monthly_strategy_spec.rb | 153 + .../partitioning/partition_creator_spec.rb | 96 + .../partitioning/time_partition_spec.rb | 174 + .../backfill_partitioned_table_spec.rb | 175 + .../foreign_key_helpers_spec.rb | 2 +- .../partitioned_foreign_key_spec.rb | 2 +- .../table_management_helpers_spec.rb | 259 +- .../force_disconnectable_mixin_spec.rb | 2 +- .../schema_versions_copy_mixin_spec.rb | 2 +- .../v1/rename_base_spec.rb | 2 +- .../v1/rename_namespaces_spec.rb | 2 +- .../v1/rename_projects_spec.rb | 2 +- .../v1_spec.rb | 4 +- .../gitlab/database/schema_cleaner_spec.rb | 2 +- .../lib/gitlab/database/sha_attribute_spec.rb | 2 +- .../gitlab/database/with_lock_retries_spec.rb | 2 +- .../common_metrics/importer_spec.rb | 2 +- .../common_metrics/prometheus_metric_spec.rb | 6 +- .../create_group_spec.rb | 2 +- .../project/create_service_spec.rb | 2 +- .../project/delete_service_spec.rb | 2 +- spec/lib/gitlab/database_spec.rb | 133 +- .../dependency_linker/base_linker_spec.rb | 2 +- .../cargo_toml_linker_spec.rb | 2 +- .../dependency_linker/cartfile_linker_spec.rb | 2 +- .../composer_json_linker_spec.rb | 2 +- .../dependency_linker/gemfile_linker_spec.rb | 2 +- .../dependency_linker/gemspec_linker_spec.rb | 2 +- .../dependency_linker/go_mod_linker_spec.rb | 2 +- .../dependency_linker/go_sum_linker_spec.rb | 2 +- .../godeps_json_linker_spec.rb | 2 +- .../package_json_linker_spec.rb | 2 +- .../dependency_linker/parser/gemfile_spec.rb | 2 +- .../dependency_linker/podfile_linker_spec.rb | 2 +- .../podspec_json_linker_spec.rb | 2 +- .../dependency_linker/podspec_linker_spec.rb | 2 +- .../requirements_txt_linker_spec.rb | 2 +- spec/lib/gitlab/dependency_linker_spec.rb | 2 +- spec/lib/gitlab/devise_failure_spec.rb | 2 +- spec/lib/gitlab/diff/diff_refs_spec.rb | 2 +- .../diff/file_collection/commit_spec.rb | 2 +- .../diff/file_collection/compare_spec.rb | 2 +- .../merge_request_diff_batch_spec.rb | 2 +- .../merge_request_diff_spec.rb | 2 +- spec/lib/gitlab/diff/file_spec.rb | 2 +- .../diff/formatters/image_formatter_spec.rb | 2 +- .../diff/formatters/text_formatter_spec.rb | 2 +- spec/lib/gitlab/diff/highlight_cache_spec.rb | 2 +- spec/lib/gitlab/diff/highlight_spec.rb | 2 +- .../diff/inline_diff_markdown_marker_spec.rb | 2 +- .../gitlab/diff/inline_diff_marker_spec.rb | 2 +- spec/lib/gitlab/diff/inline_diff_spec.rb | 2 +- spec/lib/gitlab/diff/line_mapper_spec.rb | 2 +- spec/lib/gitlab/diff/line_spec.rb | 2 +- spec/lib/gitlab/diff/lines_unfolder_spec.rb | 2 +- spec/lib/gitlab/diff/parallel_diff_spec.rb | 2 +- spec/lib/gitlab/diff/parser_spec.rb | 2 +- .../gitlab/diff/position_collection_spec.rb | 2 +- spec/lib/gitlab/diff/position_spec.rb | 2 +- .../position_tracer/image_strategy_spec.rb | 115 +- .../position_tracer/line_strategy_spec.rb | 140 +- spec/lib/gitlab/diff/position_tracer_spec.rb | 2 +- spec/lib/gitlab/diff/stats_cache_spec.rb | 84 + spec/lib/gitlab/diff/suggestion_diff_spec.rb | 2 +- spec/lib/gitlab/diff/suggestion_spec.rb | 2 +- .../gitlab/diff/suggestions_parser_spec.rb | 2 +- .../discussions_diff/file_collection_spec.rb | 2 +- .../discussions_diff/highlight_cache_spec.rb | 2 +- spec/lib/gitlab/doctor/secrets_spec.rb | 2 +- .../lib/gitlab/downtime_check/message_spec.rb | 2 +- spec/lib/gitlab/downtime_check_spec.rb | 2 +- .../gitlab/elasticsearch/logs/lines_spec.rb | 2 +- .../gitlab/elasticsearch/logs/pods_spec.rb | 2 +- .../gitlab/email/attachment_uploader_spec.rb | 2 +- .../handler/create_issue_handler_spec.rb | 2 +- .../create_merge_request_handler_spec.rb | 2 +- .../email/handler/create_note_handler_spec.rb | 68 +- .../handler/service_desk_handler_spec.rb | 311 + .../email/handler/unsubscribe_handler_spec.rb | 2 +- spec/lib/gitlab/email/handler_spec.rb | 44 +- .../additional_headers_interceptor_spec.rb | 2 +- .../hook/delivery_metrics_observer_spec.rb | 2 +- .../hook/disable_email_interceptor_spec.rb | 2 +- .../hook/smime_signature_interceptor_spec.rb | 2 +- .../email/message/repository_push_spec.rb | 2 +- spec/lib/gitlab/email/receiver_spec.rb | 2 +- spec/lib/gitlab/email/reply_parser_spec.rb | 2 +- .../email/service_desk_receiver_spec.rb | 37 + .../gitlab/email/smime/certificate_spec.rb | 2 +- spec/lib/gitlab/email/smime/signer_spec.rb | 2 +- spec/lib/gitlab/emoji_spec.rb | 125 + spec/lib/gitlab/encoding_helper_spec.rb | 2 +- .../stack_trace_highlight_decorator_spec.rb | 2 +- spec/lib/gitlab/error_tracking_spec.rb | 86 +- .../gitlab/etag_caching/middleware_spec.rb | 2 +- spec/lib/gitlab/etag_caching/router_spec.rb | 2 +- .../sleeping_lock_spec.rb | 2 +- .../gitlab/exclusive_lease_helpers_spec.rb | 2 +- spec/lib/gitlab/exclusive_lease_spec.rb | 2 +- spec/lib/gitlab/experimentation_spec.rb | 2 +- .../external_authorization/access_spec.rb | 2 +- .../external_authorization/cache_spec.rb | 2 +- .../external_authorization/client_spec.rb | 2 +- .../external_authorization/logger_spec.rb | 2 +- .../external_authorization/response_spec.rb | 2 +- .../lib/gitlab/external_authorization_spec.rb | 2 +- .../gitlab/fake_application_settings_spec.rb | 2 +- spec/lib/gitlab/file_detector_spec.rb | 2 +- spec/lib/gitlab/file_finder_spec.rb | 2 +- spec/lib/gitlab/file_hook_spec.rb | 2 +- .../gitlab/file_markdown_link_builder_spec.rb | 2 +- spec/lib/gitlab/file_type_detection_spec.rb | 2 +- spec/lib/gitlab/fogbugz_import/client_spec.rb | 2 +- .../gitlab/fogbugz_import/importer_spec.rb | 2 +- .../fogbugz_import/project_creator_spec.rb | 2 +- .../lib/gitlab/gfm/reference_rewriter_spec.rb | 2 +- spec/lib/gitlab/gfm/uploads_rewriter_spec.rb | 2 +- .../git/attributes_at_ref_parser_spec.rb | 2 +- spec/lib/gitlab/git/attributes_parser_spec.rb | 2 +- spec/lib/gitlab/git/blame_spec.rb | 2 +- spec/lib/gitlab/git/blob_spec.rb | 2 +- spec/lib/gitlab/git/branch_spec.rb | 2 +- spec/lib/gitlab/git/bundle_file_spec.rb | 2 +- spec/lib/gitlab/git/changes_spec.rb | 2 +- spec/lib/gitlab/git/commit_spec.rb | 32 +- spec/lib/gitlab/git/compare_spec.rb | 2 +- spec/lib/gitlab/git/conflict/file_spec.rb | 2 +- spec/lib/gitlab/git/conflict/parser_spec.rb | 2 +- .../gitlab/git/cross_repo_comparer_spec.rb | 2 +- spec/lib/gitlab/git/diff_collection_spec.rb | 2 +- spec/lib/gitlab/git/diff_spec.rb | 2 +- .../gitlab/git/diff_stats_collection_spec.rb | 6 +- spec/lib/gitlab/git/gitmodules_parser_spec.rb | 2 +- spec/lib/gitlab/git/hook_env_spec.rb | 2 +- spec/lib/gitlab/git/keep_around_spec.rb | 2 +- spec/lib/gitlab/git/lfs_changes_spec.rb | 2 +- spec/lib/gitlab/git/lfs_pointer_file_spec.rb | 2 +- spec/lib/gitlab/git/merge_base_spec.rb | 2 +- spec/lib/gitlab/git/object_pool_spec.rb | 2 +- .../lib/gitlab/git/patches/collection_spec.rb | 2 +- .../gitlab/git/patches/commit_patches_spec.rb | 2 +- spec/lib/gitlab/git/patches/patch_spec.rb | 2 +- spec/lib/gitlab/git/pre_receive_error_spec.rb | 2 +- spec/lib/gitlab/git/push_spec.rb | 2 +- spec/lib/gitlab/git/raw_diff_change_spec.rb | 2 +- spec/lib/gitlab/git/remote_mirror_spec.rb | 2 +- spec/lib/gitlab/git/remote_repository_spec.rb | 2 +- .../lib/gitlab/git/repository_cleaner_spec.rb | 2 +- spec/lib/gitlab/git/repository_spec.rb | 55 +- .../gitlab/git/rugged_impl/use_rugged_spec.rb | 2 +- spec/lib/gitlab/git/tag_spec.rb | 2 +- spec/lib/gitlab/git/tree_spec.rb | 2 +- spec/lib/gitlab/git/user_spec.rb | 2 +- spec/lib/gitlab/git/util_spec.rb | 2 +- spec/lib/gitlab/git/wiki_spec.rb | 2 +- .../gitlab/git/wraps_gitaly_errors_spec.rb | 2 +- spec/lib/gitlab/git_access_design_spec.rb | 2 +- spec/lib/gitlab/git_access_project_spec.rb | 2 +- spec/lib/gitlab/git_access_snippet_spec.rb | 2 +- spec/lib/gitlab/git_access_spec.rb | 2 +- spec/lib/gitlab/git_access_wiki_spec.rb | 2 +- spec/lib/gitlab/git_post_receive_spec.rb | 2 +- spec/lib/gitlab/git_ref_validator_spec.rb | 2 +- spec/lib/gitlab/git_spec.rb | 2 +- .../gitlab/gitaly_client/blob_service_spec.rb | 2 +- .../gitaly_client/blobs_stitcher_spec.rb | 2 +- spec/lib/gitlab/gitaly_client/call_spec.rb | 122 + .../gitaly_client/cleanup_service_spec.rb | 2 +- .../gitaly_client/commit_service_spec.rb | 29 +- .../conflict_files_stitcher_spec.rb | 2 +- .../gitaly_client/conflicts_service_spec.rb | 2 +- spec/lib/gitlab/gitaly_client/diff_spec.rb | 2 +- .../gitaly_client/diff_stitcher_spec.rb | 2 +- .../health_check_service_spec.rb | 2 +- .../gitaly_client/object_pool_service_spec.rb | 2 +- .../gitaly_client/operation_service_spec.rb | 16 +- .../praefect_info_service_spec.rb | 2 +- .../gitlab/gitaly_client/ref_service_spec.rb | 47 +- .../gitaly_client/remote_service_spec.rb | 5 +- .../gitaly_client/repository_service_spec.rb | 2 +- .../gitaly_client/storage_settings_spec.rb | 2 +- spec/lib/gitlab/gitaly_client/util_spec.rb | 2 +- .../gitlab/gitaly_client/wiki_service_spec.rb | 2 +- spec/lib/gitlab/gitaly_client_spec.rb | 4 +- .../github_import/bulk_importing_spec.rb | 2 +- spec/lib/gitlab/github_import/client_spec.rb | 2 +- .../importer/diff_note_importer_spec.rb | 2 +- .../importer/diff_notes_importer_spec.rb | 2 +- .../issue_and_label_links_importer_spec.rb | 2 +- .../importer/issue_importer_spec.rb | 2 +- .../importer/issues_importer_spec.rb | 2 +- .../importer/label_links_importer_spec.rb | 2 +- .../importer/labels_importer_spec.rb | 2 +- .../importer/lfs_object_importer_spec.rb | 2 +- .../importer/lfs_objects_importer_spec.rb | 2 +- .../importer/milestones_importer_spec.rb | 2 +- .../importer/note_importer_spec.rb | 2 +- .../importer/notes_importer_spec.rb | 2 +- .../importer/pull_request_importer_spec.rb | 2 +- .../importer/pull_requests_importer_spec.rb | 2 +- .../importer/releases_importer_spec.rb | 2 +- .../importer/repository_importer_spec.rb | 2 +- .../github_import/issuable_finder_spec.rb | 2 +- .../gitlab/github_import/label_finder_spec.rb | 2 +- .../github_import/markdown_text_spec.rb | 2 +- .../github_import/milestone_finder_spec.rb | 2 +- .../gitlab/github_import/page_counter_spec.rb | 2 +- .../github_import/parallel_importer_spec.rb | 2 +- .../github_import/parallel_scheduling_spec.rb | 2 +- .../representation/diff_note_spec.rb | 2 +- .../representation/expose_attribute_spec.rb | 2 +- .../representation/issue_spec.rb | 2 +- .../github_import/representation/note_spec.rb | 2 +- .../representation/pull_request_spec.rb | 2 +- .../representation/to_hash_spec.rb | 2 +- .../github_import/representation/user_spec.rb | 2 +- .../github_import/representation_spec.rb | 2 +- .../github_import/sequential_importer_spec.rb | 2 +- .../gitlab/github_import/user_finder_spec.rb | 2 +- spec/lib/gitlab/github_import_spec.rb | 2 +- spec/lib/gitlab/gitlab_import/client_spec.rb | 2 +- .../lib/gitlab/gitlab_import/importer_spec.rb | 2 +- .../gitlab_import/project_creator_spec.rb | 2 +- .../gitlab/gl_repository/identifier_spec.rb | 63 +- .../gitlab/gl_repository/repo_type_spec.rb | 2 +- spec/lib/gitlab/gl_repository_spec.rb | 2 +- spec/lib/gitlab/global_id_spec.rb | 35 +- spec/lib/gitlab/gon_helper_spec.rb | 2 +- .../gitlab/google_code_import/client_spec.rb | 2 +- .../google_code_import/importer_spec.rb | 2 +- .../project_creator_spec.rb | 2 +- spec/lib/gitlab/gpg/commit_spec.rb | 2 +- spec/lib/gitlab/gpg_spec.rb | 4 +- .../formatters/lograge_with_timestamp_spec.rb | 2 +- .../loggers/cloudflare_logger_spec.rb | 2 +- .../loggers/exception_logger_spec.rb | 2 +- .../grape_logging/loggers/perf_logger_spec.rb | 2 +- .../loggers/queue_duration_logger_spec.rb | 2 +- .../authorize/authorize_field_service_spec.rb | 2 +- .../authorize/authorize_resource_spec.rb | 2 +- .../calls_gitaly/instrumentation_spec.rb | 2 +- .../graphql/copy_field_description_spec.rb | 2 +- spec/lib/gitlab/graphql/docs/renderer_spec.rb | 2 +- .../graphql/find_argument_in_parent_spec.rb | 2 +- .../gitlab/graphql/generic_tracing_spec.rb | 2 +- .../loaders/batch_lfs_oid_loader_spec.rb | 2 +- .../loaders/batch_model_loader_spec.rb | 2 +- .../batch_project_statistics_loader_spec.rb | 2 +- ...tch_root_storage_statistics_loader_spec.rb | 2 +- .../graphql/loaders/issuable_loader_spec.rb | 96 + .../graphql/markdown_field/resolver_spec.rb | 2 +- .../lib/gitlab/graphql/markdown_field_spec.rb | 2 +- .../lib/gitlab/graphql/mount_mutation_spec.rb | 63 + ...ernally_paginated_array_connection_spec.rb | 2 +- .../conditions/not_null_condition_spec.rb | 2 +- .../keyset/conditions/null_condition_spec.rb | 2 +- .../pagination/keyset/connection_spec.rb | 2 +- .../pagination/keyset/order_info_spec.rb | 2 +- .../pagination/keyset/query_builder_spec.rb | 2 +- ..._active_record_relation_connection_spec.rb | 2 +- .../query_analyzers/logger_analyzer_spec.rb | 20 +- .../submodule_tree_entry_spec.rb | 2 +- .../graphql/representation/tree_entry_spec.rb | 2 +- spec/lib/gitlab/graphql/timeout_spec.rb | 2 +- spec/lib/gitlab/graphql_logger_spec.rb | 2 +- spec/lib/gitlab/graphs/commits_spec.rb | 2 +- spec/lib/gitlab/group_search_results_spec.rb | 2 +- .../gitlab/hashed_storage/migrator_spec.rb | 2 +- .../lib/gitlab/health_checks/db_check_spec.rb | 2 +- .../gitlab/health_checks/gitaly_check_spec.rb | 2 +- .../gitlab/health_checks/master_check_spec.rb | 2 +- .../health_checks/probes/collection_spec.rb | 16 +- .../gitlab/health_checks/puma_check_spec.rb | 2 +- .../health_checks/redis/cache_check_spec.rb | 2 +- .../health_checks/redis/queues_check_spec.rb | 2 +- .../health_checks/redis/redis_check_spec.rb | 2 +- .../redis/shared_state_check_spec.rb | 2 +- .../health_checks/simple_check_shared.rb | 2 +- .../health_checks/unicorn_check_spec.rb | 2 +- spec/lib/gitlab/highlight_spec.rb | 2 +- .../lib/gitlab/hook_data/base_builder_spec.rb | 2 +- .../gitlab/hook_data/issuable_builder_spec.rb | 2 +- .../gitlab/hook_data/issue_builder_spec.rb | 2 +- .../hook_data/merge_request_builder_spec.rb | 2 +- .../gitlab/http_connection_adapter_spec.rb | 2 +- spec/lib/gitlab/http_io_spec.rb | 2 +- spec/lib/gitlab/http_spec.rb | 2 +- spec/lib/gitlab/i18n/metadata_entry_spec.rb | 2 +- spec/lib/gitlab/i18n/po_linter_spec.rb | 2 +- .../lib/gitlab/i18n/translation_entry_spec.rb | 2 +- spec/lib/gitlab/i18n_spec.rb | 2 +- spec/lib/gitlab/identifier_spec.rb | 2 +- .../gitlab/import/database_helpers_spec.rb | 2 +- .../import/merge_request_creator_spec.rb | 2 +- .../import/merge_request_helpers_spec.rb | 2 +- spec/lib/gitlab/import/metrics_spec.rb | 66 +- spec/lib/gitlab/import/set_async_jid_spec.rb | 2 +- .../base_after_export_strategy_spec.rb | 2 +- .../web_upload_strategy_spec.rb | 2 +- .../after_export_strategy_builder_spec.rb | 2 +- spec/lib/gitlab/import_export/all_models.yml | 15 +- .../import_export/attribute_cleaner_spec.rb | 2 +- .../attribute_configuration_spec.rb | 2 +- .../import_export/attributes_finder_spec.rb | 2 +- .../attributes_permitter_spec.rb | 2 +- .../import_export/avatar_restorer_spec.rb | 2 +- .../gitlab/import_export/avatar_saver_spec.rb | 2 +- .../import_export/base/object_builder_spec.rb | 2 +- .../base/relation_factory_spec.rb | 2 +- .../import_export/command_line_util_spec.rb | 2 +- spec/lib/gitlab/import_export/config_spec.rb | 2 +- .../design_repo_restorer_spec.rb | 2 +- .../import_export/design_repo_saver_spec.rb | 2 +- spec/lib/gitlab/import_export/error_spec.rb | 2 +- .../fast_hash_serializer_spec.rb | 10 +- .../import_export/file_importer_spec.rb | 2 +- spec/lib/gitlab/import_export/fork_spec.rb | 2 +- .../group/legacy_tree_restorer_spec.rb | 2 +- .../group/legacy_tree_saver_spec.rb | 2 +- .../group/object_builder_spec.rb | 2 +- .../group/relation_factory_spec.rb | 2 +- .../import_export/group/tree_restorer_spec.rb | 2 +- .../import_export/group/tree_saver_spec.rb | 2 +- .../gitlab/import_export/hash_util_spec.rb | 2 +- .../import_export_equivalence_spec.rb | 2 +- .../import_export/import_export_spec.rb | 2 +- .../import_failure_service_spec.rb | 2 +- .../import_test_coverage_spec.rb | 2 +- .../lib/gitlab/import_export/importer_spec.rb | 2 +- .../json/legacy_reader/file_spec.rb | 2 +- .../json/legacy_reader/hash_spec.rb | 2 +- .../import_export/json/legacy_writer_spec.rb | 2 +- .../import_export/json/ndjson_reader_spec.rb | 2 +- .../import_export/json/ndjson_writer_spec.rb | 2 +- .../json/streaming_serializer_spec.rb | 16 +- .../legacy_relation_tree_saver_spec.rb | 2 +- .../gitlab/import_export/lfs_restorer_spec.rb | 2 +- .../gitlab/import_export/lfs_saver_spec.rb | 2 +- .../import_export/members_mapper_spec.rb | 2 +- .../merge_request_parser_spec.rb | 2 +- .../import_export/model_configuration_spec.rb | 2 +- .../import_export/project/export_task_spec.rb | 2 +- .../import_export/project/import_task_spec.rb | 2 +- .../project/object_builder_spec.rb | 2 +- .../project/relation_factory_spec.rb | 2 +- .../project/tree_restorer_spec.rb | 23 +- .../import_export/project/tree_saver_spec.rb | 15 +- spec/lib/gitlab/import_export/reader_spec.rb | 2 +- .../references_configuration_spec.rb | 2 +- .../relation_tree_restorer_spec.rb | 2 +- .../import_export/repo_restorer_spec.rb | 2 +- .../gitlab/import_export/repo_saver_spec.rb | 2 +- .../import_export/safe_model_attributes.yml | 32 +- spec/lib/gitlab/import_export/saver_spec.rb | 2 +- spec/lib/gitlab/import_export/shared_spec.rb | 2 +- .../snippet_repo_restorer_spec.rb | 26 +- .../import_export/snippet_repo_saver_spec.rb | 2 +- .../snippets_repo_restorer_spec.rb | 2 +- .../import_export/snippets_repo_saver_spec.rb | 2 +- .../import_export/uploads_manager_spec.rb | 2 +- .../import_export/uploads_restorer_spec.rb | 2 +- .../import_export/uploads_saver_spec.rb | 2 +- .../import_export/version_checker_spec.rb | 2 +- .../import_export/wiki_repo_saver_spec.rb | 2 +- .../import_export/wiki_restorer_spec.rb | 2 +- spec/lib/gitlab/import_formatter_spec.rb | 2 +- spec/lib/gitlab/import_sources_spec.rb | 2 +- .../incident_issue_description_spec.rb | 97 + spec/lib/gitlab/incoming_email_spec.rb | 2 +- .../gitlab/insecure_key_fingerprint_spec.rb | 2 +- .../gitlab/instrumentation/redis_base_spec.rb | 2 +- .../redis_cluster_validator_spec.rb | 93 + .../instrumentation/redis_interceptor_spec.rb | 71 +- spec/lib/gitlab/instrumentation/redis_spec.rb | 2 +- .../lib/gitlab/instrumentation_helper_spec.rb | 2 +- .../internal_post_receive/response_spec.rb | 2 +- spec/lib/gitlab/issuable_metadata_spec.rb | 2 +- spec/lib/gitlab/issuable_sorter_spec.rb | 2 +- .../gitlab/issuables_count_for_state_spec.rb | 2 +- .../gitlab/jira_import/base_importer_spec.rb | 2 +- .../jira_import/handle_labels_service_spec.rb | 2 +- .../jira_import/issue_serializer_spec.rb | 41 +- .../jira_import/issues_importer_spec.rb | 2 +- .../jira_import/labels_importer_spec.rb | 2 +- .../jira_import/metadata_collector_spec.rb | 2 +- .../gitlab/jira_import/user_mapper_spec.rb | 80 - spec/lib/gitlab/jira_import_spec.rb | 2 +- spec/lib/gitlab/job_waiter_spec.rb | 2 +- spec/lib/gitlab/json_cache_spec.rb | 2 +- spec/lib/gitlab/json_logger_spec.rb | 2 +- spec/lib/gitlab/json_spec.rb | 483 +- spec/lib/gitlab/jwt_authenticatable_spec.rb | 2 +- .../kubernetes/cluster_role_binding_spec.rb | 2 +- spec/lib/gitlab/kubernetes/config_map_spec.rb | 2 +- .../config_maps/aws_node_auth_spec.rb | 2 +- .../kubernetes/default_namespace_spec.rb | 2 +- .../gitlab/kubernetes/generic_secret_spec.rb | 2 +- spec/lib/gitlab/kubernetes/helm/api_spec.rb | 2 +- .../kubernetes/helm/base_command_spec.rb | 2 +- .../kubernetes/helm/certificate_spec.rb | 2 +- .../kubernetes/helm/delete_command_spec.rb | 2 +- .../kubernetes/helm/init_command_spec.rb | 2 +- .../kubernetes/helm/install_command_spec.rb | 2 +- .../kubernetes/helm/parsers/list_v2_spec.rb | 2 +- .../kubernetes/helm/patch_command_spec.rb | 2 +- spec/lib/gitlab/kubernetes/helm/pod_spec.rb | 4 +- .../kubernetes/helm/reset_command_spec.rb | 2 +- .../lib/gitlab/kubernetes/kube_client_spec.rb | 2 +- .../lib/gitlab/kubernetes/kubectl_cmd_spec.rb | 2 +- spec/lib/gitlab/kubernetes/namespace_spec.rb | 2 +- .../gitlab/kubernetes/network_policy_spec.rb | 2 +- spec/lib/gitlab/kubernetes/node_spec.rb | 68 + .../gitlab/kubernetes/role_binding_spec.rb | 2 +- spec/lib/gitlab/kubernetes/role_spec.rb | 2 +- .../gitlab/kubernetes/service_account_spec.rb | 2 +- .../kubernetes/service_account_token_spec.rb | 2 +- spec/lib/gitlab/kubernetes/tls_secret_spec.rb | 2 +- spec/lib/gitlab/kubernetes_spec.rb | 2 +- spec/lib/gitlab/language_data_spec.rb | 2 +- spec/lib/gitlab/language_detection_spec.rb | 2 +- spec/lib/gitlab/lazy_spec.rb | 2 +- .../branch_formatter_spec.rb | 2 +- .../legacy_github_import/client_spec.rb | 2 +- .../comment_formatter_spec.rb | 2 +- .../legacy_github_import/importer_spec.rb | 2 +- .../issuable_formatter_spec.rb | 2 +- .../issue_formatter_spec.rb | 2 +- .../label_formatter_spec.rb | 2 +- .../milestone_formatter_spec.rb | 2 +- .../project_creator_spec.rb | 2 +- .../pull_request_formatter_spec.rb | 2 +- .../release_formatter_spec.rb | 2 +- .../user_formatter_spec.rb | 2 +- .../wiki_formatter_spec.rb | 2 +- .../lib/gitlab/lets_encrypt/challenge_spec.rb | 2 +- spec/lib/gitlab/lets_encrypt/client_spec.rb | 2 +- spec/lib/gitlab/lets_encrypt/order_spec.rb | 2 +- spec/lib/gitlab/lets_encrypt_spec.rb | 2 +- spec/lib/gitlab/lfs_token_spec.rb | 2 +- .../gitlab/log_timestamp_formatter_spec.rb | 2 +- .../gitlab/logging/cloudflare_helper_spec.rb | 2 +- .../lib/gitlab/lograge/custom_options_spec.rb | 18 +- spec/lib/gitlab/loop_helpers_spec.rb | 2 +- spec/lib/gitlab/mail_room/mail_room_spec.rb | 2 +- .../gitlab/manifest_import/manifest_spec.rb | 2 +- .../manifest_import/project_creator_spec.rb | 2 +- .../active_record/extension_spec.rb | 2 +- .../gitlab/markdown_cache/field_data_spec.rb | 2 +- .../markdown_cache/redis/extension_spec.rb | 27 +- .../gitlab/markdown_cache/redis/store_spec.rb | 24 +- spec/lib/gitlab/markup_helper_spec.rb | 2 +- .../metrics/background_transaction_spec.rb | 13 +- .../gitlab/metrics/dashboard/defaults_spec.rb | 2 +- .../gitlab/metrics/dashboard/finder_spec.rb | 16 +- .../metrics/dashboard/processor_spec.rb | 31 +- .../dashboard/service_selector_spec.rb | 42 +- .../stages/grafana_formatter_spec.rb | 2 +- .../stages/panel_ids_inserter_spec.rb | 6 +- .../dashboard/stages/url_validator_spec.rb | 101 + .../stages/variable_endpoint_inserter_spec.rb | 77 + spec/lib/gitlab/metrics/dashboard/url_spec.rb | 31 +- spec/lib/gitlab/metrics/delta_spec.rb | 2 +- .../elasticsearch_rack_middleware_spec.rb | 2 +- .../metrics/exporter/base_exporter_spec.rb | 2 +- .../metrics/exporter/sidekiq_exporter_spec.rb | 2 +- .../metrics/exporter/web_exporter_spec.rb | 2 +- .../gitlab/metrics/instrumentation_spec.rb | 2 +- spec/lib/gitlab/metrics/method_call_spec.rb | 2 +- spec/lib/gitlab/metrics/methods_spec.rb | 2 +- spec/lib/gitlab/metrics/prometheus_spec.rb | 2 +- .../gitlab/metrics/rack_middleware_spec.rb | 2 +- .../metrics/redis_rack_middleware_spec.rb | 2 +- .../metrics/requests_rack_middleware_spec.rb | 2 +- .../metrics/samplers/database_sampler_spec.rb | 2 +- .../metrics/samplers/puma_sampler_spec.rb | 2 +- .../metrics/samplers/ruby_sampler_spec.rb | 2 +- .../metrics/samplers/unicorn_sampler_spec.rb | 2 +- .../gitlab/metrics/sidekiq_middleware_spec.rb | 31 +- .../metrics/subscribers/action_view_spec.rb | 2 +- .../metrics/subscribers/active_record_spec.rb | 241 +- .../metrics/subscribers/rails_cache_spec.rb | 2 +- spec/lib/gitlab/metrics/system_spec.rb | 2 +- spec/lib/gitlab/metrics/transaction_spec.rb | 13 +- .../gitlab/metrics/web_transaction_spec.rb | 34 +- spec/lib/gitlab/metrics_spec.rb | 2 +- .../middleware/basic_health_check_spec.rb | 2 +- spec/lib/gitlab/middleware/go_spec.rb | 2 +- .../handle_ip_spoof_attack_error_spec.rb | 2 +- spec/lib/gitlab/middleware/multipart_spec.rb | 80 +- .../middleware/rails_queue_duration_spec.rb | 2 +- spec/lib/gitlab/middleware/read_only_spec.rb | 2 +- .../lib/gitlab/middleware/release_env_spec.rb | 2 +- .../gitlab/middleware/request_context_spec.rb | 2 +- .../middleware/same_site_cookies_spec.rb | 2 +- spec/lib/gitlab/monitor/demo_projects_spec.rb | 2 +- .../gitlab/multi_collection_paginator_spec.rb | 2 +- .../gitlab/multi_destination_logger_spec.rb | 2 +- .../gitlab/namespaced_session_store_spec.rb | 2 +- spec/lib/gitlab/no_cache_headers_spec.rb | 2 +- spec/lib/gitlab/noteable_metadata_spec.rb | 2 +- spec/lib/gitlab/null_request_store_spec.rb | 2 +- spec/lib/gitlab/object_hierarchy_spec.rb | 2 +- spec/lib/gitlab/octokit/middleware_spec.rb | 2 +- spec/lib/gitlab/omniauth_initializer_spec.rb | 2 +- .../omniauth_logging/json_formatter_spec.rb | 2 +- spec/lib/gitlab/optimistic_locking_spec.rb | 2 +- spec/lib/gitlab/other_markup_spec.rb | 2 +- spec/lib/gitlab/otp_key_rotator_spec.rb | 2 +- spec/lib/gitlab/pages_spec.rb | 2 +- .../lib/gitlab/pagination/keyset/page_spec.rb | 2 +- .../gitlab/pagination/keyset/pager_spec.rb | 2 +- .../pagination/keyset/request_context_spec.rb | 2 +- spec/lib/gitlab/pagination/keyset_spec.rb | 2 +- .../pagination/offset_pagination_spec.rb | 2 +- .../action_dispatch_journey_formatter_spec.rb | 2 +- spec/lib/gitlab/patch/draw_route_spec.rb | 2 +- spec/lib/gitlab/patch/prependable_spec.rb | 2 +- spec/lib/gitlab/path_regex_spec.rb | 2 +- .../with_top_level_warnings_spec.rb | 2 +- spec/lib/gitlab/performance_bar_spec.rb | 2 +- .../phabricator_import/cache/map_spec.rb | 2 +- .../phabricator_import/conduit/client_spec.rb | 2 +- .../conduit/maniphest_spec.rb | 2 +- .../conduit/response_spec.rb | 4 +- .../conduit/tasks_response_spec.rb | 2 +- .../phabricator_import/conduit/user_spec.rb | 2 +- .../conduit/users_response_spec.rb | 2 +- .../phabricator_import/importer_spec.rb | 2 +- .../issues/importer_spec.rb | 2 +- .../issues/task_importer_spec.rb | 2 +- .../project_creator_spec.rb | 2 +- .../representation/task_spec.rb | 2 +- .../representation/user_spec.rb | 2 +- .../phabricator_import/user_finder_spec.rb | 2 +- .../phabricator_import/worker_state_spec.rb | 2 +- spec/lib/gitlab/polling_interval_spec.rb | 2 +- spec/lib/gitlab/popen/runner_spec.rb | 2 +- spec/lib/gitlab/popen_spec.rb | 2 +- spec/lib/gitlab/private_commit_email_spec.rb | 2 +- .../process_memory_cache/helper_spec.rb | 2 +- spec/lib/gitlab/profiler_spec.rb | 3 +- .../lib/gitlab/project_authorizations_spec.rb | 2 +- .../lib/gitlab/project_search_results_spec.rb | 2 +- spec/lib/gitlab/project_template_spec.rb | 4 +- spec/lib/gitlab/project_transfer_spec.rb | 2 +- spec/lib/gitlab/prometheus/adapter_spec.rb | 2 +- .../additional_metrics_parser_spec.rb | 2 +- spec/lib/gitlab/prometheus/internal_spec.rb | 2 +- .../gitlab/prometheus/metric_group_spec.rb | 2 +- ...dditional_metrics_deployment_query_spec.rb | 2 +- ...ditional_metrics_environment_query_spec.rb | 2 +- .../queries/deployment_query_spec.rb | 2 +- .../queries/knative_invocation_query_spec.rb | 2 +- .../queries/matched_metric_query_spec.rb | 2 +- .../prometheus/queries/validate_query_spec.rb | 2 +- .../gitlab/prometheus/query_variables_spec.rb | 2 +- spec/lib/gitlab/prometheus_client_spec.rb | 40 +- .../puma_logging/json_formatter_spec.rb | 2 +- spec/lib/gitlab/push_options_spec.rb | 2 +- .../active_support_subscriber_spec.rb | 2 +- .../gitlab/query_limiting/middleware_spec.rb | 2 +- .../gitlab/query_limiting/transaction_spec.rb | 2 +- spec/lib/gitlab/query_limiting_spec.rb | 2 +- .../quick_actions/command_definition_spec.rb | 2 +- spec/lib/gitlab/quick_actions/dsl_spec.rb | 2 +- .../gitlab/quick_actions/extractor_spec.rb | 2 +- .../spend_time_and_date_separator_spec.rb | 2 +- .../substitution_definition_spec.rb | 2 +- spec/lib/gitlab/rate_limit_helpers_spec.rb | 2 +- .../gitlab/reactive_cache_set_cache_spec.rb | 2 +- spec/lib/gitlab/redis/boolean_spec.rb | 2 +- spec/lib/gitlab/redis/cache_spec.rb | 2 +- spec/lib/gitlab/redis/queues_spec.rb | 2 +- spec/lib/gitlab/redis/shared_state_spec.rb | 2 +- spec/lib/gitlab/redis/wrapper_spec.rb | 2 +- spec/lib/gitlab/reference_counter_spec.rb | 2 +- spec/lib/gitlab/reference_extractor_spec.rb | 2 +- spec/lib/gitlab/regex_spec.rb | 35 +- spec/lib/gitlab/repo_path_spec.rb | 2 +- .../gitlab/repository_cache_adapter_spec.rb | 2 +- spec/lib/gitlab/repository_cache_spec.rb | 2 +- spec/lib/gitlab/repository_hash_cache_spec.rb | 2 +- spec/lib/gitlab/repository_set_cache_spec.rb | 2 +- .../gitlab/repository_size_checker_spec.rb | 2 +- .../repository_size_error_message_spec.rb | 2 +- .../lib/gitlab/repository_url_builder_spec.rb | 2 +- spec/lib/gitlab/request_context_spec.rb | 2 +- .../gitlab/request_forgery_protection_spec.rb | 2 +- .../gitlab/request_profiler/profile_spec.rb | 2 +- spec/lib/gitlab/request_profiler_spec.rb | 2 +- spec/lib/gitlab/route_map_spec.rb | 2 +- spec/lib/gitlab/routing_spec.rb | 2 +- .../lib/gitlab/rugged_instrumentation_spec.rb | 2 +- spec/lib/gitlab/runtime_spec.rb | 44 +- spec/lib/gitlab/safe_request_store_spec.rb | 2 +- spec/lib/gitlab/sanitizers/exif_spec.rb | 2 +- spec/lib/gitlab/sanitizers/svg_spec.rb | 2 +- spec/lib/gitlab/search/found_blob_spec.rb | 2 +- .../lib/gitlab/search/found_wiki_page_spec.rb | 2 +- spec/lib/gitlab/search/query_spec.rb | 2 +- .../lib/gitlab/search_context/builder_spec.rb | 2 +- .../search_context/controller_concern_spec.rb | 2 +- spec/lib/gitlab/search_results_spec.rb | 2 +- .../gitlab/serializer/ci/variables_spec.rb | 2 +- spec/lib/gitlab/serializer/pagination_spec.rb | 2 +- spec/lib/gitlab/serverless/service_spec.rb | 2 +- spec/lib/gitlab/service_desk_email_spec.rb | 59 + spec/lib/gitlab/service_desk_spec.rb | 56 + spec/lib/gitlab/session_spec.rb | 2 +- spec/lib/gitlab/shard_health_cache_spec.rb | 2 +- spec/lib/gitlab/shell_spec.rb | 2 +- spec/lib/gitlab/sherlock/collection_spec.rb | 2 +- spec/lib/gitlab/sherlock/file_sample_spec.rb | 2 +- .../lib/gitlab/sherlock/line_profiler_spec.rb | 2 +- spec/lib/gitlab/sherlock/line_sample_spec.rb | 2 +- spec/lib/gitlab/sherlock/location_spec.rb | 2 +- spec/lib/gitlab/sherlock/middleware_spec.rb | 2 +- spec/lib/gitlab/sherlock/query_spec.rb | 2 +- spec/lib/gitlab/sherlock/transaction_spec.rb | 2 +- spec/lib/gitlab/sidekiq_cluster/cli_spec.rb | 2 +- spec/lib/gitlab/sidekiq_cluster_spec.rb | 2 +- .../gitlab/sidekiq_config/cli_methods_spec.rb | 2 +- spec/lib/gitlab/sidekiq_config/worker_spec.rb | 2 +- spec/lib/gitlab/sidekiq_config_spec.rb | 2 +- .../sidekiq_daemon/memory_killer_spec.rb | 2 +- .../lib/gitlab/sidekiq_daemon/monitor_spec.rb | 2 +- .../deduplication_logger_spec.rb | 7 +- .../sidekiq_logging/exception_handler_spec.rb | 2 +- .../sidekiq_logging/json_formatter_spec.rb | 2 +- .../sidekiq_logging/structured_logger_spec.rb | 2 +- .../admin_mode/client_spec.rb | 2 +- .../admin_mode/server_spec.rb | 2 +- .../sidekiq_middleware/client_metrics_spec.rb | 2 +- .../duplicate_jobs/client_spec.rb | 2 +- .../duplicate_jobs/duplicate_job_spec.rb | 2 +- .../duplicate_jobs/server_spec.rb | 2 +- .../strategies/until_executing_spec.rb | 16 +- .../duplicate_jobs/strategies_spec.rb | 2 +- .../extra_done_log_metadata_spec.rb | 2 +- .../sidekiq_middleware/memory_killer_spec.rb | 2 +- .../gitlab/sidekiq_middleware/monitor_spec.rb | 2 +- .../sidekiq_middleware/server_metrics_spec.rb | 2 +- .../worker_context/client_spec.rb | 2 +- .../worker_context/server_spec.rb | 2 +- spec/lib/gitlab/sidekiq_middleware_spec.rb | 2 +- spec/lib/gitlab/sidekiq_queue_spec.rb | 2 +- spec/lib/gitlab/sidekiq_signals_spec.rb | 2 +- .../sidekiq_status/client_middleware_spec.rb | 2 +- .../sidekiq_status/server_middleware_spec.rb | 2 +- spec/lib/gitlab/sidekiq_status_spec.rb | 2 +- .../gitlab/sidekiq_versioning/manager_spec.rb | 2 +- spec/lib/gitlab/sidekiq_versioning_spec.rb | 2 +- .../slash_commands/application_help_spec.rb | 2 +- .../lib/gitlab/slash_commands/command_spec.rb | 2 +- spec/lib/gitlab/slash_commands/deploy_spec.rb | 2 +- .../gitlab/slash_commands/issue_close_spec.rb | 2 +- .../slash_commands/issue_comment_spec.rb | 2 +- .../gitlab/slash_commands/issue_move_spec.rb | 2 +- .../gitlab/slash_commands/issue_new_spec.rb | 2 +- .../slash_commands/issue_search_spec.rb | 2 +- .../gitlab/slash_commands/issue_show_spec.rb | 2 +- .../slash_commands/presenters/access_spec.rb | 2 +- .../slash_commands/presenters/deploy_spec.rb | 2 +- .../slash_commands/presenters/error_spec.rb | 2 +- .../presenters/issue_close_spec.rb | 2 +- .../presenters/issue_comment_spec.rb | 2 +- .../presenters/issue_move_spec.rb | 2 +- .../presenters/issue_new_spec.rb | 2 +- .../presenters/issue_search_spec.rb | 2 +- .../presenters/issue_show_spec.rb | 2 +- .../slash_commands/presenters/run_spec.rb | 2 +- spec/lib/gitlab/slash_commands/run_spec.rb | 2 +- spec/lib/gitlab/slug/environment_spec.rb | 2 +- .../lib/gitlab/snippet_search_results_spec.rb | 2 +- spec/lib/gitlab/sourcegraph_spec.rb | 2 +- spec/lib/gitlab/sql/cte_spec.rb | 2 +- spec/lib/gitlab/sql/glob_spec.rb | 2 +- spec/lib/gitlab/sql/pattern_spec.rb | 2 +- spec/lib/gitlab/sql/recursive_cte_spec.rb | 2 +- spec/lib/gitlab/sql/union_spec.rb | 2 +- spec/lib/gitlab/ssh_public_key_spec.rb | 2 +- .../gitlab/static_site_editor/config_spec.rb | 33 +- .../string_placeholder_replacer_spec.rb | 2 +- spec/lib/gitlab/string_range_marker_spec.rb | 2 +- spec/lib/gitlab/string_regex_marker_spec.rb | 2 +- spec/lib/gitlab/submodule_links_spec.rb | 2 +- .../gitlab/suggestions/commit_message_spec.rb | 2 +- .../suggestions/file_suggestion_spec.rb | 357 +- .../gitlab/suggestions/suggestion_set_spec.rb | 7 +- spec/lib/gitlab/tab_width_spec.rb | 2 +- spec/lib/gitlab/tcp_checker_spec.rb | 2 +- .../finders/global_template_finder_spec.rb | 2 +- .../finders/repo_template_finders_spec.rb | 2 +- .../template/gitignore_template_spec.rb | 2 +- .../template/gitlab_ci_yml_template_spec.rb | 2 +- .../gitlab/template/issue_template_spec.rb | 2 +- .../template/merge_request_template_spec.rb | 2 +- spec/lib/gitlab/themes_spec.rb | 2 +- spec/lib/gitlab/throttle_spec.rb | 2 +- .../gitlab/time_tracking_formatter_spec.rb | 2 +- .../tracking/incident_management_spec.rb | 2 +- spec/lib/gitlab/tracking_spec.rb | 2 +- spec/lib/gitlab/tree_summary_spec.rb | 27 +- .../untrusted_regexp/ruby_syntax_spec.rb | 2 +- spec/lib/gitlab/untrusted_regexp_spec.rb | 2 +- .../gitlab/updated_notes_paginator_spec.rb | 57 + spec/lib/gitlab/uploads_transfer_spec.rb | 2 +- spec/lib/gitlab/url_blocker_spec.rb | 2 +- .../domain_whitelist_entry_spec.rb | 2 +- .../url_blockers/ip_whitelist_entry_spec.rb | 2 +- .../gitlab/url_blockers/url_whitelist_spec.rb | 2 +- spec/lib/gitlab/url_builder_spec.rb | 39 +- spec/lib/gitlab/url_sanitizer_spec.rb | 2 +- spec/lib/gitlab/usage_data/topology_spec.rb | 562 + .../usage_data_concerns/topology_spec.rb | 220 - .../cycle_analytics_counter_spec.rb | 2 +- .../designs_counter_spec.rb | 2 +- .../merge_request_counter_spec.rb | 2 +- .../usage_data_counters/note_counter_spec.rb | 2 +- .../productivity_analytics_counter_spec.rb | 2 +- .../usage_data_counters/redis_counter_spec.rb | 2 +- .../search_counter_spec.rb | 2 +- .../snippet_counter_spec.rb | 2 +- .../source_code_counter_spec.rb | 2 +- .../track_unique_actions_spec.rb | 82 + .../web_ide_counter_spec.rb | 2 +- .../wiki_page_counter_spec.rb | 2 +- spec/lib/gitlab/usage_data_spec.rb | 453 +- spec/lib/gitlab/user_access_snippet_spec.rb | 2 +- spec/lib/gitlab/user_access_spec.rb | 2 +- spec/lib/gitlab/utils/deep_size_spec.rb | 2 +- spec/lib/gitlab/utils/inline_hash_spec.rb | 2 +- .../gitlab/utils/json_size_estimator_spec.rb | 2 +- spec/lib/gitlab/utils/lazy_attributes_spec.rb | 2 +- .../gitlab/utils/log_limited_array_spec.rb | 2 +- spec/lib/gitlab/utils/markdown_spec.rb | 63 + spec/lib/gitlab/utils/measuring_spec.rb | 2 +- spec/lib/gitlab/utils/merge_hash_spec.rb | 2 +- spec/lib/gitlab/utils/override_spec.rb | 2 +- .../lib/gitlab/utils/safe_inline_hash_spec.rb | 2 +- .../gitlab/utils/sanitize_node_link_spec.rb | 2 +- spec/lib/gitlab/utils/strong_memoize_spec.rb | 2 +- spec/lib/gitlab/utils/usage_data_spec.rb | 22 +- spec/lib/gitlab/utils_spec.rb | 38 +- spec/lib/gitlab/verify/job_artifacts_spec.rb | 2 +- spec/lib/gitlab/verify/lfs_objects_spec.rb | 2 +- spec/lib/gitlab/verify/uploads_spec.rb | 2 +- spec/lib/gitlab/version_info_spec.rb | 2 +- spec/lib/gitlab/view/presenter/base_spec.rb | 2 +- .../gitlab/view/presenter/delegated_spec.rb | 2 +- .../lib/gitlab/view/presenter/factory_spec.rb | 2 +- spec/lib/gitlab/view/presenter/simple_spec.rb | 2 +- .../gitlab/visibility_level_checker_spec.rb | 2 +- spec/lib/gitlab/visibility_level_spec.rb | 2 +- .../web_ide/config/entry/global_spec.rb | 2 +- .../web_ide/config/entry/terminal_spec.rb | 2 +- spec/lib/gitlab/web_ide/config_spec.rb | 2 +- spec/lib/gitlab/wiki_file_finder_spec.rb | 2 +- .../wiki_pages/front_matter_parser_spec.rb | 2 +- spec/lib/gitlab/with_request_store_spec.rb | 2 +- spec/lib/gitlab/workhorse_spec.rb | 2 +- spec/lib/gitlab/x509/commit_spec.rb | 2 +- spec/lib/gitlab/x509/signature_spec.rb | 2 +- spec/lib/gitlab/x509/tag_spec.rb | 2 +- spec/lib/gitlab/zoom_link_extractor_spec.rb | 2 +- spec/lib/gitlab_danger_spec.rb | 2 +- spec/lib/gitlab_spec.rb | 2 +- spec/lib/google_api/auth_spec.rb | 2 +- .../google_api/cloud_platform/client_spec.rb | 2 +- spec/lib/grafana/client_spec.rb | 2 +- spec/lib/grafana/time_window_spec.rb | 6 +- spec/lib/grafana/validator_spec.rb | 2 +- spec/lib/json_web_token/hmac_token_spec.rb | 2 +- spec/lib/json_web_token/rsa_token_spec.rb | 2 +- spec/lib/json_web_token/token_spec.rb | 2 +- .../parser/atlassian_document_format_spec.rb | 77 + spec/lib/learn_gitlab_spec.rb | 61 + spec/lib/marginalia_spec.rb | 2 +- spec/lib/mattermost/client_spec.rb | 2 +- spec/lib/mattermost/command_spec.rb | 2 +- spec/lib/mattermost/session_spec.rb | 2 +- spec/lib/mattermost/team_spec.rb | 2 +- spec/lib/microsoft_teams/activity_spec.rb | 2 +- spec/lib/microsoft_teams/notifier_spec.rb | 2 +- spec/lib/object_storage/direct_upload_spec.rb | 45 +- spec/lib/omni_auth/strategies/jwt_spec.rb | 2 +- .../pager_duty/webhook_payload_parser_spec.rb | 80 + spec/lib/peek/views/bullet_detailed_spec.rb | 2 +- spec/lib/peek/views/detailed_view_spec.rb | 2 +- spec/lib/peek/views/redis_detailed_spec.rb | 2 +- spec/lib/peek/views/rugged_spec.rb | 2 +- .../product_analytics/event_params_spec.rb | 54 + .../cleanup_multiproc_dir_service_spec.rb | 2 +- spec/lib/prometheus/pid_provider_spec.rb | 2 +- spec/lib/quality/test_level_spec.rb | 4 +- spec/lib/rspec_flaky/config_spec.rb | 2 +- spec/lib/rspec_flaky/example_spec.rb | 2 +- spec/lib/rspec_flaky/flaky_example_spec.rb | 2 +- .../flaky_examples_collection_spec.rb | 2 +- spec/lib/rspec_flaky/listener_spec.rb | 2 +- spec/lib/rspec_flaky/report_spec.rb | 2 +- spec/lib/safe_zip/entry_spec.rb | 2 +- spec/lib/safe_zip/extract_params_spec.rb | 2 +- spec/lib/safe_zip/extract_spec.rb | 2 +- spec/lib/sentry/api_urls_spec.rb | 2 +- spec/lib/sentry/client/event_spec.rb | 2 +- spec/lib/sentry/client/issue_link_spec.rb | 2 +- spec/lib/sentry/client/issue_spec.rb | 3 +- spec/lib/sentry/client/projects_spec.rb | 2 +- spec/lib/sentry/client/repo_spec.rb | 2 +- spec/lib/sentry/client_spec.rb | 2 +- spec/lib/sentry/pagination_parser_spec.rb | 5 +- spec/lib/serializers/json_spec.rb | 2 +- .../authorized_keys_permission_check_spec.rb | 2 +- .../git_user_default_ssh_config_check_spec.rb | 2 +- .../hashed_storage_all_projects_check_spec.rb | 2 +- .../app/hashed_storage_enabled_check_spec.rb | 2 +- spec/lib/system_check/base_check_spec.rb | 2 +- .../orphans/namespace_check_spec.rb | 2 +- .../orphans/repository_check_spec.rb | 2 +- spec/lib/system_check/simple_executor_spec.rb | 2 +- spec/lib/system_check_spec.rb | 2 +- spec/lib/uploaded_file_spec.rb | 2 +- spec/mailers/abuse_report_mailer_spec.rb | 2 +- spec/mailers/devise_mailer_spec.rb | 38 + spec/mailers/email_rejection_mailer_spec.rb | 2 +- spec/mailers/emails/auto_devops_spec.rb | 2 +- spec/mailers/emails/groups_spec.rb | 2 +- spec/mailers/emails/issues_spec.rb | 2 +- spec/mailers/emails/merge_requests_spec.rb | 18 +- spec/mailers/emails/pages_domains_spec.rb | 2 +- spec/mailers/emails/pipelines_spec.rb | 2 +- spec/mailers/emails/profile_spec.rb | 2 +- spec/mailers/emails/projects_spec.rb | 2 +- spec/mailers/emails/releases_spec.rb | 2 +- spec/mailers/emails/service_desk_spec.rb | 188 + spec/mailers/notify_spec.rb | 83 +- spec/mailers/repository_check_mailer_spec.rb | 2 +- ...152703_migrate_issue_trackers_data_spec.rb | 2 +- ..._code_owner_approval_from_projects_spec.rb | 2 +- ...4345_add_admin_mode_protected_path_spec.rb | 2 +- ...91204114127_delete_legacy_triggers_spec.rb | 2 +- ...d_timestamp_softwarelicensespolicy_spec.rb | 2 +- ...22123016_backfill_project_settings_spec.rb | 2 +- ...123155929_remove_invalid_jira_data_spec.rb | 2 +- ..._remove_invalid_issue_tracker_data_spec.rb | 2 +- ...hedule_migrate_issue_trackers_data_spec.rb | 2 +- ...3203550_remove_orphaned_chat_names_spec.rb | 2 +- ...ployment_clusters_from_deployments_spec.rb | 2 +- ...rpolation_format_in_common_metrics_spec.rb | 13 +- .../20200526115436_dedup_mr_metrics_spec.rb | 68 + ...ule_name_for_code_owners_rule_type_spec.rb | 175 + ...125016_backfill_namespace_settings_spec.rb | 30 + ...ique_index_alert_management_alerts_spec.rb | 57 + spec/migrations/active_record/schema_spec.rb | 4 +- .../add_default_and_free_plans_spec.rb | 2 +- ...stream_to_groups_with_group_stages_spec.rb | 44 + ...deploy_token_type_to_deploy_tokens_spec.rb | 2 +- ..._settings_to_all_existing_projects_spec.rb | 4 +- ...al_index_on_project_id_to_services_spec.rb | 2 +- ...ovals_user_id_and_merge_request_id_spec.rb | 2 +- ...leased_at_column_on_releases_table_spec.rb | 2 +- ...fill_imported_snippet_repositories_spec.rb | 2 +- ...ll_operations_feature_flags_active_spec.rb | 2 +- ...kfill_operations_feature_flags_iid_spec.rb | 2 +- ...not_null_constraints_to_timestamps_spec.rb | 2 +- .../backfill_snippet_repositories_spec.rb | 2 +- ...ll_status_page_published_incidents_spec.rb | 2 +- .../backport_enterprise_schema_spec.rb | 2 +- ...signs_filename_length_to_new_limit_spec.rb | 2 +- ...d_local_requests_whitelist_default_spec.rb | 2 +- ...ize_defaults_in_project_statistics_spec.rb | 2 +- spec/migrations/clean_grafana_url_spec.rb | 2 +- ...p_noteable_id_for_notes_on_commits_spec.rb | 2 +- ...cleanup_empty_commit_user_mentions_spec.rb | 2 +- .../cleanup_legacy_artifact_migration_spec.rb | 2 +- ...optimistic_locking_nulls_pt2_fixed_spec.rb | 2 +- .../cleanup_optimistic_locking_nulls_spec.rb | 2 +- ...up_projects_with_missing_namespace_spec.rb | 2 +- .../confirm_project_bot_users_spec.rb | 84 + ...onment_for_self_monitoring_project_spec.rb | 2 +- ...rnal_ids_where_feature_flags_usage_spec.rb | 2 +- .../delete_template_project_services_spec.rb | 2 +- ...mplate_services_duplicated_by_type_spec.rb | 2 +- .../delete_user_callout_alerts_moved_spec.rb | 30 + ...rometheus_services_background_jobs_spec.rb | 2 +- .../drop_background_migration_jobs_spec.rb | 2 +- ...i_cd_settings_merge_trains_enabled_spec.rb | 2 +- ...crypt_feature_flags_clients_tokens_spec.rb | 2 +- ...attributes_on_application_settings_spec.rb | 2 +- ...ueue_reset_merge_status_second_run_spec.rb | 2 +- .../enqueue_reset_merge_status_spec.rb | 2 +- .../fill_file_store_ci_job_artifacts_spec.rb | 2 +- .../fill_file_store_lfs_objects_spec.rb | 2 +- ..._productivity_analytics_start_date_spec.rb | 2 +- spec/migrations/fill_store_uploads_spec.rb | 2 +- spec/migrations/fix_max_pages_size_spec.rb | 2 +- spec/migrations/fix_null_type_labels_spec.rb | 2 +- ..._pool_repository_source_project_id_spec.rb | 2 +- ...x_projects_without_project_feature_spec.rb | 2 +- ...ojects_without_prometheus_services_spec.rb | 2 +- .../fix_wrong_pages_access_level_spec.rb | 2 +- .../generate_lets_encrypt_private_key_spec.rb | 2 +- .../generate_missing_routes_for_bots_spec.rb | 80 + .../insert_project_hooks_plan_limits_spec.rb | 2 +- ...o_dev_ops_domain_to_cluster_domain_spec.rb | 2 +- .../migrate_bot_type_to_user_type_spec.rb | 2 +- ...s_to_protected_branches_in_batches_spec.rb | 2 +- ...igrate_commit_notes_mentions_to_db_spec.rb | 2 +- ...mit_signature_worker_sidekiq_queue_spec.rb | 2 +- ...te_discussion_id_on_promoted_epics_spec.rb | 2 +- .../migrate_k8s_service_integration_spec.rb | 2 +- ...gacy_managed_clusters_to_unmanaged_spec.rb | 2 +- ...lusters_with_no_token_to_unmanaged_spec.rb | 2 +- ...grate_merge_request_mentions_to_db_spec.rb | 2 +- ...ature_flags_scopes_target_user_ids_spec.rb | 2 +- ...ate_storage_migrator_sidekiq_queue_spec.rb | 2 +- ...ore_security_reports_sidekiq_queue_spec.rb | 2 +- ...eport_approval_rules_sidekiq_queue_spec.rb | 2 +- .../migrations/move_limits_from_plans_spec.rb | 2 +- spec/migrations/nullify_users_role_spec.rb | 2 +- ...e_project_statistics_packages_size_spec.rb | 2 +- ...pe_on_approval_merge_request_rules_spec.rb | 2 +- ...ditional_application_settings_rows_spec.rb | 2 +- ...deprecated_jenkins_service_records_spec.rb | 6 +- ...move_duplicate_labels_from_project_spec.rb | 238 + ...ove_empty_github_service_templates_spec.rb | 2 +- ...tlab_issue_tracker_service_records_spec.rb | 19 + .../remove_orphaned_invited_members_spec.rb | 2 +- ...e_packages_deprecated_dependencies_spec.rb | 2 +- ...ve_security_dashboard_feature_flag_spec.rb | 2 +- ...lag_to_instance_security_dashboard_spec.rb | 2 +- ...e_instance_administrators_group_id_spec.rb | 2 +- ...backfill_push_rules_id_in_projects_spec.rb | 2 +- .../schedule_calculate_wiki_sizes_spec.rb | 60 + ...time_for_pages_domain_certificates_spec.rb | 2 +- ...schedule_link_lfs_objects_projects_spec.rb | 2 +- ...assignees_migration_progress_check_spec.rb | 2 +- .../schedule_migrate_security_scans_spec.rb | 2 +- .../schedule_pages_metadata_migration_spec.rb | 2 +- ...late_merge_request_assignees_table_spec.rb | 2 +- ...opulate_project_snippet_statistics_spec.rb | 61 + ..._populate_user_highest_roles_table_spec.rb | 2 +- ..._project_authorizations_second_run_spec.rb | 2 +- ...recalculate_project_authorizations_spec.rb | 2 +- ...e_project_authorizations_third_run_spec.rb | 2 +- .../schedule_sync_issuables_state_id_spec.rb | 2 +- ..._sync_issuables_state_id_where_nil_spec.rb | 2 +- ...o_match_visibility_level_of_parent_spec.rb | 2 +- .../seed_repository_storages_weighted_spec.rb | 2 +- ...move_temporary_index_on_project_id_spec.rb | 2 +- .../set_issue_id_for_all_versions_spec.rb | 2 +- .../sync_issuables_state_id_spec.rb | 2 +- .../migrations/truncate_user_fullname_spec.rb | 2 +- ...confirm_wrongfully_verified_emails_spec.rb | 21 + ...ackage_requests_forwarding_default_spec.rb | 2 +- ...ate_fingerprint_sha256_within_keys_spec.rb | 2 +- .../update_minimum_password_length_spec.rb | 2 +- ..._found_group_and_orphaned_projects_spec.rb | 2 +- ...e_timestamp_softwarelicensespolicy_spec.rb | 2 +- spec/models/ability_spec.rb | 2 +- spec/models/abuse_report_spec.rb | 2 +- .../alert_management/alert_assignee_spec.rb | 2 +- spec/models/alert_management/alert_spec.rb | 117 +- .../alert_user_mention_spec.rb | 2 +- .../alerting/project_alerting_setting_spec.rb | 2 +- .../cycle_analytics/project_stage_spec.rb | 2 +- spec/models/appearance_spec.rb | 2 +- spec/models/application_record_spec.rb | 9 +- spec/models/application_setting/term_spec.rb | 2 +- spec/models/application_setting_spec.rb | 2 +- spec/models/approval_spec.rb | 16 + spec/models/award_emoji_spec.rb | 2 +- spec/models/aws/role_spec.rb | 2 +- spec/models/badge_spec.rb | 2 +- spec/models/badges/group_badge_spec.rb | 2 +- spec/models/badges/project_badge_spec.rb | 2 +- spec/models/blob_spec.rb | 2 +- spec/models/blob_viewer/base_spec.rb | 2 +- spec/models/blob_viewer/changelog_spec.rb | 2 +- spec/models/blob_viewer/composer_json_spec.rb | 2 +- spec/models/blob_viewer/gemspec_spec.rb | 2 +- spec/models/blob_viewer/gitlab_ci_yml_spec.rb | 2 +- spec/models/blob_viewer/go_mod_spec.rb | 2 +- spec/models/blob_viewer/license_spec.rb | 2 +- .../blob_viewer/metrics_dashboard_yml_spec.rb | 2 +- spec/models/blob_viewer/package_json_spec.rb | 2 +- spec/models/blob_viewer/podspec_json_spec.rb | 2 +- spec/models/blob_viewer/podspec_spec.rb | 2 +- spec/models/blob_viewer/readme_spec.rb | 2 +- spec/models/blob_viewer/route_map_spec.rb | 2 +- spec/models/blob_viewer/server_side_spec.rb | 2 +- spec/models/board_group_recent_visit_spec.rb | 2 +- .../models/board_project_recent_visit_spec.rb | 2 +- spec/models/board_spec.rb | 2 +- spec/models/broadcast_message_spec.rb | 2 +- spec/models/chat_name_spec.rb | 2 +- spec/models/chat_team_spec.rb | 2 +- spec/models/ci/artifact_blob_spec.rb | 2 +- spec/models/ci/bridge_spec.rb | 6 +- spec/models/ci/build_dependencies_spec.rb | 2 +- spec/models/ci/build_metadata_spec.rb | 31 +- spec/models/ci/build_need_spec.rb | 20 +- spec/models/ci/build_report_result_spec.rb | 2 +- spec/models/ci/build_runner_session_spec.rb | 2 +- spec/models/ci/build_spec.rb | 97 +- spec/models/ci/build_trace_chunk_spec.rb | 2 +- .../ci/build_trace_chunks/database_spec.rb | 2 +- spec/models/ci/build_trace_chunks/fog_spec.rb | 2 +- .../ci/build_trace_chunks/redis_spec.rb | 2 +- .../ci/build_trace_section_name_spec.rb | 2 +- spec/models/ci/build_trace_section_spec.rb | 2 +- spec/models/ci/build_trace_spec.rb | 32 +- .../daily_build_group_report_result_spec.rb | 2 +- spec/models/ci/freeze_period_status_spec.rb | 2 +- spec/models/ci/group_spec.rb | 2 +- spec/models/ci/group_variable_spec.rb | 2 +- spec/models/ci/instance_variable_spec.rb | 17 +- spec/models/ci/job_artifact_spec.rb | 125 +- spec/models/ci/job_variable_spec.rb | 2 +- spec/models/ci/legacy_stage_spec.rb | 2 +- spec/models/ci/persistent_ref_spec.rb | 2 +- spec/models/ci/pipeline_config_spec.rb | 2 +- spec/models/ci/pipeline_message_spec.rb | 53 + spec/models/ci/pipeline_schedule_spec.rb | 2 +- .../ci/pipeline_schedule_variable_spec.rb | 2 +- spec/models/ci/pipeline_spec.rb | 255 +- spec/models/ci/pipeline_variable_spec.rb | 2 +- spec/models/ci/processable_spec.rb | 2 +- spec/models/ci/ref_spec.rb | 31 +- spec/models/ci/resource_group_spec.rb | 2 +- spec/models/ci/resource_spec.rb | 2 +- spec/models/ci/runner_spec.rb | 42 +- spec/models/ci/sources/pipeline_spec.rb | 2 +- spec/models/ci/stage_spec.rb | 4 +- spec/models/ci/trigger_request_spec.rb | 2 +- spec/models/ci/trigger_spec.rb | 2 +- spec/models/ci/variable_spec.rb | 2 +- .../applications/cert_manager_spec.rb | 2 +- .../clusters/applications/cilium_spec.rb | 17 + .../clusters/applications/crossplane_spec.rb | 2 +- .../applications/elastic_stack_spec.rb | 16 +- .../clusters/applications/fluentd_spec.rb | 2 +- .../models/clusters/applications/helm_spec.rb | 2 +- .../clusters/applications/ingress_spec.rb | 2 +- .../clusters/applications/jupyter_spec.rb | 2 +- .../clusters/applications/knative_spec.rb | 2 +- .../clusters/applications/prometheus_spec.rb | 2 +- .../clusters/applications/runner_spec.rb | 2 +- spec/models/clusters/cluster_spec.rb | 104 +- .../clusters/clusters_hierarchy_spec.rb | 2 +- spec/models/clusters/group_spec.rb | 2 +- .../clusters/platforms/kubernetes_spec.rb | 48 +- spec/models/clusters/project_spec.rb | 2 +- spec/models/clusters/providers/aws_spec.rb | 2 +- spec/models/clusters/providers/gcp_spec.rb | 2 +- spec/models/commit_collection_spec.rb | 14 +- spec/models/commit_range_spec.rb | 2 +- spec/models/commit_spec.rb | 13 +- spec/models/commit_status_spec.rb | 2 +- spec/models/commit_with_pipeline_spec.rb | 2 +- spec/models/compare_spec.rb | 2 +- .../concerns/access_requestable_spec.rb | 2 +- spec/models/concerns/approvable_base_spec.rb | 62 + .../concerns/atomic_internal_id_spec.rb | 2 +- spec/models/concerns/avatarable_spec.rb | 2 +- spec/models/concerns/awardable_spec.rb | 2 +- ...tch_destroy_dependent_associations_spec.rb | 2 +- .../blob_language_from_git_attributes_spec.rb | 2 +- .../blocks_json_serialization_spec.rb | 2 +- spec/models/concerns/bulk_insert_safe_spec.rb | 181 +- .../bulk_insertable_associations_spec.rb | 2 +- .../concerns/cache_markdown_field_spec.rb | 2 +- .../concerns/cacheable_attributes_spec.rb | 2 +- spec/models/concerns/case_sensitivity_spec.rb | 2 +- spec/models/concerns/checksummable_spec.rb | 2 +- .../chronic_duration_attribute_spec.rb | 8 +- spec/models/concerns/ci/has_ref_spec.rb | 2 +- .../concerns/{ => ci}/has_status_spec.rb | 2 +- spec/models/concerns/ci/has_variable_spec.rb | 2 +- spec/models/concerns/ci/maskable_spec.rb | 2 +- .../models/concerns/delete_with_limit_spec.rb | 2 +- .../concerns/deployment_platform_spec.rb | 237 +- .../concerns/deprecated_assignee_spec.rb | 2 +- .../concerns/discussion_on_diff_spec.rb | 2 +- spec/models/concerns/each_batch_spec.rb | 2 +- spec/models/concerns/editable_spec.rb | 2 +- spec/models/concerns/expirable_spec.rb | 2 +- .../models/concerns/faster_cache_keys_spec.rb | 2 +- spec/models/concerns/featurable_spec.rb | 2 +- spec/models/concerns/feature_gate_spec.rb | 2 +- spec/models/concerns/from_union_spec.rb | 2 +- spec/models/concerns/group_descendant_spec.rb | 2 +- .../concerns/has_environment_scope_spec.rb | 2 +- spec/models/concerns/has_user_type_spec.rb | 2 +- .../models/concerns/ignorable_columns_spec.rb | 2 +- spec/models/concerns/issuable_spec.rb | 23 +- spec/models/concerns/limitable_spec.rb | 2 +- .../concerns/loaded_in_group_list_spec.rb | 2 +- .../manual_inverse_association_spec.rb | 2 +- spec/models/concerns/mentionable_spec.rb | 14 +- spec/models/concerns/milestoneable_spec.rb | 2 +- spec/models/concerns/milestoneish_spec.rb | 2 +- spec/models/concerns/noteable_spec.rb | 42 +- .../models/concerns/optionally_search_spec.rb | 2 +- spec/models/concerns/participable_spec.rb | 2 +- .../models/concerns/partitioned_table_spec.rb | 35 + spec/models/concerns/presentable_spec.rb | 2 +- .../project_api_compatibility_spec.rb | 2 +- .../project_features_compatibility_spec.rb | 2 +- .../concerns/prometheus_adapter_spec.rb | 2 +- .../concerns/protected_ref_access_spec.rb | 2 +- spec/models/concerns/reactive_caching_spec.rb | 36 +- spec/models/concerns/redactable_spec.rb | 2 +- spec/models/concerns/redis_cacheable_spec.rb | 2 +- .../concerns/resolvable_discussion_spec.rb | 2 +- spec/models/concerns/resolvable_note_spec.rb | 2 +- spec/models/concerns/routable_spec.rb | 4 +- spec/models/concerns/safe_url_spec.rb | 2 +- spec/models/concerns/schedulable_spec.rb | 2 +- spec/models/concerns/sha256_attribute_spec.rb | 2 +- spec/models/concerns/sha_attribute_spec.rb | 2 +- spec/models/concerns/sortable_spec.rb | 2 +- spec/models/concerns/spammable_spec.rb | 2 +- spec/models/concerns/stepable_spec.rb | 2 +- spec/models/concerns/strip_attribute_spec.rb | 2 +- spec/models/concerns/subscribable_spec.rb | 2 +- .../concerns/token_authenticatable_spec.rb | 10 +- .../base_spec.rb | 2 +- .../encrypted_spec.rb | 2 +- spec/models/concerns/uniquify_spec.rb | 2 +- spec/models/concerns/usage_statistics_spec.rb | 2 +- spec/models/concerns/where_composite_spec.rb | 2 +- .../x509_serial_number_attribute_spec.rb | 2 +- spec/models/container_registry/event_spec.rb | 2 +- spec/models/container_repository_spec.rb | 2 +- spec/models/custom_emoji_spec.rb | 31 + spec/models/cycle_analytics/code_spec.rb | 2 +- spec/models/cycle_analytics/issue_spec.rb | 2 +- spec/models/cycle_analytics/plan_spec.rb | 2 +- .../models/cycle_analytics/production_spec.rb | 2 +- .../cycle_analytics/project_level_spec.rb | 2 +- spec/models/cycle_analytics/review_spec.rb | 2 +- spec/models/cycle_analytics/staging_spec.rb | 2 +- spec/models/cycle_analytics/test_spec.rb | 2 +- spec/models/deploy_key_spec.rb | 2 +- spec/models/deploy_keys_project_spec.rb | 17 +- spec/models/deploy_token_spec.rb | 2 +- spec/models/deployment_cluster_spec.rb | 2 +- spec/models/deployment_merge_request_spec.rb | 2 +- spec/models/deployment_metrics_spec.rb | 2 +- spec/models/deployment_spec.rb | 2 +- spec/models/description_version_spec.rb | 2 +- spec/models/design_management/action_spec.rb | 2 +- .../design_management/design_action_spec.rb | 2 +- .../design_at_version_spec.rb | 2 +- .../design_collection_spec.rb | 2 +- spec/models/design_management/design_spec.rb | 2 +- .../design_management/repository_spec.rb | 2 +- spec/models/design_management/version_spec.rb | 2 +- spec/models/design_user_mention_spec.rb | 2 +- spec/models/dev_ops_score/metric_spec.rb | 2 +- spec/models/diff_discussion_spec.rb | 2 +- spec/models/diff_note_position_spec.rb | 2 +- spec/models/diff_note_spec.rb | 2 +- spec/models/diff_viewer/base_spec.rb | 2 +- spec/models/diff_viewer/server_side_spec.rb | 2 +- spec/models/discussion_spec.rb | 2 +- spec/models/draft_note_spec.rb | 2 +- spec/models/email_spec.rb | 2 +- spec/models/environment_spec.rb | 17 +- spec/models/environment_status_spec.rb | 2 +- .../project_error_tracking_setting_spec.rb | 2 +- spec/models/event_collection_spec.rb | 51 +- spec/models/event_spec.rb | 20 +- spec/models/external_issue_spec.rb | 2 +- spec/models/external_pull_request_spec.rb | 2 +- spec/models/fork_network_member_spec.rb | 2 +- spec/models/fork_network_spec.rb | 2 +- spec/models/generic_commit_status_spec.rb | 2 +- spec/models/gpg_key_spec.rb | 2 +- spec/models/gpg_key_subkey_spec.rb | 2 +- spec/models/grafana_integration_spec.rb | 2 +- spec/models/group_custom_attribute_spec.rb | 2 +- spec/models/group_deploy_key_spec.rb | 2 +- spec/models/group_group_link_spec.rb | 2 +- spec/models/group_import_state_spec.rb | 2 +- spec/models/group_label_spec.rb | 2 +- spec/models/group_spec.rb | 229 +- spec/models/guest_spec.rb | 2 +- spec/models/hooks/active_hook_filter_spec.rb | 2 +- spec/models/hooks/project_hook_spec.rb | 2 +- spec/models/hooks/service_hook_spec.rb | 2 +- spec/models/hooks/system_hook_spec.rb | 2 +- spec/models/hooks/web_hook_log_spec.rb | 2 +- spec/models/hooks/web_hook_spec.rb | 2 +- spec/models/identity_spec.rb | 2 +- spec/models/import_export_upload_spec.rb | 2 +- spec/models/import_failure_spec.rb | 2 +- ...roject_incident_management_setting_spec.rb | 40 +- spec/models/instance_configuration_spec.rb | 2 +- spec/models/integration_spec.rb | 11 +- spec/models/internal_id_spec.rb | 2 +- spec/models/issue/metrics_spec.rb | 2 +- spec/models/issue_assignee_spec.rb | 35 +- spec/models/issue_collection_spec.rb | 2 +- spec/models/issue_spec.rb | 51 +- spec/models/iteration_spec.rb | 29 +- spec/models/jira_import_state_spec.rb | 2 +- spec/models/key_spec.rb | 2 +- spec/models/label_link_spec.rb | 2 +- spec/models/label_note_spec.rb | 2 +- spec/models/label_priority_spec.rb | 2 +- spec/models/label_spec.rb | 2 +- spec/models/legacy_diff_discussion_spec.rb | 2 +- spec/models/lfs_download_object_spec.rb | 2 +- spec/models/lfs_file_lock_spec.rb | 2 +- spec/models/lfs_object_spec.rb | 2 +- spec/models/lfs_objects_project_spec.rb | 2 +- spec/models/license_template_spec.rb | 2 +- spec/models/list_spec.rb | 2 +- spec/models/list_user_preference_spec.rb | 2 +- spec/models/member_spec.rb | 24 +- spec/models/members/group_member_spec.rb | 54 +- spec/models/members/project_member_spec.rb | 2 +- spec/models/merge_request/metrics_spec.rb | 2 +- spec/models/merge_request_assignee_spec.rb | 24 +- ...e_request_context_commit_diff_file_spec.rb | 2 +- .../merge_request_context_commit_spec.rb | 2 +- spec/models/merge_request_diff_commit_spec.rb | 2 +- spec/models/merge_request_diff_file_spec.rb | 2 +- spec/models/merge_request_diff_spec.rb | 115 +- spec/models/merge_request_spec.rb | 122 +- .../metrics/dashboard/annotation_spec.rb | 2 +- .../metrics/users_starred_dashboard_spec.rb | 2 +- spec/models/milestone_note_spec.rb | 6 +- spec/models/milestone_release_spec.rb | 2 +- spec/models/milestone_spec.rb | 2 +- .../namespace/root_storage_size_spec.rb | 67 - .../namespace/root_storage_statistics_spec.rb | 47 +- .../namespace/traversal_hierarchy_spec.rb | 63 + spec/models/namespace_setting_spec.rb | 7 + spec/models/namespace_spec.rb | 51 +- spec/models/network/graph_spec.rb | 2 +- spec/models/note_diff_file_spec.rb | 2 +- spec/models/note_spec.rb | 2 +- spec/models/notification_recipient_spec.rb | 2 +- spec/models/oauth_access_grant_spec.rb | 2 +- spec/models/oauth_access_token_spec.rb | 2 +- .../packages/composer/metadatum_spec.rb | 14 + .../packages/conan/file_metadatum_spec.rb | 106 + spec/models/packages/conan/metadatum_spec.rb | 90 + spec/models/packages/dependency_link_spec.rb | 56 + spec/models/packages/dependency_spec.rb | 113 + spec/models/packages/go/module_spec.rb | 59 + .../models/packages/go/module_version_spec.rb | 114 + spec/models/packages/maven/metadatum_spec.rb | 40 + .../nuget/dependency_link_metadatum_spec.rb | 32 + spec/models/packages/nuget/metadatum_spec.rb | 44 + spec/models/packages/package_file_spec.rb | 69 + spec/models/packages/package_spec.rb | 485 + spec/models/packages/pypi/metadatum_spec.rb | 22 + spec/models/packages/sem_ver_spec.rb | 42 + spec/models/packages/tag_spec.rb | 62 + spec/models/pages/lookup_path_spec.rb | 2 +- spec/models/pages/virtual_domain_spec.rb | 2 +- spec/models/pages_domain_acme_order_spec.rb | 2 +- spec/models/pages_domain_spec.rb | 2 +- .../prometheus_dashboard_spec.rb | 16 +- .../prometheus_metric_spec.rb | 2 +- .../prometheus_panel_group_spec.rb | 2 +- .../prometheus_panel_spec.rb | 2 +- spec/models/personal_access_token_spec.rb | 19 +- spec/models/personal_snippet_spec.rb | 2 +- spec/models/plan_limits_spec.rb | 218 +- spec/models/plan_spec.rb | 14 +- spec/models/pool_repository_spec.rb | 2 +- .../postgresql/replication_slot_spec.rb | 2 +- spec/models/product_analytics_event_spec.rb | 24 + spec/models/programming_language_spec.rb | 2 +- spec/models/project_authorization_spec.rb | 2 +- spec/models/project_auto_devops_spec.rb | 2 +- spec/models/project_ci_cd_setting_spec.rb | 2 +- spec/models/project_custom_attribute_spec.rb | 2 +- spec/models/project_daily_statistic_spec.rb | 2 +- spec/models/project_export_job_spec.rb | 2 +- spec/models/project_feature_spec.rb | 2 +- spec/models/project_group_link_spec.rb | 2 +- spec/models/project_import_data_spec.rb | 2 +- spec/models/project_import_state_spec.rb | 2 +- spec/models/project_label_spec.rb | 2 +- spec/models/project_metrics_setting_spec.rb | 2 +- spec/models/project_repository_spec.rb | 2 +- .../project_services/alerts_service_spec.rb | 2 +- .../project_services/asana_service_spec.rb | 2 +- .../project_services/assembla_service_spec.rb | 2 +- .../project_services/bamboo_service_spec.rb | 2 +- .../project_services/bugzilla_service_spec.rb | 47 +- .../buildkite_service_spec.rb | 2 +- .../project_services/campfire_service_spec.rb | 2 +- .../chat_message/alert_message_spec.rb | 2 +- .../chat_message/base_message_spec.rb | 2 +- .../chat_message/deployment_message_spec.rb | 2 +- .../chat_message/issue_message_spec.rb | 2 +- .../chat_message/merge_message_spec.rb | 2 +- .../chat_message/note_message_spec.rb | 2 +- .../chat_message/pipeline_message_spec.rb | 2 +- .../chat_message/push_message_spec.rb | 2 +- .../chat_message/wiki_page_message_spec.rb | 2 +- .../chat_notification_service_spec.rb | 2 +- .../confluence_service_spec.rb | 90 + .../custom_issue_tracker_service_spec.rb | 63 +- .../project_services/data_fields_spec.rb | 2 +- .../project_services/discord_service_spec.rb | 2 +- .../project_services/drone_ci_service_spec.rb | 2 +- .../emails_on_push_service_spec.rb | 2 +- .../external_wiki_service_spec.rb | 2 +- .../project_services/flowdock_service_spec.rb | 2 +- .../gitlab_issue_tracker_service_spec.rb | 47 +- .../hangouts_chat_service_spec.rb | 2 +- .../project_services/hipchat_service_spec.rb | 2 +- .../project_services/irker_service_spec.rb | 2 +- .../issue_tracker_data_spec.rb | 2 +- .../issue_tracker_service_spec.rb | 2 +- .../project_services/jira_service_spec.rb | 94 +- .../jira_tracker_data_spec.rb | 4 +- .../mattermost_service_spec.rb | 2 +- .../mattermost_slash_commands_service_spec.rb | 2 +- .../microsoft_teams_service_spec.rb | 2 +- .../open_project_service_spec.rb | 2 +- .../open_project_tracker_data_spec.rb | 2 +- .../packagist_service_spec.rb | 2 +- .../pipelines_email_service_spec.rb | 2 +- .../pivotaltracker_service_spec.rb | 2 +- .../prometheus_service_spec.rb | 18 +- .../project_services/pushover_service_spec.rb | 2 +- .../project_services/redmine_service_spec.rb | 47 +- .../project_services/slack_service_spec.rb | 2 +- .../slack_slash_commands_service_spec.rb | 2 +- .../project_services/teamcity_service_spec.rb | 2 +- .../unify_circuit_service_spec.rb | 2 +- .../webex_teams_service_spec.rb | 2 +- .../project_services/youtrack_service_spec.rb | 47 +- spec/models/project_setting_spec.rb | 2 +- spec/models/project_snippet_spec.rb | 2 +- spec/models/project_spec.rb | 250 +- spec/models/project_statistics_spec.rb | 87 +- spec/models/project_team_spec.rb | 2 +- spec/models/project_wiki_spec.rb | 2 +- spec/models/prometheus_alert_event_spec.rb | 2 +- spec/models/prometheus_alert_spec.rb | 6 +- spec/models/prometheus_metric_spec.rb | 3 +- spec/models/protectable_dropdown_spec.rb | 2 +- .../merge_access_level_spec.rb | 2 +- .../push_access_level_spec.rb | 2 +- spec/models/protected_branch_spec.rb | 2 +- spec/models/protected_tag_spec.rb | 2 +- spec/models/push_event_payload_spec.rb | 2 +- spec/models/push_event_spec.rb | 2 +- spec/models/readme_blob_spec.rb | 2 +- spec/models/redirect_route_spec.rb | 2 +- spec/models/releases/evidence_spec.rb | 2 +- spec/models/releases/link_spec.rb | 2 +- spec/models/releases/source_spec.rb | 2 +- spec/models/remote_mirror_spec.rb | 2 +- spec/models/repository_language_spec.rb | 2 +- spec/models/repository_spec.rb | 55 +- spec/models/resource_milestone_event_spec.rb | 2 +- spec/models/resource_state_event_spec.rb | 2 +- spec/models/review_spec.rb | 2 +- spec/models/route_spec.rb | 2 +- spec/models/sent_notification_spec.rb | 2 +- spec/models/sentry_issue_spec.rb | 2 +- spec/models/serverless/domain_cluster_spec.rb | 2 +- spec/models/serverless/domain_spec.rb | 2 +- spec/models/serverless/function_spec.rb | 2 +- spec/models/service_desk_setting_spec.rb | 37 + spec/models/service_spec.rb | 44 +- spec/models/shard_spec.rb | 2 +- spec/models/snippet_blob_spec.rb | 2 +- .../snippet_input_action_collection_spec.rb | 2 +- spec/models/snippet_input_action_spec.rb | 16 +- spec/models/snippet_repository_spec.rb | 2 +- spec/models/snippet_spec.rb | 39 +- spec/models/snippet_statistics_spec.rb | 149 + spec/models/spam_log_spec.rb | 2 +- spec/models/ssh_host_key_spec.rb | 2 +- spec/models/state_note_spec.rb | 56 +- spec/models/subscription_spec.rb | 2 +- spec/models/suggestion_spec.rb | 108 +- spec/models/system_note_metadata_spec.rb | 2 +- spec/models/term_agreement_spec.rb | 2 +- spec/models/terraform/state_spec.rb | 2 +- spec/models/todo_spec.rb | 2 +- spec/models/tree_spec.rb | 2 +- spec/models/trending_project_spec.rb | 2 +- spec/models/upload_spec.rb | 2 +- spec/models/uploads/fog_spec.rb | 2 +- spec/models/uploads/local_spec.rb | 2 +- spec/models/user_agent_detail_spec.rb | 2 +- spec/models/user_callout_spec.rb | 2 +- spec/models/user_canonical_email_spec.rb | 2 +- spec/models/user_custom_attribute_spec.rb | 2 +- spec/models/user_detail_spec.rb | 33 +- spec/models/user_highest_role_spec.rb | 2 +- spec/models/user_interacted_project_spec.rb | 2 +- .../user_mentions/commit_user_mention_spec.rb | 2 +- .../user_mentions/issue_user_mention_spec.rb | 2 +- .../merge_request_user_mention_spec.rb | 2 +- .../snippet_user_mention_spec.rb | 2 +- spec/models/user_preference_spec.rb | 2 +- spec/models/user_spec.rb | 131 +- spec/models/user_status_spec.rb | 2 +- spec/models/users_statistics_spec.rb | 2 +- spec/models/web_ide_terminal_spec.rb | 2 +- spec/models/wiki_page/meta_spec.rb | 2 +- spec/models/wiki_page/slug_spec.rb | 2 +- spec/models/wiki_page_spec.rb | 20 +- spec/models/zoom_meeting_spec.rb | 2 +- .../alert_management/alert_policy_spec.rb | 2 +- .../application_setting/term_policy_spec.rb | 2 +- spec/policies/award_emoji_policy_spec.rb | 2 +- spec/policies/base_policy_spec.rb | 2 +- spec/policies/blob_policy_spec.rb | 2 +- spec/policies/board_policy_spec.rb | 2 +- spec/policies/ci/build_policy_spec.rb | 2 +- spec/policies/ci/pipeline_policy_spec.rb | 2 +- .../ci/pipeline_schedule_policy_spec.rb | 2 +- spec/policies/ci/trigger_policy_spec.rb | 2 +- spec/policies/clusters/cluster_policy_spec.rb | 2 +- .../policies/clusters/instance_policy_spec.rb | 2 +- spec/policies/commit_policy_spec.rb | 2 +- spec/policies/concerns/policy_actor_spec.rb | 2 +- spec/policies/deploy_key_policy_spec.rb | 2 +- .../deploy_keys_project_policy_spec.rb | 2 +- spec/policies/deploy_token_policy_spec.rb | 2 +- .../design_management/design_policy_spec.rb | 2 +- spec/policies/environment_policy_spec.rb | 2 +- spec/policies/global_policy_spec.rb | 20 +- spec/policies/group_member_policy_spec.rb | 2 +- spec/policies/group_policy_spec.rb | 65 +- .../policies/identity_provider_policy_spec.rb | 2 +- spec/policies/issuable_policy_spec.rb | 2 +- spec/policies/issue_policy_spec.rb | 2 +- spec/policies/merge_request_policy_spec.rb | 3 +- .../dashboard/annotation_policy_spec.rb | 2 +- .../root_storage_statistics_policy_spec.rb | 2 +- spec/policies/namespace_policy_spec.rb | 2 +- spec/policies/note_policy_spec.rb | 2 +- spec/policies/packages/package_policy_spec.rb | 27 + spec/policies/personal_snippet_policy_spec.rb | 2 +- spec/policies/project_member_policy_spec.rb | 33 + spec/policies/project_policy_spec.rb | 114 +- spec/policies/project_snippet_policy_spec.rb | 2 +- .../project_statistics_policy_spec.rb | 2 +- spec/policies/protected_branch_policy_spec.rb | 2 +- spec/policies/releases/source_policy_spec.rb | 88 - .../resource_label_event_policy_spec.rb | 2 +- spec/policies/todo_policy_spec.rb | 2 +- spec/policies/user_policy_spec.rb | 2 +- spec/policies/wiki_page_policy_spec.rb | 2 +- .../alert_management/alert_presenter_spec.rb | 48 + .../prometheus_alert_presenter_spec.rb | 68 + spec/presenters/award_emoji_presenter_spec.rb | 2 +- spec/presenters/blob_presenter_spec.rb | 2 +- .../presenters/blobs/unfold_presenter_spec.rb | 2 +- spec/presenters/ci/bridge_presenter_spec.rb | 2 +- spec/presenters/ci/build_presenter_spec.rb | 2 +- .../ci/build_runner_presenter_spec.rb | 2 +- .../ci/group_variable_presenter_spec.rb | 2 +- .../ci/legacy_stage_presenter_spec.rb | 2 +- spec/presenters/ci/pipeline_presenter_spec.rb | 2 +- spec/presenters/ci/trigger_presenter_spec.rb | 2 +- spec/presenters/ci/variable_presenter_spec.rb | 2 +- spec/presenters/clusterable_presenter_spec.rb | 2 +- .../clusters/cluster_presenter_spec.rb | 124 +- spec/presenters/commit_presenter_spec.rb | 2 +- .../commit_status_presenter_spec.rb | 2 +- .../dev_ops_score/metric_presenter_spec.rb | 2 +- spec/presenters/event_presenter_spec.rb | 2 +- .../presenters/gitlab/blame_presenter_spec.rb | 2 +- .../group_clusterable_presenter_spec.rb | 8 +- .../presenters/group_member_presenter_spec.rb | 2 +- .../instance_clusterable_presenter_spec.rb | 8 +- spec/presenters/issue_presenter_spec.rb | 2 +- spec/presenters/label_presenter_spec.rb | 2 +- .../merge_request_presenter_spec.rb | 20 +- spec/presenters/milestone_presenter_spec.rb | 2 +- .../composer/packages_presenter_spec.rb | 78 + .../packages/conan/package_presenter_spec.rb | 181 + .../packages/detail/package_presenter_spec.rb | 98 + .../packages/npm/package_presenter_spec.rb | 65 + .../nuget/package_metadata_presenter_spec.rb | 52 + .../nuget/packages_metadata_presenter_spec.rb | 66 + .../nuget/packages_versions_presenter_spec.rb | 14 + .../nuget/search_results_presenter_spec.rb | 59 + .../nuget/service_index_presenter_spec.rb | 28 + .../packages/pypi/package_presenter_spec.rb | 49 + .../presenters/pages_domain_presenter_spec.rb | 2 +- .../project_clusterable_presenter_spec.rb | 8 +- .../presenters/project_hook_presenter_spec.rb | 2 +- .../project_member_presenter_spec.rb | 2 +- spec/presenters/project_presenter_spec.rb | 2 +- .../project_export_presenter_spec.rb | 2 +- .../prometheus/alert_presenter_spec.rb | 100 +- .../settings/deploy_keys_presenter_spec.rb | 2 +- spec/presenters/release_presenter_spec.rb | 34 +- .../presenters/sentry_error_presenter_spec.rb | 2 +- .../presenters/service_hook_presenter_spec.rb | 2 +- .../presenters/snippet_blob_presenter_spec.rb | 42 +- spec/presenters/snippet_presenter_spec.rb | 2 +- spec/presenters/tree_entry_presenter_spec.rb | 2 +- .../presenters/web_hook_log_presenter_spec.rb | 2 +- spec/rack_servers/puma_spec.rb | 2 +- spec/rack_servers/unicorn_spec.rb | 2 +- spec/requests/api/access_requests_spec.rb | 2 +- spec/requests/api/admin/ci/variables_spec.rb | 2 +- .../api/admin/instance_clusters_spec.rb | 461 + spec/requests/api/admin/sidekiq_spec.rb | 2 +- .../api_guard/admin_mode_middleware_spec.rb | 2 +- spec/requests/api/api_spec.rb | 10 +- spec/requests/api/appearance_spec.rb | 2 +- spec/requests/api/applications_spec.rb | 11 +- spec/requests/api/avatar_spec.rb | 2 +- spec/requests/api/award_emoji_spec.rb | 2 +- spec/requests/api/badges_spec.rb | 2 +- spec/requests/api/boards_spec.rb | 2 +- spec/requests/api/branches_spec.rb | 116 +- spec/requests/api/broadcast_messages_spec.rb | 2 +- .../api/{ => ci}/pipeline_schedules_spec.rb | 4 +- spec/requests/api/{ => ci}/pipelines_spec.rb | 6 +- spec/requests/api/{ => ci}/runner_spec.rb | 289 +- spec/requests/api/{ => ci}/runners_spec.rb | 22 +- spec/requests/api/commit_statuses_spec.rb | 2 +- spec/requests/api/commits_spec.rb | 2 +- spec/requests/api/composer_packages_spec.rb | 302 + spec/requests/api/conan_packages_spec.rb | 840 + .../api/container_registry_event_spec.rb | 2 +- spec/requests/api/deploy_keys_spec.rb | 2 +- spec/requests/api/deploy_tokens_spec.rb | 2 +- spec/requests/api/deployments_spec.rb | 2 +- spec/requests/api/discussions_spec.rb | 2 +- spec/requests/api/doorkeeper_access_spec.rb | 2 +- spec/requests/api/environments_spec.rb | 2 +- spec/requests/api/error_tracking_spec.rb | 2 +- spec/requests/api/events_spec.rb | 2 +- spec/requests/api/features_spec.rb | 2 +- spec/requests/api/files_spec.rb | 24 +- spec/requests/api/freeze_periods_spec.rb | 2 +- spec/requests/api/go_proxy_spec.rb | 465 + .../graphql/boards/board_lists_query_spec.rb | 2 +- .../api/graphql/boards/boards_query_spec.rb | 2 +- .../graphql/current_user/todos_query_spec.rb | 2 +- .../api/graphql/current_user_query_spec.rb | 2 +- .../api/graphql/gitlab_schema_spec.rb | 2 +- .../api/graphql/group/labels_query_spec.rb | 2 +- .../api/graphql/group/milestones_spec.rb | 119 +- spec/requests/api/graphql/group_query_spec.rb | 2 +- .../api/graphql/metadata_query_spec.rb | 2 +- .../metrics/dashboard/annotations_spec.rb | 2 +- .../graphql/metrics/dashboard_query_spec.rb | 8 +- .../api/graphql/multiplexed_queries_spec.rb | 2 +- .../admin/sidekiq_queues/delete_jobs_spec.rb | 2 +- .../alerts/create_alert_issue_spec.rb | 2 +- .../alerts/set_assignees_spec.rb | 2 +- .../alerts/todo/create_spec.rb | 55 + .../alerts/update_alert_status_spec.rb | 2 +- .../mutations/award_emojis/add_spec.rb | 6 +- .../mutations/award_emojis/remove_spec.rb | 6 +- .../mutations/award_emojis/toggle_spec.rb | 6 +- .../graphql/mutations/branches/create_spec.rb | 2 +- .../graphql/mutations/commits/create_spec.rb | 2 +- .../update_spec.rb | 61 +- .../design_management/delete_spec.rb | 2 +- .../design_management/upload_spec.rb | 2 +- .../discussions/toggle_resolve_spec.rb | 2 +- .../mutations/issues/set_confidential_spec.rb | 2 +- .../mutations/issues/set_due_date_spec.rb | 2 +- .../mutations/issues/set_locked_spec.rb | 55 + .../jira_import/import_users_spec.rb | 2 +- .../mutations/jira_import/start_spec.rb | 5 +- .../mutations/merge_requests/create_spec.rb | 2 +- .../merge_requests/set_assignees_spec.rb | 2 +- .../merge_requests/set_labels_spec.rb | 2 +- .../merge_requests/set_locked_spec.rb | 2 +- .../merge_requests/set_milestone_spec.rb | 2 +- .../merge_requests/set_subscription_spec.rb | 2 +- .../mutations/merge_requests/set_wip_spec.rb | 24 +- .../dashboard/annotations/create_spec.rb | 2 +- .../dashboard/annotations/delete_spec.rb | 2 +- .../mutations/notes/create/diff_note_spec.rb | 2 +- .../notes/create/image_diff_note_spec.rb | 2 +- .../mutations/notes/create/note_spec.rb | 6 +- .../graphql/mutations/notes/destroy_spec.rb | 2 +- .../notes/update/image_diff_note_spec.rb | 2 +- .../mutations/notes/update/note_spec.rb | 2 +- .../graphql/mutations/snippets/create_spec.rb | 52 +- .../mutations/snippets/destroy_spec.rb | 2 +- .../mutations/snippets/mark_as_spam_spec.rb | 2 +- .../graphql/mutations/snippets/update_spec.rb | 48 +- .../mutations/todos/mark_all_done_spec.rb | 2 +- .../graphql/mutations/todos/mark_done_spec.rb | 2 +- .../graphql/mutations/todos/restore_spec.rb | 2 +- .../api/graphql/namespace/projects_spec.rb | 2 +- .../namespace/root_storage_statistics_spec.rb | 2 +- .../alert_management/alert/assignees_spec.rb | 2 +- .../alert/metrics_dashboard_url_spec.rb | 62 + .../alert_management/alert/notes_spec.rb | 34 +- .../alert_status_counts_spec.rb | 2 +- .../project/alert_management/alerts_spec.rb | 11 +- .../api/graphql/project/base_service_spec.rb | 2 +- .../container_expiration_policy_spec.rb | 2 +- .../sentry_detailed_error_request_spec.rb | 2 +- .../sentry_errors_request_spec.rb | 2 +- .../project/grafana_integration_spec.rb | 2 +- .../issue/design_collection/version_spec.rb | 2 +- .../issue/design_collection/versions_spec.rb | 2 +- .../project/issue/designs/designs_spec.rb | 2 +- .../project/issue/designs/notes_spec.rb | 2 +- .../api/graphql/project/issue/notes_spec.rb | 2 +- .../api/graphql/project/issue_spec.rb | 2 +- .../api/graphql/project/issues_spec.rb | 2 +- .../api/graphql/project/jira_import_spec.rb | 2 +- .../api/graphql/project/jira_projects_spec.rb | 30 +- .../api/graphql/project/jira_service_spec.rb | 2 +- .../api/graphql/project/labels_query_spec.rb | 2 +- .../project/merge_request/diff_notes_spec.rb | 2 +- .../api/graphql/project/merge_request_spec.rb | 55 +- .../graphql/project/merge_requests_spec.rb | 2 +- .../api/graphql/project/packages_spec.rb | 69 + .../api/graphql/project/pipeline_spec.rb | 2 +- .../project/project_statistics_spec.rb | 2 +- .../api/graphql/project/release_spec.rb | 480 +- .../api/graphql/project/releases_spec.rb | 284 + .../api/graphql/project/repository_spec.rb | 2 +- .../api/graphql/project/tree/tree_spec.rb | 2 +- .../api/graphql/project_query_spec.rb | 2 +- spec/requests/api/graphql/query_spec.rb | 2 +- spec/requests/api/graphql/read_only_spec.rb | 2 +- .../tasks/task_completion_status_spec.rb | 2 +- .../graphql/user/group_member_query_spec.rb | 2 +- .../graphql/user/project_member_query_spec.rb | 2 +- spec/requests/api/graphql/user_query_spec.rb | 2 +- spec/requests/api/graphql/user_spec.rb | 2 +- spec/requests/api/graphql/users_spec.rb | 2 +- spec/requests/api/graphql_spec.rb | 2 +- spec/requests/api/group_boards_spec.rb | 2 +- spec/requests/api/group_clusters_spec.rb | 52 +- .../api/group_container_repositories_spec.rb | 2 +- spec/requests/api/group_export_spec.rb | 10 +- spec/requests/api/group_import_spec.rb | 3 +- spec/requests/api/group_labels_spec.rb | 2 +- spec/requests/api/group_milestones_spec.rb | 2 +- spec/requests/api/group_packages_spec.rb | 147 + spec/requests/api/group_variables_spec.rb | 2 +- spec/requests/api/groups_spec.rb | 57 +- spec/requests/api/helpers_spec.rb | 2 +- .../api/import_bitbucket_server_spec.rb | 218 + spec/requests/api/import_github_spec.rb | 6 +- spec/requests/api/internal/base_spec.rb | 29 +- spec/requests/api/internal/pages_spec.rb | 2 +- .../api/issues/get_group_issues_spec.rb | 2 +- .../api/issues/get_project_issues_spec.rb | 2 +- spec/requests/api/issues/issues_spec.rb | 51 +- .../api/issues/post_projects_issues_spec.rb | 2 +- .../api/issues/put_projects_issues_spec.rb | 2 +- spec/requests/api/jobs_spec.rb | 8 +- spec/requests/api/keys_spec.rb | 2 +- spec/requests/api/labels_spec.rb | 2 +- spec/requests/api/lint_spec.rb | 2 +- spec/requests/api/markdown_spec.rb | 2 +- spec/requests/api/maven_packages_spec.rb | 569 + spec/requests/api/members_spec.rb | 63 +- .../api/merge_request_approvals_spec.rb | 84 + spec/requests/api/merge_request_diffs_spec.rb | 2 +- spec/requests/api/merge_requests_spec.rb | 71 +- .../api/metrics/dashboard/annotations_spec.rb | 2 +- .../metrics/user_starred_dashboards_spec.rb | 2 +- spec/requests/api/namespaces_spec.rb | 2 +- spec/requests/api/notes_spec.rb | 2 +- .../api/notification_settings_spec.rb | 2 +- spec/requests/api/npm_packages_spec.rb | 550 + spec/requests/api/nuget_packages_spec.rb | 482 + spec/requests/api/oauth_tokens_spec.rb | 2 +- spec/requests/api/package_files_spec.rb | 81 + .../api/pages/internal_access_spec.rb | 2 +- spec/requests/api/pages/pages_spec.rb | 2 +- .../requests/api/pages/private_access_spec.rb | 2 +- spec/requests/api/pages/public_access_spec.rb | 2 +- spec/requests/api/pages_domains_spec.rb | 2 +- spec/requests/api/project_clusters_spec.rb | 57 +- .../project_container_repositories_spec.rb | 2 +- spec/requests/api/project_events_spec.rb | 2 +- spec/requests/api/project_export_spec.rb | 6 +- spec/requests/api/project_hooks_spec.rb | 2 +- spec/requests/api/project_import_spec.rb | 2 +- spec/requests/api/project_milestones_spec.rb | 2 +- spec/requests/api/project_packages_spec.rb | 272 + .../project_repository_storage_moves_spec.rb | 2 +- spec/requests/api/project_snapshots_spec.rb | 2 +- spec/requests/api/project_snippets_spec.rb | 37 +- spec/requests/api/project_statistics_spec.rb | 2 +- spec/requests/api/project_templates_spec.rb | 2 +- spec/requests/api/projects_spec.rb | 117 +- spec/requests/api/protected_branches_spec.rb | 2 +- spec/requests/api/protected_tags_spec.rb | 2 +- spec/requests/api/pypi_packages_spec.rb | 259 + spec/requests/api/release/links_spec.rb | 2 +- spec/requests/api/releases_spec.rb | 2 +- spec/requests/api/remote_mirrors_spec.rb | 2 +- spec/requests/api/repositories_spec.rb | 18 +- .../api/resource_label_events_spec.rb | 2 +- .../api/resource_milestone_events_spec.rb | 2 +- .../api/resource_state_events_spec.rb | 105 + spec/requests/api/search_spec.rb | 2 +- spec/requests/api/services_spec.rb | 2 +- spec/requests/api/settings_spec.rb | 12 +- spec/requests/api/sidekiq_metrics_spec.rb | 2 +- spec/requests/api/snippets_spec.rb | 168 +- spec/requests/api/statistics_spec.rb | 2 +- spec/requests/api/submodules_spec.rb | 2 +- spec/requests/api/suggestions_spec.rb | 2 +- spec/requests/api/system_hooks_spec.rb | 2 +- spec/requests/api/tags_spec.rb | 2 +- .../api/task_completion_status_spec.rb | 2 +- spec/requests/api/templates_spec.rb | 2 +- spec/requests/api/terraform/state_spec.rb | 63 +- spec/requests/api/todos_spec.rb | 2 +- spec/requests/api/triggers_spec.rb | 2 +- spec/requests/api/user_counts_spec.rb | 2 +- spec/requests/api/users_spec.rb | 10 +- spec/requests/api/variables_spec.rb | 151 +- spec/requests/api/version_spec.rb | 2 +- spec/requests/api/wikis_spec.rb | 306 +- spec/requests/boards/lists_controller_spec.rb | 2 +- spec/requests/git_http_spec.rb | 2 +- .../groups/milestones_controller_spec.rb | 2 +- .../registry/repositories_controller_spec.rb | 2 +- spec/requests/health_controller_spec.rb | 36 +- .../import/gitlab_groups_controller_spec.rb | 4 +- .../import/gitlab_projects_controller_spec.rb | 2 +- spec/requests/jwt_controller_spec.rb | 2 +- spec/requests/lfs_http_spec.rb | 2 +- spec/requests/lfs_locks_api_spec.rb | 2 +- spec/requests/oauth_tokens_spec.rb | 2 +- spec/requests/openid_connect_spec.rb | 27 +- .../collector_app_attack_spec.rb | 41 + .../product_analytics/collector_app_spec.rb | 73 + .../profiles/notifications_controller_spec.rb | 2 +- .../projects/cycle_analytics_events_spec.rb | 2 +- .../pagerduty_incidents_spec.rb | 36 + .../projects/merge_requests/creations_spec.rb | 2 +- .../merge_requests_discussions_spec.rb | 2 +- .../projects/metrics_dashboard_spec.rb | 85 + spec/requests/projects/uploads_spec.rb | 2 +- spec/requests/rack_attack_global_spec.rb | 2 +- spec/requests/request_profiler_spec.rb | 2 +- spec/requests/self_monitoring_project_spec.rb | 2 +- spec/requests/sessions_spec.rb | 2 +- spec/requests/user_activity_spec.rb | 2 +- spec/requests/user_avatar_spec.rb | 2 +- spec/requests/user_spoofs_ip_spec.rb | 2 +- .../domains_controller_routing_spec.rb | 2 +- spec/routing/admin_routing_spec.rb | 18 +- spec/routing/environments_spec.rb | 2 +- spec/routing/git_http_routing_spec.rb | 2 +- spec/routing/group_routing_spec.rb | 24 +- spec/routing/import_routing_spec.rb | 63 +- .../instance_statistics_routing_spec.rb | 2 +- spec/routing/notifications_routing_spec.rb | 2 +- spec/routing/openid_connect_spec.rb | 4 +- spec/routing/project_routing_spec.rb | 185 +- spec/routing/routing_spec.rb | 61 +- spec/routing/uploads_routing_spec.rb | 2 +- spec/rubocop/code_reuse_helpers_spec.rb | 38 +- .../active_record_association_reload_spec.rb | 4 +- .../cop/api/grape_api_instance_spec.rb | 29 + .../api/grape_array_missing_coerce_spec.rb | 62 + .../avoid_break_from_strong_memoize_spec.rb | 2 +- ...yword_arguments_in_sidekiq_workers_spec.rb | 4 +- .../cop/avoid_return_from_blocks_spec.rb | 2 +- ...avoid_route_redirect_leading_slash_spec.rb | 4 +- spec/rubocop/cop/ban_catch_throw_spec.rb | 4 +- .../cop/code_reuse/active_record_spec.rb | 16 +- spec/rubocop/cop/code_reuse/finder_spec.rb | 4 +- spec/rubocop/cop/code_reuse/presenter_spec.rb | 4 +- .../rubocop/cop/code_reuse/serializer_spec.rb | 4 +- .../cop/code_reuse/service_class_spec.rb | 4 +- spec/rubocop/cop/code_reuse/worker_spec.rb | 6 +- spec/rubocop/cop/default_scope_spec.rb | 4 +- spec/rubocop/cop/destroy_all_spec.rb | 4 +- spec/rubocop/cop/filename_length_spec.rb | 2 +- spec/rubocop/cop/gitlab/bulk_insert_spec.rb | 4 +- .../cop/gitlab/change_timezone_spec.rb | 4 +- .../gitlab/const_get_inherit_false_spec.rb | 4 +- .../gitlab/duplicate_spec_location_spec.rb | 4 +- .../cop/gitlab/finder_with_find_by_spec.rb | 4 +- spec/rubocop/cop/gitlab/httparty_spec.rb | 4 +- spec/rubocop/cop/gitlab/json_spec.rb | 4 +- .../module_with_instance_variables_spec.rb | 4 +- .../cop/gitlab/predicate_memoization_spec.rb | 4 +- spec/rubocop/cop/gitlab/rails_logger_spec.rb | 4 +- spec/rubocop/cop/gitlab/union_spec.rb | 4 +- .../cop/graphql/authorize_types_spec.rb | 116 +- spec/rubocop/cop/graphql/descriptions_spec.rb | 4 +- .../group_public_or_visible_to_user_spec.rb | 4 +- spec/rubocop/cop/ignored_columns_spec.rb | 4 +- .../cop/include_sidekiq_worker_spec.rb | 4 +- .../inject_enterprise_edition_module_spec.rb | 4 +- ...ine_break_around_conditional_block_spec.rb | 4 +- .../migration/add_column_with_default_spec.rb | 7 +- .../add_columns_to_wide_tables_spec.rb | 5 +- .../add_concurrent_foreign_key_spec.rb | 7 +- .../migration/add_concurrent_index_spec.rb | 7 +- spec/rubocop/cop/migration/add_index_spec.rb | 7 +- .../add_limit_to_text_columns_spec.rb | 6 +- .../cop/migration/add_reference_spec.rb | 7 +- .../cop/migration/add_timestamps_spec.rb | 7 +- spec/rubocop/cop/migration/datetime_spec.rb | 7 +- spec/rubocop/cop/migration/drop_table_spec.rb | 78 +- spec/rubocop/cop/migration/hash_index_spec.rb | 7 +- .../cop/migration/prevent_strings_spec.rb | 6 +- .../cop/migration/remove_column_spec.rb | 7 +- .../migration/remove_concurrent_index_spec.rb | 7 +- .../cop/migration/remove_index_spec.rb | 7 +- .../migration/safer_boolean_column_spec.rb | 7 +- .../cop/migration/schedule_async_spec.rb | 2 +- spec/rubocop/cop/migration/timestamps_spec.rb | 7 +- .../update_column_in_batches_spec.rb | 2 +- ...ith_lock_retries_disallowed_method_spec.rb | 7 +- .../with_lock_retries_with_change_spec.rb | 7 +- .../cop/performance/ar_count_each_spec.rb | 4 +- .../ar_exists_and_present_blank_spec.rb | 4 +- .../cop/performance/readlines_each_spec.rb | 4 +- .../prefer_class_methods_over_module_spec.rb | 4 +- spec/rubocop/cop/project_path_helper_spec.rb | 4 +- .../cop/put_group_routes_under_scope_spec.rb | 4 +- .../put_project_routes_under_scope_spec.rb | 4 +- .../cop/qa/ambiguous_page_object_name_spec.rb | 4 +- .../cop/qa/element_with_pattern_spec.rb | 4 +- .../rubocop/cop/rspec/any_instance_of_spec.rb | 4 +- .../cop/rspec/be_success_matcher_spec.rb | 4 +- spec/rubocop/cop/rspec/env_assignment_spec.rb | 4 +- .../factories_in_migration_specs_spec.rb | 4 +- .../cop/rspec/have_gitlab_http_status_spec.rb | 2 +- .../rspec/modify_sidekiq_middleware_spec.rb | 3 +- .../cop/rspec/top_level_describe_path_spec.rb | 6 +- .../ruby_interpolation_in_translation_spec.rb | 4 +- spec/rubocop/cop/safe_params_spec.rb | 4 +- .../bulk_perform_with_context_spec.rb | 3 +- .../scalability/cron_worker_context_spec.rb | 3 +- .../cop/scalability/file_uploads_spec.rb | 3 +- .../cop/scalability/idempotent_worker_spec.rb | 3 +- .../rubocop/cop/sidekiq_options_queue_spec.rb | 4 +- .../cop/static_translation_definition_spec.rb | 6 +- spec/rubocop/migration_helpers_spec.rb | 2 +- spec/rubocop/qa_helpers_spec.rb | 9 +- .../accessibility_error_entity_spec.rb | 2 +- ...essibility_reports_comparer_entity_spec.rb | 2 +- ...bility_reports_comparer_serializer_spec.rb | 2 +- .../analytics_build_entity_spec.rb | 2 +- .../analytics_build_serializer_spec.rb | 2 +- .../analytics_issue_entity_spec.rb | 2 +- .../analytics_issue_serializer_spec.rb | 2 +- ...analytics_merge_request_serializer_spec.rb | 2 +- .../analytics_stage_serializer_spec.rb | 2 +- .../analytics_summary_serializer_spec.rb | 2 +- spec/serializers/blob_entity_spec.rb | 2 +- spec/serializers/board_serializer_spec.rb | 2 +- spec/serializers/build_action_entity_spec.rb | 2 +- .../serializers/build_artifact_entity_spec.rb | 2 +- spec/serializers/build_details_entity_spec.rb | 2 +- spec/serializers/build_serializer_spec.rb | 2 +- spec/serializers/build_trace_entity_spec.rb | 52 +- spec/serializers/ci/dag_job_entity_spec.rb | 18 +- .../ci/dag_job_group_entity_spec.rb | 10 +- .../ci/dag_pipeline_entity_spec.rb | 14 +- .../ci/dag_pipeline_serializer_spec.rb | 6 +- spec/serializers/ci/dag_stage_entity_spec.rb | 6 +- ...y_build_group_report_result_entity_spec.rb | 2 +- ...ild_group_report_result_serializer_spec.rb | 2 +- .../{ => ci}/group_variable_entity_spec.rb | 2 +- .../{ => ci}/variable_entity_spec.rb | 2 +- .../cluster_application_entity_spec.rb | 2 +- spec/serializers/cluster_entity_spec.rb | 34 +- spec/serializers/cluster_serializer_spec.rb | 7 +- spec/serializers/commit_entity_spec.rb | 2 +- .../container_repositories_serializer_spec.rb | 2 +- .../container_repository_entity_spec.rb | 2 +- spec/serializers/container_tag_entity_spec.rb | 2 +- spec/serializers/deploy_key_entity_spec.rb | 43 +- .../deployment_cluster_entity_spec.rb | 2 +- spec/serializers/deployment_entity_spec.rb | 2 +- .../serializers/deployment_serializer_spec.rb | 2 +- .../detailed_status_entity_spec.rb | 2 +- .../serializers/diff_file_base_entity_spec.rb | 6 +- spec/serializers/diff_file_entity_spec.rb | 2 +- spec/serializers/diff_line_entity_spec.rb | 2 +- spec/serializers/diff_line_serializer_spec.rb | 2 +- spec/serializers/diff_viewer_entity_spec.rb | 2 +- spec/serializers/diffs_entity_spec.rb | 2 +- .../serializers/diffs_metadata_entity_spec.rb | 2 +- .../discussion_diff_file_entity_spec.rb | 2 +- spec/serializers/discussion_entity_spec.rb | 2 +- spec/serializers/entity_date_helper_spec.rb | 2 +- spec/serializers/entity_request_spec.rb | 2 +- spec/serializers/environment_entity_spec.rb | 2 +- .../environment_serializer_spec.rb | 2 +- .../environment_status_entity_spec.rb | 2 +- .../evidences/evidence_entity_spec.rb | 2 +- .../evidences/evidence_serializer_spec.rb | 2 +- .../evidences/issue_entity_spec.rb | 2 +- .../evidences/milestone_entity_spec.rb | 2 +- .../evidences/project_entity_spec.rb | 2 +- .../evidences/release_entity_spec.rb | 2 +- .../evidences/release_serializer_spec.rb | 2 +- .../serializers/fork_namespace_entity_spec.rb | 70 + .../fork_namespace_serializer_spec.rb | 9 + spec/serializers/group_child_entity_spec.rb | 2 +- .../group_child_serializer_spec.rb | 2 +- .../bitbucket_provider_repo_entity_spec.rb | 2 +- ...bucket_server_provider_repo_entity_spec.rb | 2 +- .../fogbugz_provider_repo_entity_spec.rb | 2 +- .../githubish_provider_repo_entity_spec.rb | 2 +- .../gitlab_provider_repo_entity_spec.rb | 2 +- .../import/provider_repo_serializer_spec.rb | 2 +- .../issuable_sidebar_extras_entity_spec.rb | 2 +- spec/serializers/issue_board_entity_spec.rb | 2 +- spec/serializers/issue_entity_spec.rb | 2 +- spec/serializers/issue_serializer_spec.rb | 2 +- .../job_artifact_report_entity_spec.rb | 2 +- spec/serializers/job_entity_spec.rb | 2 +- spec/serializers/label_serializer_spec.rb | 2 +- spec/serializers/lfs_file_lock_entity_spec.rb | 2 +- .../merge_request_basic_entity_spec.rb | 2 +- .../merge_request_diff_entity_spec.rb | 2 +- .../merge_request_for_pipeline_entity_spec.rb | 2 +- ..._request_poll_cached_widget_entity_spec.rb | 24 +- .../merge_request_poll_widget_entity_spec.rb | 24 +- .../merge_request_serializer_spec.rb | 2 +- ...merge_request_sidebar_basic_entity_spec.rb | 2 +- .../merge_request_user_entity_spec.rb | 2 +- ...merge_request_widget_commit_entity_spec.rb | 2 +- .../merge_request_widget_entity_spec.rb | 69 +- .../move_to_project_entity_spec.rb | 2 +- .../move_to_project_serializer_spec.rb | 2 +- .../namespace_basic_entity_spec.rb | 2 +- spec/serializers/namespace_serializer_spec.rb | 2 +- spec/serializers/note_entity_spec.rb | 2 +- .../serializers/paginated_diff_entity_spec.rb | 2 +- .../pipeline_details_entity_spec.rb | 20 +- spec/serializers/pipeline_entity_spec.rb | 26 +- spec/serializers/pipeline_serializer_spec.rb | 61 +- .../serializers/project_import_entity_spec.rb | 2 +- .../serializers/project_mirror_entity_spec.rb | 2 +- .../project_mirror_serializer_spec.rb | 2 +- spec/serializers/project_note_entity_spec.rb | 2 +- spec/serializers/project_serializer_spec.rb | 2 +- .../prometheus_alert_entity_spec.rb | 2 +- spec/serializers/remote_mirror_entity_spec.rb | 2 +- spec/serializers/request_aware_entity_spec.rb | 2 +- .../review_app_setup_entity_spec.rb | 2 +- spec/serializers/runner_entity_spec.rb | 2 +- .../serverless/domain_entity_spec.rb | 2 +- spec/serializers/service_event_entity_spec.rb | 2 +- spec/serializers/service_field_entity_spec.rb | 8 +- spec/serializers/stage_entity_spec.rb | 2 +- spec/serializers/stage_serializer_spec.rb | 2 +- spec/serializers/suggestion_entity_spec.rb | 113 +- spec/serializers/test_case_entity_spec.rb | 2 +- spec/serializers/test_report_entity_spec.rb | 2 +- .../test_report_summary_entity_spec.rb | 31 + .../test_reports_comparer_entity_spec.rb | 2 +- .../test_reports_comparer_serializer_spec.rb | 2 +- .../test_suite_comparer_entity_spec.rb | 2 +- spec/serializers/test_suite_entity_spec.rb | 56 +- .../test_suite_summary_entity_spec.rb | 24 + .../trigger_variable_entity_spec.rb | 2 +- spec/serializers/user_entity_spec.rb | 2 +- spec/serializers/user_serializer_spec.rb | 2 +- .../web_ide_terminal_entity_spec.rb | 2 +- .../web_ide_terminal_serializer_spec.rb | 2 +- .../access_token_validation_service_spec.rb | 2 +- .../alerts/todo/create_service_spec.rb | 84 + .../alerts/update_service_spec.rb | 247 +- .../create_alert_issue_service_spec.rb | 49 +- .../process_prometheus_alert_service_spec.rb | 97 +- .../update_alert_status_service_spec.rb | 66 - .../update_service_spec.rb | 2 +- .../applications/create_service_spec.rb | 2 +- spec/services/audit_event_service_spec.rb | 5 +- ...er_registry_authentication_service_spec.rb | 2 +- .../periodic_recalculate_service_spec.rb | 2 +- .../project_create_service_spec.rb | 2 +- .../project_group_link_create_service_spec.rb | 190 + ...recalculate_for_user_range_service_spec.rb | 2 +- spec/services/auto_merge/base_service_spec.rb | 4 +- ...rge_when_pipeline_succeeds_service_spec.rb | 16 +- spec/services/auto_merge_service_spec.rb | 2 +- .../services/award_emojis/add_service_spec.rb | 2 +- .../collect_user_emoji_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 +- .../boards/issues/create_service_spec.rb | 2 +- .../boards/issues/list_service_spec.rb | 2 +- .../boards/issues/move_service_spec.rb | 2 +- spec/services/boards/list_service_spec.rb | 2 +- .../boards/lists/create_service_spec.rb | 2 +- .../boards/lists/destroy_service_spec.rb | 2 +- .../boards/lists/generate_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 | 2 +- .../branches/delete_merged_service_spec.rb | 2 +- spec/services/branches/delete_service_spec.rb | 12 +- .../diverging_commit_counts_service_spec.rb | 2 +- .../branches/validate_new_service_spec.rb | 2 +- .../bulk_push_event_payload_service_spec.rb | 2 +- .../chat_names/authorize_user_service_spec.rb | 2 +- .../chat_names/find_user_service_spec.rb | 2 +- .../services/ci/archive_trace_service_spec.rb | 2 +- .../ci/build_report_result_service_spec.rb | 2 +- .../ci/cancel_user_pipelines_service_spec.rb | 2 +- ...pare_accessibility_reports_service_spec.rb | 2 +- .../ci/compare_test_reports_service_spec.rb | 2 +- ...ate_cross_project_pipeline_service_spec.rb | 2 +- .../ci/create_job_artifacts_service_spec.rb | 32 +- .../ci/create_pipeline_service/cache_spec.rb | 2 +- .../creation_errors_and_warnings_spec.rb | 114 + .../custom_config_content_spec.rb | 2 +- .../ci/create_pipeline_service/needs_spec.rb | 2 +- .../parameter_content_spec.rb | 62 + .../parent_child_pipeline_spec.rb | 2 +- .../pre_post_stages_spec.rb | 2 +- .../ci/create_pipeline_service/rules_spec.rb | 2 +- .../ci/create_pipeline_service_spec.rb | 92 +- .../create_web_ide_terminal_service_spec.rb | 2 +- ..._build_group_report_result_service_spec.rb | 2 +- ...troy_expired_job_artifacts_service_spec.rb | 6 +- .../ci/destroy_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 +- ..._sections_from_build_trace_service_spec.rb | 2 +- .../ci/find_exposed_artifacts_service_spec.rb | 2 +- .../generate_coverage_reports_service_spec.rb | 2 +- ...generate_terraform_reports_service_spec.rb | 25 +- .../ci/parse_dotenv_artifact_service_spec.rb | 2 +- .../ci/pipeline_bridge_status_service_spec.rb | 2 +- .../status_collection_spec.rb | 2 +- .../atomic_processing_service_spec.rb | 2 +- .../legacy_processing_service_spec.rb | 2 +- .../shared_processing_service.rb | 2 +- ...ared_processing_service_tests_with_yaml.rb | 2 +- .../ci/pipeline_schedule_service_spec.rb | 2 +- .../ci/pipeline_trigger_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 | 44 +- spec/services/ci/register_job_service_spec.rb | 17 +- ...source_from_resource_group_service_spec.rb | 2 +- spec/services/ci/retry_build_service_spec.rb | 29 +- .../ci/retry_pipeline_service_spec.rb | 2 +- .../ci/run_scheduled_build_service_spec.rb | 2 +- .../ci/stop_environments_service_spec.rb | 2 +- .../ci/unlock_artifacts_service_spec.rb | 97 + .../ci/update_build_queue_service_spec.rb | 2 +- .../update_instance_variables_service_spec.rb | 2 +- .../services/ci/update_runner_service_spec.rb | 2 +- .../ci/web_ide_config_service_spec.rb | 2 +- .../check_ingress_ip_address_service_spec.rb | 2 +- ...heck_installation_progress_service_spec.rb | 2 +- .../check_uninstall_progress_service_spec.rb | 2 +- .../check_upgrade_progress_service_spec.rb | 2 +- .../applications/create_service_spec.rb | 2 +- .../applications/destroy_service_spec.rb | 2 +- .../applications/install_service_spec.rb | 2 +- .../applications/patch_service_spec.rb | 2 +- .../prometheus_config_service_spec.rb | 2 +- .../prometheus_health_check_service_spec.rb | 2 +- .../prometheus_update_service_spec.rb | 2 +- .../schedule_update_service_spec.rb | 2 +- .../applications/uninstall_service_spec.rb | 2 +- .../applications/update_service_spec.rb | 2 +- .../applications/upgrade_service_spec.rb | 2 +- .../aws/authorize_role_service_spec.rb | 2 +- .../aws/fetch_credentials_service_spec.rb | 2 +- .../aws/finalize_creation_service_spec.rb | 2 +- .../clusters/aws/provision_service_spec.rb | 2 +- .../verify_provision_status_service_spec.rb | 2 +- ...build_kubernetes_namespace_service_spec.rb | 2 +- spec/services/clusters/build_service_spec.rb | 2 +- .../clusters/cleanup/app_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 | 49 +- .../services/clusters/destroy_service_spec.rb | 2 +- .../gcp/fetch_operation_service_spec.rb | 2 +- .../gcp/finalize_creation_service_spec.rb | 2 +- .../clusters/gcp/provision_service_spec.rb | 2 +- .../verify_provision_status_service_spec.rb | 2 +- .../configure_istio_ingress_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 +- .../management/create_project_service_spec.rb | 2 +- ...gement_project_permissions_service_spec.rb | 2 +- ...ster_applications_artifact_service_spec.rb | 89 +- 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/exclusive_lease_guard_spec.rb | 2 +- .../assigns_merge_params_spec.rb | 2 +- .../update_service_spec.rb | 2 +- ...ontainer_expiration_policy_service_spec.rb | 2 +- .../deploy_keys/collect_keys_service_spec.rb | 58 + .../deploy_keys/create_service_spec.rb | 2 +- .../deployments/after_create_service_spec.rb | 2 +- .../deployments/create_service_spec.rb | 2 +- .../link_merge_requests_service_spec.rb | 2 +- .../older_deployments_drop_service_spec.rb | 2 +- .../deployments/update_service_spec.rb | 2 +- .../delete_designs_service_spec.rb | 2 +- .../design_user_notes_count_service_spec.rb | 2 +- .../generate_image_versions_service_spec.rb | 2 +- .../save_designs_service_spec.rb | 2 +- ...capture_diff_note_position_service_spec.rb | 2 +- ...apture_diff_note_positions_service_spec.rb | 2 +- .../discussions/resolve_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 | 5 +- 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 | 2 +- .../reset_auto_stop_service_spec.rb | 2 +- .../error_tracking/base_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 +- .../list_projects_service_spec.rb | 2 +- spec/services/event_create_service_spec.rb | 106 +- spec/services/events/render_service_spec.rb | 2 +- spec/services/files/create_service_spec.rb | 2 +- spec/services/files/delete_service_spec.rb | 2 +- spec/services/files/multi_service_spec.rb | 2 +- spec/services/files/update_service_spec.rb | 2 +- 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 | 33 +- .../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 | 39 +- .../git/wiki_push_service/change_spec.rb | 2 +- spec/services/git/wiki_push_service_spec.rb | 10 +- spec/services/gpg_keys/create_service_spec.rb | 2 +- .../services/gpg_keys/destroy_service_spec.rb | 15 + spec/services/grafana/proxy_service_spec.rb | 2 +- spec/services/gravatar_service_spec.rb | 2 +- .../groups/auto_devops_service_spec.rb | 2 +- spec/services/groups/create_service_spec.rb | 11 +- .../deploy_tokens/create_service_spec.rb | 2 +- .../deploy_tokens/destroy_service_spec.rb | 2 +- spec/services/groups/destroy_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 | 2 +- .../import_export/export_service_spec.rb | 2 +- .../import_export/import_service_spec.rb | 2 +- .../groups/nested_create_service_spec.rb | 2 +- spec/services/groups/transfer_service_spec.rb | 2 +- spec/services/groups/update_service_spec.rb | 2 +- .../update_shared_runners_service_spec.rb | 230 + .../import/bitbucket_server_service_spec.rb | 113 + spec/services/import/github_service_spec.rb | 2 +- .../import_export_clean_up_service_spec.rb | 2 +- .../create_incident_label_service_spec.rb | 58 + .../create_issue_service_spec.rb | 97 +- .../create_incident_issue_service_spec.rb | 104 + .../process_webhook_service_spec.rb | 148 + .../integrations/test/project_service_spec.rb | 2 +- .../issuable/bulk_update_service_spec.rb | 30 +- .../clone/attributes_rewriter_spec.rb | 2 +- .../issuable/clone/content_rewriter_spec.rb | 2 +- .../common_system_notes_service_spec.rb | 18 +- .../services/issuable/destroy_service_spec.rb | 2 +- spec/services/issues/build_service_spec.rb | 2 +- spec/services/issues/close_service_spec.rb | 2 +- spec/services/issues/create_service_spec.rb | 6 +- .../services/issues/duplicate_service_spec.rb | 2 +- .../issues/export_csv_service_spec.rb | 2 +- .../issues/import_csv_service_spec.rb | 2 +- spec/services/issues/move_service_spec.rb | 47 +- .../referenced_merge_requests_service_spec.rb | 2 +- .../issues/related_branches_service_spec.rb | 2 +- spec/services/issues/reopen_service_spec.rb | 2 +- spec/services/issues/reorder_service_spec.rb | 2 +- .../issues/resolve_discussions_spec.rb | 2 +- spec/services/issues/update_service_spec.rb | 7 +- .../services/issues/zoom_link_service_spec.rb | 2 +- .../list_service_spec.rb} | 22 +- .../jira_import/start_import_service_spec.rb | 90 +- .../jira_import/users_importer_spec.rb | 2 +- .../services/jira_import/users_mapper_spec.rb | 8 +- spec/services/keys/create_service_spec.rb | 2 +- spec/services/keys/destroy_service_spec.rb | 2 +- spec/services/keys/last_used_service_spec.rb | 2 +- .../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/file_transformer_spec.rb | 2 +- spec/services/lfs/lock_file_service_spec.rb | 2 +- .../services/lfs/locks_finder_service_spec.rb | 2 +- spec/services/lfs/unlock_file_service_spec.rb | 2 +- .../approve_access_request_service_spec.rb | 2 +- spec/services/members/create_service_spec.rb | 2 +- spec/services/members/destroy_service_spec.rb | 51 +- .../members/request_access_service_spec.rb | 2 +- .../unassign_issuables_service_spec.rb | 66 + spec/services/members/update_service_spec.rb | 2 +- .../add_context_service_spec.rb | 2 +- .../add_todo_when_build_fails_service_spec.rb | 2 +- .../after_create_service_spec.rb | 2 +- .../merge_requests/approval_service_spec.rb | 74 + .../assign_issues_service_spec.rb | 2 +- .../merge_requests/build_service_spec.rb | 6 +- .../merge_requests/close_service_spec.rb | 2 +- .../conflicts/list_service_spec.rb | 3 +- .../conflicts/resolve_service_spec.rb | 2 +- .../create_from_issue_service_spec.rb | 10 +- .../create_pipeline_service_spec.rb | 55 +- .../merge_requests/create_service_spec.rb | 12 +- .../delete_non_latest_diffs_service_spec.rb | 2 +- .../merge_requests/ff_merge_service_spec.rb | 2 +- .../merge_requests/get_urls_service_spec.rb | 2 +- .../link_lfs_objects_service_spec.rb | 2 +- .../merge_orchestration_service_spec.rb | 2 +- .../merge_requests/merge_service_spec.rb | 21 +- .../merge_to_ref_service_spec.rb | 2 +- .../mergeability_check_service_spec.rb | 2 +- .../migrate_external_diffs_service_spec.rb | 2 +- .../merge_requests/post_merge_service_spec.rb | 67 +- .../push_options_handler_service_spec.rb | 2 +- .../pushed_branches_service_spec.rb | 2 +- .../merge_requests/rebase_service_spec.rb | 2 +- .../merge_requests/refresh_service_spec.rb | 9 +- .../reload_diffs_service_spec.rb | 8 +- .../remove_approval_service_spec.rb | 46 + .../merge_requests/reopen_service_spec.rb | 2 +- ...ed_discussion_notification_service_spec.rb | 2 +- .../merge_requests/squash_service_spec.rb | 38 +- .../merge_requests/update_service_spec.rb | 7 +- .../annotations/create_service_spec.rb | 2 +- .../annotations/delete_service_spec.rb | 2 +- .../dashboard/clone_dashboard_service_spec.rb | 19 +- .../cluster_dashboard_service_spec.rb | 59 + .../cluster_metrics_embed_service_spec.rb | 72 + .../custom_dashboard_service_spec.rb | 22 +- .../custom_metric_embed_service_spec.rb | 2 +- .../dashboard/default_embed_service_spec.rb | 2 +- .../dashboard/dynamic_embed_service_spec.rb | 2 +- .../gitlab_alert_embed_service_spec.rb | 2 +- .../grafana_metric_embed_service_spec.rb | 6 +- .../dashboard/pod_dashboard_service_spec.rb | 20 +- .../self_monitoring_dashboard_service_spec.rb | 22 +- .../system_dashboard_service_spec.rb | 25 +- .../dashboard/transient_embed_service_spec.rb | 2 +- .../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 | 2 +- .../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 | 2 +- .../milestones/promote_service_spec.rb | 2 +- .../milestones/transfer_service_spec.rb | 2 +- .../milestones/update_service_spec.rb | 2 +- .../check_storage_size_service_spec.rb | 165 - .../statistics_refresher_service_spec.rb | 2 +- spec/services/note_summary_spec.rb | 2 +- spec/services/notes/build_service_spec.rb | 2 +- spec/services/notes/create_service_spec.rb | 4 +- spec/services/notes/destroy_service_spec.rb | 2 +- .../notes/post_process_service_spec.rb | 2 +- .../notes/quick_actions_service_spec.rb | 2 +- spec/services/notes/render_service_spec.rb | 2 +- spec/services/notes/resolve_service_spec.rb | 2 +- spec/services/notes/update_service_spec.rb | 41 +- .../build_service_spec.rb | 2 +- .../builder/default_spec.rb | 2 +- .../builder/new_note_spec.rb | 2 +- spec/services/notification_service_spec.rb | 95 +- .../composer/composer_json_service_spec.rb | 39 + .../composer/create_package_service_spec.rb | 97 + .../composer/version_parser_service_spec.rb | 31 + .../conan/create_package_file_service_spec.rb | 130 + .../conan/create_package_service_spec.rb | 48 + .../packages/conan/search_service_spec.rb | 74 + .../create_dependency_service_spec.rb | 113 + .../create_package_file_service_spec.rb | 38 + .../maven/create_package_service_spec.rb | 77 + .../find_or_create_package_service_spec.rb | 38 + .../npm/create_package_service_spec.rb | 96 + .../packages/npm/create_tag_service_spec.rb | 53 + .../nuget/create_dependency_service_spec.rb | 76 + .../nuget/create_package_service_spec.rb | 34 + .../nuget/metadata_extraction_service_spec.rb | 106 + .../packages/nuget/search_service_spec.rb | 116 + .../nuget/sync_metadatum_service_spec.rb | 57 + ...date_package_from_metadata_service_spec.rb | 237 + .../pypi/create_package_service_spec.rb | 83 + .../packages/remove_tag_service_spec.rb | 20 + .../packages/update_tags_service_spec.rb | 59 + spec/services/pages/delete_services_spec.rb | 2 +- .../create_acme_order_service_spec.rb | 2 +- ...n_lets_encrypt_certificate_service_spec.rb | 2 +- .../retry_acme_order_service_spec.rb | 2 +- .../create_service_spec.rb | 2 +- .../last_used_service_spec.rb | 47 + spec/services/pod_logs/base_service_spec.rb | 2 +- .../pod_logs/elasticsearch_service_spec.rb | 2 +- .../pod_logs/kubernetes_service_spec.rb | 2 +- spec/services/post_receive_service_spec.rb | 37 +- .../services/preview_markdown_service_spec.rb | 2 +- .../projects/after_import_service_spec.rb | 22 +- .../projects/after_rename_service_spec.rb | 2 +- .../projects/alerting/notify_service_spec.rb | 110 +- .../auto_devops/disable_service_spec.rb | 2 +- .../projects/autocomplete_service_spec.rb | 2 +- .../batch_open_issues_count_service_spec.rb | 2 +- .../services/projects/cleanup_service_spec.rb | 2 +- .../cleanup_tags_service_spec.rb | 2 +- .../delete_tags_service_spec.rb | 118 +- .../destroy_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 | 61 +- .../deploy_tokens/create_service_spec.rb | 2 +- .../deploy_tokens/destroy_service_spec.rb | 2 +- .../projects/destroy_rollback_service_spec.rb | 2 +- .../services/projects/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 | 6 +- .../projects/forks_count_service_spec.rb | 2 +- .../git_deduplication_service_spec.rb | 4 +- .../gitlab_projects_import_service_spec.rb | 2 +- .../group_links/create_service_spec.rb | 50 +- .../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/housekeeping_service_spec.rb | 2 +- .../projects/import_error_filter_spec.rb | 2 +- .../import_export/export_service_spec.rb | 2 +- spec/services/projects/import_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 | 2 +- .../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 +- .../alerts/create_events_service_spec.rb | 312 - .../prometheus/alerts/create_service_spec.rb | 2 +- .../prometheus/alerts/destroy_service_spec.rb | 2 +- .../prometheus/alerts/notify_service_spec.rb | 127 +- .../prometheus/alerts/update_service_spec.rb | 2 +- .../metrics/destroy_service_spec.rb | 2 +- .../prometheus/metrics/update_service_spec.rb | 2 +- .../propagate_service_template_spec.rb | 2 +- .../protect_default_branch_service_spec.rb | 2 +- .../repository_languages_service_spec.rb | 2 +- .../projects/transfer_service_spec.rb | 2 +- .../projects/unlink_fork_service_spec.rb | 5 +- ...update_pages_configuration_service_spec.rb | 2 +- .../projects/update_pages_service_spec.rb | 2 +- .../update_remote_mirror_service_spec.rb | 2 +- .../update_repository_storage_service_spec.rb | 38 +- spec/services/projects/update_service_spec.rb | 2 +- .../update_statistics_service_spec.rb | 2 +- .../create_default_alerts_service_spec.rb | 2 +- .../services/prometheus/proxy_service_spec.rb | 2 +- ...roxy_variable_substitution_service_spec.rb | 2 +- .../protected_branches/create_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 +- spec/services/releases/create_service_spec.rb | 2 +- .../services/releases/destroy_service_spec.rb | 2 +- spec/services/releases/update_service_spec.rb | 2 +- .../destroy_rollback_service_spec.rb | 2 +- .../repositories/destroy_service_spec.rb | 17 +- .../shell_destroy_service_spec.rb | 2 +- ...epository_archive_clean_up_service_spec.rb | 2 +- .../reset_project_cache_service_spec.rb | 2 +- .../create_service_spec.rb | 23 +- .../revoke_service_spec.rb | 2 +- .../change_labels_service_spec.rb | 2 +- .../change_milestone_service_spec.rb | 2 +- .../change_state_service_spec.rb | 91 +- .../merge_into_notes_service_spec.rb | 4 +- ...thetic_label_notes_builder_service_spec.rb | 2 +- ...ic_milestone_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 +- spec/services/search_service_spec.rb | 2 +- .../associate_domain_service_spec.rb | 2 +- .../update_service_spec.rb | 46 + 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 | 56 +- .../services/snippets/destroy_service_spec.rb | 28 +- .../repository_validation_service_spec.rb | 2 +- spec/services/snippets/update_service_spec.rb | 256 +- .../update_statistics_service_spec.rb | 86 + spec/services/spam/akismet_service_spec.rb | 2 +- spec/services/spam/ham_service_spec.rb | 2 +- .../spam/mark_as_spam_service_spec.rb | 2 +- .../services/spam/spam_action_service_spec.rb | 2 +- .../spam/spam_verdict_service_spec.rb | 31 +- .../submit_usage_ping_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 +- spec/services/system_note_service_spec.rb | 46 +- .../alert_management_service_spec.rb | 35 + .../system_notes/base_service_spec.rb | 2 +- .../system_notes/commit_service_spec.rb | 2 +- .../design_management_service_spec.rb | 2 +- .../system_notes/issuables_service_spec.rb | 64 +- .../merge_requests_service_spec.rb | 20 +- .../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 | 12 +- .../services/task_list_toggle_service_spec.rb | 2 +- .../terraform/remote_state_handler_spec.rb | 123 +- .../test_hooks/project_service_spec.rb | 2 +- .../test_hooks/system_service_spec.rb | 2 +- spec/services/todo_service_spec.rb | 2 +- .../confidential_issue_service_spec.rb | 2 +- .../destroy/entity_leave_service_spec.rb | 2 +- .../destroy/group_private_service_spec.rb | 2 +- .../destroy/private_features_service_spec.rb | 2 +- .../destroy/project_private_service_spec.rb | 2 +- ...te_container_registry_info_service_spec.rb | 115 + ...date_merge_request_metrics_service_spec.rb | 2 +- spec/services/upload_service_spec.rb | 2 +- ...ser_project_access_changed_service_spec.rb | 2 +- spec/services/users/activity_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 +- .../services/users/keys_count_service_spec.rb | 2 +- .../users/last_push_event_service_spec.rb | 2 +- .../migrate_to_ghost_user_service_spec.rb | 2 +- ...efresh_authorized_projects_service_spec.rb | 2 +- .../users/repair_ldap_blocked_service_spec.rb | 2 +- .../users/respond_to_terms_service_spec.rb | 2 +- .../services/users/set_status_service_spec.rb | 2 +- spec/services/users/signup_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 +- .../verify_pages_domain_service_spec.rb | 2 +- spec/services/web_hook_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 | 17 +- .../wiki_pages/update_service_spec.rb | 2 +- .../wikis/create_attachment_service_spec.rb | 2 +- .../x509_certificate_revoke_service_spec.rb | 2 +- spec/sidekiq/cron/job_gem_dependency_spec.rb | 2 +- spec/simplecov_env.rb | 53 +- spec/spec_helper.rb | 6 +- spec/support/capybara.rb | 20 +- ...ect_import_rate_limiter_shared_examples.rb | 2 +- spec/support/helpers/expect_offense.rb | 22 - spec/support/helpers/fast_rails_root.rb | 10 + .../helpers/filtered_search_helpers.rb | 5 +- spec/support/helpers/jira_service_helper.rb | 3 +- .../helpers/metrics_dashboard_helpers.rb | 14 + spec/support/helpers/notification_helpers.rb | 12 +- .../packages_manager_api_spec_helper.rb | 46 + spec/support/helpers/partitioning_helpers.rb | 46 +- .../helpers/rack_attack_spec_helpers.rb | 12 + .../helpers/reference_parser_helpers.rb | 4 +- spec/support/helpers/snippet_helpers.rb | 14 + spec/support/helpers/stub_configuration.rb | 8 + spec/support/helpers/stub_object_storage.rb | 26 +- spec/support/helpers/test_env.rb | 32 +- spec/support/helpers/trigger_helpers.rb | 5 +- spec/support/helpers/usage_data_helpers.rb | 12 +- .../background_migrations_matchers.rb | 3 +- spec/support/matchers/jsonb_matchers.rb | 24 + spec/support/rspec.rb | 6 +- .../clusters/create_service_shared.rb | 9 +- ...cription_quick_actions_shared_examples.rb} | 37 +- ...lowed_users_in_namespace_shared_context.rb | 2 +- .../design_management_shared_contexts.rb | 2 +- .../features/error_tracking_shared_context.rb | 2 +- .../merge_requests_finder_shared_contexts.rb | 10 +- .../issuable/merge_request_shared_context.rb | 2 +- .../issuable/project_shared_context.rb | 2 +- .../navbar_structure_context.rb | 1 + .../policies/group_policy_shared_context.rb | 3 +- .../presenters/nuget_shared_context.rb | 41 + .../project_service_jira_context.rb | 15 + .../project_service_shared_context.rb | 2 +- .../prometheus/alert_shared_context.rb | 76 + .../jira_import/jira_projects_context.rb | 70 +- .../sentry_error_tracking_shared_context.rb | 2 +- .../services_shared_context.rb | 2 + .../support/shared_contexts/spam_constants.rb | 2 +- ...ontroller_new_import_ui_shared_examples.rb | 36 - ...mport_controller_status_shared_examples.rb | 33 + .../known_sign_in_shared_examples.rb | 102 +- .../prometheus_api_proxy_shared_examples.rb | 147 + .../metrics_dashboard_shared_examples.rb | 27 + ...ace_storage_limit_alert_shared_examples.rb | 53 - .../snippet_blob_shared_examples.rb | 49 + .../snippets_sort_order_shared_examples.rb | 41 + .../unique_visits_shared_examples.rb | 29 + .../wiki_actions_shared_examples.rb | 111 +- .../create_alert_issue_shared_examples.rb | 27 + .../discussion_comments_shared_example.rb | 2 +- .../editable_merge_request_shared_examples.rb | 8 +- .../features/error_tracking_shared_example.rb | 6 +- ..._manages_access_requests_shared_example.rb | 7 +- .../jira_import_resolver_shared_examples.rb | 4 +- .../graphql/mutation_shared_examples.rb | 14 +- .../services_resolver_shared_examples.rb | 4 +- .../resolves_issuable_shared_examples.rb | 41 +- .../helm_commands_shared_examples.rb | 4 +- .../mentions_migration_shared_examples.rb | 6 +- .../base_stage_shared_examples.rb | 6 +- .../default_query_config_shared_examples.rb | 2 +- .../cycle_analytics/event_shared_examples.rb | 1 + .../diff_file_collections_shared_examples.rb | 72 +- .../gitlab/gl_repository_shared_examples.rb | 10 +- ...tuck_import_job_workers_shared_examples.rb | 2 +- .../base_importer_shared_examples.rb | 2 +- .../shared_examples/lib/wikis_api_examples.rb | 174 + ...ster_application_status_shared_examples.rb | 20 - ...ter_application_version_shared_examples.rb | 28 + .../bulk_insert_safe_shared_examples.rb | 10 +- .../jira_import_state_shared_examples.rb | 10 +- .../note_access_check_shared_examples.rb | 4 +- .../models/services_fields_shared_examples.rb | 31 - .../models/synthetic_note_shared_examples.rb | 17 + .../namespaces/hierarchy_examples.rb | 21 + .../namespace_policy_shared_examples.rb | 34 + .../project_policy_shared_examples.rb | 28 + ...ge_request_quick_action_shared_examples.rb | 4 +- .../merge_quick_action_shared_examples.rb | 109 +- .../api/composer_packages_shared_examples.rb | 138 + .../projects/services_shared_examples.rb | 2 +- .../requests/api/notes_shared_examples.rb | 10 + .../api/nuget_packages_shared_examples.rb | 408 + .../requests/api/packages_shared_examples.rb | 43 + .../api/packages_tags_shared_examples.rb | 185 + .../api/pypi_packages_shared_examples.rb | 152 + ...ce_milestone_events_api_shared_examples.rb | 37 + .../requests/api/snippets_shared_examples.rb | 79 + .../requests/snippet_shared_examples.rb | 24 +- .../shared_examples/resource_events.rb | 26 +- .../resource_routing_shared_examples.rb | 73 + .../routing/wiki_routing_shared_examples.rb | 20 + .../alert_management_shared_examples.rb | 41 + ...r_applications_artifact_shared_examples.rb | 89 + .../common_system_notes_shared_examples.rb | 4 +- .../start_import_service_shared_examples.rb | 2 +- .../metrics/dashboard_shared_examples.rb | 80 +- .../services/packages_shared_examples.rb | 193 + ...ository_storage_service_shared_examples.rb | 16 +- ...hange_milestone_service_shared_examples.rb | 2 +- .../create_service_shared_examples.rb | 10 - .../destroy_service_shared_examples.rb | 10 - .../update_service_shared_examples.rb | 10 - .../snippet_blob_shared_examples.rb | 24 + .../uploaders/upload_type_shared_examples.rb | 6 +- .../views/pipeline_status_changes_email.rb | 2 +- .../shared_examples/views/plain_text_email.rb | 9 + .../jira_import_workers_shared_examples.rb | 8 +- .../active_record/query_recorder_spec.rb | 2 +- .../helpers/graphql_helpers_spec.rb | 2 +- .../helpers/stub_feature_flags_spec.rb | 2 +- .../exceed_query_limit_helpers_spec.rb | 2 +- spec/tasks/cache/clear/redis_spec.rb | 2 +- spec/tasks/config_lint_spec.rb | 4 +- .../tasks/gitlab/artifacts/check_rake_spec.rb | 2 +- .../gitlab/artifacts/migrate_rake_spec.rb | 2 +- spec/tasks/gitlab/backup_rake_spec.rb | 2 +- spec/tasks/gitlab/check_rake_spec.rb | 2 +- spec/tasks/gitlab/cleanup_rake_spec.rb | 2 +- .../gitlab/container_registry_rake_spec.rb | 86 +- spec/tasks/gitlab/db_rake_spec.rb | 2 +- spec/tasks/gitlab/external_diffs_rake_spec.rb | 34 + .../generate_sample_prometheus_data_spec.rb | 2 +- spec/tasks/gitlab/git_rake_spec.rb | 2 +- spec/tasks/gitlab/gitaly_rake_spec.rb | 2 +- spec/tasks/gitlab/info_rake_spec.rb | 2 +- spec/tasks/gitlab/ldap_rake_spec.rb | 2 +- spec/tasks/gitlab/lfs/check_rake_spec.rb | 2 +- spec/tasks/gitlab/lfs/migrate_rake_spec.rb | 2 +- .../gitlab/packages/migrate_rake_spec.rb | 39 + spec/tasks/gitlab/praefect_rake_spec.rb | 2 +- .../tasks/gitlab/seed/group_seed_rake_spec.rb | 2 +- spec/tasks/gitlab/shell_rake_spec.rb | 2 +- spec/tasks/gitlab/snippets_rake_spec.rb | 2 +- spec/tasks/gitlab/storage_rake_spec.rb | 2 +- spec/tasks/gitlab/task_helpers_spec.rb | 2 +- .../gitlab/update_templates_rake_spec.rb | 2 +- spec/tasks/gitlab/uploads/check_rake_spec.rb | 2 +- .../tasks/gitlab/uploads/migrate_rake_spec.rb | 2 +- spec/tasks/gitlab/web_hook_rake_spec.rb | 2 +- spec/tasks/gitlab/workhorse_rake_spec.rb | 2 +- spec/tasks/gitlab/x509/update_rake_spec.rb | 2 +- spec/tasks/migrate/schema_check_rake_spec.rb | 2 +- spec/tasks/tokens_spec.rb | 2 +- .../lib/tooling}/helm3_client_spec.rb | 6 +- .../lib/tooling}/kubernetes_client_spec.rb | 6 +- .../lib/tooling/test_file_finder_spec.rb | 74 +- spec/uploaders/attachment_uploader_spec.rb | 2 +- spec/uploaders/avatar_uploader_spec.rb | 2 +- spec/uploaders/content_type_whitelist_spec.rb | 2 +- .../design_v432x230_uploader_spec.rb | 2 +- spec/uploaders/external_diff_uploader_spec.rb | 2 +- spec/uploaders/favicon_uploader_spec.rb | 2 +- spec/uploaders/file_mover_spec.rb | 2 +- spec/uploaders/file_uploader_spec.rb | 2 +- spec/uploaders/gitlab_uploader_spec.rb | 2 +- spec/uploaders/import_export_uploader_spec.rb | 2 +- spec/uploaders/job_artifact_uploader_spec.rb | 2 +- spec/uploaders/lfs_object_uploader_spec.rb | 2 +- .../uploaders/namespace_file_uploader_spec.rb | 2 +- spec/uploaders/object_storage_spec.rb | 2 +- .../packages/package_file_uploader_spec.rb | 45 + spec/uploaders/personal_file_uploader_spec.rb | 2 +- spec/uploaders/records_uploads_spec.rb | 2 +- .../terraform/state_uploader_spec.rb | 2 +- spec/uploaders/uploader_helper_spec.rb | 2 +- .../background_move_worker_spec.rb | 2 +- .../migrate_uploads_worker_spec.rb | 2 +- .../addressable_url_validator_spec.rb | 2 +- .../array_members_validator_spec.rb | 69 + .../branch_filter_validator_spec.rb | 2 +- spec/validators/color_validator_spec.rb | 2 +- ...n_freeze_period_timezone_validator_spec.rb | 2 +- spec/validators/cron_validator_spec.rb | 2 +- .../validators/devise_email_validator_spec.rb | 2 +- spec/validators/js_regex_validator_spec.rb | 2 +- spec/validators/json_schema_validator_spec.rb | 2 +- .../named_ecdsa_key_validator_spec.rb | 2 +- .../namespace_path_validator_spec.rb | 2 +- .../validators/project_path_validator_spec.rb | 2 +- spec/validators/public_url_validator_spec.rb | 2 +- .../qualified_domain_array_validator_spec.rb | 2 +- spec/validators/sha_validator_spec.rb | 2 +- .../system_hook_url_validator_spec.rb | 2 +- .../variable_duplicates_validator_spec.rb | 2 +- ..._certificate_credentials_validator_spec.rb | 2 +- .../_eks.html.haml_spec.rb | 2 +- .../_repository_storage.html.haml_spec.rb | 2 +- .../general.html.haml_spec.rb | 2 +- .../repository.html.haml_spec.rb | 46 + .../admin/dashboard/index.html.haml_spec.rb | 2 +- .../admin/sessions/new.html.haml_spec.rb | 2 +- .../sessions/two_factor.html.haml_spec.rb | 2 +- .../views/admin/users/_user.html.haml_spec.rb | 2 +- spec/views/ci/status/_badge.html.haml_spec.rb | 2 +- spec/views/ci/status/_icon.html.haml_spec.rb | 2 +- .../_blank_state_admin_welcome.haml_spec.rb | 2 +- .../dashboard/projects/_nav.html.haml_spec.rb | 2 +- .../devise/sessions/new.html.haml_spec.rb | 2 +- .../shared/_signin_box.html.haml_spec.rb | 2 +- .../errors/access_denied.html.haml_spec.rb | 2 +- .../events/event/_push.html.haml_spec.rb | 2 +- .../groups/_home_panel.html.haml_spec.rb | 2 +- spec/views/groups/edit.html.haml_spec.rb | 2 +- spec/views/help/index.html.haml_spec.rb | 2 +- .../instance_configuration.html.haml_spec.rb | 2 +- spec/views/help/show.html.haml_spec.rb | 2 +- .../gitlab_projects/new.html.haml_spec.rb | 2 +- spec/views/layouts/_head.html.haml_spec.rb | 2 +- .../layouts/application.html.haml_spec.rb | 2 +- .../layouts/header/_new_dropdown.haml_spec.rb | 2 +- .../nav/sidebar/_admin.html.haml_spec.rb | 2 +- .../nav/sidebar/_group.html.haml_spec.rb | 2 +- .../_instance_statistics.html.haml_spec.rb | 2 +- .../nav/sidebar/_profile.html.haml_spec.rb | 2 +- .../nav/sidebar/_project.html.haml_spec.rb | 36 +- .../changed_milestone_email.html.haml_spec.rb | 2 +- .../pipeline_failed_email.html.haml_spec.rb | 2 +- .../pipeline_failed_email.text.erb_spec.rb | 2 +- .../pipeline_fixed_email.html.haml_spec.rb | 2 +- .../pipeline_fixed_email.text.erb_spec.rb | 2 +- .../pipeline_success_email.html.haml_spec.rb | 2 +- .../pipeline_success_email.text.erb_spec.rb | 2 +- ...h_to_merge_request_email.text.haml_spec.rb | 19 + .../preferences/show.html.haml_spec.rb | 2 +- spec/views/profiles/show.html.haml_spec.rb | 2 +- .../projects/_home_panel.html.haml_spec.rb | 2 +- .../projects/blob/_viewer.html.haml_spec.rb | 2 +- .../buttons/_dropdown.html.haml_spec.rb | 2 +- .../projects/ci/lints/show.html.haml_spec.rb | 2 +- .../clusters/gcp/_form.html.haml_spec.rb | 2 +- .../commit/_commit_box.html.haml_spec.rb | 2 +- .../commit/branches.html.haml_spec.rb | 2 +- .../projects/commit/show.html.haml_spec.rb | 2 +- .../commits/_commit.html.haml_spec.rb | 2 +- .../_confirm_rollback_modal_spec.html_spec.rb | 2 +- .../projects/diffs/_stats.html.haml_spec.rb | 2 +- .../projects/diffs/_viewer.html.haml_spec.rb | 2 +- spec/views/projects/edit.html.haml_spec.rb | 2 +- .../environments/terminal.html.haml_spec.rb | 2 +- .../projects/imports/new.html.haml_spec.rb | 2 +- .../_related_branches.html.haml_spec.rb | 2 +- .../import_csv/_button.html.haml_spec.rb | 2 +- .../projects/issues/show.html.haml_spec.rb | 12 +- .../projects/jobs/_build.html.haml_spec.rb | 2 +- .../_generic_commit_status.html.haml_spec.rb | 2 +- .../projects/jobs/show.html.haml_spec.rb | 2 +- .../merge_requests/_commits.html.haml_spec.rb | 2 +- .../creations/_new_submit.html.haml_spec.rb | 2 +- .../diffs/_diffs.html.haml_spec.rb | 2 +- .../merge_requests/edit.html.haml_spec.rb | 2 +- .../merge_requests/show.html.haml_spec.rb | 2 +- .../_more_actions_dropdown.html.haml_spec.rb | 2 +- .../projects/pages/show.html.haml_spec.rb | 2 +- .../pages_domains/show.html.haml_spec.rb | 2 +- .../_pipeline_schedule.html.haml_spec.rb | 2 +- .../pipelines/_stage.html.haml_spec.rb | 6 +- .../projects/services/_form.haml_spec.rb | 2 +- .../projects/services/edit.html.haml_spec.rb | 2 +- .../ci_cd/_autodevops_form.html.haml_spec.rb | 2 +- .../operations/show.html.haml_spec.rb | 17 +- spec/views/projects/show.html.haml_spec.rb | 41 - .../projects/tags/index.html.haml_spec.rb | 2 +- .../tree/_tree_header.html.haml_spec.rb | 55 - .../projects/tree/_tree_row.html.haml_spec.rb | 2 +- .../projects/tree/show.html.haml_spec.rb | 24 +- spec/views/search/_filter.html.haml_spec.rb | 2 +- spec/views/search/_form.html.haml_spec.rb | 2 +- spec/views/search/_results.html.haml_spec.rb | 2 +- spec/views/search/show.html.haml_spec.rb | 2 +- .../views/shared/_label_row.html.haml_spec.rb | 2 +- .../milestones/_issuable.html.haml_spec.rb | 2 +- .../milestones/_issuables.html.haml_spec.rb | 2 +- .../shared/milestones/_top.html.haml_spec.rb | 2 +- .../shared/notes/_form.html.haml_spec.rb | 2 +- .../shared/projects/_list.html.haml_spec.rb | 2 +- .../projects/_project.html.haml_spec.rb | 2 +- .../shared/runners/show.html.haml_spec.rb | 2 +- spec/workers/admin_email_worker_spec.rb | 2 +- spec/workers/archive_trace_worker_spec.rb | 2 +- spec/workers/authorized_keys_worker_spec.rb | 2 +- .../periodic_recalculate_worker_spec.rb | 2 +- .../project_create_worker_spec.rb | 4 +- .../project_group_link_create_worker_spec.rb | 52 + ...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 +- .../background_migration_worker_spec.rb | 2 +- spec/workers/build_coverage_worker_spec.rb | 2 +- spec/workers/build_finished_worker_spec.rb | 2 +- spec/workers/build_hooks_worker_spec.rb | 2 +- spec/workers/build_success_worker_spec.rb | 2 +- .../build_trace_sections_worker_spec.rb | 2 +- spec/workers/chat_notification_worker_spec.rb | 2 +- .../ci/archive_traces_cron_worker_spec.rb | 2 +- spec/workers/ci/build_prepare_worker_spec.rb | 2 +- .../ci/build_report_result_worker_spec.rb | 2 +- spec/workers/ci/build_schedule_worker_spec.rb | 2 +- ...eate_cross_project_pipeline_worker_spec.rb | 2 +- ..._build_group_report_results_worker_spec.rb | 2 +- .../ci/pipeline_bridge_status_worker_spec.rb | 2 +- ...ne_success_unlock_artifacts_worker_spec.rb | 67 + ...ref_delete_unlock_artifacts_worker_spec.rb | 78 + ...esource_from_resource_group_worker_spec.rb | 2 +- ...leanup_container_repository_worker_spec.rb | 2 +- .../cluster_configure_istio_worker_spec.rb | 2 +- spec/workers/cluster_provision_worker_spec.rb | 2 +- .../workers/cluster_update_app_worker_spec.rb | 20 +- ...cluster_wait_for_app_update_worker_spec.rb | 2 +- ...wait_for_ingress_ip_address_worker_spec.rb | 2 +- .../activate_service_worker_spec.rb | 2 +- .../check_prometheus_health_worker_spec.rb | 2 +- .../deactivate_service_worker_spec.rb | 2 +- .../wait_for_uninstall_app_worker_spec.rb | 2 +- .../clusters/cleanup/app_worker_spec.rb | 2 +- .../cleanup/project_namespace_worker_spec.rb | 2 +- .../cleanup/service_account_worker_spec.rb | 2 +- .../concerns/application_worker_spec.rb | 2 +- spec/workers/concerns/cluster_queue_spec.rb | 2 +- spec/workers/concerns/cronjob_queue_spec.rb | 2 +- .../github_import/object_importer_spec.rb | 2 +- .../gitlab/github_import/queue_spec.rb | 2 +- .../rescheduling_methods_spec.rb | 2 +- .../github_import/stage_methods_spec.rb | 2 +- .../concerns/gitlab/notify_upon_death_spec.rb | 2 +- .../pipeline_background_queue_spec.rb | 2 +- spec/workers/concerns/pipeline_queue_spec.rb | 2 +- .../concerns/project_export_options_spec.rb | 41 - .../concerns/project_import_options_spec.rb | 2 +- spec/workers/concerns/reenqueuer_spec.rb | 4 +- .../concerns/repository_check_queue_spec.rb | 2 +- spec/workers/concerns/waitable_worker_spec.rb | 2 +- spec/workers/concerns/worker_context_spec.rb | 2 +- ...container_expiration_policy_worker_spec.rb | 2 +- .../create_commit_signature_worker_spec.rb | 2 +- spec/workers/create_evidence_worker_spec.rb | 2 +- .../create_note_diff_file_worker_spec.rb | 2 +- spec/workers/create_pipeline_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 +- .../deployments/finished_worker_spec.rb | 2 +- .../deployments/success_worker_spec.rb | 2 +- .../new_version_worker_spec.rb | 2 +- ...detect_repository_languages_worker_spec.rb | 2 +- spec/workers/email_receiver_worker_spec.rb | 2 +- spec/workers/emails_on_push_worker_spec.rb | 2 +- .../auto_stop_cron_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 +- ...re_build_instance_artifacts_worker_spec.rb | 4 +- spec/workers/expire_job_cache_worker_spec.rb | 2 +- .../expire_pipeline_cache_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 +- .../git_garbage_collect_worker_spec.rb | 2 +- .../advance_stage_worker_spec.rb | 2 +- .../import_diff_note_worker_spec.rb | 2 +- .../github_import/import_issue_worker_spec.rb | 2 +- .../github_import/import_note_worker_spec.rb | 2 +- .../import_pull_request_worker_spec.rb | 2 +- .../refresh_import_jid_worker_spec.rb | 2 +- .../stage/finish_import_worker_spec.rb | 2 +- .../stage/import_base_data_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 +- .../stage/import_pull_requests_worker_spec.rb | 2 +- .../stage/import_repository_worker_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 +- spec/workers/gitlab_shell_worker_spec.rb | 2 +- spec/workers/gitlab_usage_ping_worker_spec.rb | 2 +- spec/workers/group_destroy_worker_spec.rb | 2 +- spec/workers/group_export_worker_spec.rb | 2 +- spec/workers/group_import_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 +- .../process_incident_worker_spec.rb | 57 + .../process_alert_worker_spec.rb | 66 +- .../process_prometheus_alert_worker_spec.rb | 134 +- ...nvalid_gpg_signature_update_worker_spec.rb | 2 +- spec/workers/irker_worker_spec.rb | 2 +- .../issue_due_scheduler_worker_spec.rb | 2 +- .../mail_scheduler/issue_due_worker_spec.rb | 2 +- .../notification_service_worker_spec.rb | 2 +- .../unassign_issuables_worker_spec.rb | 27 + ..._request_mergeability_check_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 +- .../migrate_external_diffs_worker_spec.rb | 2 +- ...mespaceless_project_destroy_worker_spec.rb | 2 +- ...prune_aggregation_schedules_worker_spec.rb | 2 +- .../namespaces/root_statistics_worker_spec.rb | 2 +- .../schedule_aggregation_worker_spec.rb | 2 +- spec/workers/new_issue_worker_spec.rb | 2 +- spec/workers/new_merge_request_worker_spec.rb | 2 +- spec/workers/new_note_worker_spec.rb | 2 +- spec/workers/new_release_worker_spec.rb | 17 - .../workers/object_pool/create_worker_spec.rb | 2 +- .../object_pool/destroy_worker_spec.rb | 2 +- spec/workers/object_pool/join_worker_spec.rb | 2 +- .../packages/nuget/extraction_worker_spec.rb | 94 + .../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 +- .../workers/partition_creation_worker_spec.rb | 19 + spec/workers/pipeline_hooks_worker_spec.rb | 2 +- spec/workers/pipeline_metrics_worker_spec.rb | 4 +- .../pipeline_notification_worker_spec.rb | 2 +- spec/workers/pipeline_process_worker_spec.rb | 2 +- spec/workers/pipeline_schedule_worker_spec.rb | 4 +- ...pdate_ci_ref_status_worker_service_spec.rb | 2 +- spec/workers/pipeline_update_worker_spec.rb | 10 +- spec/workers/post_receive_spec.rb | 9 +- spec/workers/process_commit_worker_spec.rb | 6 +- spec/workers/project_cache_worker_spec.rb | 2 +- .../project_daily_statistics_worker_spec.rb | 2 +- spec/workers/project_destroy_worker_spec.rb | 2 +- spec/workers/project_export_worker_spec.rb | 12 +- spec/workers/project_service_worker_spec.rb | 2 +- ...t_update_repository_storage_worker_spec.rb | 3 +- .../create_default_alerts_worker_spec.rb | 2 +- .../propagate_integration_worker_spec.rb | 2 +- .../propagate_service_template_worker_spec.rb | 2 +- spec/workers/prune_old_events_worker_spec.rb | 2 +- .../prune_web_hook_logs_worker_spec.rb | 2 +- spec/workers/reactive_caching_worker_spec.rb | 2 +- spec/workers/rebase_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 +- ...ve_unreferenced_lfs_objects_worker_spec.rb | 2 +- .../repository_check/batch_worker_spec.rb | 2 +- .../repository_check/clear_worker_spec.rb | 4 +- .../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 +- spec/workers/repository_import_worker_spec.rb | 8 +- .../repository_remove_remote_worker_spec.rb | 4 +- ...sitory_update_remote_mirror_worker_spec.rb | 10 +- .../run_pipeline_schedule_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 | 53 + 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_import_jobs_worker_spec.rb | 27 - spec/workers/stuck_merge_jobs_worker_spec.rb | 2 +- spec/workers/system_hook_push_worker_spec.rb | 2 +- .../confidential_issue_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 | 15 + ...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 +- .../users/create_statistics_worker_spec.rb | 2 +- .../wait_for_cluster_creation_worker_spec.rb | 2 +- .../x509_certificate_revoke_worker_spec.rb | 2 +- .../x509_issuer_crl_check_worker_spec.rb | 2 +- symbol/icons.svg | 1 - symbol/sprite.symbol.html | 177 - .../lib/tooling}/helm3_client.rb | 10 +- .../lib/tooling}/kubernetes_client.rb | 5 +- tooling/lib/tooling/test_file_finder.rb | 44 +- tooling/overcommit/Gemfile | 2 +- tooling/overcommit/Gemfile.lock | 4 +- vendor/elastic_stack/values.yaml | 4 + vendor/licenses.csv | 3 - vendor/project_templates/jsonnet.tar.gz | Bin 0 -> 3857 bytes vendor/project_templates/learn_gitlab.tar.gz | Bin 114701 -> 114312 bytes yarn.lock | 192 +- 8181 files changed, 344178 insertions(+), 71305 deletions(-) create mode 100644 .gitlab/ci/build-images.gitlab-ci.yml create mode 100644 app/assets/images/confluence.svg create mode 100644 app/assets/images/logos/jira-gray.svg create mode 100644 app/assets/javascripts/alert_management/components/alert_management_empty_state.vue create mode 100644 app/assets/javascripts/alert_management/components/alert_management_list_wrapper.vue rename app/assets/javascripts/alert_management/components/{alert_management_list.vue => alert_management_table.vue} (68%) create mode 100644 app/assets/javascripts/alert_management/components/alert_metrics.vue create mode 100644 app/assets/javascripts/alert_management/components/alert_status.vue rename app/assets/javascripts/alert_management/graphql/mutations/{alert_set_assignees.graphql => alert_set_assignees.mutation.graphql} (51%) create mode 100644 app/assets/javascripts/alert_management/graphql/mutations/alert_todo_create.graphql delete mode 100644 app/assets/javascripts/alert_management/graphql/mutations/create_issue_from_alert.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/mutations/create_issue_from_alert.mutation.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/mutations/toggle_sidebar_status.mutation.graphql delete mode 100644 app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.mutation.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/queries/sidebar_status.query.graphql create mode 100644 app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue create mode 100644 app/assets/javascripts/alerts_settings/constants.js create mode 100644 app/assets/javascripts/alerts_settings/index.js create mode 100644 app/assets/javascripts/alerts_settings/services/index.js create mode 100644 app/assets/javascripts/behaviors/collapse_sidebar_on_window_resize.js create mode 100644 app/assets/javascripts/behaviors/select2.js create mode 100644 app/assets/javascripts/blob_edit/constants.js delete mode 100644 app/assets/javascripts/boards/components/board.js delete mode 100644 app/assets/javascripts/ci_variable_list/components/ci_key_field.vue create mode 100644 app/assets/javascripts/clusters_list/components/ancestor_notice.vue delete mode 100644 app/assets/javascripts/commons/polyfills/custom_event.js delete mode 100644 app/assets/javascripts/commons/polyfills/element.js delete mode 100644 app/assets/javascripts/commons/polyfills/event.js delete mode 100644 app/assets/javascripts/commons/polyfills/nodelist.js delete mode 100644 app/assets/javascripts/commons/polyfills/request_idle_callback.js delete mode 100644 app/assets/javascripts/commons/polyfills/svg.js rename app/assets/javascripts/design_management/graphql/fragments/{designList.fragment.graphql => design_list.fragment.graphql} (100%) rename app/assets/javascripts/design_management/graphql/fragments/{designNote.fragment.graphql => design_note.fragment.graphql} (90%) rename app/assets/javascripts/design_management/graphql/fragments/{diffRefs.fragment.graphql => diff_refs.fragment.graphql} (100%) rename app/assets/javascripts/design_management/graphql/mutations/{createImageDiffNote.mutation.graphql => create_image_diff_note.mutation.graphql} (86%) rename app/assets/javascripts/design_management/graphql/mutations/{createNote.mutation.graphql => create_note.mutation.graphql} (71%) rename app/assets/javascripts/design_management/graphql/mutations/{destroyDesign.mutation.graphql => destroy_design.mutation.graphql} (100%) rename app/assets/javascripts/design_management/graphql/mutations/{updateImageDiffNote.mutation.graphql => update_image_diff_note.mutation.graphql} (75%) rename app/assets/javascripts/design_management/graphql/mutations/{uploadDesign.mutation.graphql => upload_design.mutation.graphql} (97%) rename app/assets/javascripts/design_management/graphql/queries/{appData.query.graphql => app_data.query.graphql} (100%) rename app/assets/javascripts/design_management/graphql/queries/{getDesign.query.graphql => get_design.query.graphql} (100%) create mode 100644 app/assets/javascripts/design_management_new/components/app.vue create mode 100644 app/assets/javascripts/design_management_new/components/delete_button.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_destroyer.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_note_pin.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_notes/design_discussion.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_notes/design_note.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_notes/design_reply_form.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_notes/toggle_replies_widget.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_overlay.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_presentation.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_scaler.vue create mode 100644 app/assets/javascripts/design_management_new/components/design_sidebar.vue create mode 100644 app/assets/javascripts/design_management_new/components/image.vue create mode 100644 app/assets/javascripts/design_management_new/components/list/item.vue create mode 100644 app/assets/javascripts/design_management_new/components/toolbar/index.vue create mode 100644 app/assets/javascripts/design_management_new/components/toolbar/pagination.vue create mode 100644 app/assets/javascripts/design_management_new/components/toolbar/pagination_button.vue create mode 100644 app/assets/javascripts/design_management_new/components/upload/button.vue create mode 100644 app/assets/javascripts/design_management_new/components/upload/design_dropzone.vue create mode 100644 app/assets/javascripts/design_management_new/components/upload/design_version_dropdown.vue create mode 100644 app/assets/javascripts/design_management_new/constants.js create mode 100644 app/assets/javascripts/design_management_new/graphql.js create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/design.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/design_list.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/design_note.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/diff_refs.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/discussion_resolved_status.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/note_permissions.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/fragments/version.fragment.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/create_image_diff_note.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/create_note.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/destroy_design.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/toggle_resolve_discussion.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/update_active_discussion.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/update_image_diff_note.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/update_note.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/mutations/upload_design.mutation.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/queries/active_discussion.query.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/queries/design_permissions.query.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/queries/get_design.query.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/queries/get_design_list.query.graphql create mode 100644 app/assets/javascripts/design_management_new/graphql/typedefs.graphql create mode 100644 app/assets/javascripts/design_management_new/index.js create mode 100644 app/assets/javascripts/design_management_new/mixins/all_designs.js create mode 100644 app/assets/javascripts/design_management_new/mixins/all_versions.js create mode 100644 app/assets/javascripts/design_management_new/pages/design/index.vue create mode 100644 app/assets/javascripts/design_management_new/pages/index.vue create mode 100644 app/assets/javascripts/design_management_new/router/constants.js create mode 100644 app/assets/javascripts/design_management_new/router/index.js create mode 100644 app/assets/javascripts/design_management_new/router/routes.js create mode 100644 app/assets/javascripts/design_management_new/utils/cache_update.js create mode 100644 app/assets/javascripts/design_management_new/utils/design_management_utils.js create mode 100644 app/assets/javascripts/design_management_new/utils/error_messages.js create mode 100644 app/assets/javascripts/design_management_new/utils/tracking.js create mode 100644 app/assets/javascripts/editor/editor_markdown_ext.js create mode 100644 app/assets/javascripts/graphql_shared/fragments/user.fragment.graphql create mode 100644 app/assets/javascripts/ide/lib/schemas/index.js create mode 100644 app/assets/javascripts/ide/lib/schemas/json/index.js create mode 100644 app/assets/javascripts/ide/lib/schemas/yaml/gitlab_ci.js create mode 100644 app/assets/javascripts/ide/lib/schemas/yaml/index.js create mode 100644 app/assets/javascripts/incidents_settings/components/alerts_form.vue create mode 100644 app/assets/javascripts/incidents_settings/components/incidents_settings_tabs.vue create mode 100644 app/assets/javascripts/incidents_settings/components/pagerduty_form.vue create mode 100644 app/assets/javascripts/incidents_settings/constants.js create mode 100644 app/assets/javascripts/incidents_settings/incidents_settings_service.js create mode 100644 app/assets/javascripts/incidents_settings/index.js create mode 100644 app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue create mode 100644 app/assets/javascripts/integrations/edit/components/override_dropdown.vue create mode 100644 app/assets/javascripts/integrations/edit/store/actions.js create mode 100644 app/assets/javascripts/integrations/edit/store/getters.js create mode 100644 app/assets/javascripts/integrations/edit/store/index.js create mode 100644 app/assets/javascripts/integrations/edit/store/mutation_types.js create mode 100644 app/assets/javascripts/integrations/edit/store/mutations.js create mode 100644 app/assets/javascripts/integrations/edit/store/state.js create mode 100644 app/assets/javascripts/issue_show/components/issuable_header_warnings.vue create mode 100644 app/assets/javascripts/jira_import/queries/get_jira_user_mapping.mutation.graphql delete mode 100644 app/assets/javascripts/jobs/components/job_log.vue create mode 100644 app/assets/javascripts/lib/utils/axios_startup_calls.js create mode 100644 app/assets/javascripts/monitoring/components/create_dashboard_modal.vue create mode 100644 app/assets/javascripts/monitoring/components/duplicate_dashboard_modal.vue create mode 100644 app/assets/javascripts/monitoring/components/refresh_button.vue rename app/assets/javascripts/monitoring/components/variables/{custom_variable.vue => dropdown_field.vue} (60%) rename app/assets/javascripts/monitoring/components/variables/{text_variable.vue => text_field.vue} (90%) create mode 100644 app/assets/javascripts/monitoring/queries/getDashboardValidationWarnings.query.graphql delete mode 100644 app/assets/javascripts/namespace_storage_limit_alert.js create mode 100644 app/assets/javascripts/pages/groups/group_members/index.js delete mode 100644 app/assets/javascripts/pages/groups/group_members/index/index.js create mode 100644 app/assets/javascripts/pages/projects/clusters/show/cluster_health.js create mode 100644 app/assets/javascripts/pages/projects/forks/new/components/fork_groups_list.vue create mode 100644 app/assets/javascripts/pages/projects/forks/new/components/fork_groups_list_item.vue create mode 100644 app/assets/javascripts/pages/projects/integrations/jira/issues/index/index.js create mode 100644 app/assets/javascripts/pages/projects/issues/service_desk/filtered_search.js create mode 100644 app/assets/javascripts/pages/projects/issues/service_desk/index.js create mode 100644 app/assets/javascripts/pages/projects/metrics_dashboard/index.js create mode 100644 app/assets/javascripts/pages/projects/releases/new/index.js create mode 100644 app/assets/javascripts/pipelines/components/dag/dag_annotations.vue rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/blank_state.vue (100%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/empty_state.vue (100%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/nav_controls.vue (94%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipeline_stop_modal.vue (100%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipeline_triggerer.vue (83%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipeline_url.vue (76%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipelines.vue (85%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipelines_actions.vue (98%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipelines_artifacts.vue (100%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipelines_filtered_search.vue (100%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipelines_table.vue (93%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/pipelines_table_row.vue (93%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/stage.vue (93%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/time_ago.vue (90%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/tokens/pipeline_branch_name_token.vue (98%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/tokens/pipeline_status_token.vue (100%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/tokens/pipeline_tag_name_token.vue (98%) rename app/assets/javascripts/pipelines/components/{ => pipelines_list}/tokens/pipeline_trigger_author_token.vue (98%) create mode 100644 app/assets/javascripts/projects/components/remove_modal.vue create mode 100644 app/assets/javascripts/projects/project_remove_modal.js create mode 100644 app/assets/javascripts/projects/settings_service_desk/components/service_desk_root.vue create mode 100644 app/assets/javascripts/projects/settings_service_desk/components/service_desk_setting.vue create mode 100644 app/assets/javascripts/projects/settings_service_desk/event_hub.js create mode 100644 app/assets/javascripts/projects/settings_service_desk/index.js create mode 100644 app/assets/javascripts/projects/settings_service_desk/services/service_desk_service.js create mode 100644 app/assets/javascripts/ref/components/ref_results_section.vue create mode 100644 app/assets/javascripts/ref/components/ref_selector.vue create mode 100644 app/assets/javascripts/ref/constants.js create mode 100644 app/assets/javascripts/ref/stores/actions.js create mode 100644 app/assets/javascripts/ref/stores/getters.js create mode 100644 app/assets/javascripts/ref/stores/index.js create mode 100644 app/assets/javascripts/ref/stores/mutation_types.js create mode 100644 app/assets/javascripts/ref/stores/mutations.js create mode 100644 app/assets/javascripts/ref/stores/state.js create mode 100644 app/assets/javascripts/registry/explorer/components/delete_button.vue create mode 100644 app/assets/javascripts/registry/explorer/components/details_page/details_row.vue create mode 100644 app/assets/javascripts/registry/explorer/components/details_page/tags_list.vue create mode 100644 app/assets/javascripts/registry/explorer/components/details_page/tags_list_row.vue delete mode 100644 app/assets/javascripts/registry/explorer/components/details_page/tags_table.vue create mode 100644 app/assets/javascripts/registry/explorer/components/list_item.vue create mode 100644 app/assets/javascripts/registry/settings/constants.js create mode 100644 app/assets/javascripts/releases/components/app_new.vue create mode 100644 app/assets/javascripts/releases/mount_new.js create mode 100644 app/assets/javascripts/reports/codequality_report/components/codequality_issue_body.vue create mode 100644 app/assets/javascripts/reports/codequality_report/grouped_codequality_reports_app.vue create mode 100644 app/assets/javascripts/reports/codequality_report/store/actions.js create mode 100644 app/assets/javascripts/reports/codequality_report/store/getters.js create mode 100644 app/assets/javascripts/reports/codequality_report/store/index.js create mode 100644 app/assets/javascripts/reports/codequality_report/store/mutation_types.js create mode 100644 app/assets/javascripts/reports/codequality_report/store/mutations.js create mode 100644 app/assets/javascripts/reports/codequality_report/store/state.js create mode 100644 app/assets/javascripts/reports/codequality_report/store/utils/codequality_comparison.js create mode 100644 app/assets/javascripts/reports/codequality_report/workers/codequality_comparison_worker.js create mode 100644 app/assets/javascripts/repository/components/web_ide_link.vue delete mode 100644 app/assets/javascripts/repository/queries/getVueFileListLfsBadge.query.graphql rename app/assets/javascripts/{global_search_input.js => search_autocomplete.js} (78%) create mode 100644 app/assets/javascripts/sidebar/components/confidential/queries/update_issue_confidential.mutation.graphql create mode 100644 app/assets/javascripts/static_site_editor/image_repository.js create mode 100644 app/assets/javascripts/static_site_editor/services/image_service.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_summary.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_summary_optional.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/approvals/messages.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/mr_widget_expandable_section.vue delete mode 100644 app/assets/javascripts/vue_merge_request_widget/components/mr_widget_terraform_plan.vue delete mode 100644 app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_pipeline_tour.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/terraform/terraform_plan.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/mixins/approvals.js rename app/assets/javascripts/vue_shared/components/{issue/issue_warning.vue => notes/noteable_warning.vue} (58%) create mode 100644 app/assets/javascripts/vue_shared/components/remove_member_modal.vue create mode 100644 app/assets/javascripts/vue_shared/components/resizable_chart/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/resizable_chart/skeleton_loader.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/modals/add_image/add_image_modal.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/modals/add_image/upload_image_tab.vue delete mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/modals/add_image_modal.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/build_custom_renderer.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/build_html_to_markdown_renderer.js rename app/assets/javascripts/vue_shared/components/rich_content_editor/{ => services}/editor_service.js (64%) create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/build_uneditable_token.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_embedded_ruby_text.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_font_awesome_html_inline.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_html_block.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_identifier_instance_text.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_identifier_paragraph.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_kramdown_list.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/services/renderers/render_kramdown_text.js create mode 100644 app/assets/stylesheets/components/ref_selector.scss delete mode 100644 app/assets/stylesheets/pages/container_registry.scss create mode 100644 app/assets/stylesheets/pages/issues/issues_list.scss create mode 100644 app/assets/stylesheets/pages/service_desk.scss create mode 100644 app/controllers/concerns/controller_with_feature_category.rb create mode 100644 app/controllers/concerns/controller_with_feature_category/config.rb create mode 100644 app/controllers/concerns/filters_events.rb create mode 100644 app/controllers/concerns/metrics/dashboard/prometheus_api_proxy.rb create mode 100644 app/controllers/concerns/renders_projects_list.rb create mode 100644 app/controllers/concerns/snippets/blobs_actions.rb create mode 100644 app/controllers/concerns/snippets/send_blob.rb create mode 100644 app/controllers/concerns/snippets_sort.rb create mode 100644 app/controllers/projects/confluences_controller.rb create mode 100644 app/controllers/projects/incident_management/pager_duty_incidents_controller.rb create mode 100644 app/controllers/projects/metrics_dashboard_controller.rb create mode 100644 app/controllers/projects/pipelines/application_controller.rb create mode 100644 app/controllers/projects/pipelines/stages_controller.rb create mode 100644 app/controllers/projects/pipelines/tests_controller.rb create mode 100644 app/controllers/projects/service_desk_controller.rb create mode 100644 app/controllers/projects/snippets/blobs_controller.rb delete mode 100644 app/controllers/projects/stages_controller.rb create mode 100644 app/controllers/snippets/blobs_controller.rb create mode 100644 app/finders/ci/variables_finder.rb create mode 100644 app/finders/packages/composer/packages_finder.rb create mode 100644 app/finders/packages/conan/package_file_finder.rb create mode 100644 app/finders/packages/conan/package_finder.rb create mode 100644 app/finders/packages/go/module_finder.rb create mode 100644 app/finders/packages/go/version_finder.rb create mode 100644 app/finders/packages/group_packages_finder.rb create mode 100644 app/finders/packages/maven/package_finder.rb create mode 100644 app/finders/packages/npm/package_finder.rb create mode 100644 app/finders/packages/nuget/package_finder.rb create mode 100644 app/finders/packages/package_file_finder.rb create mode 100644 app/finders/packages/package_finder.rb create mode 100644 app/finders/packages/packages_finder.rb create mode 100644 app/finders/packages/tags_finder.rb create mode 100644 app/finders/resource_state_event_finder.rb create mode 100644 app/graphql/mutations/alert_management/alerts/todo/create.rb create mode 100644 app/graphql/mutations/issues/set_locked.rb create mode 100644 app/graphql/mutations/merge_requests/update.rb create mode 100644 app/graphql/resolvers/ci_configuration/sast_resolver.rb create mode 100644 app/graphql/resolvers/packages_resolver.rb create mode 100644 app/graphql/types/ci_configuration/sast/analyzers_entity_type.rb create mode 100644 app/graphql/types/ci_configuration/sast/entity_type.rb create mode 100644 app/graphql/types/ci_configuration/sast/options_entity_type.rb create mode 100644 app/graphql/types/ci_configuration/sast/type.rb create mode 100644 app/graphql/types/deprecated_mutations.rb create mode 100644 app/graphql/types/diff_stats_summary_type.rb create mode 100644 app/graphql/types/diff_stats_type.rb create mode 100644 app/graphql/types/global_id_type.rb create mode 100644 app/graphql/types/issue_connection_type.rb create mode 100644 app/graphql/types/jira_users_mapping_input_type.rb create mode 100644 app/graphql/types/milestone_stats_type.rb create mode 100644 app/graphql/types/package_type.rb create mode 100644 app/graphql/types/package_type_enum.rb rename app/graphql/types/{release_link_type.rb => release_asset_link_type.rb} (73%) rename app/graphql/types/{release_link_type_enum.rb => release_asset_link_type_enum.rb} (78%) create mode 100644 app/graphql/types/release_links_type.rb create mode 100644 app/graphql/types/untrusted_regexp.rb create mode 100644 app/helpers/analytics/unique_visits_helper.rb delete mode 100644 app/helpers/builds_helper.rb create mode 100644 app/helpers/ci/builds_helper.rb create mode 100644 app/helpers/ci/jobs_helper.rb create mode 100644 app/helpers/ci/pipeline_schedules_helper.rb create mode 100644 app/helpers/ci/runners_helper.rb create mode 100644 app/helpers/ci/status_helper.rb create mode 100644 app/helpers/ci/variables_helper.rb delete mode 100644 app/helpers/ci_status_helper.rb delete mode 100644 app/helpers/ci_variables_helper.rb delete mode 100644 app/helpers/jobs_helper.rb create mode 100644 app/helpers/notify_helper.rb delete mode 100644 app/helpers/onboarding_experiment_helper.rb create mode 100644 app/helpers/operations_helper.rb delete mode 100644 app/helpers/pipeline_schedules_helper.rb delete mode 100644 app/helpers/runners_helper.rb create mode 100644 app/mailers/emails/service_desk.rb create mode 100644 app/models/approval.rb create mode 100644 app/models/ci/pipeline_message.rb create mode 100644 app/models/clusters/applications/cilium.rb create mode 100644 app/models/concerns/approvable_base.rb create mode 100644 app/models/concerns/ci/has_status.rb delete mode 100644 app/models/concerns/has_status.rb create mode 100644 app/models/concerns/partitioned_table.rb create mode 100644 app/models/custom_emoji.rb delete mode 100644 app/models/namespace/root_storage_size.rb create mode 100644 app/models/namespace/traversal_hierarchy.rb create mode 100644 app/models/namespace_setting.rb create mode 100644 app/models/packages.rb create mode 100644 app/models/packages/build_info.rb create mode 100644 app/models/packages/composer/metadatum.rb create mode 100644 app/models/packages/conan.rb create mode 100644 app/models/packages/conan/file_metadatum.rb create mode 100644 app/models/packages/conan/metadatum.rb create mode 100644 app/models/packages/dependency.rb create mode 100644 app/models/packages/dependency_link.rb create mode 100644 app/models/packages/go/module.rb create mode 100644 app/models/packages/go/module_version.rb create mode 100644 app/models/packages/maven.rb create mode 100644 app/models/packages/maven/metadatum.rb create mode 100644 app/models/packages/nuget.rb create mode 100644 app/models/packages/nuget/dependency_link_metadatum.rb create mode 100644 app/models/packages/nuget/metadatum.rb create mode 100644 app/models/packages/package.rb create mode 100644 app/models/packages/package_file.rb create mode 100644 app/models/packages/pypi.rb create mode 100644 app/models/packages/pypi/metadatum.rb create mode 100644 app/models/packages/sem_ver.rb create mode 100644 app/models/packages/tag.rb create mode 100644 app/models/product_analytics_event.rb create mode 100644 app/models/project_services/confluence_service.rb create mode 100644 app/models/service_desk_setting.rb create mode 100644 app/models/snippet_statistics.rb create mode 100644 app/models/webauthn_registration.rb create mode 100644 app/policies/packages/package_policy.rb create mode 100644 app/presenters/alert_management/alert_presenter.rb create mode 100644 app/presenters/alert_management/prometheus_alert_presenter.rb create mode 100644 app/presenters/packages/composer/packages_presenter.rb create mode 100644 app/presenters/packages/conan/package_presenter.rb create mode 100644 app/presenters/packages/detail/package_presenter.rb create mode 100644 app/presenters/packages/go/module_version_presenter.rb create mode 100644 app/presenters/packages/npm/package_presenter.rb create mode 100644 app/presenters/packages/nuget/package_metadata_presenter.rb create mode 100644 app/presenters/packages/nuget/packages_metadata_presenter.rb create mode 100644 app/presenters/packages/nuget/packages_versions_presenter.rb create mode 100644 app/presenters/packages/nuget/presenter_helpers.rb create mode 100644 app/presenters/packages/nuget/search_results_presenter.rb create mode 100644 app/presenters/packages/nuget/service_index_presenter.rb create mode 100644 app/presenters/packages/pypi/package_presenter.rb create mode 100644 app/serializers/ci/group_variable_entity.rb create mode 100644 app/serializers/ci/group_variable_serializer.rb create mode 100644 app/serializers/ci/variable_entity.rb create mode 100644 app/serializers/ci/variable_serializer.rb create mode 100644 app/serializers/fork_namespace_entity.rb create mode 100644 app/serializers/fork_namespace_serializer.rb delete mode 100644 app/serializers/group_variable_entity.rb delete mode 100644 app/serializers/group_variable_serializer.rb create mode 100644 app/serializers/test_report_summary_entity.rb create mode 100644 app/serializers/test_report_summary_serializer.rb create mode 100644 app/serializers/test_suite_serializer.rb create mode 100644 app/serializers/test_suite_summary_entity.rb delete mode 100644 app/serializers/variable_entity.rb delete mode 100644 app/serializers/variable_serializer.rb create mode 100644 app/services/alert_management/alerts/todo/create_service.rb delete mode 100644 app/services/alert_management/update_alert_status_service.rb create mode 100644 app/services/authorized_project_update/project_group_link_create_service.rb delete mode 100644 app/services/ci/authorize_job_artifact_service.rb create mode 100644 app/services/ci/unlock_artifacts_service.rb create mode 100644 app/services/deploy_keys/collect_keys_service.rb create mode 100644 app/services/gpg_keys/destroy_service.rb create mode 100644 app/services/groups/update_shared_runners_service.rb create mode 100644 app/services/import/bitbucket_server_service.rb create mode 100644 app/services/incident_management/create_incident_label_service.rb create mode 100644 app/services/incident_management/pager_duty/create_incident_issue_service.rb create mode 100644 app/services/incident_management/pager_duty/process_webhook_service.rb delete mode 100644 app/services/jira/requests/projects.rb create mode 100644 app/services/jira/requests/projects/list_service.rb create mode 100644 app/services/members/unassign_issuables_service.rb create mode 100644 app/services/merge_requests/approval_service.rb create mode 100644 app/services/merge_requests/remove_approval_service.rb create mode 100644 app/services/metrics/dashboard/cluster_dashboard_service.rb create mode 100644 app/services/metrics/dashboard/cluster_metrics_embed_service.rb delete mode 100644 app/services/namespaces/check_storage_size_service.rb create mode 100644 app/services/packages/composer/composer_json_service.rb create mode 100644 app/services/packages/composer/create_package_service.rb create mode 100644 app/services/packages/composer/version_parser_service.rb create mode 100644 app/services/packages/conan/create_package_file_service.rb create mode 100644 app/services/packages/conan/create_package_service.rb create mode 100644 app/services/packages/conan/search_service.rb create mode 100644 app/services/packages/create_dependency_service.rb create mode 100644 app/services/packages/create_package_file_service.rb create mode 100644 app/services/packages/maven/create_package_service.rb create mode 100644 app/services/packages/maven/find_or_create_package_service.rb create mode 100644 app/services/packages/npm/create_package_service.rb create mode 100644 app/services/packages/npm/create_tag_service.rb create mode 100644 app/services/packages/nuget/create_dependency_service.rb create mode 100644 app/services/packages/nuget/create_package_service.rb create mode 100644 app/services/packages/nuget/metadata_extraction_service.rb create mode 100644 app/services/packages/nuget/search_service.rb create mode 100644 app/services/packages/nuget/sync_metadatum_service.rb create mode 100644 app/services/packages/nuget/update_package_from_metadata_service.rb create mode 100644 app/services/packages/pypi/create_package_service.rb create mode 100644 app/services/packages/remove_tag_service.rb create mode 100644 app/services/packages/update_tags_service.rb create mode 100644 app/services/personal_access_tokens/last_used_service.rb delete mode 100644 app/services/projects/prometheus/alerts/create_events_service.rb create mode 100644 app/services/service_desk_settings/update_service.rb create mode 100644 app/services/snippets/update_statistics_service.rb create mode 100644 app/services/system_notes/alert_management_service.rb create mode 100644 app/services/update_container_registry_info_service.rb create mode 100644 app/uploaders/packages/package_file_uploader.rb create mode 100644 app/validators/array_members_validator.rb create mode 100644 app/validators/json_schemas/build_metadata_secrets.json create mode 100644 app/validators/json_schemas/security_ci_configuration_schemas/sast_ui_schema.json create mode 100644 app/views/admin/application_settings/_import_export_limits.html.haml create mode 100644 app/views/admin/application_settings/_initial_branch_name.html.haml create mode 100644 app/views/clusters/clusters/_health.html.haml create mode 100644 app/views/clusters/clusters/_health_tab.html.haml create mode 100644 app/views/clusters/clusters/_multiple_clusters_message.html.haml create mode 100644 app/views/events/event/_design.html.haml create mode 100644 app/views/layouts/_img_loader.html.haml create mode 100644 app/views/layouts/_startup_js.html.haml create mode 100644 app/views/layouts/nav/sidebar/_wiki_link.html.haml create mode 100644 app/views/layouts/service_desk.html.haml create mode 100644 app/views/notify/merge_when_pipeline_succeeds_email.html.haml create mode 100644 app/views/notify/merge_when_pipeline_succeeds_email.text.haml create mode 100644 app/views/notify/service_desk_new_note_email.html.haml create mode 100644 app/views/notify/service_desk_new_note_email.text.erb create mode 100644 app/views/notify/service_desk_thank_you_email.html.haml create mode 100644 app/views/notify/service_desk_thank_you_email.text.erb create mode 100644 app/views/projects/_merge_request_squash_options_settings.html.haml create mode 100644 app/views/projects/_service_desk_settings.html.haml create mode 100644 app/views/projects/confluences/show.html.haml create mode 100644 app/views/projects/issues/_alert_moved_from_service_desk.html.haml create mode 100644 app/views/projects/issues/_service_desk_info_content.html.haml create mode 100644 app/views/projects/issues/service_desk.html.haml create mode 100644 app/views/projects/merge_requests/_approvals_count.html.haml delete mode 100644 app/views/projects/refs/logs_tree.js.haml create mode 100644 app/views/projects/releases/new.html.haml create mode 100644 app/views/projects/services/alerts/_top.html.haml create mode 100644 app/views/projects/services/prometheus/_top.html.haml create mode 100644 app/views/projects/settings/operations/_alert_management.html.haml create mode 100644 app/views/projects/sidebar/_issues_service_desk.html.haml delete mode 100644 app/views/projects/tree/_tree_commit_column.html.haml delete mode 100644 app/views/shared/_namespace_storage_limit_alert.html.haml delete mode 100644 app/views/shared/boards/components/_board.html.haml create mode 100644 app/views/shared/empty_states/icons/_service_desk_callout.svg create mode 100644 app/views/shared/empty_states/icons/_service_desk_empty_state.svg create mode 100644 app/views/shared/empty_states/icons/_service_desk_setup.svg create mode 100644 app/views/shared/icons/_icon_service_desk.svg create mode 100644 app/views/shared/promotions/_promote_servicedesk.html.haml create mode 100644 app/views/shared/wikis/diff.html.haml create mode 100644 app/workers/authorized_project_update/project_group_link_create_worker.rb create mode 100644 app/workers/ci/pipeline_success_unlock_artifacts_worker.rb create mode 100644 app/workers/ci/ref_delete_unlock_artifacts_worker.rb delete mode 100644 app/workers/concerns/project_export_options.rb create mode 100644 app/workers/incident_management/pager_duty/process_incident_worker.rb create mode 100644 app/workers/members_destroyer/unassign_issuables_worker.rb delete mode 100644 app/workers/new_release_worker.rb create mode 100644 app/workers/packages/nuget/extraction_worker.rb create mode 100644 app/workers/partition_creation_worker.rb create mode 100644 app/workers/service_desk_email_receiver_worker.rb delete mode 100644 app/workers/stuck_import_jobs_worker.rb create mode 100644 app/workers/update_container_registry_info_worker.rb create mode 100755 bin/feature-flag create mode 100644 config/initializers/0_inject_feature_flags.rb delete mode 100644 config/initializers/actionpack_generate_old_csrf_token.rb delete mode 100644 config/initializers/config_initializers_active_record_locking.rb delete mode 100644 config/initializers/flipper.rb create mode 100644 config/initializers/grape_patch.rb create mode 100644 config/initializers/multi_json.rb create mode 100644 config/initializers/oj.rb create mode 100644 config/initializers/postgres_partitioning.rb create mode 100644 config/initializers/stackprof.rb create mode 100644 config/plugins/monaco_webpack.js create mode 100644 config/prometheus/queries_cluster_metrics.yml create mode 100644 danger/plugins/sidekiq_queues.rb create mode 100644 danger/sidekiq_queues/Dangerfile create mode 100644 db/fixtures/development/26_packages.rb create mode 100644 db/fixtures/development/27_product_analytics_events.rb create mode 100644 db/migrate/20191112212815_create_web_authn_table.rb create mode 100644 db/migrate/20200229171700_create_custom_emojis.rb create mode 100644 db/migrate/20200305020458_add_label_restore_table.rb create mode 100644 db/migrate/20200305020459_add_label_restore_foreign_keys.rb create mode 100644 db/migrate/20200424102023_add_shared_runners_enabled_and_override_to_namespaces.rb create mode 100644 db/migrate/20200510181937_add_web_authn_xid_to_user_details.rb create mode 100644 db/migrate/20200510182218_add_text_limit_to_user_details_webauthn_xid.rb create mode 100644 db/migrate/20200510182556_add_text_limit_to_webauthn_registrations_name.rb create mode 100644 db/migrate/20200510182824_add_text_limit_to_webauthn_registrations_credential_xid.rb create mode 100644 db/migrate/20200510183128_add_foreign_key_from_webauthn_registrations_to_users.rb create mode 100644 db/migrate/20200522205606_create_group_deploy_keys_group.rb create mode 100644 db/migrate/20200524104346_add_source_to_resource_state_event.rb create mode 100644 db/migrate/20200526193555_add_squash_option_to_project.rb create mode 100644 db/migrate/20200526231421_update_index_approval_rule_name_for_code_owners_rule_type.rb create mode 100644 db/migrate/20200527211605_add_locked_to_ci_pipelines.rb create mode 100644 db/migrate/20200604001128_add_secrets_to_ci_builds_metadata.rb create mode 100644 db/migrate/20200605160806_add_index_on_repository_size_and_project_id_to_project_statistics.rb create mode 100644 db/migrate/20200605160836_add_index_on_storage_size_and_project_id_to_project_statistics.rb create mode 100644 db/migrate/20200605160851_add_index_on_wiki_size_and_project_id_to_project_statistics.rb create mode 100644 db/migrate/20200609012539_add_traversal_ids_to_namespaces.rb create mode 100644 db/migrate/20200610130002_create_vulnerability_statistics.rb create mode 100644 db/migrate/20200613104045_add_compliance_frameworks_to_application_settings.rb create mode 100644 db/migrate/20200615141554_add_closed_by_fields_to_resource_state_events.rb create mode 100644 db/migrate/20200615193524_add_verify_known_sign_in_to_application_settings.rb create mode 100644 db/migrate/20200615234047_create_clusters_applications_cilium.rb create mode 100644 db/migrate/20200616124338_add_plan_limits_for_max_size_per_artifact_type.rb create mode 100644 db/migrate/20200616145031_add_author_id_index_to_audit_events.rb create mode 100644 db/migrate/20200617000757_clean_up_file_store_lfs_objects.rb create mode 100644 db/migrate/20200617001001_clean_up_store_uploads.rb create mode 100644 db/migrate/20200617001118_clean_up_file_store_ci_job_artifacts.rb create mode 100644 db/migrate/20200617150041_create_namespace_limits.rb create mode 100644 db/migrate/20200617205000_add_deploy_key_id_to_push_access_levels.rb create mode 100644 db/migrate/20200618105638_add_index_on_id_and_created_at_to_snippets.rb create mode 100644 db/migrate/20200618134223_restore_previous_schema_without_lock_version_null_constraint.rb create mode 100644 db/migrate/20200618134723_restore_previous_schema_with_lock_version_indices.rb create mode 100644 db/migrate/20200619000316_add_has_confluence_to_project_settings.rb create mode 100644 db/migrate/20200619154527_add_project_key_to_jira_tracker_data.rb create mode 100644 db/migrate/20200619154528_add_text_limit_to_jira_tracker_data_project_key.rb create mode 100644 db/migrate/20200622040750_add_prometheus_alert_id_to_alert_management_alerts.rb create mode 100644 db/migrate/20200622070606_add_vendor_to_vulnerability_scanners.rb create mode 100644 db/migrate/20200622070620_add_limit_to_vulnerability_scanners_vendor.rb create mode 100644 db/migrate/20200622095419_add_snippets_size_to_project_statistics.rb create mode 100644 db/migrate/20200622103836_create_snippet_statistics.rb create mode 100644 db/migrate/20200622104923_create_ci_pipeline_messages_table.rb create mode 100644 db/migrate/20200622235737_remove_index_ci_job_artifacts_file_store_is_null.rb create mode 100644 db/migrate/20200623000148_remove_index_lfs_objects_file_store_is_null.rb create mode 100644 db/migrate/20200623000320_remove_index_uploads_store_is_null.rb create mode 100644 db/migrate/20200623073431_add_source_merge_request_id_to_resource_state_events.rb create mode 100644 db/migrate/20200623090030_add_author_name_to_audit_event.rb create mode 100644 db/migrate/20200623121135_create_dynamic_partitions_schema.rb create mode 100644 db/migrate/20200623141217_add_view_diffs_file_by_file_to_user_preferences.rb create mode 100644 db/migrate/20200623141544_create_elastic_reindexing_task.rb create mode 100644 db/migrate/20200623170000_create_static_partitions_schema.rb create mode 100644 db/migrate/20200623185440_add_product_analytics_table.rb create mode 100644 db/migrate/20200624075411_add_storage_size_limit_to_plan_limit.rb create mode 100644 db/migrate/20200624142107_create_analytics_cycle_analytics_group_value_streams.rb create mode 100644 db/migrate/20200624142207_add_group_value_stream_to_cycle_analytics_group_stages.rb create mode 100644 db/migrate/20200624222443_add_default_branch_name_to_application_settings.rb create mode 100644 db/migrate/20200625045442_add_idx_and_fk_for_prometheus_and_environment_to_alert_management_alerts.rb create mode 100644 db/migrate/20200625082258_add_snippets_size_to_root_storage_statistics.rb create mode 100644 db/migrate/20200625113337_add_last_used_to_personal_access_tokens.rb create mode 100644 db/migrate/20200625174052_add_partial_index_to_locked_pipelines.rb create mode 100644 db/migrate/20200625190458_add_limit_to_default_branch_name_to_application_settings.rb create mode 100644 db/migrate/20200626130220_drop_partitions_dynamic_schema_if_exists.rb create mode 100644 db/migrate/20200628210938_add_maintenance_mode_application_to_settings.rb create mode 100644 db/migrate/20200629192638_add_uniq_index_on_metric_identifier_and_project_id.rb create mode 100644 db/migrate/20200630091656_add_bio_html_to_user_details.rb create mode 100644 db/migrate/20200630110826_add_documents_count_target_to_elastic_reindexing_tasks.rb create mode 100644 db/migrate/20200701064756_add_not_valid_foreign_key_to_cycle_analytics_group_stages.rb create mode 100644 db/migrate/20200701093859_add_import_export_limits_to_application_settings.rb create mode 100644 db/migrate/20200701190523_add_delayed_project_removal_to_namespaces.rb create mode 100644 db/migrate/20200701205710_create_background_migration_jobs.rb create mode 100644 db/migrate/20200702123805_change_project_id_index_to_be_unique_on_vulnerability_statistics_table.rb create mode 100644 db/migrate/20200702201039_change_prometheus_metrics_identifier_index.rb create mode 100644 db/migrate/20200703121557_remove_f_keys_from_ci_daily_report_results_table.rb create mode 100644 db/migrate/20200703124823_create_namespace_settings.rb create mode 100644 db/migrate/20200703154822_add_issues_enabled_to_jira_tracker_data.rb create mode 100644 db/migrate/20200706005325_remove_elastic_batch_project_indexer_worker_queue.rb create mode 100644 db/migrate/20200706035141_adjust_unique_index_alert_management_alerts.rb create mode 100644 db/migrate/20200706170536_add_temporary_storage_increase_to_namespace_limits.rb create mode 100644 db/migrate/20200707071941_drop_old_non_unique_index_on_mr_metrics.rb create mode 100644 db/migrate/20200707094341_add_browser_performance_to_plan_limits.rb create mode 100644 db/migrate/20200707095849_add_load_performance_to_plan_limits.rb create mode 100644 db/migrate/20200708080631_add_pager_duty_integration_columns_to_project_incident_management_settings.rb create mode 100644 db/migrate/20200710105332_change_issues_create_limit_default.rb create mode 100644 db/migrate/20200710130234_add_limit_constraints_to_project_incident_management_settings_token.rb create mode 100644 db/migrate/20200712084655_create_dast_sites.rb create mode 100644 db/migrate/20200712235622_create_dast_site_profiles.rb create mode 100644 db/migrate/20200713152443_add_background_migration_job_index_for_partitioning_migrations.rb create mode 100644 db/migrate/20200715202659_add_index_on_package_files_file_store.rb create mode 100644 db/migrate/20200716044023_add_entity_path_to_audit_events.rb create mode 100644 db/migrate/20200716120419_add_text_limit_on_entity_path_to_audit_events.rb create mode 100644 db/post_migrate/20200305082754_remove_duplicate_labels_from_project.rb create mode 100644 db/post_migrate/20200305082858_add_uniqueness_index_to_label_title_and_project.rb create mode 100644 db/post_migrate/20200519201128_migrate_vulnerability_dismissal_feedback.rb create mode 100644 db/post_migrate/20200526115436_dedup_mr_metrics.rb create mode 100644 db/post_migrate/20200608195222_set_lock_version_not_null_constraint.rb create mode 100644 db/post_migrate/20200608203426_set_proper_lock_version_indices.rb create mode 100644 db/post_migrate/20200608205813_set_lock_version_to_not_null.rb create mode 100644 db/post_migrate/20200608212030_lock_version_cleanup_for_epics.rb create mode 100644 db/post_migrate/20200608212435_lock_version_cleanup_for_merge_requests.rb create mode 100644 db/post_migrate/20200608212549_lock_version_cleanup_for_issues.rb create mode 100644 db/post_migrate/20200608212652_lock_version_cleanup_for_ci_stages.rb create mode 100644 db/post_migrate/20200608212807_lock_version_cleanup_for_ci_builds.rb create mode 100644 db/post_migrate/20200608212824_lock_version_cleanup_for_ci_pipelines.rb create mode 100644 db/post_migrate/20200615111857_unconfirm_wrongfully_verified_emails.rb rename db/{migrate/20190225160300_steal_encrypt_runners_tokens.rb => post_migrate/20200617001637_validate_file_store_not_null_constraint_on_lfs_objects.rb} (50%) create mode 100644 db/post_migrate/20200617001848_validate_store_not_null_constraint_uploads.rb create mode 100644 db/post_migrate/20200617002030_validate_file_store_not_null_constraint_on_ci_job_artifacts.rb create mode 100644 db/post_migrate/20200618152212_update_secure_smau_index.rb create mode 100644 db/post_migrate/20200623142159_remove_gitlab_issue_tracker_service_records.rb create mode 100644 db/post_migrate/20200626060151_add_disable_overriding_approvers_per_merge_request_indices.rb create mode 100644 db/post_migrate/20200701070435_add_default_value_stream_to_groups_with_group_stages.rb create mode 100644 db/post_migrate/20200701091253_validate_foreign_key_on_cycle_analytics_group_stages.rb create mode 100644 db/post_migrate/20200703064117_generate_missing_routes_for_bots.rb create mode 100644 db/post_migrate/20200703125016_backfill_namespace_settings.rb create mode 100644 db/post_migrate/20200704143633_add_index_on_user_id_and_created_at_where_source_to_ci_pipelines.rb create mode 100644 db/post_migrate/20200704161600_add_index_on_id_and_status_and_created_at_to_deployments.rb create mode 100644 db/post_migrate/20200706154619_drop_ci_daily_report_results_table.rb create mode 100644 db/post_migrate/20200709101408_schedule_populate_project_snippet_statistics.rb create mode 100644 db/post_migrate/20200710102418_delete_user_callout_alerts_moved.rb create mode 100644 db/post_migrate/20200710102846_drop_index_ruby_objects_in_details_on_audit_events.rb create mode 100644 db/post_migrate/20200713071042_confirm_project_bot_users.rb create mode 100644 doc/.vale/gitlab/AlertBoxStyle.yml create mode 100644 doc/.vale/gitlab/CurrentStatus.yml create mode 100644 doc/.vale/gitlab/FutureTense.yml create mode 100644 doc/.vale/gitlab/OutdatedVersions.yml create mode 100644 doc/administration/geo/replication/disable_geo.md delete mode 100644 doc/administration/gitaly/img/praefect_storage_v12_10.png delete mode 100644 doc/administration/img/repository_storages_admin_ui_v12_10.png create mode 100644 doc/administration/img/repository_storages_admin_ui_v13_1.png create mode 100644 doc/administration/monitoring/gitlab_self_monitoring_project/img/self_monitoring_default_dashboard.png delete mode 100644 doc/administration/monitoring/performance/img/performance_bar_configuration_settings.png create mode 100644 doc/administration/postgresql/index.md create mode 100644 doc/administration/redis/index.md create mode 100644 doc/administration/redis/replication_and_failover.md create mode 100644 doc/administration/redis/replication_and_failover_external.md create mode 100644 doc/administration/redis/standalone.md create mode 100644 doc/administration/redis/troubleshooting.md create mode 100644 doc/api/group_wikis.md create mode 100644 doc/api/instance_clusters.md create mode 100644 doc/api/resource_state_events.md create mode 100644 doc/api/resource_weight_events.md create mode 100644 doc/ci/img/metrics_reports_advanced_v13_0.png create mode 100644 doc/ci/troubleshooting.md create mode 100644 doc/development/application_secrets.md create mode 100644 doc/development/approval_rules.md create mode 100644 doc/development/cicd/img/ci_template_selection_v13_1.png create mode 100644 doc/development/cicd/templates.md create mode 100644 doc/development/code_intelligence/index.md create mode 100644 doc/development/database/database_reviewer_guidelines.md create mode 100644 doc/development/feature_categorization/index.md create mode 100644 doc/development/integrations/elasticsearch_for_paid_tiers_on_gitlabcom.md create mode 100644 doc/development/testing_guide/end_to_end/environment_selection.md delete mode 100644 doc/operations/README.md create mode 100644 doc/operations/feature_flags.md create mode 100644 doc/operations/index.md create mode 100644 doc/operations/metrics/alerts.md create mode 100644 doc/operations/metrics/dashboards/index.md create mode 100644 doc/operations/metrics/dashboards/panel_types.md create mode 100644 doc/operations/metrics/dashboards/templating_variables.md create mode 100644 doc/operations/metrics/dashboards/variables.md create mode 100644 doc/operations/metrics/dashboards/yaml.md create mode 100644 doc/operations/metrics/dashboards/yaml_number_format.md create mode 100644 doc/operations/metrics/embed.md create mode 100644 doc/operations/metrics/embed_grafana.md create mode 100644 doc/operations/metrics/img/example-dashboard_v13_1.png create mode 100644 doc/operations/metrics/index.md create mode 100644 doc/operations/tracing.md create mode 100644 doc/topics/autodevops/upgrading_chart.md delete mode 100644 doc/user/admin_area/img/credentials_inventory_v12_6.png create mode 100644 doc/user/admin_area/img/credentials_inventory_v13_2.png create mode 100644 doc/user/admin_area/img/mr_approval_settings_compliance_project_v13_1.png create mode 100644 doc/user/admin_area/img/scope_mr_approval_settings_v13_1.png create mode 100644 doc/user/admin_area/settings/img/email_notification_for_unknown_sign_ins_v13_2.png create mode 100644 doc/user/admin_area/settings/img/import_export_rate_limits_v13_2.png create mode 100644 doc/user/admin_area/settings/import_export_rate_limits.md delete mode 100644 doc/user/application_security/container_scanning/img/container_scanning_v13_0.png create mode 100644 doc/user/application_security/container_scanning/img/container_scanning_v13_2.png create mode 100644 doc/user/application_security/coverage_fuzzing/index.md delete mode 100644 doc/user/application_security/dast/img/dast_all_v13_0.png create mode 100644 doc/user/application_security/dast/img/dast_on_demand_v13_2.png create mode 100644 doc/user/application_security/dast/img/dast_v13_2.png delete mode 100644 doc/user/application_security/dependency_scanning/img/dependency_scanning_v13_0.png create mode 100644 doc/user/application_security/dependency_scanning/img/dependency_scanning_v13_2.png delete mode 100644 doc/user/application_security/img/security_configuration_page_v13_1.png create mode 100644 doc/user/application_security/img/security_configuration_page_v13_2.png delete mode 100644 doc/user/application_security/sast/img/sast_v13_0.png create mode 100644 doc/user/application_security/sast/img/sast_v13_2.png delete mode 100644 doc/user/application_security/secret_detection/img/secret-detection-merge-request-ui.png create mode 100644 doc/user/application_security/secret_detection/img/secret_detection_v13_2.png delete mode 100644 doc/user/application_security/security_dashboard/img/group_security_dashboard_v13_0.png create mode 100644 doc/user/application_security/security_dashboard/img/group_security_dashboard_v13_2_noNav.png delete mode 100644 doc/user/application_security/security_dashboard/img/instance_security_dashboard_with_projects_v13_0.png create mode 100644 doc/user/application_security/security_dashboard/img/instance_security_dashboard_with_projects_v13_2_sm.png delete mode 100644 doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.png create mode 100644 doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v13_2.png create mode 100644 doc/user/application_security/security_dashboard/img/project_security_dashboard_v13_2.png create mode 100644 doc/user/application_security/security_dashboard/img/standalone_vulnerability_page_v13_1.png create mode 100644 doc/user/application_security/security_dashboard/img/vulnerability_list_table_v13_1.png delete mode 100644 doc/user/application_security/vulnerabilities/img/standalone_vulnerability_page_v12_10.png create mode 100644 doc/user/application_security/vulnerabilities/img/standalone_vulnerability_page_v13_1.png delete mode 100644 doc/user/compliance/compliance_dashboard/img/compliance_dashboard_v12_10.png create mode 100644 doc/user/compliance/compliance_dashboard/img/compliance_dashboard_v13_2.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_add_v13_0.png create mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_add_v13_2.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_edit_v13_0.png create mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_edit_v13_2.png delete mode 100644 doc/user/group/bulk_editing/img/bulk-editing.png create mode 100644 doc/user/group/bulk_editing/img/bulk-editing_v13_2.png create mode 100644 doc/user/group/epics/img/epic_activity_sort_order_v13_2.png delete mode 100644 doc/user/group/epics/img/epics_list_view_v12.5.png create mode 100644 doc/user/group/epics/img/new_epic_form_v13.2.png create mode 100644 doc/user/group/epics/img/new_epic_from_groups_v13.2.png delete mode 100644 doc/user/group/roadmap/img/roadmap_view_v13_0.png create mode 100644 doc/user/group/roadmap/img/roadmap_view_v13_2.png create mode 100644 doc/user/group/saml_sso/group_managed_accounts.md create mode 100644 doc/user/incident_management/img/pagerduty_incidents_integration_13_2.png create mode 100644 doc/user/infrastructure/img/terraform_plan_widget_v13_2.png delete mode 100644 doc/user/packages/container_registry/img/expiration_policy_app_v13_0.png delete mode 100644 doc/user/packages/img/group_packages_list_v13_0.png delete mode 100644 doc/user/packages/img/package_detail_v13_0.png delete mode 100644 doc/user/packages/img/project_packages_list_v13_0.png delete mode 100644 doc/user/project/clusters/img/rbac.png create mode 100644 doc/user/project/clusters/img/rbac_v13_1.png delete mode 100644 doc/user/project/clusters/runbooks/img/helm-install.png create mode 100644 doc/user/project/clusters/securing.md create mode 100644 doc/user/project/code_intelligence.md delete mode 100644 doc/user/project/img/bulk-editing.png create mode 100644 doc/user/project/img/bulk-editing_v13_2.png create mode 100644 doc/user/project/img/code_intelligence_v13_1.png create mode 100644 doc/user/project/img/sectional_code_owners_v13.2.png create mode 100644 doc/user/project/import/img/jira/import_issues_from_jira_form_v13_2.png delete mode 100644 doc/user/project/import/img/jira/import_issues_from_jira_projects_v12_10.png create mode 100644 doc/user/project/integrations/img/actions_menu_create_new_dashboard_v13_2.png create mode 100644 doc/user/project/integrations/img/heatmap_chart_too_much_data_v_13_2.png create mode 100644 doc/user/project/integrations/img/jira/open_jira_issues_list_v13.2.png delete mode 100644 doc/user/project/integrations/img/jira_service_page_v12_2.png create mode 100644 doc/user/project/integrations/img/metrics_settings_button_v13_2.png create mode 100644 doc/user/project/integrations/img/prometheus_manual_configuration_v13_2.png delete mode 100644 doc/user/project/integrations/img/prometheus_service_configuration.png create mode 100644 doc/user/project/issues/img/design_drag_and_drop_uploads_v13_2.png create mode 100644 doc/user/project/issues/img/design_management_upload_v13.2.png create mode 100644 doc/user/project/issues/img/design_management_v13_2.png create mode 100644 doc/user/project/merge_requests/fail_fast_testing.md create mode 100644 doc/user/project/merge_requests/img/draft_blocked_merge_button_v13_2.png create mode 100644 doc/user/project/merge_requests/img/file_by_file_v13_2.png create mode 100644 doc/user/project/merge_requests/img/load_performance_testing.png delete mode 100644 doc/user/project/merge_requests/img/merge_when_pipeline_succeeds_only_if_succeeds_msg.png delete mode 100644 doc/user/project/merge_requests/img/wip_blocked_accept_button.png create mode 100644 doc/user/project/merge_requests/load_performance_testing.md create mode 100644 doc/user/project/operations/img/alert_detail_metrics_v13_2.png create mode 100644 doc/user/project/operations/img/alert_list_search_v13_1.png create mode 100644 doc/user/project/operations/img/alert_list_sort_v13_1.png create mode 100644 doc/user/project/operations/img/alert_list_v13_1.png delete mode 100644 doc/user/project/operations/img/alert_management_1_v13_0.png delete mode 100644 doc/user/project/operations/img/alert_management_1_v13_1.png create mode 100644 doc/user/project/pages/getting_started/pages_ci_cd_template.md create mode 100644 doc/user/project/pages/getting_started/pages_forked_sample_project.md create mode 100644 doc/user/project/pages/getting_started/pages_from_scratch.md create mode 100644 doc/user/project/pages/getting_started/pages_new_project_template.md delete mode 100644 doc/user/project/releases/img/custom_notifications_dropdown_v12_5.png delete mode 100644 doc/user/project/releases/img/custom_notifications_new_release_v12_5.png delete mode 100644 doc/user/project/releases/img/edit_release_page_v13_0.png delete mode 100644 doc/user/project/releases/img/milestone_with_releases_v12_5.png delete mode 100644 doc/user/project/releases/img/new_tag_12_5.png delete mode 100644 doc/user/project/releases/img/release_edit_button_v12_6.png delete mode 100644 doc/user/project/releases/img/release_milestone_dropdown_v13_0.png create mode 100644 doc/user/project/releases/img/releases_count_v13_2.png delete mode 100644 doc/user/project/releases/img/releases_v12_9.png delete mode 100644 doc/user/project/releases/img/tags_12_5.png delete mode 100644 doc/user/project/requirements/img/requirement_archive_view_v12_10.png delete mode 100644 doc/user/project/requirements/img/requirement_create_view_v12_10.png delete mode 100644 doc/user/project/requirements/img/requirement_edit_view_v12_10.png delete mode 100644 doc/user/project/requirements/img/requirements_archived_list_view_v12_10.png create mode 100644 doc/user/project/requirements/img/requirements_archived_list_view_v13_1.png create mode 100644 doc/user/project/requirements/img/requirements_list_v13_1.png delete mode 100644 doc/user/project/requirements/img/requirements_list_view_v12_10.png create mode 100644 doc/user/project/wiki/img/wiki_page_diffs_v13_2.png create mode 100644 haml_lint/linter/documentation_links.rb create mode 100644 lib/api/admin/instance_clusters.rb create mode 100644 lib/api/ci/pipeline_schedules.rb create mode 100644 lib/api/ci/pipelines.rb create mode 100644 lib/api/ci/runner.rb create mode 100644 lib/api/ci/runners.rb create mode 100644 lib/api/composer_packages.rb create mode 100644 lib/api/conan_packages.rb create mode 100644 lib/api/entities/approvals.rb create mode 100644 lib/api/entities/conan_package/conan_package_manifest.rb create mode 100644 lib/api/entities/conan_package/conan_package_snapshot.rb create mode 100644 lib/api/entities/conan_package/conan_recipe_manifest.rb create mode 100644 lib/api/entities/conan_package/conan_recipe_snapshot.rb create mode 100644 lib/api/entities/conan_package/conan_upload_urls.rb create mode 100644 lib/api/entities/entity_helpers.rb create mode 100644 lib/api/entities/go_module_version.rb create mode 100644 lib/api/entities/merge_request_approvals.rb create mode 100644 lib/api/entities/npm_package.rb create mode 100644 lib/api/entities/npm_package_tag.rb create mode 100644 lib/api/entities/nuget/dependency.rb create mode 100644 lib/api/entities/nuget/dependency_group.rb create mode 100644 lib/api/entities/nuget/metadatum.rb create mode 100644 lib/api/entities/nuget/package_metadata.rb create mode 100644 lib/api/entities/nuget/package_metadata_catalog_entry.rb create mode 100644 lib/api/entities/nuget/packages_metadata.rb create mode 100644 lib/api/entities/nuget/packages_metadata_item.rb create mode 100644 lib/api/entities/nuget/packages_versions.rb create mode 100644 lib/api/entities/nuget/search_result.rb create mode 100644 lib/api/entities/nuget/search_result_version.rb create mode 100644 lib/api/entities/nuget/search_results.rb create mode 100644 lib/api/entities/nuget/service_index.rb create mode 100644 lib/api/entities/package.rb create mode 100644 lib/api/entities/package/pipeline.rb create mode 100644 lib/api/entities/package_file.rb create mode 100644 lib/api/entities/package_version.rb create mode 100644 lib/api/entities/resource_state_event.rb create mode 100755 lib/api/go_proxy.rb create mode 100644 lib/api/group_packages.rb create mode 100644 lib/api/helpers/packages/basic_auth_helpers.rb create mode 100644 lib/api/helpers/packages/conan/api_helpers.rb create mode 100644 lib/api/helpers/packages/dependency_proxy_helpers.rb create mode 100644 lib/api/helpers/packages_helpers.rb create mode 100644 lib/api/helpers/packages_manager_clients_helpers.rb create mode 100644 lib/api/helpers/wikis_helpers.rb create mode 100644 lib/api/import_bitbucket_server.rb create mode 100644 lib/api/maven_packages.rb create mode 100644 lib/api/merge_request_approvals.rb create mode 100644 lib/api/npm_packages.rb create mode 100644 lib/api/nuget_packages.rb create mode 100644 lib/api/package_files.rb delete mode 100644 lib/api/pipeline_schedules.rb delete mode 100644 lib/api/pipelines.rb create mode 100644 lib/api/project_packages.rb create mode 100644 lib/api/pypi_packages.rb create mode 100644 lib/api/resource_state_events.rb delete mode 100644 lib/api/runner.rb delete mode 100644 lib/api/runners.rb create mode 100644 lib/api/validations/types/comma_separated_to_integer_array.rb delete mode 100644 lib/api/validations/types/labels_list.rb delete mode 100644 lib/api/validations/types/safe_file.rb create mode 100644 lib/assets/images/bot_avatars/alert-bot.png create mode 100644 lib/assets/images/bot_avatars/security-bot.png create mode 100644 lib/assets/images/bot_avatars/support-bot.png create mode 100644 lib/banzai/filter/inline_cluster_metrics_filter.rb create mode 100644 lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb create mode 100644 lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb create mode 100644 lib/feature/definition.rb create mode 100644 lib/feature/shared.rb create mode 100644 lib/gitlab/action_cable/config.rb create mode 100644 lib/gitlab/analytics/unique_visits.rb create mode 100644 lib/gitlab/background_migration/backfill_namespace_settings.rb delete mode 100644 lib/gitlab/background_migration/digest_column.rb delete mode 100644 lib/gitlab/background_migration/encrypt_columns.rb delete mode 100644 lib/gitlab/background_migration/encrypt_runners_tokens.rb create mode 100644 lib/gitlab/background_migration/mailers/unconfirm_mailer.rb create mode 100644 lib/gitlab/background_migration/mailers/views/unconfirm_mailer/unconfirm_notification_email.html.haml create mode 100644 lib/gitlab/background_migration/mailers/views/unconfirm_mailer/unconfirm_notification_email.text.erb delete mode 100644 lib/gitlab/background_migration/models/encrypt_columns/namespace.rb delete mode 100644 lib/gitlab/background_migration/models/encrypt_columns/project.rb delete mode 100644 lib/gitlab/background_migration/models/encrypt_columns/runner.rb delete mode 100644 lib/gitlab/background_migration/models/encrypt_columns/settings.rb delete mode 100644 lib/gitlab/background_migration/models/encrypt_columns/web_hook.rb create mode 100644 lib/gitlab/background_migration/populate_project_snippet_statistics.rb create mode 100644 lib/gitlab/background_migration/update_vulnerabilities_from_dismissal_feedback.rb create mode 100644 lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer.rb delete mode 100644 lib/gitlab/bitbucket_import/metrics.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/parameter.rb delete mode 100644 lib/gitlab/ci/pipeline/chain/metrics.rb create mode 100644 lib/gitlab/ci/pipeline/metrics.rb create mode 100644 lib/gitlab/ci/reports/test_report_summary.rb create mode 100644 lib/gitlab/ci/reports/test_suite_summary.rb create mode 100644 lib/gitlab/ci/templates/Composer.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Dart.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Jobs/Load-Performance-Testing.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/Coverage-Fuzzing.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Verify/Load-Performance-Testing.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/index.md create mode 100644 lib/gitlab/ci/templates/npm.gitlab-ci.yml create mode 100644 lib/gitlab/class_attributes.rb create mode 100644 lib/gitlab/conan_token.rb create mode 100644 lib/gitlab/danger/sidekiq_queues.rb create mode 100644 lib/gitlab/database/background_migration_job.rb create mode 100644 lib/gitlab/database/dynamic_model_helpers.rb create mode 100644 lib/gitlab/database/migrations/background_migration_helpers.rb create mode 100644 lib/gitlab/database/partitioning/monthly_strategy.rb create mode 100644 lib/gitlab/database/partitioning/partition_creator.rb create mode 100644 lib/gitlab/database/partitioning/time_partition.rb create mode 100644 lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table.rb create mode 100644 lib/gitlab/diff/file_collection/wiki_page.rb create mode 100644 lib/gitlab/diff/stats_cache.rb create mode 100644 lib/gitlab/email/handler/service_desk_handler.rb create mode 100644 lib/gitlab/email/service_desk_receiver.rb create mode 100644 lib/gitlab/gitaly_client/call.rb create mode 100644 lib/gitlab/graphql/lazy.rb create mode 100644 lib/gitlab/graphql/loaders/issuable_loader.rb create mode 100644 lib/gitlab/incident_management/pager_duty/incident_issue_description.rb create mode 100644 lib/gitlab/instrumentation/redis_cluster_validator.rb delete mode 100644 lib/gitlab/jira_import/user_mapper.rb create mode 100644 lib/gitlab/kubernetes/node.rb create mode 100644 lib/gitlab/metrics/dashboard/stages/cluster_endpoint_inserter.rb rename lib/gitlab/metrics/dashboard/stages/{endpoint_inserter.rb => metric_endpoint_inserter.rb} (74%) create mode 100644 lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter.rb create mode 100644 lib/gitlab/service_desk.rb create mode 100644 lib/gitlab/service_desk_email.rb create mode 100644 lib/gitlab/template/service_desk_template.rb create mode 100644 lib/gitlab/updated_notes_paginator.rb create mode 100644 lib/gitlab/usage_data/topology.rb delete mode 100644 lib/gitlab/usage_data_concerns/topology.rb create mode 100644 lib/gitlab/usage_data_counters/track_unique_actions.rb create mode 100644 lib/gitlab/utils/markdown.rb create mode 100644 lib/kramdown/converter/commonmark.rb create mode 100644 lib/kramdown/parser/atlassian_document_format.rb create mode 100644 lib/learn_gitlab.rb create mode 100644 lib/pager_duty/webhook_payload_parser.rb create mode 100644 lib/product_analytics/collector_app.rb create mode 100644 lib/product_analytics/event_params.rb create mode 100644 lib/tasks/gitlab/external_diffs.rake create mode 100644 lib/tasks/gitlab/packages/migrate.rake create mode 100644 locale/as_IN/gitlab.po create mode 100644 locale/ig_NG/gitlab.po create mode 100644 locale/lt_LT/gitlab.po create mode 100644 locale/si_LK/gitlab.po create mode 100755 qa/bin/rubymine delete mode 100644 qa/qa/fixtures/monitored_auto_devops/.gitlab-ci.yml create mode 100644 qa/qa/page/component/issuable/sidebar.rb create mode 100644 qa/qa/page/component/new_snippet.rb create mode 100644 qa/qa/page/component/project_selector.rb create mode 100644 qa/qa/page/component/snippet.rb create mode 100644 qa/qa/page/group/milestone/index.rb create mode 100644 qa/qa/page/group/milestone/new.rb delete mode 100644 qa/qa/page/issuable/sidebar.rb create mode 100644 qa/qa/page/main/two_factor_auth.rb create mode 100644 qa/qa/page/milestone/index.rb create mode 100644 qa/qa/page/milestone/new.rb create mode 100644 qa/qa/page/milestone/show.rb create mode 100644 qa/qa/page/modal/delete_wiki.rb create mode 100644 qa/qa/page/project/issue/jira_import.rb create mode 100644 qa/qa/page/project/settings/protected_tags.rb create mode 100644 qa/qa/page/project/snippet/show.rb create mode 100644 qa/qa/page/project/tag/index.rb create mode 100644 qa/qa/page/project/tag/new.rb create mode 100644 qa/qa/page/project/tag/show.rb create mode 100644 qa/qa/page/project/wiki/list.rb create mode 100644 qa/qa/page/project/wiki/sidebar.rb create mode 100644 qa/qa/resource/group_milestone.rb delete mode 100644 qa/qa/specs/features/api/2_plan/.gitkeep create mode 100644 qa/qa/specs/features/api/3_create/repository/praefect_replication_queue_spec.rb delete mode 100644 qa/qa/specs/features/api/4_verify/.gitkeep create mode 100644 qa/qa/specs/features/api/4_verify/pipeline_deletion_spec.rb rename qa/qa/specs/features/api/{1_manage => 8_monitor}/.gitkeep (100%) create mode 100644 qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/1_manage/project/protected_tags_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/issue/jira_issue_import_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb delete mode 100644 qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/wiki/project_based_list_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb create mode 100644 qa/qa/support/otp.rb create mode 100644 rubocop/cop/api/grape_api_instance.rb create mode 100644 rubocop/cop/api/grape_array_missing_coerce.rb create mode 100644 spec/bin/feature_flag_spec.rb create mode 100644 spec/controllers/admin/jobs_controller_spec.rb create mode 100644 spec/controllers/concerns/controller_with_feature_category/config_spec.rb create mode 100644 spec/controllers/concerns/controller_with_feature_category_spec.rb create mode 100644 spec/controllers/every_controller_spec.rb rename spec/controllers/projects/{ => pipelines}/stages_controller_spec.rb (94%) create mode 100644 spec/controllers/projects/pipelines/tests_controller_spec.rb create mode 100644 spec/controllers/projects/service_desk_controller_spec.rb create mode 100644 spec/controllers/projects/snippets/blobs_controller_spec.rb create mode 100644 spec/controllers/snippets/blobs_controller_spec.rb create mode 100644 spec/factories/approvals.rb create mode 100644 spec/factories/background_migration_jobs.rb create mode 100644 spec/factories/custom_emoji.rb create mode 100644 spec/factories/go_module_commits.rb create mode 100644 spec/factories/go_module_versions.rb create mode 100644 spec/factories/go_modules.rb create mode 100644 spec/factories/packages.rb create mode 100644 spec/factories/product_analytics_event.rb create mode 100644 spec/factories/service_desk_settings.rb create mode 100644 spec/factories/snippet_statistics.rb create mode 100644 spec/features/admin/services/admin_visits_service_templates_spec.rb create mode 100644 spec/features/clusters/cluster_health_dashboard_spec.rb create mode 100644 spec/features/issues/service_desk_spec.rb create mode 100644 spec/features/merge_request/user_approves_spec.rb create mode 100644 spec/features/merge_request/user_views_diffs_file_by_file_spec.rb create mode 100644 spec/features/projects/activity/user_sees_design_activity_spec.rb create mode 100644 spec/features/projects/confluence/user_views_confluence_page_spec.rb create mode 100644 spec/features/projects/settings/service_desk_setting_spec.rb create mode 100644 spec/features/promotion_spec.rb create mode 100644 spec/finders/ci/variables_finder_spec.rb create mode 100644 spec/finders/packages/conan/package_file_finder_spec.rb create mode 100644 spec/finders/packages/conan/package_finder_spec.rb create mode 100644 spec/finders/packages/go/module_finder_spec.rb create mode 100644 spec/finders/packages/go/version_finder_spec.rb create mode 100644 spec/finders/packages/group_packages_finder_spec.rb create mode 100644 spec/finders/packages/maven/package_finder_spec.rb create mode 100644 spec/finders/packages/npm/package_finder_spec.rb create mode 100644 spec/finders/packages/nuget/package_finder_spec.rb create mode 100644 spec/finders/packages/package_file_finder_spec.rb create mode 100644 spec/finders/packages/package_finder_spec.rb create mode 100644 spec/finders/packages/packages_finder_spec.rb create mode 100644 spec/finders/packages/tags_finder_spec.rb create mode 100644 spec/finders/resource_state_event_finder_spec.rb create mode 100644 spec/fixtures/api/schemas/entities/dag_job.json create mode 100644 spec/fixtures/api/schemas/entities/dag_job_group.json create mode 100644 spec/fixtures/api/schemas/entities/dag_pipeline.json create mode 100644 spec/fixtures/api/schemas/entities/dag_stage.json create mode 100644 spec/fixtures/api/schemas/evidences/build_artifact.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/composer/index.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/composer/package.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/composer/provider.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/group_package.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/group_packages.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/npm_package.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/npm_package_tags.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/npm_package_version.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/nuget/dependency_group.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/nuget/download_versions.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/nuget/package_metadata.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/nuget/packages_metadata.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/nuget/search.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/nuget/service_index.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/package.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/package_files.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/package_version.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/package_with_build.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/packages/packages.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/pipeline.json create mode 100644 spec/fixtures/clusters/ca_certificate.pem create mode 100644 spec/fixtures/clusters/chain_certificates.pem create mode 100644 spec/fixtures/clusters/intermediate_certificate.pem create mode 100644 spec/fixtures/clusters/root_certificate.pem create mode 100644 spec/fixtures/emails/service_desk.eml create mode 100644 spec/fixtures/emails/service_desk_custom_address.eml create mode 100644 spec/fixtures/emails/service_desk_forwarded.eml create mode 100644 spec/fixtures/emails/service_desk_forwarded_new_issue.eml create mode 100644 spec/fixtures/emails/service_desk_legacy.eml create mode 100644 spec/fixtures/emails/service_desk_sender_and_from.eml create mode 100644 spec/fixtures/emails/valid_reply_with_quick_actions.eml create mode 100644 spec/fixtures/helm/helm_list_v2_cilium_deployed.json.gz create mode 100644 spec/fixtures/helm/helm_list_v2_cilium_failed.json.gz create mode 100644 spec/fixtures/helm/helm_list_v2_cilium_missing.json.gz create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/custom_variable_full_syntax.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/custom_variable_options.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/custom_variable_values.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metric_label_values_variable_full_syntax.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metric_label_values_variable_options.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/heading.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/heading.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/mention.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/mention.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/panel.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/panel.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/rule.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/rule.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/table.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/table.md create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json create mode 100644 spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md create mode 100644 spec/fixtures/pager_duty/webhook_incident_trigger.json create mode 100644 spec/fixtures/product_analytics/event.json create mode 100644 spec/frontend/__mocks__/document-register-element/index.js create mode 100644 spec/frontend/alert_management/components/alert_management_empty_state_spec.js create mode 100644 spec/frontend/alert_management/components/alert_management_list_wrapper_spec.js create mode 100644 spec/frontend/alert_management/components/alert_management_sidebar_todo_spec.js rename spec/frontend/alert_management/components/{alert_management_list_spec.js => alert_management_table_spec.js} (74%) create mode 100644 spec/frontend/alert_management/components/alert_metrics_spec.js delete mode 100644 spec/frontend/alert_management/components/alert_sidebar_status_spec.js rename spec/frontend/alert_management/components/{ => sidebar}/alert_managment_sidebar_assignees_spec.js (80%) rename spec/frontend/alert_management/components/{ => sidebar}/alert_sidebar_spec.js (69%) create mode 100644 spec/frontend/alert_management/components/sidebar/alert_sidebar_status_spec.js rename spec/frontend/alert_management/components/{ => system_notes}/alert_management_system_note_spec.js (70%) create mode 100644 spec/frontend/alert_settings/__snapshots__/alert_settings_form_spec.js.snap create mode 100644 spec/frontend/alert_settings/alert_settings_form_spec.js create mode 100644 spec/frontend/behaviors/gl_emoji_spec.js create mode 100644 spec/frontend/blob_edit/edit_blob_spec.js delete mode 100644 spec/frontend/ci_variable_list/components/ci_key_field_spec.js create mode 100644 spec/frontend/clusters_list/components/ancestor_notice_spec.js create mode 100644 spec/frontend/clusters_list/store/mutations_spec.js create mode 100644 spec/frontend/design_management_new/components/__snapshots__/design_note_pin_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/__snapshots__/design_presentation_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/__snapshots__/design_scaler_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/__snapshots__/image_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/delete_button_spec.js create mode 100644 spec/frontend/design_management_new/components/design_note_pin_spec.js create mode 100644 spec/frontend/design_management_new/components/design_notes/__snapshots__/design_note_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/design_notes/__snapshots__/design_reply_form_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/design_notes/design_discussion_spec.js create mode 100644 spec/frontend/design_management_new/components/design_notes/design_note_spec.js create mode 100644 spec/frontend/design_management_new/components/design_notes/design_reply_form_spec.js create mode 100644 spec/frontend/design_management_new/components/design_notes/toggle_replies_widget_spec.js create mode 100644 spec/frontend/design_management_new/components/design_overlay_spec.js create mode 100644 spec/frontend/design_management_new/components/design_presentation_spec.js create mode 100644 spec/frontend/design_management_new/components/design_scaler_spec.js create mode 100644 spec/frontend/design_management_new/components/design_sidebar_spec.js create mode 100644 spec/frontend/design_management_new/components/image_spec.js create mode 100644 spec/frontend/design_management_new/components/list/__snapshots__/item_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/list/item_spec.js create mode 100644 spec/frontend/design_management_new/components/toolbar/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/toolbar/__snapshots__/pagination_button_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/toolbar/__snapshots__/pagination_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/toolbar/index_spec.js create mode 100644 spec/frontend/design_management_new/components/toolbar/pagination_button_spec.js create mode 100644 spec/frontend/design_management_new/components/toolbar/pagination_spec.js create mode 100644 spec/frontend/design_management_new/components/upload/__snapshots__/button_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/upload/__snapshots__/design_dropzone_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/upload/__snapshots__/design_version_dropdown_spec.js.snap create mode 100644 spec/frontend/design_management_new/components/upload/button_spec.js create mode 100644 spec/frontend/design_management_new/components/upload/design_dropzone_spec.js create mode 100644 spec/frontend/design_management_new/components/upload/design_version_dropdown_spec.js create mode 100644 spec/frontend/design_management_new/components/upload/mock_data/all_versions.js create mode 100644 spec/frontend/design_management_new/mock_data/all_versions.js create mode 100644 spec/frontend/design_management_new/mock_data/design.js create mode 100644 spec/frontend/design_management_new/mock_data/designs.js create mode 100644 spec/frontend/design_management_new/mock_data/no_designs.js create mode 100644 spec/frontend/design_management_new/mock_data/notes.js create mode 100644 spec/frontend/design_management_new/pages/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/design_management_new/pages/design/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/design_management_new/pages/design/index_spec.js create mode 100644 spec/frontend/design_management_new/pages/index_spec.js create mode 100644 spec/frontend/design_management_new/router_spec.js create mode 100644 spec/frontend/design_management_new/utils/cache_update_spec.js create mode 100644 spec/frontend/design_management_new/utils/design_management_utils_spec.js create mode 100644 spec/frontend/design_management_new/utils/error_messages_spec.js create mode 100644 spec/frontend/design_management_new/utils/tracking_spec.js create mode 100644 spec/frontend/editor/editor_markdown_ext_spec.js rename spec/frontend/{ => emoji}/emoji_spec.js (70%) rename spec/frontend/{behaviors/gl_emoji => emoji/support}/unicode_support_map_spec.js (100%) create mode 100644 spec/frontend/fixtures/emojis.rb rename spec/frontend/fixtures/static/{global_search_input.html => search_autocomplete.html} (100%) create mode 100644 spec/frontend/fixtures/tags.rb create mode 100644 spec/frontend/helpers/fake_request_animation_frame.js rename spec/{javascripts => frontend}/helpers/init_vue_mr_page_helper.js (92%) create mode 100644 spec/frontend/helpers/wait_using_real_timer.js create mode 100644 spec/frontend/incidents_settings/components/__snapshots__/alerts_form_spec.js.snap create mode 100644 spec/frontend/incidents_settings/components/__snapshots__/incidents_settings_tabs_spec.js.snap create mode 100644 spec/frontend/incidents_settings/components/__snapshots__/pagerduty_form_spec.js.snap create mode 100644 spec/frontend/incidents_settings/components/alerts_form_spec.js create mode 100644 spec/frontend/incidents_settings/components/incidents_settings_service_spec.js create mode 100644 spec/frontend/incidents_settings/components/incidents_settings_tabs_spec.js create mode 100644 spec/frontend/incidents_settings/components/pagerduty_form_spec.js create mode 100644 spec/frontend/integrations/edit/components/jira_issues_fields_spec.js create mode 100644 spec/frontend/integrations/edit/mock_data.js create mode 100644 spec/frontend/integrations/edit/store/actions_spec.js create mode 100644 spec/frontend/integrations/edit/store/getters_spec.js create mode 100644 spec/frontend/integrations/edit/store/mutations_spec.js create mode 100644 spec/frontend/integrations/edit/store/state_spec.js create mode 100644 spec/frontend/issue_show/components/issuable_header_warnings_spec.js create mode 100644 spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap delete mode 100644 spec/frontend/jobs/components/job_log_spec.js create mode 100644 spec/frontend/monitoring/components/create_dashboard_modal_spec.js create mode 100644 spec/frontend/monitoring/components/dashboard_header_spec.js create mode 100644 spec/frontend/monitoring/components/duplicate_dashboard_modal_spec.js create mode 100644 spec/frontend/monitoring/components/refresh_button_spec.js rename spec/frontend/monitoring/components/variables/{custom_variable_spec.js => dropdown_field_spec.js} (52%) rename spec/frontend/monitoring/components/variables/{text_variable_spec.js => text_field_spec.js} (80%) create mode 100644 spec/frontend/monitoring/graph_data.js create mode 100644 spec/frontend/monitoring/router_spec.js delete mode 100644 spec/frontend/namespace_storage_limit_alert_spec.js create mode 100644 spec/frontend/pages/projects/forks/new/components/fork_groups_list_item_spec.js create mode 100644 spec/frontend/pages/projects/forks/new/components/fork_groups_list_spec.js create mode 100644 spec/frontend/pipelines/components/dag/dag_annotations_spec.js delete mode 100644 spec/frontend/polyfills/element_spec.js create mode 100644 spec/frontend/projects/components/__snapshots__/remove_modal_spec.js.snap create mode 100644 spec/frontend/projects/components/remove_modal_spec.js create mode 100644 spec/frontend/projects/settings_service_desk/components/service_desk_root_spec.js create mode 100644 spec/frontend/projects/settings_service_desk/components/service_desk_setting_spec.js create mode 100644 spec/frontend/projects/settings_service_desk/services/service_desk_service_spec.js create mode 100644 spec/frontend/ref/components/ref_selector_spec.js create mode 100644 spec/frontend/ref/stores/actions_spec.js create mode 100644 spec/frontend/ref/stores/getters_spec.js create mode 100644 spec/frontend/ref/stores/mutations_spec.js create mode 100644 spec/frontend/registry/explorer/components/delete_button_spec.js create mode 100644 spec/frontend/registry/explorer/components/details_page/details_row_spec.js rename spec/frontend/registry/explorer/components/details_page/{empty_tags_state.js => empty_tags_state_spec.js} (95%) create mode 100644 spec/frontend/registry/explorer/components/details_page/tags_list_row_spec.js create mode 100644 spec/frontend/registry/explorer/components/details_page/tags_list_spec.js delete mode 100644 spec/frontend/registry/explorer/components/details_page/tags_table_spec.js create mode 100644 spec/frontend/registry/explorer/components/list_item_spec.js create mode 100644 spec/frontend/releases/components/app_new_spec.js create mode 100644 spec/frontend/reports/codequality_report/components/codequality_issue_body_spec.js create mode 100644 spec/frontend/reports/codequality_report/grouped_codequality_reports_app_spec.js create mode 100644 spec/frontend/reports/codequality_report/mock_data.js create mode 100644 spec/frontend/reports/codequality_report/store/actions_spec.js create mode 100644 spec/frontend/reports/codequality_report/store/getters_spec.js create mode 100644 spec/frontend/reports/codequality_report/store/mutations_spec.js create mode 100644 spec/frontend/reports/codequality_report/store/utils/codequality_comparison_spec.js create mode 100644 spec/frontend/repository/components/web_ide_link_spec.js rename spec/frontend/{global_search_input_spec.js => search_autocomplete_spec.js} (71%) create mode 100644 spec/frontend/vue_mr_widget/components/approvals/approvals_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/approvals/approvals_summary_optional_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/approvals/approvals_summary_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/mr_widget_expandable_section_spec.js delete mode 100644 spec/frontend/vue_mr_widget/components/mr_widget_terraform_plan_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/pipeline_tour_mock_data.js delete mode 100644 spec/frontend/vue_mr_widget/components/states/mr_widget_pipeline_tour_spec.js delete mode 100644 spec/frontend/vue_mr_widget/components/states/pipeline_tour_mock_data.js create mode 100644 spec/frontend/vue_mr_widget/components/terraform/mock_data.js create mode 100644 spec/frontend/vue_mr_widget/components/terraform/mr_widget_terraform_container_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/terraform/terraform_plan_spec.js delete mode 100644 spec/frontend/vue_shared/components/issue/issue_warning_spec.js rename spec/frontend/vue_shared/components/{issue/__snapshots__/issue_warning_spec.js.snap => notes/__snapshots__/noteable_warning_spec.js.snap} (74%) create mode 100644 spec/frontend/vue_shared/components/notes/noteable_warning_spec.js create mode 100644 spec/frontend/vue_shared/components/remove_member_modal_spec.js rename spec/frontend/vue_shared/components/{ => resizable_chart}/__snapshots__/resizable_chart_container_spec.js.snap (100%) create mode 100644 spec/frontend/vue_shared/components/resizable_chart/__snapshots__/skeleton_loader_spec.js.snap rename spec/frontend/vue_shared/components/{ => resizable_chart}/resizable_chart_container_spec.js (100%) create mode 100644 spec/frontend/vue_shared/components/resizable_chart/skeleton_loader_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/modals/add_image/add_image_modal_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/modals/add_image/upload_image_tab_spec.js delete mode 100644 spec/frontend/vue_shared/components/rich_content_editor/modals/add_image_modal_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/build_custom_renderer_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/build_html_to_markdown_renderer_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/build_uneditable_token_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/mock_data.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_embedded_ruby_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_font_awesome_html_inline_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_html_block_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_identifier_instance_text_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_identifier_paragraph_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_kramdown_list_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/services/renderers/render_kramdown_text_spec.js create mode 100644 spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb create mode 100644 spec/graphql/mutations/issues/set_locked_spec.rb create mode 100644 spec/graphql/mutations/merge_requests/update_spec.rb create mode 100644 spec/graphql/resolvers/ci_configuration/sast_resolver_spec.rb create mode 100644 spec/graphql/resolvers/packages_resolver_spec.rb create mode 100644 spec/graphql/types/ci_configuration/sast/analyzers_entity_type_spec.rb create mode 100644 spec/graphql/types/ci_configuration/sast/entity_type_spec.rb create mode 100644 spec/graphql/types/ci_configuration/sast/options_entity_spec.rb create mode 100644 spec/graphql/types/ci_configuration/sast/type_spec.rb create mode 100644 spec/graphql/types/global_id_type_spec.rb create mode 100644 spec/graphql/types/issue_connection_type_spec.rb create mode 100644 spec/graphql/types/jira_user_type_spec.rb create mode 100644 spec/graphql/types/milestone_stats_type_spec.rb create mode 100644 spec/graphql/types/package_type_enum_spec.rb create mode 100644 spec/graphql/types/package_type_spec.rb create mode 100644 spec/graphql/types/release_asset_link_type_spec.rb create mode 100644 spec/graphql/types/untrusted_regexp_spec.rb create mode 100644 spec/haml_lint/linter/documentation_links_spec.rb create mode 100644 spec/helpers/analytics/unique_visits_helper_spec.rb create mode 100644 spec/helpers/ci/builds_helper_spec.rb create mode 100644 spec/helpers/ci/pipeline_schedules_helper_spec.rb rename spec/helpers/{ => ci}/runners_helper_spec.rb (97%) rename spec/helpers/{ci_status_helper_spec.rb => ci/status_helper_spec.rb} (99%) create mode 100644 spec/helpers/cookies_helper_spec.rb create mode 100644 spec/helpers/notify_helper_spec.rb delete mode 100644 spec/helpers/onboarding_experiment_helper_spec.rb create mode 100644 spec/helpers/operations_helper_spec.rb delete mode 100644 spec/initializers/actionpack_generate_old_csrf_token_spec.rb delete mode 100644 spec/javascripts/boards/components/board_spec.js delete mode 100644 spec/javascripts/boards/mock_data.js rename spec/javascripts/{fly_out_nav_spec.js => fly_out_nav_browser_spec.js} (96%) delete mode 100644 spec/javascripts/helpers/class_spec_helper.js delete mode 100644 spec/javascripts/helpers/filtered_search_spec_helper.js delete mode 100644 spec/javascripts/helpers/index.js delete mode 100644 spec/javascripts/helpers/locale_helper.js delete mode 100644 spec/javascripts/helpers/set_timeout_promise_helper.js delete mode 100644 spec/javascripts/helpers/text_helper.js delete mode 100644 spec/javascripts/helpers/tracking_helper.js delete mode 100644 spec/javascripts/helpers/user_mock_data_helper.js delete mode 100644 spec/javascripts/helpers/vue_mount_component_helper.js delete mode 100644 spec/javascripts/helpers/vue_test_utils_helper.js delete mode 100644 spec/javascripts/helpers/vuex_action_helper.js delete mode 100644 spec/javascripts/helpers/wait_for_promises.js delete mode 100644 spec/javascripts/jobs/mock_data.js rename spec/javascripts/vue_shared/components/{tooltip_on_truncate_spec.js => tooltip_on_truncate_browser_spec.js} (94%) create mode 100644 spec/lib/api/entities/merge_request_approvals_spec.rb create mode 100644 spec/lib/api/entities/merge_request_basic_spec.rb create mode 100644 spec/lib/api/entities/nuget/dependency_group_spec.rb create mode 100644 spec/lib/api/entities/nuget/dependency_spec.rb create mode 100644 spec/lib/api/entities/nuget/metadatum_spec.rb create mode 100644 spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb create mode 100644 spec/lib/api/entities/nuget/search_result_spec.rb create mode 100644 spec/lib/api/helpers/common_helpers_spec.rb create mode 100644 spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb create mode 100644 spec/lib/api/helpers/packages_helpers_spec.rb create mode 100644 spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb create mode 100644 spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb create mode 100644 spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb create mode 100644 spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb create mode 100644 spec/lib/declarative_policy/overrides_spec.rb create mode 100644 spec/lib/feature/definition_spec.rb create mode 100644 spec/lib/gitlab/analytics/unique_visits_spec.rb create mode 100644 spec/lib/gitlab/background_migration/backfill_namespace_settings_spec.rb create mode 100644 spec/lib/gitlab/background_migration/cleanup_concurrent_schema_change_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/digest_column_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/encrypt_columns_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/encrypt_runners_tokens_spec.rb create mode 100644 spec/lib/gitlab/background_migration/mailers/unconfirm_mailer_spec.rb create mode 100644 spec/lib/gitlab/background_migration/populate_project_snippet_statistics_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/schedule_calculate_wiki_sizes_spec.rb create mode 100644 spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb create mode 100644 spec/lib/gitlab/ci/reports/test_report_summary_spec.rb create mode 100644 spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb rename spec/lib/gitlab/ci/templates/{Jobs/browser_performance_testing_gitlab_ci_yaml_spec.rb => Verify/load_performance_testing_gitlab_ci_yaml_spec.rb} (67%) create mode 100644 spec/lib/gitlab/class_attributes_spec.rb create mode 100644 spec/lib/gitlab/conan_token_spec.rb create mode 100644 spec/lib/gitlab/danger/sidekiq_queues_spec.rb create mode 100644 spec/lib/gitlab/database/background_migration_job_spec.rb create mode 100644 spec/lib/gitlab/database/dynamic_model_helpers_spec.rb create mode 100644 spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning/partition_creator_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning/time_partition_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table_spec.rb create mode 100644 spec/lib/gitlab/diff/stats_cache_spec.rb create mode 100644 spec/lib/gitlab/email/handler/service_desk_handler_spec.rb create mode 100644 spec/lib/gitlab/email/service_desk_receiver_spec.rb create mode 100644 spec/lib/gitlab/emoji_spec.rb create mode 100644 spec/lib/gitlab/gitaly_client/call_spec.rb create mode 100644 spec/lib/gitlab/graphql/loaders/issuable_loader_spec.rb create mode 100644 spec/lib/gitlab/graphql/mount_mutation_spec.rb create mode 100644 spec/lib/gitlab/incident_management/pager_duty/incident_issue_description_spec.rb create mode 100644 spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb delete mode 100644 spec/lib/gitlab/jira_import/user_mapper_spec.rb create mode 100644 spec/lib/gitlab/kubernetes/node_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb create mode 100644 spec/lib/gitlab/service_desk_email_spec.rb create mode 100644 spec/lib/gitlab/service_desk_spec.rb create mode 100644 spec/lib/gitlab/updated_notes_paginator_spec.rb create mode 100644 spec/lib/gitlab/usage_data/topology_spec.rb delete mode 100644 spec/lib/gitlab/usage_data_concerns/topology_spec.rb create mode 100644 spec/lib/gitlab/usage_data_counters/track_unique_actions_spec.rb create mode 100644 spec/lib/gitlab/utils/markdown_spec.rb create mode 100644 spec/lib/kramdown/parser/atlassian_document_format_spec.rb create mode 100644 spec/lib/learn_gitlab_spec.rb create mode 100644 spec/lib/pager_duty/webhook_payload_parser_spec.rb create mode 100644 spec/lib/product_analytics/event_params_spec.rb create mode 100644 spec/mailers/devise_mailer_spec.rb create mode 100644 spec/mailers/emails/service_desk_spec.rb create mode 100644 spec/migrations/20200526115436_dedup_mr_metrics_spec.rb create mode 100644 spec/migrations/20200526231421_update_index_approval_rule_name_for_code_owners_rule_type_spec.rb create mode 100644 spec/migrations/20200703125016_backfill_namespace_settings_spec.rb create mode 100644 spec/migrations/20200706035141_adjust_unique_index_alert_management_alerts_spec.rb create mode 100644 spec/migrations/add_default_value_stream_to_groups_with_group_stages_spec.rb create mode 100644 spec/migrations/confirm_project_bot_users_spec.rb create mode 100644 spec/migrations/delete_user_callout_alerts_moved_spec.rb create mode 100644 spec/migrations/generate_missing_routes_for_bots_spec.rb create mode 100644 spec/migrations/remove_duplicate_labels_from_project_spec.rb create mode 100644 spec/migrations/remove_gitlab_issue_tracker_service_records_spec.rb create mode 100644 spec/migrations/schedule_calculate_wiki_sizes_spec.rb create mode 100644 spec/migrations/schedule_populate_project_snippet_statistics_spec.rb create mode 100644 spec/migrations/unconfirm_wrongfully_verified_emails_spec.rb create mode 100644 spec/models/approval_spec.rb create mode 100644 spec/models/ci/pipeline_message_spec.rb create mode 100644 spec/models/clusters/applications/cilium_spec.rb create mode 100644 spec/models/concerns/approvable_base_spec.rb rename spec/models/concerns/{ => ci}/has_status_spec.rb (99%) create mode 100644 spec/models/concerns/partitioned_table_spec.rb create mode 100644 spec/models/custom_emoji_spec.rb delete mode 100644 spec/models/namespace/root_storage_size_spec.rb create mode 100644 spec/models/namespace/traversal_hierarchy_spec.rb create mode 100644 spec/models/namespace_setting_spec.rb create mode 100644 spec/models/packages/composer/metadatum_spec.rb create mode 100644 spec/models/packages/conan/file_metadatum_spec.rb create mode 100644 spec/models/packages/conan/metadatum_spec.rb create mode 100644 spec/models/packages/dependency_link_spec.rb create mode 100644 spec/models/packages/dependency_spec.rb create mode 100644 spec/models/packages/go/module_spec.rb create mode 100644 spec/models/packages/go/module_version_spec.rb create mode 100644 spec/models/packages/maven/metadatum_spec.rb create mode 100644 spec/models/packages/nuget/dependency_link_metadatum_spec.rb create mode 100644 spec/models/packages/nuget/metadatum_spec.rb create mode 100644 spec/models/packages/package_file_spec.rb create mode 100644 spec/models/packages/package_spec.rb create mode 100644 spec/models/packages/pypi/metadatum_spec.rb create mode 100644 spec/models/packages/sem_ver_spec.rb create mode 100644 spec/models/packages/tag_spec.rb create mode 100644 spec/models/product_analytics_event_spec.rb create mode 100644 spec/models/project_services/confluence_service_spec.rb create mode 100644 spec/models/service_desk_setting_spec.rb create mode 100644 spec/models/snippet_statistics_spec.rb create mode 100644 spec/policies/packages/package_policy_spec.rb create mode 100644 spec/policies/project_member_policy_spec.rb delete mode 100644 spec/policies/releases/source_policy_spec.rb create mode 100644 spec/presenters/alert_management/alert_presenter_spec.rb create mode 100644 spec/presenters/alert_management/prometheus_alert_presenter_spec.rb create mode 100644 spec/presenters/packages/composer/packages_presenter_spec.rb create mode 100644 spec/presenters/packages/conan/package_presenter_spec.rb create mode 100644 spec/presenters/packages/detail/package_presenter_spec.rb create mode 100644 spec/presenters/packages/npm/package_presenter_spec.rb create mode 100644 spec/presenters/packages/nuget/package_metadata_presenter_spec.rb create mode 100644 spec/presenters/packages/nuget/packages_metadata_presenter_spec.rb create mode 100644 spec/presenters/packages/nuget/packages_versions_presenter_spec.rb create mode 100644 spec/presenters/packages/nuget/search_results_presenter_spec.rb create mode 100644 spec/presenters/packages/nuget/service_index_presenter_spec.rb create mode 100644 spec/presenters/packages/pypi/package_presenter_spec.rb create mode 100644 spec/requests/api/admin/instance_clusters_spec.rb rename spec/requests/api/{ => ci}/pipeline_schedules_spec.rb (99%) rename spec/requests/api/{ => ci}/pipelines_spec.rb (99%) rename spec/requests/api/{ => ci}/runner_spec.rb (90%) rename spec/requests/api/{ => ci}/runners_spec.rb (98%) create mode 100644 spec/requests/api/composer_packages_spec.rb create mode 100644 spec/requests/api/conan_packages_spec.rb create mode 100644 spec/requests/api/go_proxy_spec.rb create mode 100644 spec/requests/api/graphql/mutations/alert_management/alerts/todo/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/issues/set_locked_spec.rb create mode 100644 spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb create mode 100644 spec/requests/api/graphql/project/packages_spec.rb create mode 100644 spec/requests/api/graphql/project/releases_spec.rb create mode 100644 spec/requests/api/group_packages_spec.rb create mode 100644 spec/requests/api/import_bitbucket_server_spec.rb create mode 100644 spec/requests/api/maven_packages_spec.rb create mode 100644 spec/requests/api/merge_request_approvals_spec.rb create mode 100644 spec/requests/api/npm_packages_spec.rb create mode 100644 spec/requests/api/nuget_packages_spec.rb create mode 100644 spec/requests/api/package_files_spec.rb create mode 100644 spec/requests/api/project_packages_spec.rb create mode 100644 spec/requests/api/pypi_packages_spec.rb create mode 100644 spec/requests/api/resource_state_events_spec.rb create mode 100644 spec/requests/product_analytics/collector_app_attack_spec.rb create mode 100644 spec/requests/product_analytics/collector_app_spec.rb create mode 100644 spec/requests/projects/incident_management/pagerduty_incidents_spec.rb create mode 100644 spec/requests/projects/metrics_dashboard_spec.rb create mode 100644 spec/rubocop/cop/api/grape_api_instance_spec.rb create mode 100644 spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb rename spec/serializers/{ => ci}/group_variable_entity_spec.rb (89%) rename spec/serializers/{ => ci}/variable_entity_spec.rb (90%) create mode 100644 spec/serializers/fork_namespace_entity_spec.rb create mode 100644 spec/serializers/fork_namespace_serializer_spec.rb create mode 100644 spec/serializers/test_report_summary_entity_spec.rb create mode 100644 spec/serializers/test_suite_summary_entity_spec.rb create mode 100644 spec/services/alert_management/alerts/todo/create_service_spec.rb delete mode 100644 spec/services/alert_management/update_alert_status_service_spec.rb create mode 100644 spec/services/authorized_project_update/project_group_link_create_service_spec.rb create mode 100644 spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb create mode 100644 spec/services/ci/create_pipeline_service/parameter_content_spec.rb create mode 100644 spec/services/ci/unlock_artifacts_service_spec.rb create mode 100644 spec/services/deploy_keys/collect_keys_service_spec.rb create mode 100644 spec/services/gpg_keys/destroy_service_spec.rb create mode 100644 spec/services/groups/update_shared_runners_service_spec.rb create mode 100644 spec/services/import/bitbucket_server_service_spec.rb create mode 100644 spec/services/incident_management/create_incident_label_service_spec.rb create mode 100644 spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb create mode 100644 spec/services/incident_management/pager_duty/process_webhook_service_spec.rb rename spec/services/jira/requests/{projects_spec.rb => projects/list_service_spec.rb} (71%) create mode 100644 spec/services/members/unassign_issuables_service_spec.rb create mode 100644 spec/services/merge_requests/approval_service_spec.rb create mode 100644 spec/services/merge_requests/remove_approval_service_spec.rb create mode 100644 spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb create mode 100644 spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb delete mode 100644 spec/services/namespaces/check_storage_size_service_spec.rb create mode 100644 spec/services/packages/composer/composer_json_service_spec.rb create mode 100644 spec/services/packages/composer/create_package_service_spec.rb create mode 100644 spec/services/packages/composer/version_parser_service_spec.rb create mode 100644 spec/services/packages/conan/create_package_file_service_spec.rb create mode 100644 spec/services/packages/conan/create_package_service_spec.rb create mode 100644 spec/services/packages/conan/search_service_spec.rb create mode 100644 spec/services/packages/create_dependency_service_spec.rb create mode 100644 spec/services/packages/create_package_file_service_spec.rb create mode 100644 spec/services/packages/maven/create_package_service_spec.rb create mode 100644 spec/services/packages/maven/find_or_create_package_service_spec.rb create mode 100644 spec/services/packages/npm/create_package_service_spec.rb create mode 100644 spec/services/packages/npm/create_tag_service_spec.rb create mode 100644 spec/services/packages/nuget/create_dependency_service_spec.rb create mode 100644 spec/services/packages/nuget/create_package_service_spec.rb create mode 100644 spec/services/packages/nuget/metadata_extraction_service_spec.rb create mode 100644 spec/services/packages/nuget/search_service_spec.rb create mode 100644 spec/services/packages/nuget/sync_metadatum_service_spec.rb create mode 100644 spec/services/packages/nuget/update_package_from_metadata_service_spec.rb create mode 100644 spec/services/packages/pypi/create_package_service_spec.rb create mode 100644 spec/services/packages/remove_tag_service_spec.rb create mode 100644 spec/services/packages/update_tags_service_spec.rb create mode 100644 spec/services/personal_access_tokens/last_used_service_spec.rb delete mode 100644 spec/services/projects/prometheus/alerts/create_events_service_spec.rb create mode 100644 spec/services/service_desk_settings/update_service_spec.rb create mode 100644 spec/services/snippets/update_statistics_service_spec.rb create mode 100644 spec/services/system_notes/alert_management_service_spec.rb create mode 100644 spec/services/update_container_registry_info_service_spec.rb delete mode 100644 spec/support/helpers/expect_offense.rb create mode 100644 spec/support/helpers/fast_rails_root.rb create mode 100644 spec/support/helpers/packages_manager_api_spec_helper.rb create mode 100644 spec/support/helpers/snippet_helpers.rb create mode 100644 spec/support/matchers/jsonb_matchers.rb rename spec/support/services/{issuable_create_service_slash_commands_shared_examples.rb => issuable_description_quick_actions_shared_examples.rb} (65%) create mode 100644 spec/support/shared_contexts/presenters/nuget_shared_context.rb create mode 100644 spec/support/shared_contexts/project_service_jira_context.rb create mode 100644 spec/support/shared_contexts/prometheus/alert_shared_context.rb delete mode 100644 spec/support/shared_examples/controllers/import_controller_new_import_ui_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/import_controller_status_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/metrics/dashboard/prometheus_api_proxy_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/metrics_dashboard_shared_examples.rb delete mode 100644 spec/support/shared_examples/controllers/namespace_storage_limit_alert_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/snippet_blob_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/unique_visits_shared_examples.rb create mode 100644 spec/support/shared_examples/create_alert_issue_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/wikis_api_examples.rb delete mode 100644 spec/support/shared_examples/models/services_fields_shared_examples.rb create mode 100644 spec/support/shared_examples/models/synthetic_note_shared_examples.rb create mode 100644 spec/support/shared_examples/namespaces/hierarchy_examples.rb create mode 100644 spec/support/shared_examples/policies/namespace_policy_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/packages_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/packages_tags_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/snippets_shared_examples.rb create mode 100644 spec/support/shared_examples/routing/resource_routing_shared_examples.rb create mode 100644 spec/support/shared_examples/routing/wiki_routing_shared_examples.rb create mode 100644 spec/support/shared_examples/services/alert_management_shared_examples.rb create mode 100644 spec/support/shared_examples/services/clusters/parse_cluster_applications_artifact_shared_examples.rb create mode 100644 spec/support/shared_examples/services/packages_shared_examples.rb create mode 100644 spec/support/shared_examples/snippet_blob_shared_examples.rb create mode 100644 spec/support/shared_examples/views/plain_text_email.rb create mode 100644 spec/tasks/gitlab/external_diffs_rake_spec.rb create mode 100644 spec/tasks/gitlab/packages/migrate_rake_spec.rb rename spec/{lib/quality => tooling/lib/tooling}/helm3_client_spec.rb (97%) rename spec/{lib/quality => tooling/lib/tooling}/kubernetes_client_spec.rb (97%) create mode 100644 spec/uploaders/packages/package_file_uploader_spec.rb create mode 100644 spec/validators/array_members_validator_spec.rb create mode 100644 spec/views/admin/application_settings/repository.html.haml_spec.rb create mode 100644 spec/views/notify/push_to_merge_request_email.text.haml_spec.rb delete mode 100644 spec/views/projects/show.html.haml_spec.rb delete mode 100644 spec/views/projects/tree/_tree_header.html.haml_spec.rb create mode 100644 spec/workers/authorized_project_update/project_group_link_create_worker_spec.rb create mode 100644 spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb create mode 100644 spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb delete mode 100644 spec/workers/concerns/project_export_options_spec.rb create mode 100644 spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb create mode 100644 spec/workers/members_destroyer/unassign_issuables_worker_spec.rb delete mode 100644 spec/workers/new_release_worker_spec.rb create mode 100644 spec/workers/packages/nuget/extraction_worker_spec.rb create mode 100644 spec/workers/partition_creation_worker_spec.rb create mode 100644 spec/workers/service_desk_email_receiver_worker_spec.rb delete mode 100644 spec/workers/stuck_import_jobs_worker_spec.rb create mode 100644 spec/workers/update_container_registry_info_worker_spec.rb delete mode 100644 symbol/icons.svg delete mode 100644 symbol/sprite.symbol.html rename {lib/quality => tooling/lib/tooling}/helm3_client.rb (91%) rename {lib/quality => tooling/lib/tooling}/kubernetes_client.rb (93%) create mode 100644 vendor/project_templates/jsonnet.tar.gz diff --git a/.gitignore b/.gitignore index 29180b76e2..151c75d474 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ eslint-report.html .rbx/ /.ruby-gemset /.ruby-version +/.tool-versions /.rvmrc .sass-cache/ /.secret diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4bbf411c23..a5b80c7ca5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,8 @@ default: - gitlab-org # All jobs are interruptible by default interruptible: true + # Default job timeout set to 90m https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/10520 + timeout: 90m workflow: rules: @@ -61,6 +63,7 @@ variables: DOCKER_VERSION: "19.03.0" include: + - local: .gitlab/ci/build-images.gitlab-ci.yml - local: .gitlab/ci/cache-repo.gitlab-ci.yml - local: .gitlab/ci/cng.gitlab-ci.yml - local: .gitlab/ci/docs.gitlab-ci.yml diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 6cd316349c..4e2c4aa5c7 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -13,6 +13,7 @@ /doc/development/ @marcia @mjang1 /doc/development/documentation/ @mikelewis /doc/ci @marcel.amirault @sselhorn +/doc/operations @aqualls @eread /doc/user/clusters @aqualls /doc/user/infrastructure @aqualls /doc/user/project/clusters @aqualls @@ -43,17 +44,12 @@ # Feature specific owners /ee/lib/ee/gitlab/auth/ldap/ @dblessing @mkozono /lib/gitlab/auth/ldap/ @dblessing @mkozono -/lib/gitlab/ci/templates/ @nolith @zj +/lib/gitlab/ci/templates/ @nolith @dosuken123 /lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @DylanGriffith @mayra-cabrera @tkuah /lib/gitlab/ci/templates/Security/ @plafoucriere @gonzoyumo @twoodham @sethgitlab /ee/app/models/project_alias.rb @patrickbajao /ee/lib/api/project_aliases.rb @patrickbajao -# Code Owners -# -/ee/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh -/doc/user/project/code_owners.md @reprazent @kerrizor @garyh - # Quality owned files /qa/ @gl-quality @@ -77,3 +73,9 @@ Dangerfile @gl-quality/eng-prod /lib/gitlab/usage_data.rb @gitlab-org/growth/telemetry /lib/gitlab/cycle_analytics/usage_data.rb @gitlab-org/growth/telemetry /lib/gitlab/usage_data_counters/ @gitlab-org/growth/telemetry + +[Code Owners] +/ee/lib/gitlab/code_owners.rb @reprazent @kerrizor @garyh +/ee/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh +/ee/spec/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh +/doc/user/project/code_owners.md @reprazent @kerrizor @garyh diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml new file mode 100644 index 0000000000..e6c3e7598d --- /dev/null +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -0,0 +1,31 @@ +# This image is used by the `review-qa-*` jobs. Not currently used by the `omnibus-gitlab` pipelines which rebuild this +# image, e.g. https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/jobs/587107399, which we could probably avoid. +# See https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5429. +build-qa-image: + extends: + - .use-kaniko + - .build-images:rules:build-qa-image + stage: build-images + needs: [] + script: + - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" + - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true + retry: 2 + +# This image is used by: +# - The `CNG` pipelines (via the `review-build-cng` job): https://gitlab.com/gitlab-org/build/CNG/-/blob/cfc67136d711e1c8c409bf8e57427a644393da2f/.gitlab-ci.yml#L335 +# - The `omnibus-gitlab` pipelines (via the `package-and-qa` job): https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/dfd1ad475868fc84e91ab7b5706aa03e46dc3a86/.gitlab-ci.yml#L130 +build-assets-image: + extends: + - .use-kaniko + - .build-images:rules:build-assets-image + stage: build-images + needs: ["compile-production-assets"] + variables: + GIT_DEPTH: "1" + script: + # TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists + # We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines + # https://gitlab.com/gitlab-org/gitlab/issues/208389 + - run_timed_command "scripts/build_assets_image" + retry: 2 diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 5a6f2aacf9..8745e7d8e9 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -59,6 +59,15 @@ docs lint: # Check the internal anchor links - bundle exec nanoc check internal_anchors +ui-docs-links lint: + extends: + - .docs:rules:docs-lint + - .static-analysis-base + stage: test + needs: [] + script: + - bundle exec haml-lint -i DocumentationLinks + graphql-reference-verify: extends: - .default-retry diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 4403187d42..084a48a7fc 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -2,16 +2,18 @@ extends: - .default-retry - .default-before_script - - .assets-compile-cache variables: SETUP_DB: "false" # we override the max_old_space_size to prevent OOM errors NODE_OPTIONS: --max_old_space_size=3584 - WEBPACK_VENDOR_DLL: "true" .compile-assets-base: - extends: .frontend-base + extends: + - .frontend-base + - .assets-compile-cache image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-git-2.27-lfs-2.9-node-12.x-yarn-1.21-graphicsmagick-1.3.34 + variables: + WEBPACK_VENDOR_DLL: "true" stage: prepare script: - node --version @@ -90,21 +92,6 @@ update-yarn-cache: cache: policy: push -build-assets-image: - extends: - - .use-kaniko - - .frontend:rules:compile-production-assets - stage: build-images - needs: ["compile-production-assets"] - variables: - GIT_DEPTH: "1" - script: - # TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists - # We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines - # https://gitlab.com/gitlab-org/gitlab/issues/208389 - - run_timed_command "scripts/build_assets_image" - retry: 2 - .frontend-fixtures-base: extends: - .frontend-base @@ -114,6 +101,7 @@ build-assets-image: needs: ["setup-test-env", "compile-test-assets"] variables: SETUP_DB: "true" + WEBPACK_VENDOR_DLL: "true" script: - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" @@ -138,22 +126,25 @@ frontend-fixtures-as-if-foss: .frontend-test-base: extends: - - .default-retry + - .frontend-base - .yarn-cache variables: USE_BUNDLE_INSTALL: "false" - SETUP_DB: "false" stage: test - before_script: - - source scripts/utils.sh + +eslint-as-if-foss: + extends: + - .frontend-test-base + - .frontend:rules:eslint-as-if-foss + - .as-if-foss + needs: [] + script: + - run_timed_command "retry yarn install --frozen-lockfile" + - yarn run eslint .karma-base: extends: .frontend-test-base - variables: - # we override the max_old_space_size to prevent OOM errors - NODE_OPTIONS: --max_old_space_size=3584 script: - - source scripts/utils.sh - export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log - run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "yarn karma" @@ -174,6 +165,7 @@ karma: - tmp/tests/frontend/ reports: junit: junit_karma.xml + cobertura: coverage-javascript/cobertura-coverage.xml karma-as-if-foss: extends: @@ -185,7 +177,6 @@ karma-as-if-foss: .jest-base: extends: .frontend-test-base script: - - source scripts/utils.sh - run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "yarn jest --ci --coverage --testSequencer ./scripts/frontend/parallel_ci_sequencer.js" @@ -211,7 +202,6 @@ jest-integration: - .frontend-test-base - .frontend:rules:default-frontend-jobs script: - - source scripts/utils.sh - run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "yarn jest:integration --ci" needs: ["frontend-fixtures"] @@ -236,11 +226,14 @@ coverage-frontend: - run_timed_command "retry yarn install --frozen-lockfile" script: - run_timed_command "yarn node scripts/frontend/merge_coverage_frontend.js" + coverage: '/^Statements\s*:\s*?(\d+(?:\.\d+)?)%/' artifacts: name: coverage-frontend expire_in: 31d paths: - coverage-frontend/ + reports: + cobertura: coverage-frontend/cobertura-coverage.xml .qa-frontend-node: extends: diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 30e3abf13b..3101a42c05 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -18,7 +18,7 @@ .rails-cache: cache: - key: "rails-v1" + key: "rails-v2" paths: - vendor/ruby/ - vendor/gitaly-ruby/ @@ -72,6 +72,15 @@ variables: POSTGRES_HOST_AUTH_METHOD: trust +.use-pg12: + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.27-lfs-2.9-chrome-83-node-12.x-yarn-1.21-postgresql-12-graphicsmagick-1.3.34" + services: + - name: postgres:12 + command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] + - name: redis:alpine + variables: + POSTGRES_HOST_AUTH_METHOD: trust + .use-pg11-ee: image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.27-lfs-2.9-chrome-83-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34" services: @@ -82,6 +91,16 @@ variables: POSTGRES_HOST_AUTH_METHOD: trust +.use-pg12-ee: + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.27-lfs-2.9-chrome-83-node-12.x-yarn-1.21-postgresql-12-graphicsmagick-1.3.34" + services: + - name: postgres:12 + command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] + - name: redis:alpine + - name: elasticsearch:6.4.2 + variables: + POSTGRES_HOST_AUTH_METHOD: trust + .use-kaniko: image: name: gcr.io/kaniko-project/executor:debug-v0.20.0 diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index 20527b690a..9a81ea513b 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -49,7 +49,6 @@ update-qa-cache: .package-and-qa-base: image: ruby:2.6-alpine stage: qa - dependencies: [] retry: 0 script: - source scripts/utils.sh diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index f73e0c1d50..4cef4ee26f 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -1,9 +1,129 @@ +###################### +# rspec job base specs .rails-job-base: extends: - .default-retry - .default-before_script - .rails-cache +.rspec-base: + extends: .rails-job-base + stage: test + needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] + script: + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - source scripts/rspec_helpers.sh + - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration" + artifacts: + expire_in: 31d + when: always + paths: + - coverage/ + - knapsack/ + - rspec_flaky/ + - rspec_profiling/ + - tmp/capybara/ + - tmp/memory_test/ + - log/*.log + reports: + junit: junit_rspec.xml + +.rspec-base-migration: + extends: .rails:rules:ee-and-foss-migration + script: + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - source scripts/rspec_helpers.sh + - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" + +.rspec-base-pg11: + extends: + - .rspec-base + - .use-pg11 + +.rspec-base-pg12: + extends: + - .rspec-base + - .use-pg12 + +.rspec-base-pg11-as-if-foss: + extends: + - .rspec-base + - .as-if-foss + - .use-pg11 + needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss"] + +.rspec-ee-base-pg11: + extends: + - .rspec-base + - .use-pg11-ee + +.rspec-ee-base-pg12: + extends: + - .rspec-base + - .use-pg12-ee + +.rspec-ee-base-geo: + extends: .rspec-base + script: + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - source scripts/rspec_helpers.sh + - scripts/prepare_postgres_fdw.sh + - rspec_paralellized_job "--tag ~quarantine --tag geo" + +.rspec-ee-base-geo-pg11: + extends: + - .rspec-ee-base-geo + - .use-pg11-ee + +.rspec-ee-base-geo-pg12: + extends: + - .rspec-ee-base-geo + - .use-pg12-ee + +.db-job-base: + extends: + - .rails-job-base + - .rails:rules:ee-and-foss-migration + - .use-pg11 + stage: test + needs: ["setup-test-env"] +# rspec job base specs +###################### + +############################ +# rspec job parallel configs +.rspec-migration-parallel: + parallel: 5 + +.rspec-ee-migration-parallel: + parallel: 2 + +.rspec-unit-parallel: + parallel: 20 + +.rspec-ee-unit-parallel: + parallel: 10 + +.rspec-ee-unit-geo-parallel: + parallel: 2 + +.rspec-integration-parallel: + parallel: 8 + +.rspec-ee-integration-parallel: + parallel: 4 + +.rspec-system-parallel: + parallel: 24 + +.rspec-ee-system-parallel: + parallel: 6 +# rspec job parallel configs +############################ + ####################################################### # EE/FOSS: default refs (MRs, master, schedules) jobs # setup-test-env: @@ -86,73 +206,37 @@ downtime_check: script: - bundle exec rake downtime_check -.rspec-base: - extends: .rails-job-base - stage: test - needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] - script: - - run_timed_command "scripts/gitaly-test-build" - - run_timed_command "scripts/gitaly-test-spawn" - - source scripts/rspec_helpers.sh - - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration" - artifacts: - expire_in: 31d - when: always - paths: - - coverage/ - - knapsack/ - - rspec_flaky/ - - rspec_profiling/ - - tmp/capybara/ - - tmp/memory_test/ - - log/*.log - reports: - junit: junit_rspec.xml - -.rspec-base-pg11: - extends: - - .rspec-base - - .rails:rules:ee-and-foss - - .use-pg11 - -.rspec-base-migration: - script: - - run_timed_command "scripts/gitaly-test-build" - - run_timed_command "scripts/gitaly-test-spawn" - - source scripts/rspec_helpers.sh - - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" - rspec migration pg11: extends: - .rspec-base-pg11 - .rspec-base-migration - parallel: 5 + - .rspec-migration-parallel rspec unit pg11: - extends: .rspec-base-pg11 - parallel: 20 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-unit + - .rspec-unit-parallel rspec integration pg11: - extends: .rspec-base-pg11 - parallel: 8 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-integration + - .rspec-integration-parallel rspec system pg11: - extends: .rspec-base-pg11 - parallel: 24 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-system + - .rspec-system-parallel rspec fast_spec_helper: - extends: .rspec-base-pg11 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-fast_spec_helper script: - bin/rspec spec/fast_spec_helper.rb -.db-job-base: - extends: - - .rails-job-base - - .rails:rules:ee-and-foss - - .use-pg11 - stage: test - needs: ["setup-test-env"] - db:migrate:reset: extends: .db-job-base script: @@ -216,7 +300,7 @@ gitlab:setup: rspec:coverage: extends: - .rails-job-base - - .rails:rules:ee-mr-and-master-only + - .rails:rules:rspec-coverage stage: post-test # We cannot use needs since it would mean needing 84 jobs (since most are parallelized) # so we use `dependencies` here. @@ -248,118 +332,180 @@ rspec:coverage: - coverage/index.html - coverage/assets/ - tmp/memory_test/ + reports: + cobertura: coverage/coverage.xml # EE/FOSS: default refs (MRs, master, schedules) jobs # ####################################################### ################################################## # EE: default refs (MRs, master, schedules) jobs # -.rspec-base-ee: - extends: - - .rspec-base - - .rails:rules:ee-only - -.rspec-base-pg11-as-if-foss: - extends: - - .rspec-base - - .rails:rules:as-if-foss - - .as-if-foss - - .use-pg11 - needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss"] - -.rspec-ee-base-pg11: - extends: - - .rspec-base-ee - - .use-pg11-ee - rspec migration pg11-as-if-foss: extends: - .rspec-base-pg11-as-if-foss - .rspec-base-migration - parallel: 5 + - .rails:rules:as-if-foss-migration + - .rspec-migration-parallel rspec unit pg11-as-if-foss: - extends: .rspec-base-pg11-as-if-foss - parallel: 20 + extends: + - .rspec-base-pg11-as-if-foss + - .rails:rules:as-if-foss-unit + - .rspec-unit-parallel rspec integration pg11-as-if-foss: - extends: .rspec-base-pg11-as-if-foss - parallel: 8 + extends: + - .rspec-base-pg11-as-if-foss + - .rails:rules:as-if-foss-integration + - .rspec-integration-parallel rspec system pg11-as-if-foss: - extends: .rspec-base-pg11-as-if-foss - parallel: 24 + extends: + - .rspec-base-pg11-as-if-foss + - .rails:rules:as-if-foss-system + - .rspec-system-parallel rspec-ee migration pg11: extends: - .rspec-ee-base-pg11 - .rspec-base-migration - parallel: 2 + - .rails:rules:ee-only-migration + - .rspec-ee-migration-parallel rspec-ee unit pg11: - extends: .rspec-ee-base-pg11 - parallel: 10 + extends: + - .rspec-ee-base-pg11 + - .rails:rules:ee-only-unit + - .rspec-ee-unit-parallel rspec-ee integration pg11: - extends: .rspec-ee-base-pg11 - parallel: 4 + extends: + - .rspec-ee-base-pg11 + - .rails:rules:ee-only-integration + - .rspec-ee-integration-parallel rspec-ee system pg11: - extends: .rspec-ee-base-pg11 - parallel: 6 - -.rspec-ee-base-geo: - extends: .rspec-base-ee - script: - - run_timed_command "scripts/gitaly-test-build" - - run_timed_command "scripts/gitaly-test-spawn" - - source scripts/rspec_helpers.sh - - scripts/prepare_postgres_fdw.sh - - rspec_paralellized_job "--tag ~quarantine --tag geo" - -.rspec-ee-base-geo-pg11: extends: - - .rspec-ee-base-geo - - .use-pg11-ee + - .rspec-ee-base-pg11 + - .rails:rules:ee-only-system + - .rspec-ee-system-parallel rspec-ee unit pg11 geo: - extends: .rspec-ee-base-geo-pg11 - parallel: 2 + extends: + - .rspec-ee-base-geo-pg11 + - .rails:rules:ee-only-unit + - .rspec-ee-unit-geo-parallel rspec-ee integration pg11 geo: - extends: .rspec-ee-base-geo-pg11 + extends: + - .rspec-ee-base-geo-pg11 + - .rails:rules:ee-only-integration rspec-ee system pg11 geo: - extends: .rspec-ee-base-geo-pg11 + extends: + - .rspec-ee-base-geo-pg11 + - .rails:rules:ee-only-system db:rollback geo: extends: - db:rollback - - .rails:rules:ee-only + - .rails:rules:ee-only-migration script: - bundle exec rake geo:db:migrate VERSION=20170627195211 - bundle exec rake geo:db:migrate # EE: default refs (MRs, master, schedules) jobs # ################################################## +########################################## +# EE/FOSS: master nightly scheduled jobs # +rspec migration pg12: + extends: + - .rspec-base-pg12 + - .rspec-base-migration + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-migration-parallel + +rspec unit pg12: + extends: + - .rspec-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-unit-parallel + +rspec integration pg12: + extends: + - .rspec-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-integration-parallel + +rspec system pg12: + extends: + - .rspec-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-system-parallel +# EE/FOSS: master nightly scheduled jobs # +########################################## + +##################################### +# EE: master nightly scheduled jobs # +rspec-ee migration pg12: + extends: + - .rspec-ee-base-pg12 + - .rspec-base-migration + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-migration-parallel + +rspec-ee unit pg12: + extends: + - .rspec-ee-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-unit-parallel + +rspec-ee integration pg12: + extends: + - .rspec-ee-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-integration-parallel + +rspec-ee system pg12: + extends: + - .rspec-ee-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-system-parallel + +rspec-ee unit pg12 geo: + extends: + - .rspec-ee-base-geo-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-unit-geo-parallel + +rspec-ee integration pg12 geo: + extends: + - .rspec-ee-base-geo-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + +rspec-ee system pg12 geo: + extends: + - .rspec-ee-base-geo-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only +# EE: master nightly scheduled jobs # +##################################### + ################################################## # EE: Canonical MR pipelines rspec foss-impact: extends: - - .rspec-base - - .as-if-foss + - .rspec-base-pg11-as-if-foss - .rails:rules:ee-mr-only - - .use-pg11 script: - install_gitlab_gem - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" - source scripts/rspec_helpers.sh - tooling/bin/find_foss_tests tmp/matching_foss_tests.txt - - rspec_matched_tests tmp/matching_foss_tests.txt "--tag ~quarantine --tag ~geo --tag ~level:migration" + - rspec_matched_tests tmp/matching_foss_tests.txt "--tag ~quarantine" artifacts: expire_in: 7d paths: - tmp/matching_foss_tests.txt - tmp/capybara/ -# EE: Merge Request pipelines +# EE: Canonical MR pipelines ################################################## diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 65abb6c5cb..228747ae8d 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -15,7 +15,7 @@ code_quality: stage: test needs: [] variables: - CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.9" + CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.10" script: - | if ! docker info &>/dev/null; then @@ -59,6 +59,7 @@ code_quality: SAST_ANALYZER_IMAGE_TAG: 2 SAST_BRAKEMAN_LEVEL: 2 # GitLab-specific SAST_EXCLUDED_PATHS: qa,spec,doc,ee/spec # GitLab-specific + SAST_DISABLE_BABEL: "true" script: - /analyzer run @@ -72,11 +73,10 @@ eslint-sast: image: name: "$SAST_ANALYZER_IMAGE_PREFIX/eslint:$SAST_ANALYZER_IMAGE_TAG" -# Temporary disabled as it's constantly failing. See https://gitlab.com/gitlab-org/gitlab/-/issues/213769. -# nodejs-scan-sast: -# extends: .sast -# image: -# name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$SAST_ANALYZER_IMAGE_TAG" +nodejs-scan-sast: + extends: .sast + image: + name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$SAST_ANALYZER_IMAGE_TAG" secrets-sast: extends: .sast @@ -172,6 +172,7 @@ dependency_scanning: # # - 'export DAST_AUTH_URL="${DAST_WEBSITE}/users/sign_in"' # # - 'export DAST_PASSWORD="${REVIEW_APPS_ROOT_PASSWORD}"' # - /analyze -t $DAST_WEBSITE +# timeout: 4h # artifacts: # paths: # - gl-dast-report.json # GitLab-specific diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 6898da95c1..4e3a80372a 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -1,14 +1,3 @@ -build-qa-image: - extends: - - .use-kaniko - - .review:rules:build-qa-image - stage: build-images - needs: [] - script: - - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" - - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true - retry: 2 - review-cleanup: extends: - .default-retry @@ -27,25 +16,24 @@ review-cleanup: - ruby -rrubygems scripts/review_apps/automated_cleanup.rb - gcp_cleanup -# Temporarily disabling review apps -#review-build-cng: -# extends: -# - .default-retry -# - .review:rules:review-build-cng -# image: ruby:2.6-alpine -# stage: review-prepare -# before_script: -# - source scripts/utils.sh -# - install_api_client_dependencies_with_apk -# - install_gitlab_gem -# needs: -# - job: compile-production-assets -# artifacts: false -# script: -# - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng -# # When the job is manual, review-deploy is also manual and we don't want people -# # to have to manually start the jobs in sequence, so we do it for them. -# - '[ -z $CI_JOB_MANUAL ] || play_job "review-deploy"' +review-build-cng: + extends: + - .default-retry + - .review:rules:review-build-cng + image: ruby:2.6-alpine + stage: review-prepare + before_script: + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - install_gitlab_gem + needs: + - job: compile-production-assets + artifacts: false + script: + - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng + # When the job is manual, review-deploy is also manual and we don't want people + # to have to manually start the jobs in sequence, so we do it for them. + - '[ -z $CI_JOB_MANUAL ] || play_job "review-deploy"' .review-workflow-base: extends: @@ -53,45 +41,46 @@ review-cleanup: image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3-kubectl1.14 variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" + REVIEW_APPS_DOMAIN: "temp.gitlab-review.app" # FIXME: using temporary domain DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "master" + GITLAB_HELM_CHART_REF: "v4.1.3" environment: name: review/${CI_COMMIT_REF_NAME} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} on_stop: review-stop auto_stop_in: 48 hours -# Temporarily disabling review apps -#review-deploy: -# extends: -# - .review-workflow-base -# - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise -# stage: review -# dependencies: [] -# resource_group: "review/${CI_COMMIT_REF_NAME}" -# before_script: -# - export GITLAB_SHELL_VERSION=$( environment_url.txt -# - source ./scripts/utils.sh -# - install_api_client_dependencies_with_apk -# - source scripts/review_apps/review-apps.sh -# script: -# - check_kube_domain -# - ensure_namespace -# - install_external_dns -# - download_chart -# - date -# - deploy || (display_deployment_debug && exit 1) -# # When the job is manual, review-qa-smoke is also manual and we don't want people -# # to have to manually start the jobs in sequence, so we do it for them. -# - '[ -z $CI_JOB_MANUAL ] || play_job "review-qa-smoke"' -# - '[ -z $CI_JOB_MANUAL ] || play_job "review-performance"' -# artifacts: -# paths: [environment_url.txt] -# expire_in: 2 days -# when: always +review-deploy: + extends: + - .review-workflow-base + - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise + stage: review + dependencies: [] + resource_group: "review/${CI_COMMIT_REF_NAME}" + before_script: + - export GITLAB_SHELL_VERSION=$( environment_url.txt + - source ./scripts/utils.sh + - install_api_client_dependencies_with_apk + - source scripts/review_apps/review-apps.sh + script: + - check_kube_domain + - ensure_namespace + - install_external_dns + - download_chart + - date + - deploy || (display_deployment_debug && exit 1) + - disable_sign_ups + # When the job is manual, review-qa-smoke is also manual and we don't want people + # to have to manually start the jobs in sequence, so we do it for them. + - '[ -z $CI_JOB_MANUAL ] || play_job "review-qa-smoke"' + - '[ -z $CI_JOB_MANUAL ] || play_job "review-performance"' + artifacts: + paths: [environment_url.txt] + expire_in: 2 days + when: always .review-stop-base: extends: .review-workflow-base @@ -124,110 +113,110 @@ review-stop: script: - delete_release -# Temporarily disabling review apps -#.review-qa-base: -# extends: -# - .default-retry -# - .use-docker-in-docker -# image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6 -# stage: qa -# # This is needed so that manual jobs with needs don't block the pipeline. -# # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. -# dependencies: ["review-deploy"] -# variables: -# QA_ARTIFACTS_DIR: "${CI_PROJECT_DIR}/qa" -# QA_CAN_TEST_GIT_PROTOCOL_V2: "false" -# QA_DEBUG: "true" -# GITLAB_USERNAME: "root" -# GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" -# GITLAB_ADMIN_USERNAME: "root" -# GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" -# GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" -# EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" -# before_script: -# - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" -# - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" -# - echo "${CI_ENVIRONMENT_URL}" -# - echo "${QA_IMAGE}" -# - source scripts/utils.sh -# - install_api_client_dependencies_with_apk -# - gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}} -# artifacts: -# paths: -# - ./qa/gitlab-qa-run-* -# expire_in: 7 days -# when: always -# -#review-qa-smoke: -# extends: -# - .review-qa-base -# - .review:rules:review-qa-smoke -# script: -# - gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -# -#review-qa-all: -# extends: -# - .review-qa-base -# - .review:rules:mr-only-manual -# parallel: 5 -# script: -# - export KNAPSACK_REPORT_PATH=knapsack/master_report.json -# - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb -# - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -- --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml --format html --out tmp/rspec.htm --color --format documentation -# -#review-performance: -# extends: -# - .default-retry -# - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise -# image: -# name: sitespeedio/sitespeed.io:6.3.1 -# entrypoint: [""] -# stage: qa -# # This is needed so that manual jobs with needs don't block the pipeline. -# # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. -# dependencies: ["review-deploy"] -# before_script: -# - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" -# - echo "${CI_ENVIRONMENT_URL}" -# - mkdir -p gitlab-exporter -# - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js -# - mkdir -p sitespeed-results -# script: -# - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" -# after_script: -# - mv sitespeed-results/data/performance.json performance.json -# artifacts: -# paths: -# - sitespeed-results/ -# reports: -# performance: performance.json -# expire_in: 31d -# -#parallel-spec-reports: -# extends: -# - .review:rules:mr-only-manual -# image: ruby:2.6-alpine -# stage: post-qa -# dependencies: ["review-qa-all"] -# variables: -# NEW_PARALLEL_SPECS_REPORT: qa/report-new.html -# BASE_ARTIFACT_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/file/qa/" -# script: -# - apk add --update build-base libxml2-dev libxslt-dev && rm -rf /var/cache/apk/* -# - gem install nokogiri --no-document -# - cd qa/gitlab-qa-run-*/gitlab-* -# - ARTIFACT_DIRS=$(pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_) -# - cd - -# - '[[ -f $NEW_PARALLEL_SPECS_REPORT ]] || echo "{}" > ${NEW_PARALLEL_SPECS_REPORT}' -# - scripts/merge-html-reports ${NEW_PARALLEL_SPECS_REPORT} ${BASE_ARTIFACT_URL}${ARTIFACT_DIRS} qa/gitlab-qa-run-*/**/rspec.htm -# artifacts: -# when: always -# paths: -# - qa/report-new.html -# - qa/gitlab-qa-run-* -# reports: -# junit: qa/gitlab-qa-run-*/**/rspec-*.xml -# expire_in: 31d +.review-qa-base: + extends: + - .default-retry + - .use-docker-in-docker + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6 + stage: qa + # This is needed so that manual jobs with needs don't block the pipeline. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. + dependencies: ["review-deploy"] + variables: + QA_ARTIFACTS_DIR: "${CI_PROJECT_DIR}/qa" + QA_CAN_TEST_GIT_PROTOCOL_V2: "false" + QA_DEBUG: "true" + GITLAB_USERNAME: "root" + GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" + GITLAB_ADMIN_USERNAME: "root" + GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" + GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" + EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" + SIGNUP_DISABLED: "true" + before_script: + - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" + - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - echo "${QA_IMAGE}" + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}} + artifacts: + paths: + - ./qa/gitlab-qa-run-* + expire_in: 7 days + when: always + +review-qa-smoke: + extends: + - .review-qa-base + - .review:rules:review-qa-smoke + script: + - gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" + +review-qa-all: + extends: + - .review-qa-base + - .review:rules:mr-only-manual + parallel: 5 + script: + - export KNAPSACK_REPORT_PATH=knapsack/master_report.json + - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb + - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -- --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml --format html --out tmp/rspec.htm --color --format documentation + +review-performance: + extends: + - .default-retry + - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise + image: + name: sitespeedio/sitespeed.io:6.3.1 + entrypoint: [""] + stage: qa + # This is needed so that manual jobs with needs don't block the pipeline. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. + dependencies: ["review-deploy"] + before_script: + - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - mkdir -p gitlab-exporter + - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js + - mkdir -p sitespeed-results + script: + - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" + after_script: + - mv sitespeed-results/data/performance.json performance.json + artifacts: + paths: + - sitespeed-results/ + reports: + performance: performance.json + expire_in: 31d + +parallel-spec-reports: + extends: + - .review:rules:mr-only-manual + image: ruby:2.6-alpine + stage: post-qa + dependencies: ["review-qa-all"] + variables: + NEW_PARALLEL_SPECS_REPORT: qa/report-new.html + BASE_ARTIFACT_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/file/qa/" + script: + - apk add --update build-base libxml2-dev libxslt-dev && rm -rf /var/cache/apk/* + - gem install nokogiri --no-document + - cd qa/gitlab-qa-run-*/gitlab-* + - ARTIFACT_DIRS=$(pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_) + - cd - + - '[[ -f $NEW_PARALLEL_SPECS_REPORT ]] || echo "{}" > ${NEW_PARALLEL_SPECS_REPORT}' + - scripts/merge-html-reports ${NEW_PARALLEL_SPECS_REPORT} ${BASE_ARTIFACT_URL}${ARTIFACT_DIRS} qa/gitlab-qa-run-*/**/rspec.htm + artifacts: + when: always + paths: + - qa/report-new.html + - qa/gitlab-qa-run-* + reports: + junit: qa/gitlab-qa-run-*/**/rspec-*.xml + expire_in: 31d danger-review: extends: diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index fbbb0391ec..f508bfa146 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -11,7 +11,7 @@ if: '$CI_PROJECT_NAME != "gitlab-foss" && $CI_PROJECT_NAME != "gitlab-ce" && $CI_PROJECT_NAME != "gitlabhq"' .if-default-refs: &if-default-refs - if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG' + if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG || $FORCE_GITLAB_CI' .if-master-refs: &if-master-refs if: '$CI_COMMIT_REF_NAME == "master"' @@ -40,6 +40,9 @@ .if-merge-request-title-update-caches: &if-merge-request-title-update-caches if: '$CI_MERGE_REQUEST_TITLE =~ /UPDATE CACHE/' +.if-merge-request-title-run-all-rspec: &if-merge-request-title-run-all-rspec + if: '$CI_MERGE_REQUEST_TITLE =~ /RUN ALL RSPEC/' + .if-security-merge-request: &if-security-merge-request if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID' @@ -71,6 +74,22 @@ - ".gitlab-ci.yml" - ".gitlab/ci/**/*" +.ci-build-images-patterns: &ci-build-images-patterns + - ".gitlab-ci.yml" + - ".gitlab/ci/build-images.gitlab-ci.yml" + +.ci-review-patterns: &ci-review-patterns + - ".gitlab-ci.yml" + - ".gitlab/ci/frontend.gitlab-ci.yml" + - ".gitlab/ci/build-images.gitlab-ci.yml" + - ".gitlab/ci/review.gitlab-ci.yml" + +.ci-qa-patterns: &ci-qa-patterns + - ".gitlab-ci.yml" + - ".gitlab/ci/frontend.gitlab-ci.yml" + - ".gitlab/ci/build-images.gitlab-ci.yml" + - ".gitlab/ci/qa.gitlab-ci.yml" + .yaml-patterns: &yaml-patterns - "**/*.yml" @@ -92,6 +111,21 @@ - "vendor/assets/**/*" - "{,ee/}{app/assets,app/helpers,app/presenters,app/views,locale,public,symbol}/**/*" +.backend-patterns: &backend-patterns + - "Gemfile{,.lock}" + - "Rakefile" + - "config.ru" + # List explicitly all the app/ dirs that are backend (i.e. all except app/assets). + - "{,ee/}{app/channels,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*" + - "{,ee/}{bin,cable,config,db,lib}/**/*" + - "{,ee/}spec/**/*.rb" + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" + +.db-patterns: &db-patterns + - "{,ee/}{,spec/}{db,migrations}/**/*" + - "{,ee/}{,spec/}lib/{,ee/}gitlab/background_migration/**/*" + .backstage-patterns: &backstage-patterns - "Dangerfile" - "danger/**/*" @@ -197,6 +231,26 @@ - <<: *if-master-schedule-2-hourly - <<: *if-merge-request-title-update-caches +###################### +# Build images rules # +###################### +.build-images:rules:build-qa-image: + rules: + - <<: *if-not-ee + when: never + - <<: *if-dot-com-gitlab-org-and-security-merge-request + changes: *ci-build-images-patterns + - <<: *if-dot-com-gitlab-org-and-security-merge-request + changes: *code-qa-patterns + - <<: *if-dot-com-gitlab-org-schedule + +.build-images:rules:build-assets-image: + rules: + - <<: *if-not-canonical-namespace + when: never + - changes: *ci-build-images-patterns + - changes: *code-qa-patterns + #################### # Cache repo rules # #################### @@ -263,7 +317,7 @@ - <<: *if-not-canonical-namespace when: never - <<: *if-default-refs - changes: *code-backstage-qa-patterns + changes: *code-qa-patterns .frontend:rules:compile-test-assets: rules: @@ -273,11 +327,8 @@ rules: - <<: *if-not-ee when: never - - <<: *if-security-merge-request + - <<: *if-merge-request # Always run for MRs since `compile-test-assets as-if-foss` is either needed by `rspec foss-impact` or the `rspec * as-if-foss` jobs. changes: *code-backstage-qa-patterns - - <<: *if-merge-request-title-as-if-foss - - <<: *if-merge-request - changes: *ci-patterns .frontend:rules:default-frontend-jobs: rules: @@ -294,6 +345,15 @@ - <<: *if-merge-request changes: *ci-patterns +.frontend:rules:eslint-as-if-foss: + rules: + - <<: *if-not-ee + when: never + - <<: *if-merge-request-title-as-if-foss + when: never + - <<: *if-merge-request + changes: *frontend-patterns + .frontend:rules:ee-mr-and-master-only: rules: - <<: *if-not-ee @@ -341,9 +401,7 @@ rules: - <<: *if-not-ee when: never - - <<: *if-dot-com-gitlab-org-master - changes: *code-backstage-qa-patterns - when: on_success + - <<: *if-master-schedule-2-hourly ############ # QA rules # @@ -367,7 +425,7 @@ .qa:rules:package-and-qa: rules: - <<: *if-dot-com-gitlab-org-and-security-merge-request - changes: *ci-patterns + changes: *ci-qa-patterns allow_failure: true - <<: *if-dot-com-gitlab-org-and-security-merge-request changes: *qa-patterns @@ -382,24 +440,95 @@ ############### # Rails rules # ############### -.rails:rules:ee-and-foss: +.rails:rules:ee-and-foss-migration: rules: - - <<: *if-default-refs - changes: *code-backstage-patterns + - changes: *db-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-unit: + rules: + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-integration: + rules: + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-system: + rules: + - changes: *code-backstage-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-fast_spec_helper: + rules: + - changes: ["config/**/*"] + - <<: *if-merge-request-title-run-all-rspec .rails:rules:default-refs-code-backstage-qa: rules: - <<: *if-default-refs changes: *code-backstage-qa-patterns -.rails:rules:ee-only: +.rails:rules:ee-only-migration: rules: - <<: *if-not-ee when: never - - <<: *if-default-refs - changes: *code-backstage-patterns + - changes: *db-patterns + - <<: *if-merge-request-title-run-all-rspec -.rails:rules:as-if-foss: +.rails:rules:ee-only-unit: + rules: + - <<: *if-not-ee + when: never + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-only-integration: + rules: + - <<: *if-not-ee + when: never + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-only-system: + rules: + - <<: *if-not-ee + when: never + - changes: *code-backstage-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:as-if-foss-migration: + rules: + - <<: *if-not-ee + when: never + - <<: *if-security-merge-request + changes: *db-patterns + - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request + changes: *ci-patterns + +.rails:rules:as-if-foss-unit: + rules: + - <<: *if-not-ee + when: never + - <<: *if-security-merge-request + changes: *backend-patterns + - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request + changes: *ci-patterns + +.rails:rules:as-if-foss-integration: + rules: + - <<: *if-not-ee + when: never + - <<: *if-security-merge-request + changes: *backend-patterns + - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request + changes: *ci-patterns + +.rails:rules:as-if-foss-system: rules: - <<: *if-not-ee when: never @@ -413,6 +542,7 @@ rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *code-backstage-patterns - <<: *if-master-refs @@ -434,6 +564,27 @@ - <<: *if-merge-request changes: *code-backstage-patterns +.rails:rules:rspec-coverage: + rules: + - <<: *if-not-ee + when: never + - <<: *if-master-schedule-2-hourly + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:master-schedule-nightly--code-backstage: + rules: + - <<: *if-master-schedule-nightly + - <<: *if-merge-request + changes: [".gitlab/ci/rails.gitlab-ci.yml"] + +.rails:rules:master-schedule-nightly--code-backstage-ee-only: + rules: + - <<: *if-not-ee + when: never + - <<: *if-master-schedule-nightly + - <<: *if-merge-request + changes: [".gitlab/ci/rails.gitlab-ci.yml"] + ################## # Releases rules # ################## @@ -496,18 +647,12 @@ ################ # Review rules # ################ -.review:rules:build-qa-image: +.review:rules:review-build-cng: rules: - <<: *if-not-ee when: never - - <<: *if-dot-com-gitlab-org-and-security-merge-request - changes: *code-qa-patterns - - <<: *if-dot-com-gitlab-org-schedule - -.review:rules:review-build-cng: - rules: - <<: *if-dot-com-gitlab-org-merge-request - changes: *ci-patterns + changes: *ci-review-patterns - <<: *if-dot-com-gitlab-org-merge-request changes: *frontend-patterns - <<: *if-dot-com-gitlab-org-merge-request @@ -521,7 +666,7 @@ - <<: *if-not-ee when: never - <<: *if-dot-com-gitlab-org-merge-request - changes: *ci-patterns + changes: *ci-review-patterns - <<: *if-dot-com-gitlab-org-merge-request changes: *frontend-patterns allow_failure: true @@ -544,7 +689,7 @@ - <<: *if-not-ee when: never - <<: *if-dot-com-gitlab-org-merge-request - changes: *ci-patterns + changes: *ci-review-patterns - <<: *if-dot-com-gitlab-org-merge-request changes: *frontend-patterns allow_failure: true diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index b878bec375..26c7a2194c 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -9,6 +9,7 @@ cache gems: stage: test needs: ["setup-test-env"] variables: + BUNDLE_INSTALL_FLAGS: --with=production --with=development --with=test --jobs=2 --path=vendor --retry=3 --quiet SETUP_DB: "false" script: - bundle package --all --all-platforms diff --git a/.gitlab/ci/yaml.gitlab-ci.yml b/.gitlab/ci/yaml.gitlab-ci.yml index ab31dd5929..a650ee7e4b 100644 --- a/.gitlab/ci/yaml.gitlab-ci.yml +++ b/.gitlab/ci/yaml.gitlab-ci.yml @@ -4,11 +4,11 @@ lint-ci-gitlab: extends: - .default-retry - .yaml:rules - image: sdesbure/yamllint:latest + image: pipelinecomponents/yamllint:latest stage: test needs: [] variables: LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates changelogs script: - '[[ ! -d "ee/" ]] || export LINT_PATHS="$LINT_PATHS ee/changelogs"' - - yamllint $LINT_PATHS + - yamllint -f colored $LINT_PATHS diff --git a/.gitlab/issue_templates/Feature proposal.md b/.gitlab/issue_templates/Feature proposal.md index 45b5fc85cd..589310b4ce 100644 --- a/.gitlab/issue_templates/Feature proposal.md +++ b/.gitlab/issue_templates/Feature proposal.md @@ -43,7 +43,14 @@ https://about.gitlab.com/handbook/engineering/ux/ux-research-training/user-story ### Permissions and Security - + ### Documentation diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 695f0167ad..7de137bd2e 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -9,19 +9,17 @@ Set the title to: `Description of the original issue` ## Prior to starting the security release work - [ ] Read the [security process for developers] if you are not familiar with it. -- [ ] Mark this [issue as related] to the Security Release tracking issue. You can find it on the topic of the `#releases` Slack channel. -- [ ] Run `scripts/security-harness` in your local repository to prevent accidentally pushing to any remote besides `gitlab.com/gitlab-org/security`. +- [ ] Mark this [issue as related] to the Security Release Tracking Issue. You can find it on the topic of the `#releases` Slack channel. - Fill out the [Links section](#links): - [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab` issue that describes the security vulnerability. - - [ ] Next to **Security Release tracking issue**, add a link to the security release issue that will include this security issue. ## Development +- [ ] Run `scripts/security-harness` in your local repository to prevent accidentally pushing to any remote besides `gitlab.com/gitlab-org/security`. - [ ] Create a new branch prefixing it with `security-`. - [ ] Create a merge request targeting `master` on `gitlab.com/gitlab-org/security` and use the [Security Release merge request template]. -- [ ] Follow the same [code review process]: Assign to a reviewer, then to a maintainer. -After your merge request has been approved according to our [approval guidelines], you're ready to prepare the backports +After your merge request has been approved according to our [approval guidelines] and by a team member of the AppSec team, you're ready to prepare the backports ## Backports @@ -41,7 +39,6 @@ After your merge request has been approved according to our [approval guidelines - [ ] Fill in any upgrade notes that users may need to take into account in the [details section](#details) - [ ] Add Yes/No and further details if needed to the migration and settings columns in the [details section](#details) - [ ] Add the nickname of the external user who found the issue (and/or HackerOne profile) to the Thanks row in the [details section](#details) -- [ ] Once your `master` MR is merged, comment on the original security issue with a link to that MR indicating the issue is fixed. ## Summary @@ -50,7 +47,6 @@ After your merge request has been approved according to our [approval guidelines | Description | Link | | -------- | -------- | | Issue on [GitLab](https://gitlab.com/gitlab-org/gitlab/issues) | #TODO | -| Security Release tracking issue | #TODO | ### Details @@ -64,7 +60,7 @@ After your merge request has been approved according to our [approval guidelines | Thanks | | | [security process for developers]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md -[secpick documentation]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#secpick-script +[secpick documentation]: https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/security/utilities/secpick_script.md [security Release merge request template]: https://gitlab.com/gitlab-org/security/gitlab/blob/master/.gitlab/merge_request_templates/Security%20Release.md [code review process]: https://docs.gitlab.com/ee/development/code_review.html [approval guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md index 282e80d700..fb828b995b 100644 --- a/.gitlab/merge_request_templates/Documentation.md +++ b/.gitlab/merge_request_templates/Documentation.md @@ -45,9 +45,11 @@ All reviewers can help ensure accuracy, clarity, completeness, and adherence to **2. Technical Writer** -- [ ] Optional: Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable [DevOps stage](https://about.gitlab.com/handbook/product/categories/#devops-stages). - - [ ] Add ~"Technical Writing" and `docs::` workflow label. +- [ ] Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable [DevOps stage](https://about.gitlab.com/handbook/product/product-categories/#devops-stages). + - [ ] Ensure ~"Technical Writing", ~"documentation", and a `docs::` scoped label are added. - [ ] Add ~docs-only when the only files changed are under `doc/*`. + - [ ] Add ~"tw::doing" when starting work on the MR. + - [ ] Add ~"tw::finished" if Technical Writing team work on the MR is complete but it remains open. **3. Maintainer** diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md index f852bebae9..bdf26041e6 100644 --- a/.gitlab/merge_request_templates/Security Release.md +++ b/.gitlab/merge_request_templates/Security Release.md @@ -13,25 +13,33 @@ See [the general developer security release guidelines](https://gitlab.com/gitla ## Developer checklist - [ ] **On "Related issues" section, write down the [GitLab Security] issue it belongs to (i.e. `Related to `).** -- [ ] Merge request targets `master`, or `X-Y-stable` for backports. +- [ ] Merge request targets `master`, or a versioned stable branch (`X-Y-stable-ee`). - [ ] Milestone is set for the version this merge request applies to. A closed milestone can be assigned via [quick actions]. - [ ] Title of this merge request is the same as for all backports. -- [ ] A [CHANGELOG entry](https://docs.gitlab.com/ee/development/changelog.html) is added without a `merge_request` value, with `type` set to `security` -- [ ] Assign to a reviewer and maintainer, per our [Code Review process]. +- [ ] A [CHANGELOG entry] is added without a `merge_request` value, with `type` set to `security` - [ ] For the MR targeting `master`: - - [ ] Ask for a non-blocking review from the AppSec team member associated to the issue in the [Canonical repository](https://gitlab.com/gitlab-org/gitlab). If you're unsure who to ping, ask on `#sec-appsec` Slack channel. + - [ ] Assign to a reviewer and maintainer, per our [Code Review process]. - [ ] Ensure it's approved according to our [Approval Guidelines]. -- [ ] Merge request _must not_ close the corresponding security issue, _unless_ it targets `master`. + - [ ] Ensure it's approved by an AppSec engineer. + - If you're unsure who should approve, find the AppSec engineer associated to the issue in the [Canonical repository], or ask #sec-appsec on Slack. + - Trigger the [`package-and-qa` build]. The docker image generated will be used by the AppSec engineer to validate the security vulnerability has been remediated. + - [ ] Merge request _must_ close the corresponding security issue. +- [ ] For a backport MR targeting a versioned stable branch (`X-Y-stable-ee`) + - [ ] Ensure it's approved by a maintainer. **Note:** Reviewer/maintainer should not be a Release Manager ## Maintainer checklist + - [ ] Correct milestone is applied and the title is matching across all backports - [ ] Assigned to `@gitlab-release-tools-bot` with passing CI pipelines and **when all backports including the MR targeting master are ready.** /label ~security [GitLab Security]: https://gitlab.com/gitlab-org/security/gitlab -[approval guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines -[Code Review process]: https://docs.gitlab.com/ee/development/code_review.html [quick actions]: https://docs.gitlab.com/ee/user/project/quick_actions.html#quick-actions-for-issues-merge-requests-and-epics +[CHANGELOG entry]: https://docs.gitlab.com/ee/development/changelog.html +[Code Review process]: https://docs.gitlab.com/ee/development/code_review.html +[Approval Guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines +[Canonical repository]: https://gitlab.com/gitlab-org/gitlab +[`package-and-qa` build]: https://docs.gitlab.com/ee/development/testing_guide/end_to_end/#using-the-package-and-qa-job diff --git a/.haml-lint.yml b/.haml-lint.yml index 33a960f7ef..4adb5e62f8 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -8,6 +8,7 @@ exclude: - 'spec/**/*' require: - './haml_lint/linter/no_plain_nodes.rb' + - './haml_lint/linter/documentation_links.rb' linters: AltText: @@ -26,6 +27,12 @@ linters: enabled: false max_consecutive: 2 + DocumentationLinks: + enabled: true + include: + - 'app/views/**/*.haml' + - 'ee/app/views/**/*.haml' + EmptyObjectReference: enabled: true diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 5bd7dc1883..df515607d3 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -47,7 +47,6 @@ linters: - "app/views/admin/hooks/edit.html.haml" - "app/views/admin/logs/show.html.haml" - "app/views/admin/projects/_projects.html.haml" - - "app/views/admin/projects/show.html.haml" - "app/views/admin/requests_profiles/index.html.haml" - "app/views/admin/runners/_runner.html.haml" - "app/views/admin/runners/index.html.haml" @@ -57,7 +56,6 @@ linters: - "app/views/admin/spam_logs/_spam_log.html.haml" - "app/views/admin/spam_logs/index.html.haml" - "app/views/admin/system_info/show.html.haml" - - "app/views/admin/users/_access_levels.html.haml" - "app/views/admin/users/_form.html.haml" - "app/views/admin/users/_head.html.haml" - "app/views/admin/users/_profile.html.haml" @@ -280,7 +278,6 @@ linters: - "app/views/shared/_no_password.html.haml" - "app/views/shared/_ping_consent.html.haml" - "app/views/shared/_project_limit.html.haml" - - "app/views/shared/boards/components/_board.html.haml" - "app/views/shared/boards/components/_sidebar.html.haml" - "app/views/shared/boards/components/sidebar/_due_date.html.haml" - "app/views/shared/boards/components/sidebar/_labels.html.haml" @@ -358,7 +355,6 @@ linters: - "ee/app/views/notify/unapproved_merge_request_email.html.haml" - "ee/app/views/oauth/geo_auth/error.html.haml" - "ee/app/views/projects/commits/_mirror_status.html.haml" - - "ee/app/views/projects/jobs/_shared_runner_limit_warning.html.haml" - "ee/app/views/projects/merge_requests/_approvals_count.html.haml" - "ee/app/views/projects/merge_requests/widget/open/_geo.html.haml" - "ee/app/views/projects/mirrors/_mirrored_repositories_count.html.haml" @@ -372,7 +368,6 @@ linters: - "ee/app/views/projects/services/gitlab_slack_application/_slack_integration_form.html.haml" - "ee/app/views/projects/settings/slacks/edit.html.haml" - "ee/app/views/shared/_mirror_update_button.html.haml" - - "ee/app/views/shared/boards/components/_list_weight.html.haml" - "ee/app/views/shared/epic/_search_bar.html.haml" - "ee/app/views/shared/issuable/_approvals.html.haml" - "ee/app/views/shared/issuable/_board_create_list_dropdown.html.haml" diff --git a/.markdownlint.json b/.markdownlint.json index b4da68989f..253b7bd0c9 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -79,6 +79,7 @@ "Jira Cloud", "Jira Server", "jQuery", + "JSON", "JupyterHub", "Karma", "Kerberos", diff --git a/.prettierignore b/.prettierignore index c9b945ac96..ff8188bbda 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,6 +3,7 @@ /public/ /vendor/ /tmp/ +doc/api/graphql/reference/gitlab_schema.graphql # ignore stylesheets for now as this clashes with our linter *.css diff --git a/.rubocop.yml b/.rubocop.yml index ed17799478..bff2b7a32b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -308,6 +308,18 @@ Gitlab/Union: - 'spec/**/*' - 'ee/spec/**/*' +API/GrapeAPIInstance: + Enabled: true + Include: + - 'lib/**/api/**/*.rb' + - 'ee/**/api/**/*.rb' + +API/GrapeArrayMissingCoerce: + Enabled: true + Include: + - 'lib/**/api/**/*.rb' + - 'ee/**/api/**/*.rb' + Cop/SidekiqOptionsQueue: Enabled: true Exclude: @@ -316,6 +328,9 @@ Cop/SidekiqOptionsQueue: Graphql/AuthorizeTypes: Enabled: true + Include: + - 'app/graphql/types/**/*' + - 'ee/app/graphql/types/**/*' Exclude: - 'spec/**/*.rb' - 'ee/spec/**/*.rb' @@ -450,10 +465,17 @@ Rails/TimeZone: - 'spec/models/**/*' - 'ee/app/models/**/*' - 'ee/spec/models/**/*' + - 'app/workers/**/*' + - 'spec/workers/**/*' + - 'ee/app/workers/**/*' + - 'ee/spec/workers/**/*' + # WIP: See https://gitlab.com/gitlab-org/gitlab/-/issues/220040 Rails/SaveBang: Enabled: true + AllowImplicitReturn: false + AllowedReceivers: ['ActionDispatch::TestRequest'] Include: - 'spec/**/*.rb' - 'ee/spec/**/*.rb' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 9e3a54fa7e..e54d970c67 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -303,6 +303,11 @@ Performance/Detect: RSpec/ContextWording: Enabled: false +# Offense count: 626 +# Cop supports --auto-correct. +RSpec/EmptyLineAfterLetBlock: + Enabled: false + # Offense count: 1121 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -560,30 +565,6 @@ Style/GuardClause: Style/HashEachMethods: Enabled: false -# Offense count: 6 -# Cop supports --auto-correct. -Style/HashTransformKeys: - Exclude: - - 'ee/app/models/vulnerabilities/occurrence.rb' - - 'ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb' - - 'lib/banzai/filter/commit_trailers_filter.rb' - - 'lib/gitlab/analytics/cycle_analytics/stage_events.rb' - -# Offense count: 10 -# Cop supports --auto-correct. -Style/HashTransformValues: - Exclude: - - 'app/validators/addressable_url_validator.rb' - - 'config/initializers/action_dispatch_journey_formatter.rb' - - 'ee/app/helpers/compliance_management/compliance_framework/project_settings_helper.rb' - - 'ee/app/services/packages/nuget/metadata_extraction_service.rb' - - 'lib/gitlab/config/entry/configurable.rb' - - 'lib/gitlab/config/entry/node.rb' - - 'lib/gitlab/discussions_diff/file_collection.rb' - - 'lib/gitlab/error_tracking.rb' - - 'lib/rspec_flaky/flaky_examples_collection.rb' - - 'spec/lib/gitlab/database_importers/common_metrics/prometheus_metric_spec.rb' - # Offense count: 31 # Configuration parameters: AllowIfModifier. Style/IfInsideElse: @@ -639,12 +620,122 @@ Style/Next: Style/NumericLiteralPrefix: Enabled: false -# Offense count: 255 +# Offense count: 130 # Cop supports --auto-correct. # Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods. # SupportedStyles: predicate, comparison +# We use EnforcedStyle of comparison here due to it being better +# performing code as seen https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36221#note_375659681 Style/NumericPredicate: - Enabled: false + EnforcedStyle: comparison + Exclude: + - 'spec/**/*' + - 'app/views/**/*' + - 'ee/app/views/**/*' + - 'app/controllers/concerns/issuable_collections.rb' + - 'app/controllers/concerns/paginated_collection.rb' + - 'app/helpers/graph_helper.rb' + - 'app/helpers/timeboxes_helper.rb' + - 'app/models/ci/pipeline.rb' + - 'app/models/ci/stage.rb' + - 'app/models/concerns/update_project_statistics.rb' + - 'app/models/merge_request_diff.rb' + - 'app/models/milestone.rb' + - 'app/models/network/graph.rb' + - 'app/models/postgresql/replication_slot.rb' + - 'app/models/project.rb' + - 'app/models/suggestion.rb' + - 'app/models/user.rb' + - 'app/serializers/merge_request_widget_entity.rb' + - 'app/services/boards/issues/move_service.rb' + - 'app/services/cohorts_service.rb' + - 'app/services/discussions/resolve_service.rb' + - 'app/services/issues/reorder_service.rb' + - 'app/services/notes/create_service.rb' + - 'app/services/packages/nuget/metadata_extraction_service.rb' + - 'app/services/packages/nuget/search_service.rb' + - 'app/services/projects/auto_devops/disable_service.rb' + - 'app/services/projects/update_pages_service.rb' + - 'app/services/search_service.rb' + - 'app/workers/admin_email_worker.rb' + - 'app/workers/gitlab/import/advance_stage.rb' + - 'config/initializers/validate_puma.rb' + - 'ee/app/controllers/security/projects_controller.rb' + - 'ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb' + - 'ee/app/helpers/ee/timeboxes_helper.rb' + - 'ee/app/models/ci/minutes/quota.rb' + - 'ee/app/models/ee/ci/runner.rb' + - 'ee/app/models/geo_node_status.rb' + - 'ee/app/models/license.rb' + - 'ee/app/models/namespace_statistics.rb' + - 'ee/app/services/ee/issues/base_service.rb' + - 'ee/app/services/ee/merge_requests/approval_service.rb' + - 'ee/app/services/ee/quick_actions/target_service.rb' + - 'ee/app/services/elastic/indexing_control_service.rb' + - 'ee/app/services/geo/hashed_storage_migration_service.rb' + - 'ee/app/services/geo/prune_event_log_service.rb' + - 'ee/app/services/security/waf_anomaly_summary_service.rb' + - 'ee/app/services/update_build_minutes_service.rb' + - 'ee/app/workers/geo/container_repository_sync_dispatch_worker.rb' + - 'ee/app/workers/geo/file_download_dispatch_worker.rb' + - 'ee/app/workers/geo/registry_sync_worker.rb' + - 'ee/app/workers/geo/repository_shard_sync_worker.rb' + - 'ee/app/workers/geo/repository_verification/primary/shard_worker.rb' + - 'ee/lib/api/helpers/packages/conan/api_helpers.rb' + - 'ee/lib/ee/gitlab/auth/ldap/person.rb' + - 'ee/lib/ee/gitlab/background_migration/prune_orphaned_geo_events.rb' + - 'ee/lib/ee/gitlab/checks/push_rules/file_size_check.rb' + - 'ee/lib/ee/gitlab/geo_git_access.rb' + - 'ee/lib/gitlab/geo/fdw.rb' + - 'ee/lib/gitlab/geo/log_cursor/lease.rb' + - 'ee/lib/tasks/gitlab/elastic.rake' + - 'lib/api/entities/feature.rb' + - 'lib/api/helpers/pagination_strategies.rb' + - 'lib/backup/files.rb' + - 'lib/banzai/filter/gollum_tags_filter.rb' + - 'lib/bitbucket_server/paginator.rb' + - 'lib/declarative_policy/runner.rb' + - 'lib/gitlab/auth/ldap/adapter.rb' + - 'lib/gitlab/bare_repository_import/importer.rb' + - 'lib/gitlab/ci/config/external/context.rb' + - 'lib/gitlab/ci/reports/accessibility_reports_comparer.rb' + - 'lib/gitlab/cycle_analytics/summary/value.rb' + - 'lib/gitlab/cycle_analytics/summary_helper.rb' + - 'lib/gitlab/danger/teammate.rb' + - 'lib/gitlab/database.rb' + - 'lib/gitlab/database/connection_timer.rb' + - 'lib/gitlab/database/migration_helpers.rb' + - 'lib/gitlab/exclusive_lease.rb' + - 'lib/gitlab/exclusive_lease_helpers/sleeping_lock.rb' + - 'lib/gitlab/experimentation.rb' + - 'lib/gitlab/file_hook.rb' + - 'lib/gitlab/git/commit.rb' + - 'lib/gitlab/git/repository.rb' + - 'lib/gitlab/git/rugged_impl/blob.rb' + - 'lib/gitlab/gitaly_client.rb' + - 'lib/gitlab/github_import/user_finder.rb' + - 'lib/gitlab/hashed_storage/migrator.rb' + - 'lib/gitlab/import_export/command_line_util.rb' + - 'lib/gitlab/multi_collection_paginator.rb' + - 'lib/gitlab/polling_interval.rb' + - 'lib/gitlab/project_search_results.rb' + - 'lib/gitlab/seeder.rb' + - 'lib/gitlab/sidekiq_cluster.rb' + - 'lib/gitlab/sidekiq_daemon/memory_killer.rb' + - 'lib/gitlab/sidekiq_middleware/memory_killer.rb' + - 'lib/gitlab/sidekiq_status.rb' + - 'lib/gitlab/slash_commands/presenters/issue_show.rb' + - 'lib/gitlab/task_helpers.rb' + - 'lib/gitlab/untrusted_regexp.rb' + - 'lib/gitlab/utils.rb' + - 'lib/system_check/sidekiq_check.rb' + - 'lib/tasks/gitlab/gitaly.rake' + - 'lib/tasks/gitlab/snippets.rake' + - 'lib/tasks/gitlab/workhorse.rake' + - 'qa/qa/git/repository.rb' + - 'qa/qa/support/wait_for_requests.rb' + - 'ee/app/models/ee/project.rb' + - 'lib/gitlab/usage_data/topology.rb' # Offense count: 117 # Cop supports --auto-correct. @@ -690,18 +781,6 @@ Style/RedundantFreeze: Style/RedundantInterpolation: Enabled: false -# Offense count: 6 -# Cop supports --auto-correct. -Style/RedundantParentheses: - Exclude: - - 'ee/app/models/ee/merge_request.rb' - -# Offense count: 33 -# Cop supports --auto-correct. -# Configuration parameters: AllowMultipleReturnValues. -Style/RedundantReturn: - Enabled: false - # Offense count: 801 # Cop supports --auto-correct. Style/RedundantSelf: @@ -711,8 +790,8 @@ Style/RedundantSelf: # Cop supports --auto-correct. Style/RedundantSort: Exclude: - - 'ee/app/presenters/packages/nuget/search_results_presenter.rb' - - 'ee/spec/presenters/packages/nuget/search_results_presenter_spec.rb' + - 'app/presenters/packages/nuget/search_results_presenter.rb' + - 'spec/presenters/packages/nuget/search_results_presenter_spec.rb' # Offense count: 120 # Cop supports --auto-correct. @@ -769,25 +848,20 @@ Style/StringLiteralsInInterpolation: Style/SymbolProc: Enabled: false -# Offense count: 1478 +# Offense count: 2362 # Cop supports --auto-correct. # Configuration parameters: AllowImplicitReturn, AllowedReceivers. Rails/SaveBang: Exclude: - - 'ee/spec/controllers/groups/epic_issues_controller_spec.rb' - - 'ee/spec/controllers/groups/epic_links_controller_spec.rb' - - 'ee/spec/controllers/groups/epics_controller_spec.rb' - - 'ee/spec/controllers/groups/roadmap_controller_spec.rb' - - 'ee/spec/controllers/projects/environments_controller_spec.rb' - - 'ee/spec/controllers/projects/issues_controller_spec.rb' - - 'ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb' - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb' - - 'ee/spec/controllers/projects/service_desk_controller_spec.rb' - - 'ee/spec/controllers/projects/subscriptions_controller_spec.rb' - - 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb' - 'ee/spec/controllers/subscriptions_controller_spec.rb' + - 'ee/spec/factories/ci/job_artifacts.rb' + - 'ee/spec/factories/epics.rb' + - 'ee/spec/factories/licenses.rb' - 'ee/spec/factories/merge_requests.rb' + - 'ee/spec/features/admin/admin_users_spec.rb' - 'ee/spec/features/admin/geo/admin_geo_nodes_spec.rb' + - 'ee/spec/features/admin/licenses/admin_views_license_spec.rb' - 'ee/spec/features/boards/scoped_issue_board_spec.rb' - 'ee/spec/features/ci_shared_runner_warnings_spec.rb' - 'ee/spec/features/dashboards/operations_spec.rb' @@ -796,13 +870,19 @@ Rails/SaveBang: - 'ee/spec/features/merge_requests/user_views_all_merge_requests_spec.rb' - 'ee/spec/features/projects/members/invite_group_and_members_spec.rb' - 'ee/spec/features/projects/merge_requests/user_approves_merge_request_spec.rb' + - 'ee/spec/features/projects/mirror_spec.rb' - 'ee/spec/features/projects/new_project_spec.rb' - 'ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb' - 'ee/spec/features/projects/settings/user_manages_members_spec.rb' - 'ee/spec/features/search/elastic/global_search_spec.rb' + - 'ee/spec/features/security/project/internal_access_spec.rb' + - 'ee/spec/features/security/project/public_access_spec.rb' - 'ee/spec/finders/epics_finder_spec.rb' + - 'ee/spec/finders/security/vulnerabilities_finder_spec.rb' - 'ee/spec/frontend/fixtures/analytics.rb' + - 'ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb' - 'ee/spec/helpers/application_helper_spec.rb' + - 'ee/spec/helpers/ee/dashboard_helper_spec.rb' - 'ee/spec/helpers/ee/issues_helper_spec.rb' - 'ee/spec/initializers/fog_google_https_private_urls_spec.rb' - 'ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb' @@ -811,60 +891,84 @@ Rails/SaveBang: - 'ee/spec/lib/ee/gitlab/background_migration/move_epic_issues_after_epics_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/populate_any_approval_rule_for_merge_requests_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/populate_any_approval_rule_for_projects_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/prune_orphaned_geo_events_spec.rb' - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb' - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb' - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb' - 'ee/spec/lib/gitlab/auth/o_auth/user_spec.rb' - 'ee/spec/lib/gitlab/auth/saml/user_spec.rb' + - 'ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb' - 'ee/spec/lib/gitlab/elastic/search_results_spec.rb' - 'ee/spec/lib/gitlab/email/handler/ee/service_desk_handler_spec.rb' + - 'ee/spec/lib/gitlab/geo/cron_manager_spec.rb' - 'ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb' - 'ee/spec/lib/gitlab/geo/oauth/session_spec.rb' - 'ee/spec/lib/gitlab/geo_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb' + - 'ee/spec/lib/gitlab/import_export/group/relation_factory_spec.rb' + - 'ee/spec/lib/gitlab/mirror_spec.rb' - 'ee/spec/mailers/notify_spec.rb' + - 'ee/spec/migrations/fix_any_approver_rule_for_projects_spec.rb' - 'ee/spec/migrations/geo/migrate_ci_job_artifacts_to_separate_registry_spec.rb' - 'ee/spec/migrations/geo/migrate_lfs_objects_to_separate_registry_spec.rb' + - 'ee/spec/migrations/schedule_merge_request_any_approval_rule_migration_spec.rb' - 'ee/spec/migrations/schedule_project_any_approval_rule_migration_spec.rb' - 'ee/spec/models/application_setting_spec.rb' - 'ee/spec/models/approval_merge_request_rule_spec.rb' + - 'ee/spec/models/approval_project_rule_spec.rb' - 'ee/spec/models/approval_state_spec.rb' - 'ee/spec/models/burndown_spec.rb' - 'ee/spec/models/ci/build_spec.rb' - 'ee/spec/models/ci/pipeline_spec.rb' - 'ee/spec/models/ci/subscriptions/project_spec.rb' + - 'ee/spec/models/concerns/approver_migrate_hook_spec.rb' - 'ee/spec/models/concerns/deprecated_approvals_before_merge_spec.rb' - 'ee/spec/models/concerns/elastic/note_spec.rb' + - 'ee/spec/models/ee/appearance_spec.rb' + - 'ee/spec/models/ee/ci/job_artifact_spec.rb' - 'ee/spec/models/ee/protected_branch_spec.rb' - 'ee/spec/models/ee/protected_ref_access_spec.rb' - 'ee/spec/models/ee/protected_ref_spec.rb' + - 'ee/spec/models/elasticsearch_indexed_namespace_spec.rb' + - 'ee/spec/models/environment_spec.rb' - 'ee/spec/models/epic_spec.rb' - 'ee/spec/models/geo/project_registry_spec.rb' - 'ee/spec/models/geo_node_spec.rb' - 'ee/spec/models/geo_node_status_spec.rb' + - 'ee/spec/models/gitlab_subscription_spec.rb' - 'ee/spec/models/group_spec.rb' - 'ee/spec/models/issue_spec.rb' - 'ee/spec/models/label_note_spec.rb' + - 'ee/spec/models/lfs_object_spec.rb' - 'ee/spec/models/license_spec.rb' - 'ee/spec/models/merge_request_spec.rb' + - 'ee/spec/models/merge_train_spec.rb' - 'ee/spec/models/operations/feature_flag_scope_spec.rb' - 'ee/spec/models/operations/feature_flag_spec.rb' - 'ee/spec/models/operations/feature_flags/strategy_spec.rb' - 'ee/spec/models/operations/feature_flags/user_list_spec.rb' + - 'spec/models/packages/package_spec.rb' + - 'ee/spec/models/project_ci_cd_setting_spec.rb' - 'ee/spec/models/project_services/github_service_spec.rb' - 'ee/spec/models/project_services/jenkins_service_spec.rb' - 'ee/spec/models/project_spec.rb' + - 'ee/spec/models/protected_environment_spec.rb' + - 'ee/spec/models/repository_spec.rb' - 'ee/spec/models/scim_identity_spec.rb' - 'ee/spec/models/scim_oauth_access_token_spec.rb' + - 'ee/spec/models/upload_spec.rb' - 'ee/spec/models/user_preference_spec.rb' - 'ee/spec/models/user_spec.rb' - 'ee/spec/models/visible_approvable_spec.rb' - 'ee/spec/models/vulnerabilities/feedback_spec.rb' - 'ee/spec/models/vulnerabilities/issue_link_spec.rb' + - 'ee/spec/policies/group_policy_spec.rb' + - 'ee/spec/policies/note_policy_spec.rb' + - 'ee/spec/policies/project_policy_spec.rb' - 'ee/spec/policies/protected_branch_policy_spec.rb' + - 'ee/spec/policies/vulnerabilities/feedback_policy_spec.rb' - 'ee/spec/presenters/audit_event_presenter_spec.rb' - 'ee/spec/presenters/epic_presenter_spec.rb' - - 'ee/spec/presenters/packages/conan/package_presenter_spec.rb' - 'ee/spec/requests/api/boards_spec.rb' - 'ee/spec/requests/api/epic_issues_spec.rb' - 'ee/spec/requests/api/epic_links_spec.rb' @@ -876,7 +980,6 @@ Rails/SaveBang: - 'ee/spec/requests/api/groups_spec.rb' - 'ee/spec/requests/api/issues_spec.rb' - 'ee/spec/requests/api/ldap_group_links_spec.rb' - - 'ee/spec/requests/api/maven_packages_spec.rb' - 'ee/spec/requests/api/merge_request_approval_rules_spec.rb' - 'ee/spec/requests/api/merge_request_approvals_spec.rb' - 'ee/spec/requests/api/merge_requests_spec.rb' @@ -885,9 +988,15 @@ Rails/SaveBang: - 'ee/spec/requests/api/protected_branches_spec.rb' - 'ee/spec/requests/api/scim_spec.rb' - 'ee/spec/requests/api/todos_spec.rb' + - 'ee/spec/requests/lfs_http_spec.rb' - 'ee/spec/services/approval_rules/finalize_service_spec.rb' + - 'ee/spec/services/approval_rules/update_service_spec.rb' + - 'ee/spec/services/ci/minutes/email_notification_service_spec.rb' + - 'ee/spec/services/ci/process_build_service_spec.rb' - 'ee/spec/services/ci/register_job_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/lists/list_service_spec.rb' - 'ee/spec/services/ee/issuable/clone/attributes_rewriter_spec.rb' - 'ee/spec/services/ee/issuable/common_system_notes_service_spec.rb' - 'ee/spec/services/ee/issues/update_service_spec.rb' @@ -896,13 +1005,15 @@ Rails/SaveBang: - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb' - 'ee/spec/services/ee/notification_service_spec.rb' - 'ee/spec/services/ee/resource_events/change_weight_service_spec.rb' - - 'ee/spec/services/elastic/index_record_service_spec.rb' - 'ee/spec/services/epic_links/create_service_spec.rb' + - 'ee/spec/services/epics/close_service_spec.rb' - 'ee/spec/services/epics/issue_promote_service_spec.rb' + - 'ee/spec/services/epics/reopen_service_spec.rb' - 'ee/spec/services/epics/tree_reorder_service_spec.rb' - 'ee/spec/services/epics/update_dates_service_spec.rb' - 'ee/spec/services/epics/update_service_spec.rb' - 'ee/spec/services/geo/blob_verification_secondary_service_spec.rb' + - 'ee/spec/services/geo/files_expire_service_spec.rb' - 'ee/spec/services/geo/metrics_update_service_spec.rb' - 'ee/spec/services/geo/registry_consistency_service_spec.rb' - 'ee/spec/services/geo/repository_verification_secondary_service_spec.rb' @@ -911,8 +1022,11 @@ Rails/SaveBang: - 'ee/spec/services/lfs/unlock_file_service_spec.rb' - 'ee/spec/services/merge_requests/approval_service_spec.rb' - 'ee/spec/services/merge_requests/remove_approval_service_spec.rb' + - 'ee/spec/services/merge_requests/update_blocks_service_spec.rb' - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb' - 'ee/spec/services/projects/after_rename_service_spec.rb' + - 'ee/spec/services/projects/import_export/export_service_spec.rb' + - 'ee/spec/services/projects/update_mirror_service_spec.rb' - 'ee/spec/services/projects/update_service_spec.rb' - 'ee/spec/services/quick_actions/interpret_service_spec.rb' - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb' @@ -920,50 +1034,92 @@ Rails/SaveBang: - 'ee/spec/services/status_page/trigger_publish_service_spec.rb' - 'ee/spec/services/todo_service_spec.rb' - 'ee/spec/services/update_build_minutes_service_spec.rb' + - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb' + - 'ee/spec/support/helpers/ee/geo_helpers.rb' + - 'ee/spec/support/protected_tags/access_control_shared_examples.rb' + - 'ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb' + - 'ee/spec/support/shared_examples/finders/geo/framework_registry_finder_shared_examples.rb' + - 'ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb' - 'ee/spec/support/shared_examples/lib/analytics/common_merge_request_metrics_refresh_shared_examples.rb' - 'ee/spec/support/shared_examples/models/concerns/replicator_shared_examples.rb' + - 'ee/spec/support/shared_examples/models/elasticsearch_indexed_container_shared_examples.rb' + - 'ee/spec/support/shared_examples/models/geo_framework_registry_shared_examples.rb' - 'ee/spec/support/shared_examples/models/member_shared_examples.rb' - 'ee/spec/support/shared_examples/models/mentionable_shared_examples.rb' - 'ee/spec/support/shared_examples/policies/protected_environments_shared_examples.rb' + - 'ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb' - 'ee/spec/support/shared_examples/requests/api/project_approval_rules_api_shared_examples.rb' + - 'ee/spec/support/shared_examples/services/build_execute_shared_examples.rb' - 'ee/spec/support/shared_examples/services/issue_epic_shared_examples.rb' - 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb' - 'ee/spec/workers/adjourned_project_deletion_worker_spec.rb' + - 'ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb' - 'ee/spec/workers/create_github_webhook_worker_spec.rb' - - 'ee/spec/workers/elastic_indexer_worker_spec.rb' + - 'ee/spec/workers/elastic_namespace_rollout_worker_spec.rb' - 'ee/spec/workers/geo/container_repository_sync_dispatch_worker_spec.rb' - 'ee/spec/workers/geo/file_download_dispatch_worker_spec.rb' + - 'ee/spec/workers/geo/prune_event_log_worker_spec.rb' + - 'ee/spec/workers/geo/registry_sync_worker_spec.rb' - 'ee/spec/workers/geo/repository_shard_sync_worker_spec.rb' - 'ee/spec/workers/repository_import_worker_spec.rb' - 'ee/spec/workers/update_all_mirrors_worker_spec.rb' - 'qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb' - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb' + - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb' - 'spec/controllers/abuse_reports_controller_spec.rb' - 'spec/controllers/admin/impersonations_controller_spec.rb' - 'spec/controllers/admin/runners_controller_spec.rb' + - 'spec/controllers/admin/services_controller_spec.rb' - 'spec/controllers/boards/issues_controller_spec.rb' + - 'spec/controllers/groups/milestones_controller_spec.rb' - 'spec/controllers/groups/runners_controller_spec.rb' + - 'spec/controllers/groups/uploads_controller_spec.rb' + - 'spec/controllers/groups_controller_spec.rb' - 'spec/controllers/oauth/authorizations_controller_spec.rb' - 'spec/controllers/omniauth_callbacks_controller_spec.rb' - 'spec/controllers/profiles/emails_controller_spec.rb' - 'spec/controllers/profiles/notifications_controller_spec.rb' - 'spec/controllers/projects/artifacts_controller_spec.rb' + - 'spec/controllers/projects/cycle_analytics/events_controller_spec.rb' - 'spec/controllers/projects/cycle_analytics_controller_spec.rb' + - 'spec/controllers/projects/discussions_controller_spec.rb' + - 'spec/controllers/projects/forks_controller_spec.rb' + - 'spec/controllers/projects/group_links_controller_spec.rb' + - 'spec/controllers/projects/imports_controller_spec.rb' - 'spec/controllers/projects/issues_controller_spec.rb' - 'spec/controllers/projects/labels_controller_spec.rb' - 'spec/controllers/projects/merge_requests_controller_spec.rb' - 'spec/controllers/projects/milestones_controller_spec.rb' - 'spec/controllers/projects/notes_controller_spec.rb' - 'spec/controllers/projects/pipelines_controller_spec.rb' + - 'spec/controllers/projects/releases/evidences_controller_spec.rb' - 'spec/controllers/projects/runners_controller_spec.rb' + - 'spec/controllers/projects/starrers_controller_spec.rb' + - 'spec/controllers/projects/uploads_controller_spec.rb' - 'spec/controllers/projects_controller_spec.rb' + - 'spec/controllers/sent_notifications_controller_spec.rb' + - 'spec/controllers/sessions_controller_spec.rb' + - 'spec/controllers/users_controller_spec.rb' + - 'spec/factories/alert_management/alerts.rb' + - 'spec/factories/boards.rb' - 'spec/factories/ci/pipelines.rb' - 'spec/factories/design_management/designs.rb' - 'spec/factories/design_management/versions.rb' + - 'spec/factories/emails.rb' + - 'spec/factories/issues.rb' - 'spec/factories/labels.rb' + - 'spec/factories/merge_requests.rb' + - 'spec/factories/plans.rb' - 'spec/factories/projects.rb' + - 'spec/factories/services.rb' + - 'spec/factories/wiki_pages.rb' + - 'spec/factories_spec.rb' + - 'spec/features/admin/admin_appearance_spec.rb' + - 'spec/features/admin/admin_labels_spec.rb' - 'spec/features/admin/admin_mode/login_spec.rb' - 'spec/features/admin/admin_runners_spec.rb' + - 'spec/features/admin/admin_sees_project_statistics_spec.rb' + - 'spec/features/admin/admin_sees_projects_statistics_spec.rb' - 'spec/features/admin/admin_users_impersonation_tokens_spec.rb' - 'spec/features/admin/admin_users_spec.rb' - 'spec/features/boards/sidebar_spec.rb' @@ -975,6 +1131,7 @@ Rails/SaveBang: - 'spec/features/dashboard/projects_spec.rb' - 'spec/features/error_tracking/user_sees_error_index_spec.rb' - 'spec/features/groups/members/request_access_spec.rb' + - 'spec/features/issuables/close_reopen_report_toggle_spec.rb' - 'spec/features/issues/bulk_assignment_labels_spec.rb' - 'spec/features/issues/gfm_autocomplete_spec.rb' - 'spec/features/issues/issue_sidebar_spec.rb' @@ -989,30 +1146,45 @@ Rails/SaveBang: - 'spec/features/merge_request/user_posts_diff_notes_spec.rb' - 'spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb' - 'spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb' + - 'spec/features/merge_request/user_sees_discussions_spec.rb' - 'spec/features/merge_request/user_sees_merge_widget_spec.rb' + - 'spec/features/merge_request/user_sees_versions_spec.rb' - 'spec/features/merge_requests/user_mass_updates_spec.rb' - 'spec/features/profiles/emails_spec.rb' - 'spec/features/profiles/password_spec.rb' - 'spec/features/profiles/personal_access_tokens_spec.rb' - 'spec/features/projects/features_visibility_spec.rb' + - 'spec/features/projects/fork_spec.rb' + - 'spec/features/projects/jobs/permissions_spec.rb' - 'spec/features/projects/jobs_spec.rb' - 'spec/features/projects/members/user_requests_access_spec.rb' - 'spec/features/projects/pages_lets_encrypt_spec.rb' - 'spec/features/projects/pages_spec.rb' + - 'spec/features/projects/pipelines/pipeline_spec.rb' + - 'spec/features/projects/pipelines/pipelines_spec.rb' - 'spec/features/projects/remote_mirror_spec.rb' - 'spec/features/projects/services/user_activates_slack_notifications_spec.rb' - 'spec/features/projects/settings/access_tokens_spec.rb' - 'spec/features/projects/show/user_sees_deletion_failure_message_spec.rb' - 'spec/features/projects/user_sees_sidebar_spec.rb' - 'spec/features/projects/wiki/user_updates_wiki_page_spec.rb' + - 'spec/features/projects/wiki/user_views_wiki_page_spec.rb' - 'spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb' + - 'spec/features/runners_spec.rb' + - 'spec/features/security/project/internal_access_spec.rb' - 'spec/features/security/project/private_access_spec.rb' + - 'spec/features/security/project/public_access_spec.rb' - 'spec/features/users/login_spec.rb' - 'spec/features/users/show_spec.rb' + - 'spec/finders/admin/projects_finder_spec.rb' - 'spec/finders/autocomplete/move_to_project_finder_spec.rb' + - 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb' - 'spec/finders/group_descendants_finder_spec.rb' + - 'spec/finders/group_projects_finder_spec.rb' - 'spec/finders/issues_finder_spec.rb' + - 'spec/finders/joined_groups_finder_spec.rb' - 'spec/finders/merge_requests_finder_spec.rb' + - 'spec/finders/personal_projects_finder_spec.rb' - 'spec/finders/projects_finder_spec.rb' - 'spec/finders/uploader_finder_spec.rb' - 'spec/frontend/fixtures/issues.rb' @@ -1021,6 +1193,11 @@ Rails/SaveBang: - 'spec/graphql/mutations/merge_requests/set_wip_spec.rb' - 'spec/graphql/resolvers/boards_resolver_spec.rb' - 'spec/helpers/appearances_helper_spec.rb' + - 'spec/helpers/auto_devops_helper_spec.rb' + - 'spec/helpers/issuables_helper_spec.rb' + - 'spec/helpers/issues_helper_spec.rb' + - 'spec/helpers/members_helper_spec.rb' + - 'spec/helpers/notes_helper_spec.rb' - 'spec/helpers/profiles_helper_spec.rb' - 'spec/helpers/projects/alert_management_helper_spec.rb' - 'spec/helpers/projects_helper_spec.rb' @@ -1030,18 +1207,23 @@ Rails/SaveBang: - 'spec/lib/after_commit_queue_spec.rb' - 'spec/lib/backup/manager_spec.rb' - 'spec/lib/banzai/reference_parser/external_issue_parser_spec.rb' + - 'spec/lib/banzai/reference_redactor_spec.rb' + - 'spec/lib/gitlab/alerting/alert_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb' - 'spec/lib/gitlab/auth/ldap/user_spec.rb' - 'spec/lib/gitlab/auth/o_auth/user_spec.rb' - 'spec/lib/gitlab/auth/saml/user_spec.rb' - 'spec/lib/gitlab/auth_spec.rb' + - 'spec/lib/gitlab/authorized_keys_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_deployment_clusters_from_deployments_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_project_repositories_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb' - 'spec/lib/gitlab/background_migration/digest_column_spec.rb' - 'spec/lib/gitlab/background_migration/encrypt_columns_spec.rb' - 'spec/lib/gitlab/background_migration/fix_cross_project_label_links_spec.rb' + - 'spec/lib/gitlab/background_migration/fix_projects_without_project_feature_spec.rb' - 'spec/lib/gitlab/background_migration/fix_projects_without_prometheus_service_spec.rb' - 'spec/lib/gitlab/background_migration/fix_user_namespace_names_spec.rb' - 'spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb' @@ -1056,82 +1238,130 @@ Rails/SaveBang: - 'spec/lib/gitlab/background_migration/populate_user_highest_roles_table_spec.rb' - 'spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb' - 'spec/lib/gitlab/background_migration/remove_restricted_todos_spec.rb' + - 'spec/lib/gitlab/background_migration/reset_merge_status_spec.rb' - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_services_spec.rb' - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_webhooks_spec.rb' - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb' - 'spec/lib/gitlab/ci/ansi2json/style_spec.rb' + - 'spec/lib/gitlab/ci/status/build/common_spec.rb' - 'spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb' - 'spec/lib/gitlab/cycle_analytics/events_spec.rb' - 'spec/lib/gitlab/database/custom_structure_spec.rb' - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb' - 'spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb' + - 'spec/lib/gitlab/email/handler/create_note_handler_spec.rb' + - 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb' + - 'spec/lib/gitlab/gfm/reference_rewriter_spec.rb' + - 'spec/lib/gitlab/git/object_pool_spec.rb' - 'spec/lib/gitlab/git/remote_mirror_spec.rb' + - 'spec/lib/gitlab/git/repository_spec.rb' - 'spec/lib/gitlab/git_access_spec.rb' + - 'spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb' - 'spec/lib/gitlab/gitaly_client/repository_service_spec.rb' - 'spec/lib/gitlab/import_export/avatar_saver_spec.rb' + - 'spec/lib/gitlab/import_export/base/relation_factory_spec.rb' - 'spec/lib/gitlab/import_export/design_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb' - 'spec/lib/gitlab/import_export/fork_spec.rb' - 'spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb' + - 'spec/lib/gitlab/import_export/group/relation_factory_spec.rb' + - 'spec/lib/gitlab/import_export/group/tree_saver_spec.rb' - 'spec/lib/gitlab/import_export/importer_spec.rb' - 'spec/lib/gitlab/import_export/lfs_restorer_spec.rb' - 'spec/lib/gitlab/import_export/lfs_saver_spec.rb' - 'spec/lib/gitlab/import_export/members_mapper_spec.rb' + - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb' - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb' - 'spec/lib/gitlab/import_export/repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/saver_spec.rb' + - 'spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb' - 'spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb' - 'spec/lib/gitlab/import_export/uploads_manager_spec.rb' - 'spec/lib/gitlab/import_export/uploads_saver_spec.rb' - 'spec/lib/gitlab/import_export/wiki_restorer_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/importer_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb' - 'spec/lib/gitlab/lets_encrypt/client_spec.rb' - 'spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb' - 'spec/lib/gitlab/markdown_cache/redis/store_spec.rb' + - 'spec/lib/gitlab/middleware/go_spec.rb' - 'spec/lib/gitlab/shard_health_cache_spec.rb' + - 'spec/lib/mattermost/command_spec.rb' + - 'spec/lib/mattermost/session_spec.rb' + - 'spec/lib/mattermost/team_spec.rb' - 'spec/mailers/notify_spec.rb' + - 'spec/migrations/20190924152703_migrate_issue_trackers_data_spec.rb' - 'spec/migrations/20200122123016_backfill_project_settings_spec.rb' - 'spec/migrations/20200123155929_remove_invalid_jira_data_spec.rb' - 'spec/migrations/20200127090233_remove_invalid_issue_tracker_data_spec.rb' + - 'spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb' + - 'spec/migrations/20200313203550_remove_orphaned_chat_names_spec.rb' - 'spec/migrations/20200406102120_backfill_deployment_clusters_from_deployments_spec.rb' + - 'spec/migrations/20200526115436_dedup_mr_metrics_spec.rb' + - 'spec/migrations/add_deploy_token_type_to_deploy_tokens_spec.rb' + - 'spec/migrations/add_incident_settings_to_all_existing_projects_spec.rb' - 'spec/migrations/add_unique_constraint_to_approvals_user_id_and_merge_request_id_spec.rb' - 'spec/migrations/backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table_spec.rb' + - 'spec/migrations/backfill_imported_snippet_repositories_spec.rb' - 'spec/migrations/backfill_releases_table_updated_at_and_add_not_null_constraints_to_timestamps_spec.rb' + - 'spec/migrations/backfill_snippet_repositories_spec.rb' - 'spec/migrations/encrypt_plaintext_attributes_on_application_settings_spec.rb' + - 'spec/migrations/enqueue_reset_merge_status_second_run_spec.rb' + - 'spec/migrations/enqueue_reset_merge_status_spec.rb' - 'spec/migrations/fill_file_store_lfs_objects_spec.rb' - 'spec/migrations/fill_store_uploads_spec.rb' - 'spec/migrations/fix_null_type_labels_spec.rb' - 'spec/migrations/fix_pool_repository_source_project_id_spec.rb' + - 'spec/migrations/fix_projects_without_project_feature_spec.rb' + - 'spec/migrations/fix_projects_without_prometheus_services_spec.rb' - 'spec/migrations/fix_wrong_pages_access_level_spec.rb' - 'spec/migrations/insert_project_hooks_plan_limits_spec.rb' - 'spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb' + - 'spec/migrations/move_limits_from_plans_spec.rb' + - 'spec/migrations/populate_project_statistics_packages_size_spec.rb' - 'spec/migrations/schedule_link_lfs_objects_projects_spec.rb' + - 'spec/migrations/schedule_populate_merge_request_assignees_table_spec.rb' + - 'spec/migrations/seed_repository_storages_weighted_spec.rb' - 'spec/models/appearance_spec.rb' + - 'spec/models/application_record_spec.rb' - 'spec/models/application_setting_spec.rb' + - 'spec/models/ci/build_metadata_spec.rb' - 'spec/models/ci/build_spec.rb' + - 'spec/models/ci/build_trace_chunk_spec.rb' - 'spec/models/ci/instance_variable_spec.rb' + - 'spec/models/ci/legacy_stage_spec.rb' + - 'spec/models/ci/persistent_ref_spec.rb' - 'spec/models/ci/pipeline_spec.rb' - 'spec/models/ci/runner_spec.rb' - 'spec/models/clusters/applications/helm_spec.rb' + - 'spec/models/commit_spec.rb' + - 'spec/models/commit_status_spec.rb' - 'spec/models/concerns/avatarable_spec.rb' - 'spec/models/concerns/bulk_insertable_associations_spec.rb' - 'spec/models/concerns/cache_markdown_field_spec.rb' + - 'spec/models/concerns/case_sensitivity_spec.rb' - 'spec/models/concerns/featurable_spec.rb' - 'spec/models/concerns/issuable_spec.rb' - 'spec/models/concerns/mentionable_spec.rb' - 'spec/models/concerns/milestoneable_spec.rb' + - 'spec/models/concerns/milestoneish_spec.rb' - 'spec/models/concerns/routable_spec.rb' - 'spec/models/concerns/subscribable_spec.rb' - 'spec/models/concerns/token_authenticatable_spec.rb' - 'spec/models/container_repository_spec.rb' - 'spec/models/cycle_analytics/issue_spec.rb' - 'spec/models/cycle_analytics/plan_spec.rb' + - 'spec/models/cycle_analytics/production_spec.rb' - 'spec/models/deploy_keys_project_spec.rb' - 'spec/models/deploy_token_spec.rb' - 'spec/models/deployment_spec.rb' - 'spec/models/design_management/version_spec.rb' + - 'spec/models/diff_discussion_spec.rb' - 'spec/models/diff_note_spec.rb' - 'spec/models/email_spec.rb' - 'spec/models/environment_spec.rb' @@ -1143,7 +1373,9 @@ Rails/SaveBang: - 'spec/models/hooks/system_hook_spec.rb' - 'spec/models/hooks/web_hook_spec.rb' - 'spec/models/identity_spec.rb' + - 'spec/models/issue/metrics_spec.rb' - 'spec/models/issue_spec.rb' + - 'spec/models/jira_import_state_spec.rb' - 'spec/models/key_spec.rb' - 'spec/models/lfs_objects_project_spec.rb' - 'spec/models/member_spec.rb' @@ -1155,12 +1387,18 @@ Rails/SaveBang: - 'spec/models/note_spec.rb' - 'spec/models/notification_setting_spec.rb' - 'spec/models/pages_domain_spec.rb' + - 'spec/models/project_auto_devops_spec.rb' + - 'spec/models/project_feature_spec.rb' - 'spec/models/project_services/bamboo_service_spec.rb' + - 'spec/models/project_services/buildkite_service_spec.rb' - 'spec/models/project_services/jira_service_spec.rb' + - 'spec/models/project_services/packagist_service_spec.rb' - 'spec/models/project_services/pipelines_email_service_spec.rb' - 'spec/models/project_services/teamcity_service_spec.rb' - 'spec/models/project_spec.rb' - 'spec/models/project_team_spec.rb' + - 'spec/models/protectable_dropdown_spec.rb' + - 'spec/models/redirect_route_spec.rb' - 'spec/models/release_spec.rb' - 'spec/models/remote_mirror_spec.rb' - 'spec/models/resource_milestone_event_spec.rb' @@ -1171,47 +1409,77 @@ Rails/SaveBang: - 'spec/models/upload_spec.rb' - 'spec/models/user_preference_spec.rb' - 'spec/models/user_spec.rb' + - 'spec/models/user_status_spec.rb' - 'spec/models/wiki_page/meta_spec.rb' - 'spec/models/wiki_page_spec.rb' - 'spec/policies/ci/build_policy_spec.rb' - 'spec/policies/ci/pipeline_policy_spec.rb' - 'spec/policies/ci/pipeline_schedule_policy_spec.rb' + - 'spec/policies/group_policy_spec.rb' + - 'spec/policies/issue_policy_spec.rb' - 'spec/policies/merge_request_policy_spec.rb' - 'spec/policies/project_policy_spec.rb' + - 'spec/presenters/ci/build_runner_presenter_spec.rb' + - 'spec/presenters/ci/trigger_presenter_spec.rb' + - 'spec/presenters/packages/conan/package_presenter_spec.rb' + - 'spec/requests/api/access_requests_spec.rb' - 'spec/requests/api/boards_spec.rb' + - 'spec/requests/api/branches_spec.rb' + - 'spec/requests/api/ci/runner_spec.rb' + - 'spec/requests/api/commit_statuses_spec.rb' + - 'spec/requests/api/conan_packages_spec.rb' - 'spec/requests/api/deployments_spec.rb' - 'spec/requests/api/environments_spec.rb' + - 'spec/requests/api/go_proxy_spec.rb' - 'spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb' - 'spec/requests/api/graphql/user_query_spec.rb' - 'spec/requests/api/graphql_spec.rb' + - 'spec/requests/api/group_import_spec.rb' - 'spec/requests/api/group_milestones_spec.rb' - 'spec/requests/api/internal/base_spec.rb' - 'spec/requests/api/issues/get_group_issues_spec.rb' + - 'spec/requests/api/issues/post_projects_issues_spec.rb' - 'spec/requests/api/jobs_spec.rb' - 'spec/requests/api/labels_spec.rb' + - 'spec/requests/api/maven_packages_spec.rb' - 'spec/requests/api/members_spec.rb' - 'spec/requests/api/merge_request_diffs_spec.rb' - 'spec/requests/api/merge_requests_spec.rb' + - 'spec/requests/api/notes_spec.rb' + - 'spec/requests/api/pages/internal_access_spec.rb' + - 'spec/requests/api/pages/private_access_spec.rb' + - 'spec/requests/api/pages/public_access_spec.rb' - 'spec/requests/api/pipeline_schedules_spec.rb' - 'spec/requests/api/project_import_spec.rb' + - 'spec/requests/api/project_milestones_spec.rb' - 'spec/requests/api/projects_spec.rb' - - 'spec/requests/api/runners_spec.rb' - 'spec/requests/api/snippets_spec.rb' - 'spec/requests/git_http_spec.rb' + - 'spec/requests/lfs_http_spec.rb' - 'spec/requests/profiles/notifications_controller_spec.rb' - 'spec/requests/projects/cycle_analytics_events_spec.rb' - 'spec/serializers/environment_status_entity_spec.rb' + - 'spec/serializers/issue_entity_spec.rb' + - 'spec/serializers/job_entity_spec.rb' - 'spec/serializers/merge_request_poll_widget_entity_spec.rb' - 'spec/serializers/merge_request_widget_entity_spec.rb' + - 'spec/services/auth/container_registry_authentication_service_spec.rb' + - 'spec/services/auto_merge/base_service_spec.rb' + - 'spec/services/auto_merge_service_spec.rb' + - 'spec/services/ci/create_cross_project_pipeline_service_spec.rb' - 'spec/services/ci/create_pipeline_service_spec.rb' - 'spec/services/ci/register_job_service_spec.rb' - 'spec/services/ci/retry_build_service_spec.rb' + - 'spec/services/ci/update_runner_service_spec.rb' + - 'spec/services/clusters/update_service_spec.rb' - 'spec/services/deployments/after_create_service_spec.rb' - 'spec/services/design_management/generate_image_versions_service_spec.rb' + - 'spec/services/discussions/resolve_service_spec.rb' - 'spec/services/draft_notes/destroy_service_spec.rb' - 'spec/services/emails/confirm_service_spec.rb' - 'spec/services/groups/destroy_service_spec.rb' - 'spec/services/groups/import_export/import_service_spec.rb' + - 'spec/services/issuable/bulk_update_service_spec.rb' - 'spec/services/issuable/clone/attributes_rewriter_spec.rb' - 'spec/services/issuable/common_system_notes_service_spec.rb' - 'spec/services/issues/close_service_spec.rb' @@ -1221,6 +1489,7 @@ Rails/SaveBang: - 'spec/services/issues/update_service_spec.rb' - 'spec/services/labels/promote_service_spec.rb' - 'spec/services/members/destroy_service_spec.rb' + - 'spec/services/merge_requests/build_service_spec.rb' - 'spec/services/merge_requests/conflicts/list_service_spec.rb' - 'spec/services/merge_requests/create_service_spec.rb' - 'spec/services/merge_requests/merge_service_spec.rb' @@ -1230,11 +1499,16 @@ Rails/SaveBang: - 'spec/services/milestones/destroy_service_spec.rb' - 'spec/services/milestones/promote_service_spec.rb' - 'spec/services/milestones/transfer_service_spec.rb' + - 'spec/services/notes/create_service_spec.rb' - 'spec/services/notification_recipients/build_service_spec.rb' - 'spec/services/notification_service_spec.rb' + - 'spec/services/packages/conan/create_package_file_service_spec.rb' - 'spec/services/projects/after_rename_service_spec.rb' + - 'spec/services/projects/autocomplete_service_spec.rb' - 'spec/services/projects/create_service_spec.rb' + - 'spec/services/projects/destroy_service_spec.rb' - 'spec/services/projects/fork_service_spec.rb' + - 'spec/services/projects/hashed_storage/base_attachment_service_spec.rb' - 'spec/services/projects/move_access_service_spec.rb' - 'spec/services/projects/move_project_group_links_service_spec.rb' - 'spec/services/projects/overwrite_project_service_spec.rb' @@ -1243,6 +1517,8 @@ Rails/SaveBang: - 'spec/services/projects/update_pages_service_spec.rb' - 'spec/services/projects/update_service_spec.rb' - 'spec/services/quick_actions/interpret_service_spec.rb' + - 'spec/services/reset_project_cache_service_spec.rb' + - 'spec/services/resource_events/change_milestone_service_spec.rb' - 'spec/services/system_hooks_service_spec.rb' - 'spec/services/system_note_service_spec.rb' - 'spec/services/system_notes/issuables_service_spec.rb' @@ -1250,42 +1526,71 @@ Rails/SaveBang: - 'spec/services/todos/destroy/confidential_issue_service_spec.rb' - 'spec/services/users/destroy_service_spec.rb' - 'spec/services/users/repair_ldap_blocked_service_spec.rb' + - 'spec/services/verify_pages_domain_service_spec.rb' + - 'spec/sidekiq/cron/job_gem_dependency_spec.rb' - 'spec/support/helpers/cycle_analytics_helpers.rb' + - 'spec/support/helpers/design_management_test_helpers.rb' - 'spec/support/helpers/jira_service_helper.rb' - 'spec/support/helpers/login_helpers.rb' - 'spec/support/helpers/notification_helpers.rb' - - 'spec/support/helpers/stub_action_cable_connection.rb' - 'spec/support/helpers/stub_object_storage.rb' - 'spec/support/migrations_helpers/cluster_helpers.rb' + - 'spec/support/migrations_helpers/namespaces_helper.rb' - 'spec/support/migrations_helpers/track_untracked_uploads_helpers.rb' + - 'spec/support/shared_contexts/email_shared_context.rb' - 'spec/support/shared_contexts/finders/group_projects_finder_shared_contexts.rb' - 'spec/support/shared_contexts/mailers/notify_shared_context.rb' + - 'spec/support/shared_examples/controllers/cache_control_shared_examples.rb' - 'spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb' - 'spec/support/shared_examples/controllers/sessionless_auth_controller_shared_examples.rb' - 'spec/support/shared_examples/features/editable_merge_request_shared_examples.rb' - 'spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb' + - 'spec/support/shared_examples/models/chat_slash_commands_shared_examples.rb' + - 'spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb' + - 'spec/support/shared_examples/models/concerns/limitable_shared_examples.rb' + - 'spec/support/shared_examples/models/concerns/timebox_shared_examples.rb' - 'spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb' - 'spec/support/shared_examples/models/member_shared_examples.rb' - 'spec/support/shared_examples/models/members_notifications_shared_example.rb' - 'spec/support/shared_examples/models/mentionable_shared_examples.rb' + - 'spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb' - 'spec/support/shared_examples/models/relative_positioning_shared_examples.rb' - 'spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb' - 'spec/support/shared_examples/models/update_project_statistics_shared_examples.rb' - 'spec/support/shared_examples/models/with_uploads_shared_examples.rb' + - 'spec/support/shared_examples/policies/project_policy_shared_examples.rb' - 'spec/support/shared_examples/quick_actions/issuable/issuable_quick_actions_shared_examples.rb' - 'spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/award_emoji_todo_shared_examples.rb' - 'spec/support/shared_examples/requests/api/boards_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/custom_attributes_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb' + - 'spec/support/shared_examples/serializers/note_entity_shared_examples.rb' - 'spec/support/shared_examples/services/common_system_notes_shared_examples.rb' - 'spec/support/shared_examples/services/issuable_shared_examples.rb' + - 'spec/support/shared_examples/services/wiki_pages/destroy_service_shared_examples.rb' - 'spec/tasks/gitlab/web_hook_rake_spec.rb' + - 'spec/uploaders/file_uploader_spec.rb' + - 'spec/uploaders/object_storage_spec.rb' + - 'spec/views/notify/changed_milestone_email.html.haml_spec.rb' - 'spec/views/projects/imports/new.html.haml_spec.rb' - 'spec/views/projects/merge_requests/show.html.haml_spec.rb' - 'spec/views/shared/_label_row.html.haml_spec.rb' + - 'spec/workers/concerns/project_export_options_spec.rb' + - 'spec/workers/gitlab/import/stuck_project_import_jobs_worker_spec.rb' + - 'spec/workers/gitlab/jira_import/stuck_jira_import_jobs_worker_spec.rb' - 'spec/workers/migrate_external_diffs_worker_spec.rb' - 'spec/workers/namespaceless_project_destroy_worker_spec.rb' + - 'spec/workers/namespaces/root_statistics_worker_spec.rb' - 'spec/workers/pages_domain_verification_worker_spec.rb' + - 'spec/workers/process_commit_worker_spec.rb' + - 'spec/workers/propagate_integration_worker_spec.rb' - 'spec/workers/propagate_service_template_worker_spec.rb' - 'spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb' + - 'spec/workers/repository_check/single_repository_worker_spec.rb' - 'spec/workers/repository_cleanup_worker_spec.rb' - 'spec/workers/repository_import_worker_spec.rb' - 'spec/workers/repository_update_remote_mirror_worker_spec.rb' + - 'spec/workers/stuck_ci_jobs_worker_spec.rb' + - 'spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb' diff --git a/CHANGELOG.md b/CHANGELOG.md index 1406bc720e..646c63e3fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,83 +2,48 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 13.1.6 (2020-08-05) - -- No changes. - -## 13.1.5 (2020-07-23) - -- No changes. - -## 13.1.4 (2020-07-09) +## 13.2.1 (2020-07-23) ### Fixed (4 changes) -- Fix path conflict for Ghost on UpdateRoutesForLostAndFoundGroupAndOrphanedProjects. !35425 -- Fix existing repository_storages_weighted migrations. !35814 -- Fix error 500s creating new projects due to empty weights. !35829 -- Fix gitlab:*:check Rake tasks. !35944 +- Resolve Pasting an image into a comment also uploads design. !37171 +- Fix merge request approvals for EE without a license. !37246 +- Fix local Tiller not being default-enabled on the frontend. !37494 +- Fix missing path for avatars of bots. !37671 + +### Changed (2 changes) + +- Limit database deprecation notice window. !37009 +- Shorten 'enable LFS' manage for design management. !37385 -## 13.1.3 (2020-07-06) +## 13.2.0 (2020-07-22) -- No changes. +### Security (3 changes) -## 13.1.2 (2020-07-01) +- Unconfirm wrongfully verified email addresses and user accounts. !35492 +- Make logrotate run as git user for source installations. !35519 +- Replace misleading text in re-confirmation emails. !36634 -### Security (18 changes) - -- Update xterm js dependency to latest stable 3.x version. -- Do not show activity for users with private profiles. -- Fix stored XSS in markdown renderer. -- Upgrade swagger-ui to solve XSS issues. -- Fix group deploy token API authorizations. -- Check access when sending TODOs related to merge requests. -- Change from hybrid to JSON cookies serializer. -- Prevent XSS in group name validations. -- Disable caching for wiki attachments. -- Disable Github Importer API by settings. -- Fix null byte error in upload path. -- Update permissions for time tracking endpoints. -- Add snippet repository validation after bundle import. -- Update Kaminari gem. -- Fix note author name rendering. -- Sanitize bitbucket repo urls to mitigate XSS. -- Stored XSS on the Error Tracking page. -- Fix security issue when rendering issuable. - - -## 13.1.1 (2020-06-23) - -### Fixed (4 changes) - -- Fix missing templating vars set from URL in metrics dashboard. !34668 -- Fix edit status dropdown overflow. !34847 -- Load user before logging git http-requests. !34923 -- Do not mask key comments for DeployKeys. !35014 - -### Added (1 change) - -- Periodically recompute project authorizations. !34071 - - -## 13.1.0 (2020-06-22) - -### Removed (4 changes, 2 of them are from the community) +### Removed (7 changes, 2 of them are from the community) - Remove deprecated dashboard & group milestone pages. !13237 - Removed UltraAuth integration for OmniAuth. !29330 (Kartikey Tanna) - Remove all search autocomplete for groups/projects/other. !31187 - Remove temporary datepicker position fix as it is no longer required. !31836 (Arun Kumar Mohan) +- Remove the ability to customize the title and description of some integrations (Bugzilla, Custom Issue Tracker, Redmine, and YouTrack). !33298 +- Drop deprecated **_ANALYZER_IMAGE_PREFIX. !34325 +- Remove Internet Explorer 11 specific polyfills. !36830 -### Fixed (154 changes, 57 of them are from the community) +### Fixed (300 changes, 79 of them are from the community) +- Remove broken hyperlink from close and reopen button. !22220 (Lee Tickett) - Fix 'Active' checkbox text in Pipeline Schedule form to be a label. !27054 (Jonston Chan) - Fix back button when switching MR tabs. !29862 (Lee Tickett) - Remove ability to scroll Issue while in Design View. !29881 - Fix merge request note label URLs. !30428 (Lee Tickett) - Fix default path when creating project from group template. !30597 (Lee Tickett) -- Group authorization refresh to consider shared groups. !31204 +- Fixed issue (#198424) that prevented k8s authentication with intermediate certificates. !31254 (Abdelrahman Mohamed) - Fix group transfer service to deny moving group to its subgroup. !31495 (Abhisek Datta) - Fix issuable listings with any label filter. !31729 - Move prepend to last in ee-app-services. !31838 (Rajendra Kadam) @@ -135,11 +100,13 @@ entry. - Don't display confidential note icon on confidential issue public notes. !32571 - Update container expiration policy database defaults. !32600 - Fix rendering of emojis in status tooltips. !32604 +- Remove `:prevent_closing_blocked_issues` feature flag. !32630 (Lee Tickett) - Hid copy contents button when blob has rendering error. !32632 - Avoid refresh to show endedAt after mutation. !32636 - Fix for metrics creation when saving MR. !32668 - Skip the individual JIRA issues if failed to import vs failing the whole batch. !32673 - Hide "Import from Jira" option from non-entitled users. !32685 +- Allow special characters in dashboard path. !32714 - Fix broken help link on operations settings page. !32722 - Allow different in bulk editing issues. !32734 - Fix whitespace changes overgrowing the diff container. !32774 @@ -166,11 +133,13 @@ entry. - Deduplicate URL parameters when requesting merge request diffs which causes diffs load to fail. !33117 - Fix tabbing through form fields in projects/new flow. !33209 - Fix incorrect commit search results returned when searching with ref. !33216 +- Issue list page shows correct status for moved re-opened issues. !33238 - Fix NoMethodError by using the correct method to report exceptions to Sentry. !33260 - Fix KaTeX font paths. !33338 - Resolve Fix Incomplete Kubernetes Cluster Status List. !33344 - Fix auto-merge not running after discussions resolved. !33371 - Fix bug in snippets updating only file_name or content. !33375 +- Resolve "WebIDE displays blank file incorrectly". !33391 - Fix invisible emoji modal on Set Status form when clicked the second time. !33398 - vertically center action icon in the CI pipeline. !33427 (Nathanael Weber) - Wrap auto merge parameters update in database transaction. !33471 @@ -191,45 +160,191 @@ entry. - Fix linking alerts to created issues for the Generic alerts intergration. !33647 - Resolve spacing ux debt on Release assets form field. !33684 - Fix pagination link header. !33714 (Max Wittig) -- Fix Value Stream Analytics summary when using non-english locale. !33717 -- Fix bug with variable substitution in alerts. !33772 +- When clicking multiple times to leave a single comment, the input field should remain focused. !33742 - Allow wiki pages with +<> characters in their title to be saved. !33803 - Fix force_remove_source_branch not working in API. !33804 - Fix prometheus alerts not being automatically created. !33806 - Fix pagination for resource label events. !33821 -- Fix relative URL root in wiki_base_path. !33841 +- Fix pagination for resource milestone events api. !33845 - Return code navigation path for nil diff_refs. !33850 - Record audit event when an admin creates a new SSH Key for a user via the API. !33859 (Rajendra Kadam) - Do not create duplicate issues for exising Alert Management alerts. !33860 - Add link text to collapsed left sidebar links for screen readers. !33866 - Update text in error tracking list error message. !33872 -- Adjust wrong column reference for ResetMergeStatus (background job). !33899 +- Ensure that alerts are shown when prometheus service is active. !33928 - Fixed dashboard YAML file validaiton for files which do not contain object as root element. !33935 - Fix design note scrolling. !33939 +- Updated the Android CI Script. !34007 (s-ayush2903) - Update validates_hostname gem with support for more TLDs. !34010 +- Remove default "archived" parameter value from Groups API's projects endpoint. !34018 (Justin Sleep) +- Fix approval rule type when project rule has users/groups. !34026 - Update wording of addMultipleToDiscussionWarning. !34088 - Show all storages in settings. !34093 - Set author as nullable in snippet GraphQL Type. !34135 - Fix rendering of very long paths in merge request file tree. !34153 +- Fix 500 errors and false positive warnings during metrics dashboard validation. !34166 - Remove not null constraint from events tables. !34190 - Ensure we always generate a valid wiki event URL. !34191 - Send information about attached files to the GraphQL mutation. !34221 - Update issue limits template to use minutes. !34254 - Add route for the lost-and-found group and update the route of orphaned projects. !34285 +- Make markdown textarea buttons tab accessible. !34300 - GraphQL - properly handle pagination of millisecond-precision timestamps. !34352 - Fix 500 error in BlobController#delete. !34367 - Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup, a fix for multiline K8S_SECRET variables, updated Helm to 2.16.7 and glibc to 2.31. !34399 (verenion) +- Updates Helm version to 2.16.7, which has some fixes. !34452 +- Align "External" access level row in the user admin form. !34455 (Eduardo Sanz @esanzgar) - Fix issues with scroll on iOS / iPad OS. !34486 +- Add environment_scope filter to ci-variables API. !34490 - Fix order of integrations to be sorted alphabetically. !34501 - Fix undefined method error. !34522 +- Fix static site editor raw (has front matter) <-> body (lacks front matter) content changes sync. !34523 - Use Keys::DestroyService for deleting an SSH key when an admin deletes a key via the API. !34535 (Rajendra Kadam) - Removed default artifact name for Terraform template. !34557 -- Footer system message fix. +- Record audit event when a user creates a new SSH Key for themselves via the API. !34645 (Rajendra Kadam) +- Restrict alert assignee user search to current project in alert management details. !34649 +- Limit alert assignment to only users who can read alerts. !34681 +- Use Keys::DestroyService for deleting an SSH key when a user deletes a key via the API. !34718 (Rajendra Kadam) +- Use GpgKeys::CreateService when an admin creates a new GPG key for a user. !34737 (Rajendra Kadam) +- Sort code coverage graph in ascending order. !34750 +- Fix Issue sticky title URL hash offset. !34764 +- Fix broken todo GraphQL API filtering when filtering by type. !34790 +- Use GpgKeys::CreateService when a user creates GPG keys for themselves via the API. !34817 (Rajendra Kadam) +- Expand healtchecks `500`s when DB is not available. !34844 +- Assign plan_id when building a new plan limit. !34845 +- Fix 500 errors with filenames that contain glob characters. !34864 +- Avoid updating snippet content when snippet_files content is not present. !34865 +- Ensure original repository is archived after a shard move. !34895 +- Fix issue suggestion text color on dark mode. !34899 +- Enclose `release-cli` steps in an array. !34913 +- Add DestroyService for GPG keys and use for deleting GPG keys via API. !34935 (Rajendra Kadam) +- Resolve Misleading message displays when MR request is first submitted. !34958 +- Cancel review app deployment when MR is merged. !34960 +- Add RSpecs for Gitlab::Emoji module. !34980 (Rajendra Kadam) +- Fix directory and last commit not loading for some filenames. !34985 +- Fix confidential warning not showing the issuable type. !34988 +- Fixed mermaid not rendering when switching diff tabs. !35023 +- Use GpgKeys::DestroyService when a user deletes GPG keys for themselves via the API. !35033 (Rajendra Kadam) +- Fix alignment of navigation theme options. !35041 +- Support fenced code blocks in Atlassian Document Format converter. !35065 +- Fixed size limit for too large snippets. !35076 +- Don't include changes in webhook payload when old associations are empty. !35158 +- Fix release assets for Guest users of private projects. !35166 +- Properly set CI_DEPLOY_FREEZE variable in pipelines. !35226 +- Move 'Delete comment' button to bottom of 'More actions' list. !35237 +- Only run DAST job if Kubernetes active. !35259 +- Add instrumentation to Gitaly streamed responses. !35283 +- Fix pages_url for projects with mixed case path. !35300 +- Ensure .git/config is updated for forks. !35305 +- Defer updating .git/config for imported projects. !35308 +- Redirect wiki edit actions for missing pages. !35350 +- Fix styling bug for disabled merge button. !35365 +- Static Site Editor can’t be opened in projects belonging to a subgroup. !35378 +- Resolve timeout in admin/jobs. !35385 +- Fix job log text color in dark mode. !35387 +- Minor UI fixes for Issue page in dark mode. !35395 +- Disable ILM on ELK vendor yaml. !35398 +- Improve alert list spacing. !35400 +- Fix path conflict for Ghost on UpdateRoutesForLostAndFoundGroupAndOrphanedProjects. !35425 +- Add tiller.log to Auto DevOps deployment job artifacts when AUTO_DEVOPS_DEPLOY_DEBUG is set. !35458 +- Resolve [Un]Assign Issue to/from Comment Author Action Visibility. !35459 +- Add email and email_verified claims to OAuth ID token. !35468 (André Hänsel) +- Make ProjectUpdateRepositoryStorageWorker idempotent. !35483 +- Project bot users should always have their emails confirmed by default. !35498 +- Only show open Merge Requests in Web IDE. !35514 +- Remove Edit dashboard button from self monitoring dashboard. !35521 +- Guard against data integrity issues when canceling review app jobs. !35555 +- Use FLOAT_TYPE for storage limit. !35559 +- Enforce prometheus metric uniqueness across project scope. !35566 +- Use full version instead of short version for Sentry Error Release links. !35623 +- Propagate error on FF pre-receive failure. !35633 +- Support multiple mailboxes incoming email check. !35639 +- Fix Profile Applications page to be shown in correct locale. !35661 +- Fix 404 when importing project with developer permission. !35667 +- Fix incorrect text escaping in the Static Site Editor. !35671 +- Use the user's preferred language as default. !35676 +- Create associated routes when a new bot user is created. !35711 +- Prevent autosave when reply comment via cmd+enter. !35716 +- Fix border-radius-base SCSS value. !35740 +- Fix alert sort styling issues. !35741 +- Change the sort order for alert severity and status. !35774 +- Fix unique case where static site editor's custom renderer for identifier syntax didn't robustly handle inline code. !35775 (Derek Knox) +- Save show whitespace changes. !35806 +- Fix existing repository_storages_weighted migrations. !35814 +- Fix error 500s creating new projects due to empty weights. !35829 +- Fix rendering alert issue description field. !35862 +- Fixed translation errors on MR Widget. !35888 +- Fix 500 errors with invalid access tokens. !35895 +- Change PrometheusMetrics identifier index. !35912 +- Backfill missing routes for Bot users. !35960 +- Add generic message when no pipeline in MR. !35980 +- Conditionally render Docker row checkbox. !36000 (gfyoung) +- Fix missing avatar in MR widget. !36034 +- Fix comment loading error in issues and merge requests. !36043 +- Fix routing for paths starting with help and projects. !36048 +- Fix infinite loading spinner for related merge requests on commit pipelines tab. !36077 +- Use error.message instead of error in importer.log. !36104 +- Remove hardcoded reference to gitlab.com in NPM .gitlab-ci.yml template. !36124 +- Remove dashboard panels' tabindex where is not needed. !36168 +- Fix Project#pages_url not to downcase url path. !36183 +- Remove border from related merge requests/issues counter. !36272 +- Fail jobs that fail to render registration response. !36274 +- Sort metrics dashboard panels and groups using a stable sort. !36278 +- Remove HTML link from plain text mail. !36301 +- Fix wrong value of checkbox in integration form. !36329 +- Add a Rake task to fix incorrectly-recorded external diffs. !36353 +- Fix single file editor with long branch name. !36371 +- Allow self monitoring dashboard to be duplicated. !36433 +- Propagate DS_JAVA_VERSION for dependency scanning. !36448 +- Fix to display speech bubble on hover over image on commits page. !36470 (Adam Alvis @adamalvis) +- Fix to remove speech bubble on hover over image on MR Overview tab. !36474 (Adam Alvis @adamalvis) +- Add DOCKERFILE_PATH to Auto DevOps workflow:rules. !36475 +- Show symlink icon in repository browser. !36524 +- Snippet comments where any line begins with a slash following an alphabetic character can't be published. !36563 +- Exclude services relation from Project Import/Export. !36569 +- Permanently close Jira import success alert. !36571 +- Fix dashboard schema validation issue. !36577 +- Refactor issues controller spec to fix SaveBang Cop. !36582 (Rajendra Kadam) +- Fix positioning of mr/issue count. !36621 +- Update to Grape v1.4.0. !36628 +- Fix API errors when null value is given for the bio. !36650 +- Avoid 500 errors with long expiration dates in tokens. !36657 +- Remove CI/CD variable validations on AWS keys. !36679 +- Ensure to run unassign issuables worker when not in a transaction. !36680 +- Mark existing Project Bot Users as confirmed. !36692 +- Fix error message when saving an integration and testing the settings. !36700 +- Do not depend on artifacts from previous stages in Auto DevOps deployments. !36741 +- Delete tracking records on partitioning migration rollback. !36743 +- Updates Helm version to 2.16.9 which has some fixes. !36746 +- Web IDE: Page title should not be .editorconfig when the IDE is first loaded. !36783 +- Removes fixes that broke the pipeline table. !36803 +- Refactor group controllers specs to fix SaveBang Cop. !36853 (Rajendra Kadam) +- Fix the default metrics dashboard to work on K8s versions 1.12 to 1.16. !36863 +- Fix incorrect marking MR as Draft. !36869 +- Use an array for fetching same_family_pipeline_ids. !36883 +- Remove extra Secret-Detection job on merge requests. !36884 +- Remove Rails Optimistic Locking monkeypatch. !36893 +- Refactor projects controllers specs to fix SaveBang Cop. !36920 (Rajendra Kadam) +- Fix background overflow when design note is selected. !36931 +- Fix bulk editing labels bug. !36981 +- Fix not being able to add more than one CI variable through the UI. !37001 +- Uses --set-string to avoid Helm confusion over short SHA vs Scientific Notation. !37004 (Bryan H. @galador) +- Fix displaying import errors from server. !37073 +- Fix failing dashboard schema validation calls. !37108 +- Fix showing MLC form on replies. !37139 - Set experiementation cookie for GitLab domain only. +- Prevent duplicate health status text on epics. - Add DS detection of build.gradle.kts. +- Fix for test report link in MR widget. +- Footer system message fix. -### Changed (76 changes, 5 of them are from the community) +### Deprecated (1 change, 1 of them is from the community) +- Remove the unused worker code and its queue. !32595 (Ravishankar) + +### Changed (191 changes, 9 of them are from the community) + +- Deduplicate labels with identical title and project. !21384 - Add a GraphQL endpoint to fetch Jira projects through its REST API. !28190 - Change legends in monitor dashboards to tabular layout. !30131 - Move pipelines routing under /-/ scope. !30730 @@ -245,6 +360,7 @@ entry. - Externalize i18n strings from ./app/views/shared/milestones/_form_dates.html.haml. !32162 (Gilang Gumilar) - Improve Container Registry UI header. !32424 - Added node size to cluster index. !32435 +- Enable display of wiki events in activity streams. !32475 - Update operations metrics settings title and description to make them general. !32494 - Track merge_requests_users usage data. !32562 - Adds cluster CPU and Memory to cluster index. !32601 @@ -258,9 +374,11 @@ entry. - Add new issue link to email notification header. !32833 - Bump cluster-applications to 0.17.0, which updates Runner to 0.17.0 and Cilium to 1.7.4. !32931 - Update artifacts section to show when an artifact is locked. !32992 +- Show clone button on project page for readme preference. !33023 - Include tag count in the image repository list. !33027 - Clean up gitlab-shell install-from-source path. !33057 - Increase LFS token default time to 2 hours. !33140 +- Add the unique visits data to the usage ping. !33146 - Add explicit mention of Merge request in Slack message. !33152 - Expose `release_links.type` via API. !33154 - Add link_type column to release_links table. !33156 @@ -271,6 +389,7 @@ entry. - Refine SAST language detection by frameworks. !33226 - Render Merge request reference as link. !33248 - Upgrade to Gitaly v13.1.0-rc1. !33302 +- Render Merge request reference as link in email templates. !33316 - Show disabled suggestion button with tooltip message. !33357 - Add update validations to SnippetInputAction. !33379 - Add snippet DB visibility check in spec. !33388 (Jacopo Beschi @jacopo-beschi) @@ -279,35 +398,145 @@ entry. - Add GoMicro logo to project templates. !33404 - Add Jekyll logo to project templates. !33405 - Add Hexo logo to project templates. !33406 +- Add UI to disable Service template when instance-level integration is active. !33490 - Rename Add Designs button. !33491 - Add CPU, memory usage charts to self monitoring default dashboard. !33532 - Add database migrations to design_management_designs.filename to enforce a 255 character limit, and modify any filenames that exceed that limit. !33565 - Track Sentry error status updates with dedicated actions. !33623 - Alert Managament: Change sorting order to have newest alerts first. !33642 - Add blobs field to SnippetType in GraphQL. !33657 +- Move Usage activity by stage for Configure to Core. !33672 - Format metrics column chart x axis dates. !33681 +- Emit Bitbucket Server Importer metrics. !33700 - Style ToastUI contextual menus. !33719 - Update Auto deploy image to v0.16.1, introducing support for AUTO_DEVOPS_DEPLOY_DEBUG. !33799 - Add whether instance has Auto DevOps enabled to usage ping. !33811 - Update local IP address and domain name allow list input label. !33812 - Add date time format to the monitor stacked-column chart. !33814 - Allow Tf Plan to genrate multiple reports. !33867 +- Report all unique users for Secure scanners. !33881 - Remove async_merge_request_check_mergeability feature flag. !33917 - Filter potentially-sensitive Sidekiq arguments from logs and Sentry. !33967 - Update Static Site Editor toolbar to group inline-code and code-block buttons together. !34006 - Set default values for SAST_EXCLUDED_PATHS and DS_EXCLUDED_PATHS. !34076 - Add ability to filter self monitoring resource usage charts by instance name. !34084 +- Add skeleton loader to cluster list. !34090 - Pick repository storage based on weight. !34095 +- Use IP or cookie in known sign-in check. !34102 +- Prevents editing of non-markdown kramdown content in the Static Site Editor's WYSIWYG mode. !34185 - Display error for YAML files that are too large. !34199 - Change copy of webhooks / integration help text. !34301 +- Use CodeQuality 0.85.10 in the CI template. !34329 - Update board header icons. !34366 - Show Redis instance in performance bar. !34377 +- Extend members REST API with the option to unassign Issues and Merge Requests when member leaves team. !34388 +- Reorder snippets in lists using `updated_at` column. !34393 (Dibyadarshi Dash @ddash2) +- Add files argument to snippet create mutation. !34449 +- Consolidate object storage config in one place. !34460 - Add secret detection template to Auto DevOps. !34467 +- Add contextual menu to single stat panels. !34497 - Add allowed actions to snippet input action. !34499 +- Add files argument to snippet update mutation. !34514 - Change from vendor specific to Gitlab. !34576 +- Enable `:ci_release_generation` feature flag by default. !34633 +- Update gl-toggles with deprecated attributes. !34660 +- Adjust verbiage on repository storages settings page. !34675 +- Change redirect path after integration save. !34697 +- Refine UI of integration form. !34707 +- Change CI variable font family to monospace. !34788 (Aaron Walker) +- Rename GraphQL AwardEmoji mutations to follow naming conventions, deprecating the old mutations. !34798 +- Improve error message when unconfirmed user tries to log in. !34818 +- Update LFS setting label. !34829 (George Tsiolis) +- Display error if metrics dashboard YAML is too large. !34834 +- Add expand/collapse view to Terraform MR widget. !34879 +- Expose storage size limit for namespaces in GraphQL. !34882 +- Resolve Add no graph empty state for DAG. !35053 +- Remove pending and running tabs from pipelines list and remove count from finished tab. !35062 +- Stop removing NaN values from monitoring data series. !35086 +- Multiple Kubernetes clusters now available in GitLab core. !35094 +- Include snippets size in project statistics. !35120 +- Add parallel persistence for author_name on AuditEvent. !35130 +- Convert the Image tag UI from a table to a list view. !35138 +- Add personal and project snippet monthly counters to usage data. !35155 +- Exclude integrations (services) from Project Import/Export. !35249 +- Parameterize PG deprecation notice. !35271 +- Add inapplicable reason in MR suggestion Tooltip. !35276 +- Add snippets_size to namespace_root_storage_statistics. !35311 +- Rename Container Expiration Policies to Cleanup policy for tags. !35315 +- Expose snippets_size in ProjectStatistics Entity. !35316 +- Add snippets_size to ProjectStatistics GraphQL type. !35319 +- Update snippet and project statistics after certain events. !35340 +- Update the static site editor's markdown mode text to monospace to better reflect a code-editing experience. !35347 (Derek Knox) +- Resolve Remove button row from environments empty state. !35413 +- Track last activity for Personal Access Token. !35471 +- Add GitLab username and name to the import users from Jira mutation response. !35542 +- Use local Tiller by default for GitLab-managed apps. !35562 +- Hide cleanup button for clusters with management project. !35576 +- Update integration form to use GitLab UI components. !35582 +- Add snippets_size to Group entity. !35585 +- Add snippets_size to RootStorageStatisticsType. !35586 +- Move merge_requests_users metric to stage section. !35593 +- Include snippets_size statistic inside RootStorageStatistics. !35601 +- Accept multiple blobs in snippets. !35605 +- Replace FA exchange icon with GitLab SVG. !35634 +- Require namespace path (and username) to be at least 2 chars long. !35649 +- Remove count for pending/running/finished pipelines in tabs. !35693 +- Display commits search in mobile & adjust text. !35702 +- Open source cluster health dashboard and make it available to all users. !35721 +- Update snippet statistics after project import. !35730 +- Remove the second prompt to accept or decline an invitation. !35777 +- Track wiki page views in Snowplow. !35784 +- Use the application's default_branch_name when available when initializing a new repo with a README. !35801 +- Use native Gitaly pagination for Branch list API. !35819 +- Move file link to bottom in Web IDE. !35847 +- Package APIs moved to core. !35919 +- Allow setting extra tags for Sentry exceptions with GITLAB_SENTRY_EXTRA_TAGS. !35965 +- Include personal snippets size in RootStorageStatistics. !35984 +- Change Alert fingerprint index to run when status is not resolved. !36024 +- Update namespace statistics after personal snippet update/removal. !36031 +- Add details rows to Container Registry Tags List. !36036 +- Add raw snippet repository file endpoint to API. !36037 +- Move monitor stage usage activity to CE. !36067 +- Move release stage usage activity to CE. !36083 +- Move create stage usage activity to CE. !36086 +- Move plan stage usage activity to CE. !36087 +- Move manage stage usage activity to CE. !36089 +- Move verify stage usage activity to CE. !36090 +- Move alert integrations setting to Vue. !36110 +- Use new vuex store for code quality MR widget. !36120 +- Remove non-unique index on `merge_request_metrics.merge_request_id` column. !36170 +- Cleanup policies: display API error messages under form field. !36190 +- Replace fa-comment / fa-comments icons with GitLab SVG. !36206 +- Update `rack-timeout` to `0.5.2`. !36289 +- Bring SAST to Core - eslint. !36392 +- Replace initial dashboard loading state with a loading spinner, show dashboard skeleton earlier with smaller loading indicators. !36399 +- Merge tslint secure analyzer with eslint secure analyzer. !36400 +- Expose issue ID via GraphQL. !36412 +- Add broken tag state to tags list items. !36442 +- Fix UI quirks with pipeline schedule cron options. !36471 +- Update eslint secure analyzer to analyze jsx. !36505 +- Display informative error for status updates on duplicate alerts. !36527 +- Change default value in application_settings.issues_create_limit to be 0. !36558 +- Expose approvals fields for FOSS FE. !36564 +- Move service desk feature to core. !36613 +- Check WIP status after all other possible statuses. !36624 +- Add new models for DAST site profiles as part of DAST on-demand scans. !36659 +- Add date to x-axes timestamps. !36675 +- Make the Design Collection more visible in the Issue UI. !36681 +- Add correlation between trigger job and child pipeline. !36750 +- Static Site Editor: Set default sublist indent spaces to four space characters. !36756 +- Add managed-apps section in log explorer. !36769 +- Use a Confluence icon for the project Confluence integration nav item. !36780 +- Remove file_path validation in snippet create action. !36809 +- Improve animations of design note selection in design management. !36927 +- Add entity_path column to audit_events table. !37041 +- Make DAG annotations stick. !37068 +- Support multiple files when editing snippets. !37079 +- Change loading MR message wording. !37181 - Assign alerts sidebar base. +- Improved UX of the code navigation popover. -### Performance (19 changes, 1 of them is from the community) +### Performance (50 changes, 1 of them is from the community) - Improve performance of commit search by limiting the number of results requested. !32260 - Add GraphQL lookahead support. !32373 @@ -316,24 +545,57 @@ entry. - Use build_stubbed to avoid interacting with the DB in todos helper specs. !32906 (Arun Kumar Mohan) - Optimize SQL queries on Milestone index page. !32953 - Add build report results data model. !32991 +- Improve the performance for loading large diffs on a Merge request. !33037 - Adjust condition for partial indexes on services table. !33044 - Add index to issues and epics on last_edited_by_id. !33075 - Fix preconnect typo in rel link. !33255 - Add project_id, user_id, status, ref index to ci_pipelines. !33290 - Move migration related to ci_builds to post_deployment. !33416 +- Remove need to call commit (gitaly call) in ProjectPipelineStatus. !33712 - Reduce redundant queries for Search API users scope. !33795 - Speed up boot time in production. !33929 - Harden CI pipelines usage data queries with an index. !34045 +- Use snapshot transfers for repository shard moves when possible. !34113 - Add partial index on locked merge requets. !34127 +- Improve pipeline index controller performance by resolving Gitaly N+1 calls. !34160 - Lazy load commit_date and authored_date on Commit. !34181 - Optimize container repository for groups query. !34364 +- Further improve the performance for loading large diffs on a Merge request. !34516 +- Paginate the notes incremental fetch endpoint. !34628 +- Optimize rolling 28 days snippets counter. !34918 +- Only load project license if needed. !35068 +- Improve query to retrieve job artifacts with files stored locally. !35084 +- Preload commits markdown cache. !35314 +- Use BatchLoader for Project.forks_count to limit calls to Redis. !35328 +- Rework hardening CI pipelines usage data queries with an index. !35494 +- Performance improvement for job logs. !35504 +- Define a namespace traversal cache. !35713 +- MR diff migration: perform I/O outside of database transaction. !35734 +- Resolve N+1 in Search API projects scope. !35833 +- Optimize deployment counters for last 28 days. !35892 +- Trigger stackprof by sending a SIGUSR2 signal. !35993 +- Improve the search performance for merge requests. !36072 +- Reduce number of scanned commits for code intelligence. !36093 +- Improve snippet finders queries. !36292 +- Swap Grape over to Gitlab::Json. !36472 +- Add oj gem for faster JSON. !36555 +- Replace fa-eyes-slash icons with GitLab SVG eye-slash icon. !36602 +- Avoid N+1 calls for image_path when rendering commits. !36724 +- Enable BulkInsertSafe on Ci::BuildNeed. !36815 +- Remove optimized_count_users_by_group_id feature flag. !36953 +- Remove unindexed condition on label transfer. !37060 +- Speed up project creation for users with many projects. !37070 +- Split query for code-nav path into two queries. !37092 +- Use memoized start/finish for metrics based on issues table. !37155 - Enable CI Atomic Processing by default. -### Added (149 changes, 14 of them are from the community) +### Added (298 changes, 23 of them are from the community) +- Release generation via gitlab-ci.yml documentation. !19237 - Add rake task to verify encrypted data through secrets. !21851 - User can apply multiple suggestions at the same time. !22439 (Jesse Hall) - Resolve Add a button to assign users who have commented on an issue. !23883 +- Add custom emoji model and database table. !24229 (Rajendra Kadam) - Resolve Graph code coverage changes over time for a project. !26174 - Add doc for custom validators in api styleguide. !26734 (Rajendra Kadam) - Add Scheduled Job for Monitoring Monitor Group Demo Environments. !27360 @@ -350,12 +612,14 @@ entry. - Support Workhorse directly uploading files to S3. !29389 - Add frontend support for multiline comments. !29516 - Support first_name and last_name attributes in LDAP user sync. !29542 +- Link to test reports from MR Widget. !29729 - Add link to status page detail view for status page published issues. !30249 - Add metrics dashboard name to document title. !30392 - Backfill StatusPage::Published incidents and enable a publish quick action for EE. !30906 - Add missing Merge Request fields. !30935 - Show build status on branch list. !30948 (Lee Tickett) - Add mutation to create commits in GraphQL. !31102 +- Support quick actions when editing issue, merge request, and epic descriptions. !31186 - Add GraphQL support for authored and assigned Merge Requests. !31227 - Add usage data metrics for terraform states. !31280 - Add usage data metrics for terraform reports. !31281 @@ -402,16 +666,21 @@ entry. - Add timezone display to alert based issue start time. !32702 - Display dates on metrics dashboards in UTC time zone. !32746 - Store Todo resolution method. !32753 +- Add Falco to the managed cluster apps template. !32779 - Add experience_level to user_preferences. !32784 +- Add keyboard shortcuts to metrics dashboard. !32804 - Remove metrics dashboard annotations attached to time periods older than two weeks. !32838 - Monitor:Health metrics instrumenation. !32846 - Adds PostHog as a CI/CD Managed Application. !32856 - Groups API has top_level_only option to exclude subgroups. !32870 - Create operations_feature_flags_issues table. !32876 +- Allow advanced API projects filtering for admins. !32879 - Add api.js methods to update issues and merge requests. !32893 - Render user-defined links in dashboard yml file on metrics dashboard. !32895 +- Create group_deploy_keys_groups intermediate table. !32901 - Add accessibility report MR widget. !32902 - Add a GraphQL mutation for toggling the resolved state of a Discussion. !32934 +- Added CI template for Dart. !32942 (agilob) - Add container expiration policy objects to the GraphQL API. !32944 - Don't hide Commit tab in Web IDE when there are no changes yet. !32979 - Add column for alert slack notifications. !33017 @@ -420,6 +689,8 @@ entry. - Adds groupMembership and projectMembership to GraphQL API. !33049 - Alerts list pagination. !33073 - Add ApplicationSetting ui changes for repository_storages_weighted. !33096 +- Resolve Feature proposal: API for import from BitBucket Server. !33097 +- Add squash commits options as a project setting. !33099 - Display confirmation modal when user exits SSE and there are unsaved changes. !33103 - Add column dashboard_timezone to project_metrics_setting. !33120 - Allow the assignment of alerts to users from the alert detail view. !33122 @@ -437,24 +708,32 @@ entry. - Add support for pasting images in the Web IDE. !33256 - Add ProjectAccessToken table. !33272 - Automatically resolve alert when associated issue closes. !33278 +- Add Jira Importer user mapping form. !33320 - Add `link_type` to `ReleaseLink` GraphQL type. !33386 +- Add setting to enable and disable shared Runners for a group and its descendants. !33411 (Arthur de Lapertosa Lisboa) - Add members to project graphQL endpoint. !33418 - Update Static Site Editor WYSIWYG mode to hide front matter. !33441 - Added delete action for Dashboard Annotations in GraphQL. !33468 - Create graphQL endpoint for Jira users import. !33501 - Support IAP protected prometheus installations. !33508 - New instance-level variables UI. !33510 -- Provide `__range` variable for Prometheus queries. !33521 +- Add design activity in event streams. !33534 +- Allow developer role read-only access to Terraform state. !33573 - Add support for `git filter-repo` to repository cleanup. !33576 - Close open reply input fields in the design view sidebar when leaving a new comment. !33587 - Add dashboard schema validation warnings as metrics dashboard GraphQL field. !33592 - Add time range to user-defined links in metrics dashboard. !33663 - Increase events count for Prometheus alerts. !33706 +- Add dashboard validation warning to metrics dashboard. !33769 - Track pod logs refresh action. !33802 +- Expose all Jira projects endpoint through a GraphQL. !33861 - Add secret detection template. !33869 +- Add new path to access project metrics dashboard. !33905 +- Add new raw snippet blob endpoint. !33938 - Add DAG visualization MVC. !33958 - Introduce a feature flag for Vue-based UI for all import providers. !33980 - Add sticky title on Issue pages. !33983 +- Allow policies to override parent rules. !33990 - Allow Release asset links to be associated with a type. !33998 - Support user-defined Grafana links in metrics dashboard. !34003 - Adds AWS guidance to CI/CD > Add Variable modal. !34009 @@ -465,25 +744,157 @@ entry. - Track merge requests submitted by Static Site Editor. !34105 - Turn off alert issue creation by default. !34107 - Add detailed logs of each Redis instance usage during job execution and web requests. !34110 +- Support metrics dashboard with file name. !34115 - Add API to schedule project repository storage moves. !34119 +- Update diff discussion positions on demand. !34148 +- Add ability for user to manually create a todo for an alert. !34175 - Add validation step on backend for metrics dashboard links. !34204 - Track when Static Site Editor is initialized. !34215 - Bring SAST to Core - brakeman. !34217 - Mask key comments when exposing SSH/Deploy Keys via the API. !34255 - Convert `:release` yaml to `release-cli` commands. !34261 - Validate regex before sending them to CleanupContainerRepositoryWorker. !34282 +- Create vulnerability_statistics table. !34289 - Add secret_detection to DOWNLOADABLE_TYPES. !34313 - Enable ability to assign alerts to users with corresponding system notes and todos. !34360 +- Rolling 28 day time period counters for snippets. !34363 +- Add regex fields to the container expiration policy update mutation. !34389 +- Display Multiple Terraform Reports in MR Widget. !34392 +- Highlight commented rows. !34432 +- Add ci_builds_metadata.secrets column. !34480 - Enable CI Inheriting Env Variables feature. !34495 - Show tooltip on error detail page when hovering over dates. !34506 +- Show notification about empty stacktrace. !34517 - Add native code intelligence. !34542 +- Add global setting to disable/enable email notification on unknown sign-ins. !34562 - Bump cluster-applications version to v0.20.0. !34569 +- Send fixed pipeline notification by default. !34589 - Add search argument for AlertStatusCountsResolver. !34596 +- Add clusters_applications_cilium DB table. !34601 +- Fetch metrics dashboard templating variable options using a Prometheus query. !34607 +- Add Jira users mapping to start Jira import mutation. !34609 - Allow CI_JOB_TOKEN for authenticating to the Terraform state API. !34618 +- Search plain text in alert list frontend. !34631 +- Trigger unsaved changes warning in snippets on navigating away. !34640 +- Add Cilium to the ParseClusterApplicationsArtifactService. !34695 +- Use new icon for api preview. !34700 (Roger Meier) +- Remove partial clone feature flag. !34703 +- Ability to use an arbitrary YAML blob to create CI pipelines. !34706 +- Upgrade GitLab Pages to 1.19.0. !34730 +- Add CI_PROJECT_ROOT_NAMESPACE predefined environment variable. !34733 +- Add override selector for project-level integrations. !34742 +- Create namespace_limits table with additional purchase columns. !34746 +- Add mutation to update merge requests. !34748 +- Add plan limits for max size per artifact type. !34767 +- Add package scope validation to Node.js template. !34778 +- Expose project deploy keys for autocompletion. !34875 +- Block invalid URLs in metrics dashboard chart links. !34888 +- Add release data to GraphQL endpoint. !34937 +- Add ref, released_at, milestones to release yml. !34943 +- Add option to unassign member from issuables when removing them from a project. !34946 +- Add diff stats fields to merge request type. !34966 +- Bump Gitaly to v13.2.0-rc1. !34977 +- Add prometheus_alert_id and environment_id to Alert management alerts. !34995 +- Add full width to single charts in a row. !34999 +- Support extensibility for Editor Lite. !35008 +- Add snippets_size to ProjectStatistics. !35017 +- Add SnippetStatistics model. !35026 +- Add metrics settings menu to dashboard header. !35028 +- Surface metrics charts on the alert detail page. !35044 +- Add milestone stats to GraphQL endpoint. !35066 +- Add a custom HTML renderer to the Static Site Editor for markdown identifier syntax. !35077 +- Expose ref, milestones, released_at to releaser-cli. !35115 +- Add snippet statistics logic. !35118 +- Allow files with .md.erb extension for the Static Site Editor. !35136 +- Add migration for experimental product analytics table. !35168 +- Extend ECS Deploy template with Fargate jobs. !35173 +- Upgrade Pages to 1.20.0. !35177 +- Automatically close related issue when resolving Alert Management Prometheus Alert. !35208 +- Create API to retrieve resource state events. !35210 +- Allow diffs to be viewed file-by-file. !35223 (rinslow) +- Add indices for projects with disable_overriding_approvers_per_merge_request. !35224 +- Log name of class that failed to obtain exclusive lease. !35228 +- Render source job info in TriggeredPipelineEntity. !35232 +- Add refresh rate options to dashboard header. !35238 +- Add annotation component for DAG. !35240 +- Add a custom HTML renderer to the Static Site Editor for embedded ruby (ERB) syntax. !35261 +- Display metric label in single stat. !35289 +- Add issue column to alert list. !35291 +- Expose metrics dashboard URL for alert GraphQL query. !35293 +- Allow diffing changes in wiki history. !35330 (gwhyte, Steve Mokris) +- Added support for reordering issues to the v4 API. !35349 (Joel @jjshoe, Lee Tickett @leetickett) +- Add 'not' params to MergeRequests API endpoint. !35391 +- Implement GraphQL query to generate JSON for SAST config UI. !35397 +- Add system notes for status updates on alerts. !35467 +- Enable S3 Workhorse client if consolidated object settings used. !35480 +- Rolling 28 day time period counter for deployments. !35493 +- Add log statements to Projects::ContainerRepository::DeleteTagsService. !35539 +- Provide a label for 'Scheduled Pipeline' in the pipelines overview page. !35554 +- Add note about SSH key title being public information. !35574 +- Add todo pill styling for resolved alert. !35579 +- Add support for Markdown in the user's bio. !35604 (Riccardo Padovani) +- Introduce prepare environment action to annotate non-deployment jobs. !35642 +- Add custom Dockerfile paths to Auto DevOps Build stage with DOCKERFILE_PATH. !35662 (thklein) +- Add MergeRequest.diffStatsSummary.fileCount to graphql API. !35685 +- Introduces Group Level Delayed Project Removal Setting. !35689 +- Update cluster-applications to 0.23.0. !35691 +- Resolve user's todo when an alert is resolved. !35700 +- Show when alert is new in the Alerts list. !35708 +- Convert Import/Export rate limits to configurable application settings. !35728 +- Add installed state metrics for Cilium cluster application. !35808 +- Add support for linting based on schemas in WebIDE. !35838 +- Add a metrics settings button to the dashboard header. !35848 +- Prevent a project bot from being removed as member. !35899 +- Add background_migration_jobs table to trace background migrations. !35913 +- Allow prefixing with Draft to mark MR as WIP. !35940 +- FindRemoteRepository is storage scoped. !35962 +- Include project and subgroup milestones on Roadmap page. !35973 +- Todo Mutations should return the mutated todos. !35998 +- Add API support for instance-level Kubernetes clusters. !36001 +- Add count to imported Jira issues message. !36075 +- Add temporary storage increase column. !36107 +- Remove generic_alert_fingerprinting feature flag. !36148 +- Upgrade GitLab Pages to 1.21.0. !36214 +- Move approvals endpoints to FOSS version. !36237 +- Add initial custom HTML renderer to the Static Site Editor to prevent editing in WYSIWYG mode. !36250 +- Open new alert when existing alert is resolved. !36261 +- Add custom avatars for Alert and Support Bot. !36269 +- Add PagerDuty integration columns to `project_incident_management_settings` table. !36277 +- Enable Alerts dropdown in Operations Settings. !36296 +- Add number of approval project rules to usage ping. !36316 +- Add namespace settings table. !36321 +- Add a custom HTML renderer to the Static Site Editor for HTML block syntax. !36330 +- Expose gitlab managed apps logs inside log explorer. !36336 +- Add keyboard shortcut ('b') to copy MR source branch name on MR page. !36338 +- Add a custom HTML renderer to the Static Site Editor for font awesome inline HTML syntax. !36361 +- Add system note for alert when creating issue. !36370 +- Periodically update container registry type settings. !36415 +- Expands Jira integration to allow viewing and searching a list of of Jira issues directly within GitLab. !36435 +- Show Approve button on merge requests in Core. !36449 +- Measure adoption of package registry. !36514 +- If a user does not have write access to repo, but a fork exists, the Web IDE button should take them to the fork. !36548 +- Enable Batch Suggestins feature flag by default. !36561 +- Add default and non-default branch jobs for secret detection. !36570 +- Add a custom HTML renderer to the Static Site Editor for markdown identifier instance syntax. !36574 +- Add docs for Alert trigger test alerts. !36647 +- Support short urls for custom metrics dashboards. !36740 +- Update cluster-applications to 0.24.2. !36768 +- Add new Confluence integration for projects. !36781 +- Add confidential attribute to public API for notes creation. !36793 +- Add confidential attribute to graphQL for notes creation. !36799 +- Prometheus instances behind Google IAP can now be accessed via manual configurations. !36856 +- GraphQL mutation for changing locked status of an issue. !36866 +- Default the feature flag to true to always show the default initial branch name setting. !36889 +- Enable feature flag 'sectional_codeowners' Sections for Code Owners. !36902 +- Add pagination to iterations list. !37052 +- Add Jsonnet template for GitLab. !37058 +- Enable design activity events by default. !37107 -### Other (65 changes, 36 of them are from the community) +### Other (137 changes, 45 of them are from the community) - Improve fast-forward merge is not possible message. !22834 (Ben Bodenmiller) +- Add node ci template. !25668 +- Deduplicate merge_request_metrics table. !29566 - Remove unused WAF indexes from CI variables. !30021 - Update the visual design of badges in some areas. !31646 - Extract featurable concern from ProjectFeature. !31700 (Alexander Randa) @@ -505,7 +916,9 @@ entry. - Remove findLabel logic from issue model. !32239 (nuwe1) - Remove findIssue logic from list model. !32241 (nuwe1) - Remove moveIssue logic from list model. !32242 (nuwe1) +- Remove moveMultipleIssues logic from issue model. !32243 (nuwe1) - Remove newIssue logic from list model. !32244 (nuwe1) +- Remove onNewIssueResponse logic from list model. !32245 (nuwe1) - Remove removeAllAssignees logic from issue model. !32247 (nuwe1) - Remove removeAssignee logic from issue model. !32248 (nuwe1) - Clarify verbiage for stuck job messages. !32250 @@ -527,6 +940,7 @@ entry. - Tidy. !32759 (Lee Tickett) - Less verbose JiraService error logs. !32847 - Reduced padding and increased emphasis of titles within the epic tree. !32873 +- Add source to resource state events. !32924 - Remove obsolete users.ghost column. !32957 - Move NoPrimary table def to last context in spec. !33015 (Rajendra Kadam) - Document github rate limit behavior. !33090 @@ -535,9 +949,11 @@ entry. - Convert IP spoofing errors into client errors. !33280 - Update docs to reflect move web IDE Terminal and file sync to Core. !33419 - Add hovering icon for sorting columns on alert management list. !33429 +- Upgrade Grape v1.1.0 to v1.3.3. !33450 - Avoid javascript for omniauth logins. !33459 (Diego Louzán) - Add opacity transition to active design discussion pins. !33493 - Update GitLab Runner Helm Chart to 0.17.1. !33504 +- Store pipeline creation errors and warnings into Ci::PipelineMessage. !33762 - Make project selector in various dashboard more translatable. !33771 - Update Workhorse to v8.35.0. !33817 - Remove FF hide_token_from_runners_api. !33947 @@ -545,11 +961,171 @@ entry. - Specify tiers for SAML SSO at self-hosted plans. !34040 (Takuya Noguchi) - Backfill failed imported snippet repositories. !34052 - Use GitLab SVG icon for file attacher action. !34196 +- Suppress progress on pulling on Performance Test. !34368 (Takuya Noguchi) +- Update icon associated with attach a file actions. !34401 - Add GraphQL snippet FileInputType. !34442 +- Move filter code into finder. !34470 (Ravishankar) +- Update blue hex values to match GitLab UI. !34530 +- Remove legacy job log rendering. !34538 - Update red hex values to match GitLab UI. !34544 +- Update green hex values to match GitLab UI. !34547 +- Validate the existing not null constraints on columns for ci_job_artifacts, lfs_objects, and uploads tables. !34568 +- Move HasStatus module to the Ci namespace. !34577 (blackst0ne) +- Update pinned links to use GlButton. !34620 +- Add machine/sysname/release in topology usage ping. !34627 +- Remove build dependencies on code quality and license scanning. !34659 +- Add :section to approval_merge_request_rule unique index. !34680 +- Replace double angle icons with double chevron. !34736 +- Update Workhorse to v8.36.0. !34759 +- Update heart icon from FontAwesome to GitLab SVG. !34777 +- Fix broken CSS for system notes. !34870 +- Fix Gitaly duration tracking of RefService RPCs. !34904 +- Fix Gitaly duration timings of BlobService RPCs. !34906 +- Fix Gitaly duration timings for conflicts and search RPCs. !34909 +- Add validation for move action in SnippetInputAction. !34911 +- Fix Gitaly duration timings for other CommitService RPCs. !34933 +- Add project_key column to jira_tracker_data table. !34949 +- Update GitLab Runner Helm Chart to 0.18.0. !34969 +- Copy snippet route under - scope. !35020 +- Copy project snippet routes under - scope. !35022 +- Removes monkey patch to generate 6.0.3 style token. !35104 +- Create time-space partitions in separate schema gitlab_partitions_dynamic. !35137 +- Edit copy of DAG unsupported data alert. !35170 +- Move configuration for Alerts endpoint from "Settings > Integration" to "Settings > Operations > Alerts". !35187 +- Clean up GitlabIssueTrackerService database records. !35221 +- Throttle ProjectUpdateRepositoryStorageWorker Jobs. !35230 +- Suppress progress on docker pulling in builtin templates. !35253 (Takuya Noguchi) +- Create schema for static partitions. !35268 +- Add default_branch_name to application_settings. !35282 +- Upgrade Gitaly to 13.2.0-rc2. !35345 +- Drop partitions_dynamic schema if it exists. !35426 +- Avoid grouping statement timeouts in Sentry. !35479 +- Database migration to add project_settings.has_confluence. !35485 +- Update UI links to docs in core features. !35488 +- Update Sidekiq to v5.2.9. !35495 +- Move profiles/keys#get_keys to users#ssh_keys. !35507 (Takuya Noguchi) +- Add default_branch_name to ApplicationSettings visible attrs. !35681 +- Update GitLab Runner Helm Chart to 0.18.1. !35712 +- Prepare database for WebAuthn. !35797 (Jan Beckmann) +- Remove dead Elasticsearch indexing code. !35936 +- Add alias expansion to Terraform documentation. !35941 (zmeggyesi) +- Hide dropdown header on list view. !35954 +- Update GitLab Elasticsearch Indexer. !35966 +- Restore the search autocomplete for groups/project/other. !35983 +- Add issues_enabled column to jira_tracker_data table. !35987 +- Normalize the 'thumb-up', 'thumb-down' icon. !35988 +- Add migration to drop unused daily report results table. !36102 +- Updating $gray-200 hex value and remapping current instances to $gray-100. !36128 +- Removes ci_ensure_scheduling_type feature flag. !36140 +- Update more UI links to docs in core features. !36174 +- Format graphql files with prettier. !36244 +- Replace FA play icon with svg in pipeline schedule and admin runner page. !36379 +- Backfill project snippet statistics. !36444 +- Expose blob mode in GraphQL for repository files. !36488 +- Drop index of ruby objects in details on audit_events table. !36547 +- Expand Operations > Alerts section by default via link follow through. !36649 +- Update snippets housecleaning docs. !36715 +- Update Rouge to v3.21.0. !36942 +- Update GITLAB_WORKHORSE_VERSION to 8.37.0. !36988 +- Track the number of unique users who push, change wikis and change design managerment. - Remove removeIssue logic from list model. (nuwe1) +## 13.1.3 (2020-07-06) + +- No changes. + +## 13.1.2 (2020-07-01) + +### Security (18 changes) + +- Update xterm js dependency to latest stable 3.x version. +- Do not show activity for users with private profiles. +- Fix stored XSS in markdown renderer. +- Upgrade swagger-ui to solve XSS issues. +- Fix group deploy token API authorizations. +- Check access when sending TODOs related to merge requests. +- Change from hybrid to JSON cookies serializer. +- Prevent XSS in group name validations. +- Disable caching for wiki attachments. +- Disable Github Importer API by settings. +- Fix null byte error in upload path. +- Update permissions for time tracking endpoints. +- Add snippet repository validation after bundle import. +- Update Kaminari gem. +- Fix note author name rendering. +- Sanitize bitbucket repo urls to mitigate XSS. +- Stored XSS on the Error Tracking page. +- Fix security issue when rendering issuable. + + +## 13.1.1 (2020-06-23) + +### Fixed (4 changes) + +- Fix missing templating vars set from URL in metrics dashboard. !34668 +- Fix edit status dropdown overflow. !34847 +- Load user before logging git http-requests. !34923 +- Do not mask key comments for DeployKeys. !35014 + +### Added (1 change) + +- Periodically recompute project authorizations. !34071 + + +## 13.0.10 (2020-07-09) + +### Fixed (1 change) + +- Fix gitlab:*:check Rake tasks. !35944 + + +## 13.0.9 (2020-07-06) + +- No changes. + +## 13.0.8 (2020-07-01) + +### Security (18 changes) + +- Update xterm js dependency to latest stable 3.x version. +- Do not show activity for users with private profiles. +- Fix stored XSS in markdown renderer. +- Upgrade swagger-ui to solve XSS issues. +- Fix group deploy token API authorizations. +- Check access when sending TODOs related to merge requests. +- Change from hybrid to JSON cookies serializer. +- Prevent XSS in group name validations. +- Disable caching for wiki attachments. +- Disable Github Importer API by settings. +- Fix null byte error in upload path. +- Update permissions for time tracking endpoints. +- Add snippet repository validation after bundle import. +- Update Kaminari gem. +- Fix note author name rendering. +- Sanitize bitbucket repo urls to mitigate XSS. +- Stored XSS on the Error Tracking page. +- Fix security issue when rendering issuable. + + +## 13.0.7 (2020-06-25) + +### Fixed (7 changes) + +- Group authorization refresh to consider shared groups. !31204 +- Fix Value Stream Analytics summary when using non-english locale. !33717 +- Fix bug with variable substitution in alerts. !33772 +- Fix relative URL root in wiki_base_path. !33841 +- Adjust wrong column reference for ResetMergeStatus (background job). !33899 +- Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup. !34657 +- Load user before logging git http-requests. !34923 + +### Added (2 changes) + +- Provide `__range` variable for Prometheus queries. !33521 +- Periodically recompute project authorizations. !34071 + + ## 13.0.6 (2020-06-10) - No changes. @@ -1162,6 +1738,38 @@ entry. - Use visitUrl in Alert management. !32414 +## 12.10.14 (2020-07-06) + +- No changes. + +## 12.10.13 (2020-07-01) + +### Security (15 changes) + +- Do not show activity for users with private profiles. +- Fix stored XSS in markdown renderer. +- Upgrade swagger-ui to solve XSS issues. +- Fix group deploy token API authorizations. +- Check access when sending TODOs related to merge requests. +- Change from hybrid to JSON cookies serializer. +- Prevent XSS in group name validations. +- Disable caching for wiki attachments. +- Fix null byte error in upload path. +- Update permissions for time tracking endpoints. +- Update Kaminari gem. +- Fix note author name rendering. +- Sanitize bitbucket repo urls to mitigate XSS. +- Stored XSS on the Error Tracking page. +- Fix security issue when rendering issuable. + + +## 12.10.12 (2020-06-24) + +### Fixed (1 change) + +- Correctly count wiki pages in sidebar. !30508 + + ## 12.10.11 (2020-06-10) - No changes. diff --git a/Dangerfile b/Dangerfile index cc6ebc27d4..cba7226d4b 100644 --- a/Dangerfile +++ b/Dangerfile @@ -6,6 +6,7 @@ require_relative 'lib/gitlab/danger/request_helper' danger.import_plugin('danger/plugins/helper.rb') danger.import_plugin('danger/plugins/roulette.rb') danger.import_plugin('danger/plugins/changelog.rb') +danger.import_plugin('danger/plugins/sidekiq_queues.rb') return if helper.release_automation? diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index a40b36ab99..947f4e9963 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -13.1.6 +13.2.1 diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index 276cbf9e28..197c4d5c2d 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -2.3.0 +2.4.0 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 84cc529467..3500250a4b 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -1.18.0 +1.21.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index 13afb01d49..2554e8ae98 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.35.0 +8.37.0 diff --git a/Gemfile b/Gemfile index 33d4ebb7f2..e082094715 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,7 @@ gem 'default_value_for', '~> 3.3.0' gem 'pg', '~> 1.1' gem 'rugged', '~> 0.28' -gem 'grape-path-helpers', '~> 1.2' +gem 'grape-path-helpers', '~> 1.3' gem 'faraday', '~> 0.12' gem 'marginalia', '~> 1.8.0' @@ -66,7 +66,7 @@ gem 'u2f', '~> 0.2.1' gem 'validates_hostname', '~> 1.0.10' gem 'rubyzip', '~> 2.0.0', require: 'zip' # GitLab Pages letsencrypt support -gem 'acme-client', '~> 2.0.5' +gem 'acme-client', '~> 2.0', '>= 2.0.6' # Browser detection gem 'browser', '~> 2.5' @@ -81,7 +81,9 @@ gem 'gitlab_omniauth-ldap', '~> 2.1.1', require: 'omniauth-ldap' gem 'net-ldap' # API -gem 'grape', '~> 1.1.0' +# Locked at Grape v1.4.0 until https://github.com/ruby-grape/grape/pull/2088 is merged +# Remove config/initializers/grape_patch.rb +gem 'grape', '= 1.4.0' gem 'grape-entity', '~> 0.7.1' gem 'rack-cors', '~> 1.0.6', require: 'rack/cors' @@ -140,6 +142,7 @@ gem 'deckar01-task_list', '2.3.1' gem 'gitlab-markup', '~> 1.7.1' gem 'github-markup', '~> 1.7.0', require: 'github/markup' gem 'commonmarker', '~> 0.20' +gem 'kramdown', '~> 2.2.1' gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~> 6.1.2' gem 'org-ruby', '~> 0.9.12' @@ -148,7 +151,7 @@ gem 'wikicloth', '0.8.1' gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false gem 'asciidoctor-plantuml', '~> 0.0.12' -gem 'rouge', '~> 3.19.0' +gem 'rouge', '~> 3.21.0' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' gem 'nokogiri', '~> 1.10.9' @@ -163,6 +166,8 @@ gem 'diff_match_patch', '~> 0.1.0' # Application server gem 'rack', '~> 2.0.9' +# https://github.com/sharpstone/rack-timeout/blob/master/README.md#rails-apps-manually +gem 'rack-timeout', '~> 0.5.1', require: 'rack/timeout/base' group :unicorn do gem 'unicorn', '~> 5.5' @@ -172,7 +177,6 @@ end group :puma do gem 'gitlab-puma', '~> 4.3.3.gitlab.2', require: false gem 'gitlab-puma_worker_killer', '~> 0.1.1.gitlab.1', require: false - gem 'rack-timeout', require: false end # State machine @@ -242,7 +246,9 @@ gem 'slack-messenger', '~> 2.3.3' gem 'hangouts-chat', '~> 0.0.5' # Asana integration -gem 'asana', '~> 0.9' +# asana 0.10.1 needs faraday 1.0 +# https://gitlab.com/gitlab-org/gitlab/-/issues/224296 +gem 'asana', '0.10.0' # FogBugz integration gem 'ruby-fogbugz', '~> 0.2.1' @@ -300,7 +306,7 @@ gem 'sentry-raven', '~> 2.9' gem 'premailer-rails', '~> 1.10.3' # LabKit: Tracing and Correlation -gem 'gitlab-labkit', '0.12.0' +gem 'gitlab-labkit', '0.12.1' # I18n gem 'ruby_parser', '~> 3.8', require: false @@ -331,10 +337,9 @@ group :development do gem 'danger', '~> 6.0', require: false gem 'letter_opener_web', '~> 1.3.4' - gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false # Better errors handler - gem 'better_errors', '~> 2.5.0' + gem 'better_errors', '~> 2.7.1' gem 'binding_of_caller', '~> 0.8.0' # thin instead webrick @@ -361,7 +366,7 @@ group :development, :test do gem 'spring', '~> 2.0.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'gitlab-styles', '~> 4.2.0', require: false + gem 'gitlab-styles', '~> 4.3.0', require: false # Pin these dependencies, otherwise a new rule could break the CI pipelines gem 'rubocop', '~> 0.82.0' gem 'rubocop-performance', '~> 1.5.2' @@ -370,6 +375,7 @@ group :development, :test do gem 'scss_lint', '~> 0.56.0', require: false gem 'haml_lint', '~> 0.34.0', require: false gem 'simplecov', '~> 0.18.5', require: false + gem 'simplecov-cobertura', '~> 1.3.1', require: false gem 'bundler-audit', '~> 0.6.1', require: false gem 'benchmark-ips', '~> 2.3.0', require: false @@ -383,6 +389,8 @@ group :development, :test do gem 'png_quantizator', '~> 0.2.1', require: false gem 'parallel', '~> 1.19', require: false + + gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false end # Gems required in omnibus-gitlab pipeline @@ -452,7 +460,7 @@ group :ed25519 do end # Gitaly GRPC protocol definitions -gem 'gitaly', '~> 13.1.0.pre.rc1' +gem 'gitaly', '~> 13.2.0.pre.rc2' gem 'grpc', '~> 1.24.0' @@ -497,3 +505,5 @@ gem 'valid_email', '~> 0.1' # JSON gem 'json', '~> 2.3.0' gem 'json-schema', '~> 2.8.0' +gem 'oj', '~> 3.10.6' +gem 'multi_json', '~> 1.14.1' diff --git a/Gemfile.lock b/Gemfile.lock index 69bd523547..fbe5cfff1f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,8 +4,8 @@ GEM RedCloth (4.3.2) abstract_type (0.0.7) ace-rails-ap (4.1.2) - acme-client (2.0.5) - faraday (~> 0.9, >= 0.9.1) + acme-client (2.0.6) + faraday (>= 0.17, < 2.0.0) actioncable (6.0.3.1) actionpack (= 6.0.3.1) nio4r (~> 2.0) @@ -76,7 +76,7 @@ GEM apollo_upload_server (2.0.0.beta.3) graphql (>= 1.8) rails (>= 4.2) - asana (0.9.3) + asana (0.10.0) faraday (~> 0.9) faraday_middleware (~> 0.9) faraday_middleware-multi_json (~> 0.0) @@ -103,10 +103,6 @@ GEM aws-sdk-core (= 2.11.374) aws-sigv4 (1.1.0) aws-eventstream (~> 1.0, >= 1.0.2) - axiom-types (0.1.1) - descendants_tracker (~> 0.0.4) - ice_nine (~> 0.11.0) - thread_safe (~> 0.3, >= 0.3.1) babosa (1.0.2) base32 (0.3.2) batch-loader (1.4.0) @@ -115,7 +111,7 @@ GEM benchmark-ips (2.3.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - better_errors (2.5.0) + better_errors (2.7.1) coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) @@ -164,8 +160,6 @@ GEM nap open4 (~> 1.3) coderay (1.1.2) - coercible (1.0.0) - descendants_tracker (~> 0.0.1) colored2 (3.1.2) commonmarker (0.20.1) ruby-enum (~> 0.5) @@ -221,8 +215,6 @@ GEM ruby-statistics (>= 2.1) thor (>= 0.19, < 2) unicode_plot (>= 0.0.4, < 1.0.0) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) device_detector (1.0.0) devise (4.7.1) bcrypt (~> 3.0) @@ -249,6 +241,28 @@ GEM doorkeeper-openid_connect (1.6.3) doorkeeper (>= 5.0, < 5.2) json-jwt (~> 1.6) + dry-configurable (0.11.5) + concurrent-ruby (~> 1.0) + dry-core (~> 0.4, >= 0.4.7) + dry-equalizer (~> 0.2) + dry-container (0.7.2) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.1, >= 0.1.3) + dry-core (0.4.9) + concurrent-ruby (~> 1.0) + dry-equalizer (0.3.0) + dry-inflector (0.2.0) + dry-logic (1.0.6) + concurrent-ruby (~> 1.0) + dry-core (~> 0.2) + dry-equalizer (~> 0.2) + dry-types (1.4.0) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.4, >= 0.4.4) + dry-equalizer (~> 0.3) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.0, >= 1.0.2) ed25519 (1.2.4) elasticsearch (6.8.0) elasticsearch-api (= 6.8.0) @@ -290,7 +304,7 @@ GEM multipart-post (>= 1.2, < 3) faraday-http-cache (2.0.0) faraday (~> 0.8) - faraday_middleware (0.12.2) + faraday_middleware (0.14.0) faraday (>= 0.7.4, < 1.0) faraday_middleware-aws-signers-v4 (0.1.7) aws-sdk-resources (~> 2) @@ -377,12 +391,12 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) git (1.5.0) - gitaly (13.1.0.pre.rc1) + gitaly (13.2.0.pre.rc2) grpc (~> 1.0) github-markup (1.7.0) gitlab-chronic (0.10.5) numerizer (~> 0.2) - gitlab-labkit (0.12.0) + gitlab-labkit (0.12.1) actionpack (>= 5.0.0, < 6.1.0) activesupport (>= 5.0.0, < 6.1.0) grpc (~> 1.19) @@ -400,7 +414,7 @@ GEM gitlab-puma (>= 2.7, < 5) gitlab-sidekiq-fetcher (0.5.2) sidekiq (~> 5) - gitlab-styles (4.2.0) + gitlab-styles (4.3.0) rubocop (~> 0.82.0) rubocop-gitlab-security (~> 0.1.0) rubocop-performance (~> 1.5.2) @@ -439,19 +453,19 @@ GEM signet (~> 0.14) gpgme (2.0.20) mini_portile2 (~> 2.3) - grape (1.1.0) + grape (1.4.0) activesupport builder + dry-types (>= 1.1) mustermann-grape (~> 1.0.0) rack (>= 1.3.0) rack-accept - virtus (>= 1.0.0) grape-entity (0.7.1) activesupport (>= 4.0) multi_json (>= 1.3.2) - grape-path-helpers (1.2.0) + grape-path-helpers (1.3.0) activesupport - grape (~> 1.0) + grape (~> 1.3) rake (~> 12) grape_logging (1.8.3) grape @@ -575,7 +589,8 @@ GEM kgio (2.11.3) knapsack (1.17.0) rake - kramdown (2.1.0) + kramdown (2.2.1) + rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) kubeclient (4.6.0) @@ -641,9 +656,10 @@ GEM multi_xml (0.6.0) multipart-post (2.1.1) murmurhash3 (0.1.6) - mustermann (1.0.3) - mustermann-grape (1.0.0) - mustermann (~> 1.0.0) + mustermann (1.1.1) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.1) + mustermann (>= 1.0.0) nakayoshi_fork (0.0.4) nap (1.1.0) nenv (0.3.0) @@ -671,6 +687,7 @@ GEM octokit (4.15.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) + oj (3.10.6) omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) @@ -801,7 +818,7 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rack-timeout (0.5.1) + rack-timeout (0.5.2) rails (6.0.3.1) actioncable (= 6.0.3.1) actionmailbox (= 6.0.3.1) @@ -890,7 +907,7 @@ GEM rexml (3.2.4) rinku (2.0.0) rotp (2.1.2) - rouge (3.19.0) + rouge (3.21.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -958,6 +975,7 @@ GEM ruby-saml (1.7.2) nokogiri (>= 1.5.10) ruby-statistics (2.1.2) + ruby2_keywords (0.0.2) ruby_dep (1.5.0) ruby_parser (3.13.1) sexp_processor (~> 4.9) @@ -1003,11 +1021,11 @@ GEM shellany (0.0.1) shoulda-matchers (4.0.1) activesupport (>= 4.2.0) - sidekiq (5.2.7) + sidekiq (5.2.9) connection_pool (~> 2.2, >= 2.2.2) - rack (>= 1.5.0) + rack (~> 2.0) rack-protection (>= 1.5.0) - redis (>= 3.3.5, < 5) + redis (>= 3.3.5, < 4.2) sidekiq-cron (1.0.4) fugit (~> 1.1) sidekiq (>= 4.2.1) @@ -1020,6 +1038,8 @@ GEM simplecov (0.18.5) docile (~> 1.1) simplecov-html (~> 0.11) + simplecov-cobertura (1.3.1) + simplecov (~> 0.8) simplecov-html (0.12.2) sixarm_ruby_unaccent (1.2.0) slack-messenger (2.3.3) @@ -1119,11 +1139,6 @@ GEM activerecord (>= 3.0) activesupport (>= 3.0) version_sorter (2.2.4) - virtus (1.0.5) - axiom-types (~> 0.1) - coercible (~> 1.0) - descendants_tracker (~> 0.0, >= 0.0.3) - equalizer (~> 0.0, >= 0.0.9) vmstat (2.3.0) warden (1.2.8) rack (>= 2.0.6) @@ -1155,13 +1170,13 @@ PLATFORMS DEPENDENCIES RedCloth (~> 4.3.2) ace-rails-ap (~> 4.1.0) - acme-client (~> 2.0.5) + acme-client (~> 2.0, >= 2.0.6) activerecord-explain-analyze (~> 0.1) acts-as-taggable-on (~> 6.0) addressable (~> 2.7) akismet (~> 3.0) apollo_upload_server (~> 2.0.0.beta3) - asana (~> 0.9) + asana (= 0.10.0) asciidoctor (~> 2.0.10) asciidoctor-include-ext (~> 0.3.1) asciidoctor-plantuml (~> 0.0.12) @@ -1175,7 +1190,7 @@ DEPENDENCIES bcrypt_pbkdf (~> 1.0) benchmark-ips (~> 2.3.0) benchmark-memory (~> 0.1) - better_errors (~> 2.5.0) + better_errors (~> 2.7.1) binding_of_caller (~> 0.8.0) bootsnap (~> 1.4.6) bootstrap_form (~> 4.2.0) @@ -1236,10 +1251,10 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly (~> 13.1.0.pre.rc1) + gitaly (~> 13.2.0.pre.rc2) github-markup (~> 1.7.0) gitlab-chronic (~> 0.10.5) - gitlab-labkit (= 0.12.0) + gitlab-labkit (= 0.12.1) gitlab-license (~> 1.0) gitlab-mail_room (~> 0.0.6) gitlab-markup (~> 1.7.1) @@ -1247,16 +1262,16 @@ DEPENDENCIES gitlab-puma (~> 4.3.3.gitlab.2) gitlab-puma_worker_killer (~> 0.1.1.gitlab.1) gitlab-sidekiq-fetcher (= 0.5.2) - gitlab-styles (~> 4.2.0) + gitlab-styles (~> 4.3.0) gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) google-api-client (~> 0.33) google-protobuf (~> 3.8.0) gpgme (~> 2.0.19) - grape (~> 1.1.0) + grape (= 1.4.0) grape-entity (~> 0.7.1) - grape-path-helpers (~> 1.2) + grape-path-helpers (~> 1.3) grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) graphql (~> 1.10.5) @@ -1282,6 +1297,7 @@ DEPENDENCIES jwt (~> 2.1.0) kaminari (~> 1.0) knapsack (~> 1.17) + kramdown (~> 2.2.1) kubeclient (~> 4.6.0) letter_opener_web (~> 1.3.4) license_finder (~> 5.4) @@ -1297,6 +1313,7 @@ DEPENDENCIES mimemagic (~> 0.3.2) mini_magick minitest (~> 5.11.0) + multi_json (~> 1.14.1) nakayoshi_fork (~> 0.0.4) net-ldap net-ntp @@ -1304,6 +1321,7 @@ DEPENDENCIES nokogiri (~> 1.10.9) oauth2 (~> 1.4) octokit (~> 4.15) + oj (~> 3.10.6) omniauth (~> 1.8) omniauth-auth0 (~> 2.0.0) omniauth-authentiq (~> 0.3.3) @@ -1335,7 +1353,7 @@ DEPENDENCIES rack-cors (~> 1.0.6) rack-oauth2 (~> 1.9.3) rack-proxy (~> 0.6.0) - rack-timeout + rack-timeout (~> 0.5.1) rails (~> 6.0.3.1) rails-controller-testing rails-i18n (~> 6.0) @@ -1352,7 +1370,7 @@ DEPENDENCIES request_store (~> 1.5) responders (~> 3.0) retriable (~> 3.1.2) - rouge (~> 3.19.0) + rouge (~> 3.21.0) rqrcode-rails3 (~> 0.1.7) rspec-parameterized rspec-rails (~> 4.0.0) @@ -1380,6 +1398,7 @@ DEPENDENCIES sidekiq-cron (~> 1.0) simple_po_parser (~> 1.1.2) simplecov (~> 0.18.5) + simplecov-cobertura (~> 1.3.1) slack-messenger (~> 2.3.3) snowplow-tracker (~> 0.6.1) spring (~> 2.0.0) diff --git a/VERSION b/VERSION index a40b36ab99..947f4e9963 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -13.1.6 +13.2.1 diff --git a/app/assets/images/confluence.svg b/app/assets/images/confluence.svg new file mode 100644 index 0000000000..f51d4318b6 --- /dev/null +++ b/app/assets/images/confluence.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/logos/jira-gray.svg b/app/assets/images/logos/jira-gray.svg new file mode 100644 index 0000000000..0e7069f2bd --- /dev/null +++ b/app/assets/images/logos/jira-gray.svg @@ -0,0 +1 @@ +jira software-icon-gradient-neutral diff --git a/app/assets/javascripts/alert_management/components/alert_details.vue b/app/assets/javascripts/alert_management/components/alert_details.vue index ed6b4b7fdb..0731349630 100644 --- a/app/assets/javascripts/alert_management/components/alert_details.vue +++ b/app/assets/javascripts/alert_management/components/alert_details.vue @@ -12,18 +12,21 @@ import { GlTable, } from '@gitlab/ui'; import { s__ } from '~/locale'; -import query from '../graphql/queries/details.query.graphql'; +import alertQuery from '../graphql/queries/details.query.graphql'; +import sidebarStatusQuery from '../graphql/queries/sidebar_status.query.graphql'; import { fetchPolicies } from '~/lib/graphql'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import highlightCurrentUser from '~/behaviors/markdown/highlight_current_user'; import initUserPopovers from '~/user_popovers'; import { ALERTS_SEVERITY_LABELS, trackAlertsDetailsViewsOptions } from '../constants'; -import createIssueQuery from '../graphql/mutations/create_issue_from_alert.graphql'; +import createIssueMutation from '../graphql/mutations/create_issue_from_alert.mutation.graphql'; +import toggleSidebarStatusMutation from '../graphql/mutations/toggle_sidebar_status.mutation.graphql'; import { visitUrl, joinPaths } from '~/lib/utils/url_utility'; import Tracking from '~/tracking'; import { toggleContainerClasses } from '~/lib/utils/dom_utils'; import SystemNote from './system_notes/system_note.vue'; import AlertSidebar from './alert_sidebar.vue'; +import AlertMetrics from './alert_metrics.vue'; const containerEl = document.querySelector('.page-with-contextual-sidebar'); @@ -34,6 +37,7 @@ export default { ), fullAlertDetailsTitle: s__('AlertManagement|Alert details'), overviewTitle: s__('AlertManagement|Overview'), + metricsTitle: s__('AlertManagement|Metrics'), reportedAt: s__('AlertManagement|Reported %{when}'), reportedAtWithTool: s__('AlertManagement|Reported %{when} by %{tool}'), }, @@ -51,25 +55,29 @@ export default { TimeAgoTooltip, AlertSidebar, SystemNote, + AlertMetrics, }, - props: { + inject: { + projectPath: { + default: '', + }, alertId: { type: String, - required: true, + default: '', }, - projectPath: { + projectId: { type: String, - required: true, + default: '', }, projectIssuesPath: { type: String, - required: true, + default: '', }, }, apollo: { alert: { fetchPolicy: fetchPolicies.CACHE_AND_NETWORK, - query, + query: alertQuery, variables() { return { fullPath: this.projectPath, @@ -84,15 +92,18 @@ export default { Sentry.captureException(error); }, }, + sidebarStatus: { + query: sidebarStatusQuery, + }, }, data() { return { alert: null, errored: false, + sidebarStatus: false, isErrorDismissed: false, createIssueError: '', issueCreationInProgress: false, - sidebarCollapsed: false, sidebarErrorMessage: '', }; }, @@ -128,10 +139,10 @@ export default { this.sidebarErrorMessage = ''; }, toggleSidebar() { - this.sidebarCollapsed = !this.sidebarCollapsed; + this.$apollo.mutate({ mutation: toggleSidebarStatusMutation }); toggleContainerClasses(containerEl, { - 'right-sidebar-collapsed': this.sidebarCollapsed, - 'right-sidebar-expanded': !this.sidebarCollapsed, + 'right-sidebar-collapsed': !this.sidebarStatus, + 'right-sidebar-expanded': this.sidebarStatus, }); }, handleAlertSidebarError(errorMessage) { @@ -143,7 +154,7 @@ export default { this.$apollo .mutate({ - mutation: createIssueQuery, + mutation: createIssueMutation, variables: { iid: this.alert.iid, projectPath: this.projectPath, @@ -169,9 +180,6 @@ export default { const { category, action } = trackAlertsDetailsViewsOptions; Tracking.event(category, action); }, - alertRefresh() { - this.$apollo.queries.alert.refetch(); - }, }, }; @@ -179,7 +187,7 @@ export default {