From 44f8ec8b25b79d0dac4164735ffaee0c625281fd Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Sun, 24 May 2020 23:13:21 +0530 Subject: [PATCH 1/2] New upstream version 13.0.0 --- .eslintignore | 2 +- .eslintrc.yml | 11 +- .gitlab-ci.yml | 13 +- .gitlab/CODEOWNERS | 8 +- .gitlab/ci/cache-repo.gitlab-ci.yml | 1 - .gitlab/ci/cng.gitlab-ci.yml | 1 - .gitlab/ci/dev-fixtures.gitlab-ci.yml | 14 +- .gitlab/ci/docs.gitlab-ci.yml | 3 +- .gitlab/ci/frontend.gitlab-ci.yml | 89 +- .gitlab/ci/global.gitlab-ci.yml | 74 +- .gitlab/ci/memory.gitlab-ci.yml | 6 +- .gitlab/ci/pages.gitlab-ci.yml | 1 + .gitlab/ci/qa.gitlab-ci.yml | 7 +- .gitlab/ci/rails.gitlab-ci.yml | 223 +- .gitlab/ci/reports.gitlab-ci.yml | 29 +- .gitlab/ci/review.gitlab-ci.yml | 85 +- .gitlab/ci/rules.gitlab-ci.yml | 224 +- .gitlab/ci/setup.gitlab-ci.yml | 4 +- .gitlab/ci/test-metadata.gitlab-ci.yml | 13 + .gitlab/issue_templates/Feature proposal.md | 27 +- .../Productivity Improvement.md | 5 +- .../Security developer workflow.md | 4 +- .../issue_templates/Technical Evaluation.md | 4 +- .../merge_request_templates/Documentation.md | 23 +- .../Security Release.md | 2 +- .haml-lint_todo.yml | 799 ++- .markdownlint.json | 9 + .rubocop.yml | 74 +- .rubocop_todo.yml | 24 - CHANGELOG-EE.md | 33 + CHANGELOG.md | 608 +- GITALY_SERVER_VERSION | 2 +- GITLAB_ELASTICSEARCH_INDEXER_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- GITLAB_SHELL_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 45 +- Gemfile.lock | 193 +- Guardfile | 51 +- README.md | 2 +- VERSION | 2 +- .../images/cluster_app_logos/fluentd.png | Bin 0 -> 2480 bytes .../components/expires_at_field.vue | 14 + app/assets/javascripts/access_tokens/index.js | 12 + .../javascripts/actioncable_consumer.js | 3 + .../components/alert_details.vue | 236 + .../components/alert_management_list.vue | 303 + .../javascripts/alert_management/constants.js | 46 + .../javascripts/alert_management/details.js | 47 + .../fragments/detailItem.fragment.graphql | 11 + .../fragments/listItem.fragment.graphql | 9 + .../mutations/update_alert_status.graphql | 9 + .../graphql/queries/details.query.graphql | 11 + .../graphql/queries/getAlerts.query.graphql | 11 + .../javascripts/alert_management/list.js | 55 + .../alert_management/services/index.js | 7 + .../components/alerts_service_form.vue | 4 +- app/assets/javascripts/api.js | 57 +- app/assets/javascripts/autosave.js | 13 +- app/assets/javascripts/awards_handler.js | 8 +- .../behaviors/copy_to_clipboard.js | 3 +- .../behaviors/markdown/marks/inline_html.js | 4 +- .../markdown/paste_markdown_table.js | 3 +- .../behaviors/markdown/render_gfm.js | 2 +- .../behaviors/markdown/render_mermaid.js | 12 +- .../behaviors/markdown/render_metrics.js | 27 +- .../behaviors/shortcuts/shortcuts_blob.js | 2 +- .../javascripts/blob/blob_fork_suggestion.js | 2 +- .../blob/components/blob_content.vue | 17 +- .../blob/components/blob_content_error.vue | 71 +- .../blob/components/blob_edit_header.vue | 4 +- .../blob/components/blob_header.vue | 2 +- .../blob/components/blob_header_filepath.vue | 14 +- .../blob_header_viewer_switcher.vue | 2 +- .../javascripts/blob/components/constants.js | 56 +- .../components/popover.vue | 3 - app/assets/javascripts/blob/utils.js | 19 +- .../javascripts/boards/components/board.js | 3 - .../boards/components/board_column.vue | 6 +- .../boards/components/board_form.vue | 8 +- .../boards/components/board_sidebar.js | 5 +- .../boards/components/boards_selector.vue | 6 - .../boards/components/issue_card_inner.vue | 4 - app/assets/javascripts/boards/constants.js | 8 + .../boards/filtered_search_boards.js | 2 +- .../boards/icons/fullscreen_collapse.svg | 1 + .../boards/icons/fullscreen_expand.svg | 1 + app/assets/javascripts/boards/index.js | 116 +- .../boards/mixins/sortable_default_options.js | 5 +- .../javascripts/boards/models/assignee.js | 2 +- app/assets/javascripts/boards/models/issue.js | 28 +- app/assets/javascripts/boards/models/list.js | 87 +- .../queries/board_list.fragment.graphql | 5 + .../board_list_shared.fragment.graphql | 15 + .../boards/queries/group_board.query.graphql | 13 + .../queries/project_board.query.graphql | 13 + .../javascripts/boards/stores/boards_store.js | 114 +- app/assets/javascripts/boards/stores/state.js | 4 +- app/assets/javascripts/boards/toggle_focus.js | 46 +- .../javascripts/broadcast_notification.js | 4 +- .../ci_variable_list/ajax_variable_list.js | 4 +- .../components/ci_variable_modal.vue | 8 + .../javascripts/ci_variable_list/constants.js | 2 +- .../javascripts/ci_variable_list/index.js | 4 +- .../ci_variable_list/store/actions.js | 4 + .../ci_variable_list/store/mutation_types.js | 1 + .../ci_variable_list/store/mutations.js | 4 + .../ci_variable_list/store/state.js | 1 + .../javascripts/close_reopen_report_toggle.js | 2 +- .../javascripts/clusters/clusters_bundle.js | 13 +- .../clusters/components/applications.vue | 73 +- .../components/fluentd_output_settings.vue | 241 + .../ingress_modsecurity_settings.vue | 4 +- .../remove_cluster_confirmation.vue | 4 +- app/assets/javascripts/clusters/constants.js | 2 + app/assets/javascripts/clusters/event_hub.js | 4 +- .../clusters/services/clusters_service.js | 1 + .../clusters/stores/clusters_store.js | 19 + .../clusters_list/components/clusters.vue | 166 +- .../javascripts/clusters_list/constants.js | 3 +- .../clusters_list/store/actions.js | 33 +- .../clusters_list/store/mutation_types.js | 1 + .../clusters_list/store/mutations.js | 10 +- .../javascripts/clusters_list/store/state.js | 6 +- .../code_navigation/components/app.vue | 8 +- .../code_navigation/components/popover.vue | 33 +- .../code_navigation/store/actions.js | 9 +- .../code_navigation/store/mutations.js | 3 +- .../code_navigation/store/state.js | 1 + app/assets/javascripts/comment_type_toggle.js | 2 +- app/assets/javascripts/commit/image_file.js | 5 +- app/assets/javascripts/commons/index.js | 1 - .../javascripts/compare_autocomplete.js | 5 +- .../components/dropdown.vue | 2 +- .../eks_cluster_configuration_form.vue | 6 +- .../components/service_credentials_form.vue | 6 +- .../components/gke_project_id_dropdown.vue | 4 +- .../javascripts/create_item_dropdown.js | 8 +- .../create_merge_request_dropdown.js | 2 +- .../cycle_analytics/cycle_analytics_store.js | 2 +- .../javascripts/deploy_keys/eventhub.js | 4 +- .../design_management/components/app.vue | 3 + .../components/delete_button.vue | 64 + .../components/design_destroyer.vue | 66 + .../components/design_note_pin.vue | 61 + .../design_notes/design_discussion.vue | 169 + .../components/design_notes/design_note.vue | 148 + .../design_notes/design_reply_form.vue | 137 + .../components/design_overlay.vue | 279 + .../components/design_presentation.vue | 314 + .../components/design_scaler.vue | 65 + .../design_management/components/image.vue | 110 + .../components/list/item.vue | 174 + .../components/toolbar/index.vue | 126 + .../components/toolbar/pagination.vue | 83 + .../components/toolbar/pagination_button.vue | 48 + .../components/upload/button.vue | 58 + .../components/upload/design_dropzone.vue | 134 + .../upload/design_version_dropdown.vue | 76 + .../design_management/constants.js | 14 + .../javascripts/design_management/graphql.js | 45 + .../graphql/fragments/design.fragment.graphql | 22 + .../fragments/designList.fragment.graphql | 8 + .../fragments/designNote.fragment.graphql | 28 + .../fragments/diffRefs.fragment.graphql | 5 + .../note_permissions.fragment.graphql | 3 + .../fragments/version.fragment.graphql | 4 + .../createImageDiffNote.mutation.graphql | 21 + .../mutations/createNote.mutation.graphql | 10 + .../mutations/destroyDesign.mutation.graphql | 10 + .../updateImageDiffNote.mutation.graphql | 10 + .../update_active_discussion.mutation.graphql | 3 + .../mutations/update_note.mutation.graphql | 10 + .../mutations/uploadDesign.mutation.graphql | 21 + .../queries/active_discussion.query.graphql | 6 + .../graphql/queries/appData.query.graphql | 4 + .../queries/design_permissions.query.graphql | 10 + .../graphql/queries/getDesign.query.graphql | 31 + .../queries/get_design_list.query.graphql | 26 + .../graphql/typedefs.graphql | 12 + .../javascripts/design_management/index.js | 58 + .../design_management/mixins/all_designs.js | 49 + .../design_management/mixins/all_versions.js | 62 + .../design_management/pages/design/index.vue | 400 ++ .../design_management/pages/index.vue | 323 + .../design_management/router/constants.js | 3 + .../design_management/router/index.js | 22 + .../design_management/router/routes.js | 44 + .../design_management/utils/cache_update.js | 272 + .../utils/design_management_utils.js | 125 + .../design_management/utils/error_messages.js | 95 + .../design_management/utils/tracking.js | 28 + .../components/comment_resolve_btn.js | 21 +- .../components/jump_to_discussion.js | 11 +- .../javascripts/diffs/components/app.vue | 23 + .../diffs/components/commit_item.vue | 75 + .../diffs/components/diff_discussions.vue | 8 +- .../diffs/components/diff_file.vue | 4 +- .../diffs/components/diff_file_header.vue | 6 +- .../diffs/components/edit_button.vue | 36 +- .../diffs/components/no_changes.vue | 6 +- app/assets/javascripts/diffs/store/actions.js | 80 + .../diffs/store/getters_versions_dropdowns.js | 5 +- .../javascripts/diffs/store/mutation_types.js | 2 + .../javascripts/diffs/store/mutations.js | 5 + app/assets/javascripts/diffs/store/utils.js | 53 +- app/assets/javascripts/dropzone_input.js | 6 +- app/assets/javascripts/editor/editor_lite.js | 4 + .../components/confirm_rollback_modal.vue | 10 +- .../environments/components/container.vue | 34 +- .../components/delete_environment_modal.vue | 2 +- .../components/environment_item.vue | 13 +- .../components/environments_app.vue | 33 +- .../components/environments_table.vue | 33 +- .../components/stop_environment_modal.vue | 2 +- .../javascripts/environments/event_hub.js | 4 +- .../folder/environments_folder_bundle.js | 2 +- .../folder/environments_folder_view.vue | 28 +- app/assets/javascripts/environments/index.js | 2 +- .../mixins/canary_callout_mixin.js | 23 +- .../environments/mixins/container_mixin.js | 34 - .../mixins/environment_item_mixin.js | 13 - .../mixins/environments_app_mixin.js | 32 - .../mixins/environments_folder_view_mixin.js | 29 - .../mixins/environments_table_mixin.js | 10 - .../environments/stores/environments_store.js | 20 +- .../components/error_tracking_list.vue | 6 +- .../components/stacktrace_entry.vue | 4 +- .../error_tracking/store/actions.js | 2 +- .../javascripts/filtered_search/constants.js | 5 + .../filtered_search/dropdown_operator.js | 10 +- .../javascripts/filtered_search/event_hub.js | 4 +- .../filtered_search_dropdown.js | 41 + .../filtered_search_dropdown_manager.js | 2 +- .../filtered_search_manager.js | 17 +- .../stores/recent_searches_store.js | 14 +- .../filtered_search/visual_token_value.js | 4 +- app/assets/javascripts/flash.js | 6 +- .../frequent_items/components/app.vue | 2 +- .../javascripts/frequent_items/event_hub.js | 4 +- app/assets/javascripts/gfm_auto_complete.js | 18 +- app/assets/javascripts/gl_dropdown.js | 15 +- app/assets/javascripts/gl_form.js | 8 +- .../javascripts/groups/components/app.vue | 7 +- app/assets/javascripts/groups/event_hub.js | 4 +- .../javascripts/groups/new_group_child.js | 2 +- app/assets/javascripts/header.js | 23 +- .../javascripts/helpers/avatar_helper.js | 5 +- .../javascripts/helpers/event_hub_factory.js | 20 + .../ide/components/commit_sidebar/actions.vue | 4 +- .../commit_sidebar/editor_header.vue | 6 +- .../ide/components/commit_sidebar/form.vue | 37 +- .../ide/components/commit_sidebar/list.vue | 18 +- app/assets/javascripts/ide/components/ide.vue | 24 +- .../javascripts/ide/components/ide_review.vue | 2 +- .../ide/components/ide_side_bar.vue | 2 +- .../javascripts/ide/components/ide_tree.vue | 18 +- .../ide/components/jobs/detail.vue | 4 +- .../javascripts/ide/components/nav_form.vue | 4 +- .../ide/components/new_dropdown/index.vue | 7 +- .../ide/components/new_dropdown/modal.vue | 112 +- .../components/panes/collapsible_sidebar.vue | 3 +- .../ide/components/pipelines/list.vue | 11 +- .../ide/components/repo_commit_section.vue | 29 +- .../ide/components/repo_editor.vue | 32 +- .../ide/components/resizable_panel.vue | 31 +- app/assets/javascripts/ide/constants.js | 1 + app/assets/javascripts/ide/eventhub.js | 4 +- app/assets/javascripts/ide/lib/diff/diff.js | 13 +- app/assets/javascripts/ide/lib/editor.js | 3 + .../javascripts/ide/lib/languages/index.js | 5 + .../javascripts/ide/lib/languages/vue.js | 306 + .../javascripts/ide/lib/themes/index.js | 20 + .../javascripts/ide/lib/themes/monokai.js | 169 + app/assets/javascripts/ide/lib/themes/none.js | 17 + .../ide/lib/themes/solarized_dark.js | 1110 ++++ .../ide/lib/themes/solarized_light.js | 1101 ++++ app/assets/javascripts/ide/services/index.js | 8 +- app/assets/javascripts/ide/stores/actions.js | 20 +- .../javascripts/ide/stores/actions/project.js | 6 +- .../javascripts/ide/stores/actions/tree.js | 2 +- .../ide/stores/modules/commit/actions.js | 36 +- .../javascripts/ide/stores/mutation_types.js | 3 - .../javascripts/ide/stores/mutations.js | 19 - .../ide/stores/mutations/project.js | 4 +- .../javascripts/ide/stores/mutations/tree.js | 5 +- app/assets/javascripts/ide/stores/state.js | 2 - app/assets/javascripts/ide/stores/utils.js | 43 + app/assets/javascripts/ide/utils.js | 16 + .../image_diff/helpers/badge_helper.js | 4 +- .../helpers/comment_indicator_helper.js | 4 +- .../image_diff/helpers/dom_helper.js | 11 +- .../javascripts/image_diff/image_diff.js | 6 +- .../javascripts/import_projects/event_hub.js | 4 +- app/assets/javascripts/importer_status.js | 6 +- .../edit/components/active_toggle.vue | 11 +- .../edit/components/integration_form.vue | 50 + .../edit/components/jira_trigger_fields.vue | 99 + .../edit/components/trigger_fields.vue | 73 + .../integrations/edit/event_hub.js | 4 +- .../javascripts/integrations/edit/index.js | 40 +- .../issuable_bulk_update_actions.js | 8 +- .../issuable_bulk_update_sidebar.js | 2 +- .../queries/issue_sidebar.query.graphql | 15 + .../components/issuable_list_root_app.vue | 96 + .../javascripts/issuables_list/eventhub.js | 6 +- .../javascripts/issuables_list/index.js | 55 +- .../get_issues_list_details.query.graphql | 22 + app/assets/javascripts/issue.js | 56 +- .../javascripts/issue_show/components/app.vue | 13 +- .../components/fields/description.vue | 32 +- .../javascripts/issue_show/event_hub.js | 4 +- .../components/jira_import_app.vue | 70 +- .../components/jira_import_form.vue | 23 +- .../components/jira_import_progress.vue | 5 +- .../components/jira_import_setup.vue | 6 +- app/assets/javascripts/jira_import/index.js | 1 + .../get_jira_import_details.query.graphql | 2 +- app/assets/javascripts/jira_import/utils.js | 49 + .../jobs/components/environments_block.vue | 8 +- app/assets/javascripts/jobs/store/actions.js | 4 +- app/assets/javascripts/jobs/store/state.js | 2 +- app/assets/javascripts/labels_select.js | 50 +- app/assets/javascripts/lib/graphql.js | 1 + .../javascripts/lib/utils/datetime_utility.js | 13 + .../javascripts/lib/utils/downloader.js | 20 + app/assets/javascripts/lib/utils/keycodes.js | 3 + app/assets/javascripts/lib/utils/keys.js | 4 + .../javascripts/lib/utils/text_markdown.js | 7 +- .../javascripts/lib/utils/url_utility.js | 66 +- app/assets/javascripts/line_highlighter.js | 9 +- app/assets/javascripts/locale/sprintf.js | 2 +- app/assets/javascripts/main.js | 5 +- .../javascripts/member_expiration_date.js | 3 - app/assets/javascripts/merge_request_tabs.js | 4 +- app/assets/javascripts/milestone_select.js | 41 +- .../milestones/project_milestone_combobox.vue | 228 + app/assets/javascripts/mirrors/ssh_mirror.js | 4 +- .../monitoring/components/alert_widget.vue | 286 + .../components/alert_widget_form.vue | 307 + .../monitoring/components/charts/anomaly.vue | 6 +- .../monitoring/components/charts/heatmap.vue | 2 +- .../components/charts/time_series.vue | 13 +- .../monitoring/components/dashboard.vue | 279 +- .../{panel_type.vue => dashboard_panel.vue} | 187 +- .../components/dashboards_dropdown.vue | 55 +- .../components/embeds/metric_embed.vue | 8 +- .../components/variables/custom_variable.vue | 50 + .../components/variables/text_variable.vue | 39 + .../components/variables_section.vue | 56 + .../javascripts/monitoring/constants.js | 84 + .../monitoring/monitoring_bundle.js | 2 +- .../monitoring_bundle_with_alerts.js | 13 + .../monitoring/services/alerts_service.js | 32 + .../javascripts/monitoring/stores/actions.js | 84 +- .../javascripts/monitoring/stores/getters.js | 28 + .../monitoring/stores/mutation_types.js | 10 +- .../monitoring/stores/mutations.js | 36 +- .../javascripts/monitoring/stores/state.js | 17 + .../javascripts/monitoring/stores/utils.js | 2 + .../monitoring/stores/variable_mapping.js | 167 + app/assets/javascripts/monitoring/utils.js | 201 +- .../javascripts/monitoring/validators.js | 44 + app/assets/javascripts/namespace_select.js | 8 +- app/assets/javascripts/new_branch_form.js | 5 +- .../javascripts/notebook/cells/markdown.vue | 34 +- .../notebook/cells/output/index.vue | 3 + app/assets/javascripts/notes.js | 19 +- .../notes/components/comment_form.vue | 83 +- .../notes/components/discussion_counter.vue | 19 +- .../notes/components/note_form.vue | 6 +- .../notes/components/note_header.vue | 93 +- .../notes/components/noteable_note.vue | 10 +- .../notes/components/notes_app.vue | 5 +- app/assets/javascripts/notes/index.js | 4 +- .../notes/mixins/discussion_navigation.js | 2 +- .../javascripts/notes/stores/actions.js | 17 +- .../javascripts/notes/stores/getters.js | 2 + app/assets/javascripts/notes/stores/index.js | 6 +- .../javascripts/notes/stores/modules/index.js | 2 + .../notes/stores/mutation_types.js | 1 + .../javascripts/notes/stores/mutations.js | 4 + .../application_settings/general/index.js | 2 +- .../pages/admin/impersonation_tokens/index.js | 4 +- .../index/components/delete_project_modal.vue | 8 +- .../users/components/delete_user_modal.vue | 8 +- .../components/delete_milestone_modal.vue | 2 +- .../components/promote_milestone_modal.vue | 2 +- .../pages/milestones/shared/event_hub.js | 4 +- .../profiles/personal_access_tokens/index.js | 4 +- .../alert_management/details/index.js | 5 + .../projects/alert_management/index/index.js | 5 + .../pages/projects/blob/new/index.js | 11 +- .../pages/projects/blob/show/index.js | 7 +- .../projects/environments/metrics/index.js | 2 +- .../pages/projects/issues/index/index.js | 5 +- .../javascripts/pages/projects/issues/show.js | 10 + .../labels/components/promote_label_modal.vue | 4 +- .../pages/projects/labels/event_hub.js | 4 +- .../components/interval_pattern_input.vue | 139 +- .../components/pipeline_schedules_callout.vue | 3 +- .../pipeline_schedules/shared/init_form.js | 4 +- .../pages/projects/pipelines/dag/index.js | 2 + .../pages/projects/pipelines/index/index.js | 1 + .../projects/settings/access_tokens/index.js | 3 + .../permissions/components/settings_panel.vue | 49 +- .../wikis/components/delete_wiki_modal.vue | 5 +- .../javascripts/pages/projects/wikis/wikis.js | 13 + .../pages/search/init_filtered_search.js | 2 +- .../components/detailed_metric.vue | 4 +- .../javascripts/persistent_user_callout.js | 5 + .../components/graph/job_group_dropdown.vue | 4 +- .../components/graph/job_name_component.vue | 4 +- .../graph/stage_column_component.vue | 4 +- .../pipelines/components/pipelines.vue | 44 +- .../components/pipelines_filtered_search.vue | 91 + .../components/pipelines_table_row.vue | 5 +- .../pipelines/components/stage.vue | 2 +- .../components/test_reports/test_reports.vue | 3 +- .../components/test_reports/test_summary.vue | 9 +- .../test_reports/test_summary_table.vue | 18 +- .../tokens/pipeline_branch_name_token.vue | 70 + .../tokens/pipeline_trigger_author_token.vue | 114 + app/assets/javascripts/pipelines/constants.js | 10 + .../pipelines/pipeline_details_bundle.js | 69 +- .../pipelines/services/pipelines_service.js | 14 +- .../pipelines/stores/pipeline_store.js | 2 +- .../components/delete_account_modal.vue | 2 +- .../account/components/update_username.vue | 10 +- app/assets/javascripts/project_select.js | 23 +- .../commits/components/author_select.vue | 1 + .../projects/commits/store/actions.js | 6 +- .../pipelines/charts/components/app.vue | 3 + .../explorer/components/image_list.vue | 124 + .../registry/explorer/constants.js | 44 +- .../javascripts/registry/explorer/index.js | 2 +- .../registry/explorer/pages/details.vue | 168 +- .../registry/explorer/pages/index.vue | 39 +- .../registry/explorer/pages/list.vue | 174 +- .../javascripts/registry/explorer/router.js | 12 +- .../registry/explorer/stores/actions.js | 11 +- .../registry/explorer/stores/index.js | 1 + .../settings/registry_settings_bundle.js | 2 +- .../registry/settings/store/getters.js | 1 + .../registry/settings/store/mutations.js | 2 +- .../components/expiration_policy_fields.vue | 116 +- .../javascripts/registry/shared/constants.js | 32 +- .../releases/components/app_edit.vue | 74 +- .../releases/components/app_index.vue | 11 +- .../releases/components/asset_links_form.vue | 2 +- .../releases/components/evidence_block.vue | 8 +- .../components/release_block_footer.vue | 7 +- .../components/release_block_header.vue | 13 +- .../components/release_block_metadata.vue | 15 +- .../release_block_milestone_info.vue | 12 +- .../releases/stores/modules/detail/actions.js | 11 +- .../stores/modules/detail/mutation_types.js | 1 + .../stores/modules/detail/mutations.js | 4 + .../releases/stores/modules/detail/state.js | 4 + .../components/accessibility_issue_body.vue | 30 +- .../grouped_accessibility_reports_app.vue | 64 + .../accessibility_report/store/actions.js | 79 + .../accessibility_report/store/getters.js | 48 + .../accessibility_report}/store/index.js | 17 +- .../store/mutation_types.js | 5 + .../accessibility_report/store/mutations.js | 20 + .../accessibility_report/store/state.js | 28 + .../components/grouped_issues_list.vue | 93 + .../components/grouped_test_reports_app.vue | 15 +- .../reports/components/issue_status_icon.vue | 3 +- .../reports/components/report_section.vue | 2 +- app/assets/javascripts/reports/constants.js | 3 + .../javascripts/reports/store/mutations.js | 3 +- .../repository/components/breadcrumbs.vue | 2 +- .../repository/components/last_commit.vue | 5 +- .../repository/components/table/row.vue | 5 +- .../queries/commit.fragment.graphql | 1 + .../queries/pathLastCommit.query.graphql | 1 + app/assets/javascripts/repository/router.js | 21 +- .../javascripts/repository/utils/commit.js | 1 + app/assets/javascripts/right_sidebar.js | 3 +- app/assets/javascripts/search_autocomplete.js | 4 +- .../serverless/components/area.vue | 4 +- .../javascripts/serverless/event_hub.js | 4 +- .../javascripts/set_status_modal/event_hub.js | 4 +- .../components/assignees/assignees.vue | 4 +- .../assignees/assignees_realtime.vue | 75 + .../assignees/sidebar_assignees.vue | 24 + .../assignees/uncollapsed_assignee_list.vue | 2 +- .../confidential_issue_sidebar.vue | 23 +- .../confidential/edit_form_buttons.vue | 7 +- .../components/participants/participants.vue | 18 +- .../sidebar/lib/sidebar_move_issue.js | 4 +- .../javascripts/sidebar/mount_sidebar.js | 21 +- .../sidebar/stores/sidebar_store.js | 4 + .../javascripts/snippet/snippet_bundle.js | 24 +- .../javascripts/snippets/components/edit.vue | 18 +- .../snippets/components/snippet_blob_edit.vue | 6 +- .../snippets/components/snippet_blob_view.vue | 36 +- .../components/snippet_description_edit.vue | 4 +- .../components/snippet_description_view.vue | 21 + .../snippets/components/snippet_header.vue | 40 +- .../snippets/components/snippet_title.vue | 10 +- .../fragments/snippetBase.fragment.graphql | 2 + .../static_site_editor/components/app.vue | 3 + .../components/edit_area.vue | 51 +- .../components/publish_toolbar.vue | 15 +- .../components/saved_changes_message.vue | 7 +- .../components/skeleton_loader.vue | 19 + .../components/static_site_editor.vue | 95 - .../static_site_editor/constants.js | 7 +- .../static_site_editor/graphql/index.js | 39 + .../submit_content_changes.mutation.graphql | 7 + .../graphql/queries/app_data.query.graphql | 9 + .../queries/saved_content_meta.query.graphql | 3 + .../queries/source_content.query.graphql | 9 + .../graphql/resolvers/file.js | 11 + .../resolvers/submit_content_changes.js | 24 + .../graphql/typedefs.graphql | 43 + .../javascripts/static_site_editor/index.js | 33 +- .../static_site_editor/pages/home.vue | 120 + .../static_site_editor/pages/success.vue | 35 + .../static_site_editor/router/constants.js | 2 + .../static_site_editor/router/index.js | 15 + .../static_site_editor/router/routes.js | 21 + .../services/submit_content_changes.js | 15 +- .../static_site_editor/store/actions.js | 37 - .../static_site_editor/store/getters.js | 2 - .../store/mutation_types.js | 8 - .../static_site_editor/store/mutations.js | 36 - .../static_site_editor/store/state.js | 23 - app/assets/javascripts/syntax_highlight.js | 13 +- app/assets/javascripts/terminal/terminal.js | 13 +- app/assets/javascripts/tracking.js | 47 +- app/assets/javascripts/tree.js | 5 +- .../javascripts/users_select/constants.js | 18 + .../index.js} | 70 +- app/assets/javascripts/users_select/utils.js | 27 + .../components/deployment/deployment_info.vue | 2 +- .../components/mr_collapsible_extension.vue | 2 +- .../components/mr_widget_header.vue | 4 +- .../components/mr_widget_pipeline.vue | 15 +- .../mr_widget_pipeline_container.vue | 3 +- .../components/mr_widget_terraform_plan.vue | 19 +- .../components/states/commits_header.vue | 4 +- .../states/mr_widget_auto_merge_enabled.vue | 3 +- .../components/states/mr_widget_closed.vue | 2 +- .../components/states/mr_widget_conflicts.vue | 4 +- .../components/states/mr_widget_merged.vue | 2 +- .../states/mr_widget_pipeline_tour.vue | 21 +- .../components/states/ready_to_merge.vue | 25 +- .../components/states/squash_before_merge.vue | 2 +- .../vue_merge_request_widget/event_hub.js | 4 +- .../mixins/ready_to_merge.js | 6 + .../mr_widget_options.vue | 19 +- .../stores/get_state_key.js | 2 +- .../stores/mr_widget_store.js | 16 +- .../vue_shared/components/awards_list.vue | 17 +- .../components/blob_viewers/rich_viewer.vue | 6 +- .../components/blob_viewers/simple_viewer.vue | 3 +- .../vue_shared/components/ci_icon.vue | 2 +- .../components/clipboard_button.vue | 1 + .../vue_shared/components/clone_dropdown.vue | 16 +- .../vue_shared/components/code_block.vue | 21 +- .../vue_shared/components/commit.vue | 2 +- .../content_viewer/content_viewer.vue | 12 + .../content_viewer/lib/viewer_utils.js | 4 +- .../viewers/markdown_viewer.vue | 30 +- .../date_time_picker/date_time_picker.vue | 16 +- .../components/file_finder/item.vue | 4 +- .../components/file_icon/file_icon_map.js | 2 + .../vue_shared/components/file_row.vue | 13 - .../vue_shared/components/form/title.vue | 1 + .../vue_shared/components/gl_mentions.vue | 2 +- .../vue_shared/components/identicon.vue | 2 +- .../components/issue/issue_warning.vue | 6 +- .../issue/related_issuable_item.vue | 40 +- .../vue_shared/components/markdown/field.vue | 4 +- .../components/markdown/field_view.vue | 19 + .../components/recaptcha_eventhub.js | 4 +- .../rich_content_editor/constants.js | 37 + .../rich_content_editor.vue | 65 + .../rich_content_editor/toolbar_item.vue | 20 + .../rich_content_editor/toolbar_service.js | 32 + .../components/sidebar/labels_select/base.vue | 7 - .../sidebar/labels_select/dropdown_button.vue | 6 - .../sidebar/labels_select/dropdown_value.vue | 6 - .../sidebar/labels_select_vue/constants.js | 5 + .../labels_select_vue/dropdown_button.vue | 28 +- .../dropdown_contents_create_view.vue | 44 +- .../dropdown_contents_labels_view.vue | 66 +- .../labels_select_vue/dropdown_value.vue | 8 +- .../sidebar/labels_select_vue/label_item.vue | 52 + .../labels_select_vue/labels_select_root.vue | 73 +- .../labels_select_vue/store/getters.js | 22 +- .../labels_select_vue/store/mutations.js | 26 +- .../sidebar/labels_select_vue/store/state.js | 4 +- .../badges/gitlab_team_member_badge.vue | 27 - .../user_avatar/user_avatar_svg.vue | 38 - .../mixins/ci_pagination_api_mixin.js | 29 +- app/assets/stylesheets/application.scss | 8 + .../stylesheets/bootstrap_migration.scss | 2 +- .../components/dashboard_skeleton.scss | 2 +- .../components/design_management/design.scss | 140 + .../design_management/design_list_item.scss | 19 + .../design_version_dropdown.scss | 3 + .../components/milestone_combobox.scss | 13 + .../components/related_items_list.scss | 123 +- .../components/rich_content_editor.scss | 11 + .../stylesheets/framework/animations.scss | 2 +- app/assets/stylesheets/framework/buttons.scss | 4 + app/assets/stylesheets/framework/common.scss | 59 +- .../stylesheets/framework/dropdowns.scss | 21 +- app/assets/stylesheets/framework/header.scss | 1 + .../secondary_navigation_elements.scss | 10 +- app/assets/stylesheets/framework/tables.scss | 23 +- .../stylesheets/framework/typography.scss | 13 +- .../stylesheets/framework/variables.scss | 8 +- .../stylesheets/page_bundles/_ide_mixins.scss | 1 - .../page_bundles/_ide_monaco_overrides.scss | 23 +- .../page_bundles/_ide_theme_overrides.scss | 308 + app/assets/stylesheets/page_bundles/ide.scss | 191 +- .../page_bundles/ide_themes/README.md | 53 + .../page_bundles/ide_themes/_dark.scss | 50 + .../pages/alert_management/details.scss | 42 + .../pages/alert_management/list.scss | 83 + .../alert_management/severity-icons.scss | 26 + app/assets/stylesheets/pages/boards.scss | 24 + app/assets/stylesheets/pages/commits.scss | 12 + .../stylesheets/pages/cycle_analytics.scss | 1 - app/assets/stylesheets/pages/error_list.scss | 2 +- app/assets/stylesheets/pages/issuable.scss | 13 - app/assets/stylesheets/pages/issues.scss | 10 + app/assets/stylesheets/pages/labels.scss | 5 +- app/assets/stylesheets/pages/milestone.scss | 4 - app/assets/stylesheets/pages/notes.scss | 24 +- .../stylesheets/pages/pipeline_schedules.scss | 5 - app/assets/stylesheets/pages/prometheus.scss | 14 +- app/assets/stylesheets/pages/settings.scss | 10 - app/assets/stylesheets/snippets.scss | 6 +- app/assets/stylesheets/utilities.scss | 34 + app/channels/application_cable/channel.rb | 6 + app/channels/application_cable/connection.rb | 22 + app/channels/issues_channel.rb | 13 + .../admin/appearances_controller.rb | 1 + .../admin/application_settings_controller.rb | 4 +- .../admin/ci/variables_controller.rb | 48 + app/controllers/admin/dashboard_controller.rb | 1 + app/controllers/admin/logs_controller.rb | 24 - app/controllers/admin/sessions_controller.rb | 1 + app/controllers/admin/users_controller.rb | 2 +- app/controllers/application_controller.rb | 67 +- app/controllers/boards/issues_controller.rb | 3 - .../clusters/applications_controller.rb | 2 +- .../clusters/clusters_controller.rb | 40 +- app/controllers/concerns/boards_actions.rb | 3 + app/controllers/concerns/impersonation.rb | 43 + app/controllers/concerns/issuable_actions.rb | 3 + .../concerns/issuable_collections_action.rb | 4 + app/controllers/concerns/known_sign_in.rb | 31 + .../concerns/members_presentation.rb | 1 + app/controllers/concerns/metrics_dashboard.rb | 29 +- app/controllers/concerns/notes_actions.rb | 2 +- app/controllers/concerns/preview_markdown.rb | 2 +- .../concerns/record_user_last_activity.rb | 1 - .../concerns/renders_ldap_servers.rb | 19 + app/controllers/concerns/service_params.rb | 1 + app/controllers/concerns/snippets_actions.rb | 15 +- app/controllers/concerns/spammable_actions.rb | 2 +- .../dashboard/projects_controller.rb | 6 +- app/controllers/dashboard_controller.rb | 1 + .../google_api/authorizations_controller.rb | 3 + app/controllers/graphql_controller.rb | 14 +- .../groups/group_links_controller.rb | 5 - .../groups/group_members_controller.rb | 51 +- .../registry/repositories_controller.rb | 4 +- .../groups/settings/repository_controller.rb | 2 +- app/controllers/groups_controller.rb | 6 +- app/controllers/help_controller.rb | 4 +- app/controllers/ide_controller.rb | 4 - app/controllers/import/github_controller.rb | 2 +- .../import/google_code_controller.rb | 4 +- app/controllers/jwt_controller.rb | 11 +- .../ldap/omniauth_callbacks_controller.rb | 4 + .../omniauth_callbacks_controller.rb | 11 + .../projects/alert_management_controller.rb | 16 + .../projects/artifacts_controller.rb | 15 +- .../projects/branches_controller.rb | 1 - ...y_build_group_report_results_controller.rb | 77 + .../designs/raw_images_controller.rb | 30 + .../designs/resized_image_controller.rb | 46 + .../design_management/designs_controller.rb | 21 + .../projects/environments_controller.rb | 15 +- app/controllers/projects/graphs_controller.rb | 22 + .../projects/import/jira_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 23 +- .../projects/mattermosts_controller.rb | 2 +- .../merge_requests/creations_controller.rb | 8 - .../merge_requests/diffs_controller.rb | 2 + .../projects/merge_requests_controller.rb | 23 +- .../projects/pages_domains_controller.rb | 10 +- .../projects/pipelines_controller.rb | 47 +- .../projects/project_members_controller.rb | 14 +- app/controllers/projects/refs_controller.rb | 39 +- .../registry/repositories_controller.rb | 3 +- .../settings/access_tokens_controller.rb | 71 + .../settings/repository_controller.rb | 2 +- .../projects/snippets_controller.rb | 11 +- app/controllers/projects/tree_controller.rb | 2 +- .../projects/usage_ping_controller.rb | 6 + app/controllers/projects/wikis_controller.rb | 27 +- app/controllers/projects_controller.rb | 12 +- app/controllers/registrations_controller.rb | 3 +- .../repositories/git_http_controller.rb | 8 - app/controllers/search_controller.rb | 11 - app/controllers/sessions_controller.rb | 14 +- app/controllers/snippets_controller.rb | 25 +- app/controllers/user_callouts_controller.rb | 2 +- app/finders/alert_management/alerts_finder.rb | 55 + app/finders/artifacts_finder.rb | 24 - ...daily_build_group_report_results_finder.rb | 37 + app/finders/ci/job_artifacts_finder.rb | 26 + .../clusters/knative_services_finder.rb | 1 + app/finders/container_repositories_finder.rb | 13 +- .../design_management/designs_finder.rb | 57 + .../design_management/versions_finder.rb | 58 + app/finders/freeze_periods_finder.rb | 14 + app/finders/group_members_finder.rb | 2 - app/finders/issuable_finder.rb | 133 +- app/finders/issuable_finder/params.rb | 2 + app/finders/issues_finder/params.rb | 2 +- app/finders/members_finder.rb | 16 +- .../users_starred_dashboards_finder.rb | 35 + .../projects/serverless/functions_finder.rb | 1 + app/finders/projects_finder.rb | 4 +- app/finders/releases_finder.rb | 20 +- app/finders/todos_finder.rb | 2 +- .../mutations/alert_management/base.rb | 40 + .../alert_management/create_alert_issue.rb | 30 + .../alert_management/update_alert_status.rb | 35 + app/graphql/mutations/base_mutation.rb | 2 +- app/graphql/mutations/branches/create.rb | 51 + .../mutations/design_management/base.rb | 23 + .../mutations/design_management/delete.rb | 66 + .../mutations/design_management/upload.rb | 38 + .../metrics/dashboard/annotations/create.rb | 106 + app/graphql/mutations/snippets/base.rb | 2 + app/graphql/mutations/snippets/create.rb | 9 + .../alert_status_counts_resolver.rb | 13 + .../alert_management_alert_resolver.rb | 31 + app/graphql/resolvers/board_lists_resolver.rb | 38 + .../resolvers/branch_commit_resolver.rb | 17 + .../design_at_version_resolver.rb | 46 + .../design_management/design_resolver.rb | 57 + .../design_management/designs_resolver.rb | 50 + .../version/design_at_version_resolver.rb | 95 + .../version/designs_at_version_resolver.rb | 60 + .../version_in_collection_resolver.rb | 45 + .../design_management/version_resolver.rb | 25 + .../design_management/versions_resolver.rb | 76 + app/graphql/resolvers/issues_resolver.rb | 18 +- .../metrics/dashboards/annotation_resolver.rb | 1 - app/graphql/resolvers/milestone_resolver.rb | 31 +- .../resolvers/namespace_projects_resolver.rb | 2 + app/graphql/resolvers/projects_resolver.rb | 31 + app/graphql/resolvers/release_resolver.rb | 25 + app/graphql/resolvers/releases_resolver.rb | 21 + .../types/alert_management/alert_sort_enum.rb | 25 + .../alert_status_counts_type.rb | 30 + .../types/alert_management/alert_type.rb | 88 + .../types/alert_management/severity_enum.rb | 14 + .../types/alert_management/status_enum.rb | 14 + app/graphql/types/board_list_type.rb | 26 + app/graphql/types/board_type.rb | 7 + app/graphql/types/branch_type.rb | 18 + app/graphql/types/commit_type.rb | 1 + .../design_at_version_type.rb | 37 + .../design_collection_type.rb | 44 + .../types/design_management/design_fields.rb | 78 + .../types/design_management/design_type.rb | 44 + .../design_version_event_enum.rb | 18 + .../types/design_management/version_type.rb | 37 + app/graphql/types/design_management_type.rb | 18 + app/graphql/types/grafana_integration_type.rb | 2 +- app/graphql/types/issuable_sort_enum.rb | 7 + app/graphql/types/issue_sort_enum.rb | 6 +- app/graphql/types/issue_type.rb | 8 + app/graphql/types/jira_import_type.rb | 5 +- app/graphql/types/metrics/dashboard_type.rb | 3 +- .../metrics/dashboards/annotation_type.rb | 4 +- app/graphql/types/mutation_type.rb | 6 + app/graphql/types/notes/noteable_type.rb | 4 +- app/graphql/types/permission_types/issue.rb | 8 +- app/graphql/types/permission_types/project.rb | 4 +- app/graphql/types/project_type.rb | 32 + app/graphql/types/query_type.rb | 16 + app/graphql/types/release_type.rb | 47 + app/graphql/types/snippet_type.rb | 2 +- app/graphql/types/snippets/blob_type.rb | 10 + .../types/snippets/blob_viewer_type.rb | 6 +- app/graphql/types/todo_target_enum.rb | 1 + app/graphql/types/todo_type.rb | 2 +- app/graphql/types/user_type.rb | 4 + app/helpers/access_tokens_helper.rb | 7 + app/helpers/appearances_helper.rb | 4 + app/helpers/application_helper.rb | 4 + app/helpers/application_settings_helper.rb | 13 +- app/helpers/auth_helper.rb | 6 +- app/helpers/blob_helper.rb | 21 +- app/helpers/boards_helper.rb | 3 +- app/helpers/button_helper.rb | 4 +- app/helpers/clusters_helper.rb | 11 + app/helpers/commits_helper.rb | 2 + app/helpers/environment_helper.rb | 2 +- app/helpers/environments_helper.rb | 89 +- app/helpers/events_helper.rb | 14 + app/helpers/export_helper.rb | 13 +- app/helpers/form_helper.rb | 4 +- app/helpers/groups_helper.rb | 4 + app/helpers/icons_helper.rb | 2 +- app/helpers/issuables_helper.rb | 28 +- app/helpers/issues_helper.rb | 16 +- app/helpers/members_helper.rb | 13 +- app/helpers/milestones_helper.rb | 2 +- app/helpers/namespaces_helper.rb | 4 +- app/helpers/nav_helper.rb | 5 +- app/helpers/preferences_helper.rb | 2 +- .../projects/alert_management_helper.rb | 21 + app/helpers/projects_helper.rb | 19 +- app/helpers/releases_helper.rb | 4 +- app/helpers/search_helper.rb | 6 +- app/helpers/services_helper.rb | 12 +- app/helpers/snippets_helper.rb | 76 - app/helpers/sorting_helper.rb | 4 +- app/helpers/system_note_helper.rb | 8 +- app/helpers/todos_helper.rb | 19 +- app/helpers/workhorse_helper.rb | 4 +- app/helpers/x509_helper.rb | 4 + app/mailers/emails/groups.rb | 19 + app/mailers/emails/notes.rb | 12 + app/mailers/emails/profile.rb | 10 + app/mailers/notify.rb | 1 + app/mailers/previews/notify_preview.rb | 4 + app/models/active_session.rb | 4 +- app/models/alert_management/alert.rb | 146 + app/models/appearance.rb | 3 + app/models/application_setting.rb | 12 +- .../application_setting_implementation.rb | 5 +- app/models/blob.rb | 6 +- app/models/blob_viewer/dependency_manager.rb | 2 +- app/models/broadcast_message.rb | 5 +- app/models/ci/bridge.rb | 4 + app/models/ci/build.rb | 67 +- .../ci/daily_build_group_report_result.rb | 20 + app/models/ci/daily_report_result.rb | 22 - app/models/ci/freeze_period.rb | 18 + app/models/ci/freeze_period_status.rb | 47 + app/models/ci/group.rb | 2 +- app/models/ci/instance_variable.rb | 76 + app/models/ci/job_artifact.rb | 61 +- app/models/ci/legacy_stage.rb | 4 + app/models/ci/persistent_ref.rb | 12 - app/models/ci/pipeline.rb | 55 +- app/models/ci/pipeline_schedule.rb | 4 + app/models/ci/processable.rb | 12 +- app/models/ci/stage.rb | 4 +- .../clusters/applications/elastic_stack.rb | 47 +- app/models/clusters/applications/fluentd.rb | 20 +- app/models/clusters/applications/ingress.rb | 7 +- app/models/clusters/applications/jupyter.rb | 2 +- app/models/clusters/applications/knative.rb | 4 +- app/models/clusters/applications/runner.rb | 2 +- app/models/clusters/cluster.rb | 88 +- .../clusters/concerns/application_status.rb | 9 + app/models/commit_status.rb | 12 +- app/models/concerns/async_devise_email.rb | 14 + app/models/concerns/awardable.rb | 43 +- app/models/concerns/cache_markdown_field.rb | 1 - app/models/concerns/ci/contextable.rb | 8 + app/models/concerns/diff_positionable_note.rb | 4 +- app/models/concerns/has_repository.rb | 1 - app/models/concerns/has_user_type.rb | 45 + app/models/concerns/has_wiki.rb | 44 + app/models/concerns/issuable.rb | 29 +- app/models/concerns/issue_resource_event.rb | 13 + app/models/concerns/limitable.rb | 27 + .../concerns/merge_request_resource_event.rb | 11 + app/models/concerns/milestoneable.rb | 2 + app/models/concerns/noteable.rb | 14 +- app/models/concerns/prometheus_adapter.rb | 1 + app/models/concerns/protected_ref_access.rb | 4 +- app/models/concerns/reactive_caching.rb | 15 +- app/models/concerns/redis_cacheable.rb | 6 +- app/models/concerns/spammable.rb | 39 +- app/models/concerns/state_eventable.rb | 9 + .../concerns/storage/legacy_project_wiki.rb | 11 - app/models/concerns/timebox.rb | 204 + .../concerns/update_project_statistics.rb | 16 +- app/models/container_repository.rb | 2 + app/models/cycle_analytics/group_level.rb | 29 - app/models/deploy_token.rb | 5 +- app/models/design_management.rb | 13 + app/models/design_management/action.rb | 44 + app/models/design_management/design.rb | 266 + app/models/design_management/design_action.rb | 64 + .../design_management/design_at_version.rb | 119 + .../design_management/design_collection.rb | 30 + app/models/design_management/repository.rb | 51 + app/models/design_management/version.rb | 144 + app/models/design_user_mention.rb | 6 + app/models/diff_note.rb | 10 +- app/models/email.rb | 14 +- app/models/environment.rb | 9 + app/models/epic.rb | 2 +- .../project_error_tracking_setting.rb | 1 + app/models/event.rb | 15 + app/models/global_milestone.rb | 5 +- app/models/group.rb | 35 +- app/models/group_import_state.rb | 34 + app/models/group_milestone.rb | 3 +- app/models/hooks/project_hook.rb | 3 + app/models/internal_id_enums.rb | 13 +- app/models/issue.rb | 22 +- app/models/iteration.rb | 100 + app/models/jira_import_state.rb | 7 +- app/models/list.rb | 14 +- app/models/member.rb | 1 + app/models/members/project_member.rb | 5 + app/models/members_preloader.rb | 4 +- app/models/merge_request.rb | 54 +- app/models/merge_request_diff.rb | 30 +- app/models/metrics/users_starred_dashboard.rb | 18 + app/models/milestone.rb | 195 +- app/models/milestone_note.rb | 2 +- app/models/namespace.rb | 25 +- app/models/namespace/root_storage_size.rb | 31 + app/models/note.rb | 14 + app/models/pages_domain.rb | 11 +- .../prometheus_dashboard.rb | 2 +- app/models/personal_access_token.rb | 21 +- app/models/personal_snippet.rb | 4 + app/models/plan.rb | 42 + app/models/plan_limits.rb | 23 + app/models/project.rb | 127 +- app/models/project_authorization.rb | 3 +- app/models/project_ci_cd_setting.rb | 2 - app/models/project_feature.rb | 2 +- app/models/project_repository_storage_move.rb | 58 + .../chat_message/merge_message.rb | 4 +- .../chat_message/pipeline_message.rb | 48 +- app/models/project_services/jira_service.rb | 66 +- .../mattermost_slash_commands_service.rb | 4 + .../mock_monitoring_service.rb | 2 +- .../project_services/webex_teams_service.rb | 57 + .../project_services/youtrack_service.rb | 4 +- app/models/project_statistics.rb | 3 + app/models/project_wiki.rb | 220 +- app/models/release.rb | 14 - app/models/remote_mirror.rb | 26 +- app/models/repository.rb | 11 + app/models/resource_label_event.rb | 6 +- app/models/resource_milestone_event.rb | 11 +- app/models/resource_state_event.rb | 15 + app/models/resource_weight_event.rb | 4 +- app/models/sent_notification.rb | 4 +- app/models/service.rb | 14 +- app/models/snippet.rb | 31 +- app/models/snippet_repository.rb | 30 +- app/models/ssh_host_key.rb | 1 + app/models/state_note.rb | 19 + app/models/storage/hashed.rb | 1 + app/models/system_note_metadata.rb | 1 + app/models/timelog.rb | 4 +- app/models/todo.rb | 6 +- app/models/user.rb | 105 +- app/models/user_type_enums.rb | 13 - app/models/wiki.rb | 233 + app/models/wiki_page.rb | 59 +- app/models/wiki_page/meta.rb | 102 +- app/models/x509_certificate.rb | 6 + app/models/x509_commit_signature.rb | 4 + app/policies/alert_management/alert_policy.rb | 7 + app/policies/ci/build_policy.rb | 10 +- app/policies/ci/freeze_period_policy.rb | 7 + app/policies/concerns/policy_actor.rb | 37 +- .../design_at_version_policy.rb | 8 + .../design_collection_policy.rb | 7 + .../design_management/design_policy.rb | 8 + .../design_management/version_policy.rb | 8 + app/policies/global_policy.rb | 10 +- app/policies/group_policy.rb | 35 +- app/policies/issue_policy.rb | 16 +- app/policies/project_policy.rb | 101 +- app/policies/wiki_page_policy.rb | 2 +- app/presenters/README.md | 16 +- app/presenters/ci/build_runner_presenter.rb | 35 +- app/presenters/clusterable_presenter.rb | 4 +- app/presenters/commit_status_presenter.rb | 8 - .../instance_clusterable_presenter.rb | 4 +- app/presenters/pages_domain_presenter.rb | 2 - .../projects/prometheus/alert_presenter.rb | 61 +- .../settings/deploy_keys_presenter.rb | 4 +- app/presenters/release_presenter.rb | 7 - app/presenters/snippet_presenter.rb | 10 +- app/serializers/accessibility_error_entity.rb | 12 + .../accessibility_reports_comparer_entity.rb | 15 + ...cessibility_reports_comparer_serializer.rb | 5 + app/serializers/analytics_summary_entity.rb | 4 +- app/serializers/ci/basic_variable_entity.rb | 13 + app/serializers/ci/dag_job_entity.rb | 11 + app/serializers/ci/dag_job_group_entity.rb | 9 + app/serializers/ci/dag_pipeline_entity.rb | 20 + app/serializers/ci/dag_pipeline_serializer.rb | 7 + app/serializers/ci/dag_stage_entity.rb | 9 + .../ci/instance_variable_serializer.rb | 7 + app/serializers/cluster_application_entity.rb | 2 + app/serializers/cluster_entity.rb | 9 + app/serializers/cluster_serializer.rb | 15 + app/serializers/diff_file_base_entity.rb | 23 +- app/serializers/diffs_entity.rb | 4 + app/serializers/group_variable_entity.rb | 9 +- .../issuable_sidebar_basic_entity.rb | 2 +- .../issuable_sidebar_extras_entity.rb | 2 +- .../merge_request_assignee_entity.rb | 2 + .../merge_request_poll_widget_entity.rb | 12 + app/serializers/merge_request_serializer.rb | 2 + app/serializers/note_user_entity.rb | 4 +- app/serializers/service_event_entity.rb | 44 + app/serializers/service_event_serializer.rb | 5 + app/serializers/test_suite_comparer_entity.rb | 2 - app/serializers/test_suite_entity.rb | 3 +- app/serializers/variable_entity.rb | 9 +- .../create_alert_issue_service.rb | 70 + .../process_prometheus_alert_service.rb | 86 + .../update_alert_status_service.rb | 63 + app/services/audit_event_service.rb | 5 +- ...ntainer_registry_authentication_service.rb | 29 +- .../project_create_service.rb | 34 + app/services/base_container_service.rb | 12 + app/services/base_service.rb | 73 +- app/services/boards/issues/list_service.rb | 9 +- app/services/boards/lists/list_service.rb | 6 +- app/services/branches/create_service.rb | 2 +- .../compare_accessibility_reports_service.rb | 17 + .../ci/create_job_artifacts_service.rb | 17 + app/services/ci/create_pipeline_service.rb | 21 +- ...aily_build_group_report_result_service.rb} | 11 +- .../destroy_expired_job_artifacts_service.rb | 8 +- .../ci/generate_terraform_reports_service.rb | 29 + .../atomic_processing_service.rb | 2 +- .../status_collection.rb | 19 +- app/services/ci/pipeline_schedule_service.rb | 14 +- app/services/ci/process_pipeline_service.rb | 13 - app/services/ci/register_job_service.rb | 4 +- app/services/ci/retry_build_service.rb | 5 + app/services/ci/retry_pipeline_service.rb | 2 + .../ci/update_instance_variables_service.rb | 72 + .../clusters/applications/base_service.rb | 20 +- .../check_installation_progress_service.rb | 2 +- .../check_uninstall_progress_service.rb | 2 +- .../check_upgrade_progress_service.rb | 2 +- .../ingress_modsecurity_usage_service.rb | 69 - .../applications/schedule_update_service.rb | 6 +- .../gcp/verify_provision_status_service.rb | 2 +- .../configure_istio_ingress_service.rb | 4 +- .../management/create_project_service.rb | 7 +- ...e_cluster_applications_artifact_service.rb | 95 + app/services/concerns/base_service_utility.rb | 72 + app/services/concerns/git/logger.rb | 10 - app/services/concerns/measurable.rb | 61 + app/services/concerns/spam_check_methods.rb | 4 +- .../older_deployments_drop_service.rb | 4 +- .../delete_designs_service.rb | 66 + .../design_management/design_service.rb | 31 + .../design_user_notes_count_service.rb | 34 + .../generate_image_versions_service.rb | 99 + .../design_management/on_success_callbacks.rb | 23 + .../design_management/runs_design_actions.rb | 35 + .../design_management/save_designs_service.rb | 114 + app/services/emails/base_service.rb | 2 + app/services/event_create_service.rb | 28 +- app/services/git/branch_hooks_service.rb | 2 +- app/services/git/wiki_push_service.rb | 57 +- app/services/git/wiki_push_service/change.rb | 67 + app/services/grafana/proxy_service.rb | 1 + app/services/groups/create_service.rb | 4 + .../groups/import_export/export_service.rb | 24 +- .../groups/import_export/import_service.rb | 34 +- app/services/groups/update_service.rb | 1 + .../create_issue_service.rb | 8 +- .../issuable/clone/attributes_rewriter.rb | 53 +- app/services/issuable/clone/base_service.rb | 2 +- .../issuable/common_system_notes_service.rb | 18 +- app/services/issuable_base_service.rb | 14 +- app/services/issues/build_service.rb | 10 +- .../issues/related_branches_service.rb | 20 +- app/services/issues/update_service.rb | 4 + .../jira_import/start_import_service.rb | 2 +- app/services/lfs/file_transformer.rb | 3 +- .../members/request_access_service.rb | 2 +- app/services/merge_requests/base_service.rb | 31 +- app/services/merge_requests/rebase_service.rb | 8 +- .../merge_requests/refresh_service.rb | 4 + app/services/merge_requests/squash_service.rb | 18 +- .../metrics/dashboard/base_service.rb | 2 +- .../dashboard/grafana_metric_embed_service.rb | 3 +- .../dashboard/transient_embed_service.rb | 8 +- .../create_service.rb | 74 + .../delete_service.rb | 33 + .../namespaces/check_storage_size_service.rb | 94 + app/services/notes/post_process_service.rb | 8 + app/services/notification_service.rb | 20 + ...obtain_lets_encrypt_certificate_service.rb | 2 - app/services/pod_logs/base_service.rb | 3 + .../pod_logs/elasticsearch_service.rb | 10 +- app/services/pod_logs/kubernetes_service.rb | 9 + app/services/post_receive_service.rb | 17 + .../projects/alerting/notify_service.rb | 17 +- .../cleanup_tags_service.rb | 2 +- app/services/projects/create_service.rb | 32 +- .../gitlab_projects_import_service.rb | 8 +- .../hashed_storage/base_attachment_service.rb | 2 +- .../hashed_storage/base_repository_service.rb | 28 +- .../projects/import_export/export_service.rb | 33 +- app/services/projects/import_service.rb | 25 + .../lfs_download_link_list_service.rb | 2 +- app/services/projects/lsif_data_service.rb | 2 +- .../prometheus/alerts/notify_service.rb | 9 + .../projects/propagate_service_template.rb | 54 +- app/services/projects/transfer_service.rb | 24 +- .../projects/update_remote_mirror_service.rb | 16 +- .../update_repository_storage_service.rb | 69 +- app/services/prometheus/proxy_service.rb | 1 + .../proxy_variable_substitution_service.rb | 48 +- app/services/releases/create_service.rb | 6 + .../create_service.rb} | 18 +- .../resource_access_tokens/revoke_service.rb | 65 + .../base_synthetic_notes_builder_service.rb | 2 +- .../change_milestone_service.rb | 7 +- app/services/search/snippet_service.rb | 2 +- app/services/search_service.rb | 19 +- app/services/snippets/base_service.rb | 41 + app/services/snippets/create_service.rb | 40 +- app/services/snippets/update_service.rb | 47 +- app/services/spam/akismet_service.rb | 2 +- app/services/spam/spam_action_service.rb | 91 + app/services/spam/spam_check_service.rb | 68 - app/services/spam/spam_constants.rb | 9 + app/services/spam/spam_verdict_service.rb | 26 + app/services/system_note_service.rb | 28 + .../system_notes/design_management_service.rb | 83 + app/services/tags/destroy_service.rb | 14 - .../template_engines/liquid_service.rb | 48 - .../terraform/remote_state_handler.rb | 2 +- .../user_project_access_changed_service.rb | 13 +- .../users/migrate_to_ghost_user_service.rb | 6 + app/services/verify_pages_domain_service.rb | 4 +- app/services/wiki_pages/base_service.rb | 13 +- app/services/wiki_pages/create_service.rb | 4 +- .../wiki_pages/event_create_service.rb | 30 + .../wikis/create_attachment_service.rb | 11 +- .../design_v432x230_uploader.rb | 45 + app/uploaders/file_uploader.rb | 2 +- .../cron_freeze_period_timezone_validator.rb | 13 + app/validators/cron_validator.rb | 15 +- app/views/admin/appearances/_form.html.haml | 35 +- .../application_settings/_influx.html.haml | 60 - .../_prometheus.html.haml | 6 + .../_repository_mirrors_form.html.haml | 2 +- .../_repository_storage.html.haml | 4 +- .../application_settings/_signup.html.haml | 27 +- .../_visibility_and_access.html.haml | 1 + .../application_settings/general.html.haml | 4 +- .../integrations.html.haml | 2 +- .../metrics_and_profiling.html.haml | 11 - .../impersonation_tokens/index.html.haml | 28 +- app/views/admin/logs/show.html.haml | 24 - app/views/admin/projects/show.html.haml | 28 +- .../services/_deprecated_message.html.haml | 3 - app/views/admin/services/edit.html.haml | 2 - app/views/admin/sessions/_new_base.html.haml | 2 +- .../admin/sessions/_signin_box.html.haml | 19 + .../admin/sessions/_tabs_normal.html.haml | 3 - app/views/admin/sessions/new.html.haml | 25 +- app/views/admin/sessions/two_factor.html.haml | 2 +- .../ci/status/_dropdown_graph_badge.html.haml | 4 +- app/views/ci/variables/_index.html.haml | 2 +- .../clusters/clusters/_cluster.html.haml | 3 +- app/views/clusters/clusters/index.html.haml | 2 +- app/views/clusters/clusters/show.html.haml | 1 + app/views/dashboard/snippets/index.html.haml | 2 - app/views/devise/registrations/new.html.haml | 2 +- app/views/devise/sessions/_new_ldap.html.haml | 8 +- .../devise/shared/_omniauth_box.html.haml | 4 +- app/views/devise/shared/_signin_box.html.haml | 2 +- app/views/devise/shared/_tabs_ldap.html.haml | 11 +- .../devise/shared/_tabs_normal.html.haml | 7 +- app/views/groups/_flash_messages.html.haml | 2 + app/views/groups/_home_panel.html.haml | 46 +- app/views/groups/edit.html.haml | 4 +- .../groups/group_members/index.html.haml | 22 +- app/views/groups/settings/_advanced.html.haml | 2 + .../_default_branch_protection.html.haml | 3 + app/views/groups/settings/_export.html.haml | 28 + .../groups/settings/_permissions.html.haml | 2 +- .../settings/integrations/index.html.haml | 2 +- .../groups/settings/repository/show.html.haml | 2 +- app/views/groups/show.html.haml | 6 + app/views/groups/sidebar/_packages.html.haml | 4 +- app/views/help/_shortcuts.html.haml | 180 +- .../import/google_code/new_user_map.html.haml | 2 +- app/views/kaminari/gitlab/_page.html.haml | 2 +- app/views/layouts/_head.html.haml | 1 + app/views/layouts/_page.html.haml | 1 + app/views/layouts/devise.html.haml | 4 +- .../header/_current_user_dropdown.html.haml | 1 + .../layouts/header/_help_dropdown.html.haml | 1 + .../layouts/nav/sidebar/_admin.html.haml | 11 +- .../layouts/nav/sidebar/_group.html.haml | 2 + .../layouts/nav/sidebar/_profile.html.haml | 4 - .../layouts/nav/sidebar/_project.html.haml | 16 +- .../sidebar/_project_packages_link.html.haml | 4 +- .../notify/group_was_exported_email.html.haml | 9 + .../notify/group_was_exported_email.text.erb | 6 + .../group_was_not_exported_email.html.haml | 10 + .../group_was_not_exported_email.text.erb | 7 + app/views/notify/issues_csv_email.html.haml | 9 +- app/views/notify/issues_csv_email.text.erb | 4 +- app/views/notify/note_design_email.html.haml | 1 + app/views/notify/note_design_email.text.erb | 1 + .../notify/unknown_sign_in_email.html.haml | 14 + .../notify/unknown_sign_in_email.text.haml | 10 + app/views/profiles/keys/_form.html.haml | 2 +- .../personal_access_tokens/index.html.haml | 24 +- app/views/profiles/show.html.haml | 5 +- .../alert_management/details.html.haml | 4 + .../projects/alert_management/index.html.haml | 3 + app/views/projects/blob/_header.html.haml | 8 +- .../blob/_template_selectors.html.haml | 2 +- .../projects/buttons/_download.html.haml | 15 +- .../projects/commit/_signature.html.haml | 2 +- .../commit/_signature_badge.html.haml | 6 +- .../x509/_signature_badge_user.html.haml | 2 +- app/views/projects/commits/_commit.html.haml | 2 + .../projects/cycle_analytics/show.html.haml | 5 +- app/views/projects/graphs/charts.html.haml | 21 + app/views/projects/graphs/show.html.haml | 2 +- app/views/projects/import/jira/show.html.haml | 1 + .../issues/_design_management.html.haml | 15 + app/views/projects/issues/_issue.html.haml | 5 +- .../issues/_related_branches.html.haml | 8 +- app/views/projects/issues/_tabs.html.haml | 14 + .../issues/export_csv/_modal.html.haml | 1 - app/views/projects/issues/index.html.haml | 6 + app/views/projects/issues/show.html.haml | 10 +- app/views/projects/labels/index.html.haml | 4 +- .../merge_requests/_how_to_merge.html.haml | 2 +- .../merge_requests/_merge_request.html.haml | 2 +- .../projects/merge_requests/_widget.html.haml | 1 + .../creations/update_branches.html.haml | 3 - .../projects/mirrors/_mirror_repos.html.haml | 2 +- .../mirrors/_mirror_repos_push.html.haml | 12 +- app/views/projects/new.html.haml | 2 +- .../pages_domains/_certificate.html.haml | 8 +- .../projects/pages_domains/_dns.html.haml | 8 +- .../projects/pages_domains/_form.html.haml | 10 +- .../_lets_encrypt_callout.html.haml | 10 +- .../projects/pages_domains/new.html.haml | 2 +- .../projects/pages_domains/show.html.haml | 8 +- .../projects/pipelines/_with_tabs.html.haml | 10 +- app/views/projects/pipelines/index.html.haml | 1 + .../services/_deprecated_message.html.haml | 3 - app/views/projects/services/_form.html.haml | 8 +- app/views/projects/services/_index.html.haml | 30 - app/views/projects/services/edit.html.haml | 3 +- .../prometheus/_custom_metrics.html.haml | 4 +- .../slack_slash_commands/_help.html.haml | 2 +- .../projects/settings/_general.html.haml | 2 +- .../settings/access_tokens/index.html.haml | 34 + .../settings/ci_cd/_autodevops_form.html.haml | 2 +- .../projects/settings/ci_cd/_form.html.haml | 4 +- .../projects/settings/ci_cd/show.html.haml | 2 +- .../settings/integrations/show.html.haml | 4 +- .../settings/operations/_incidents.html.haml | 8 +- .../settings/repository/show.html.haml | 2 +- app/views/projects/snippets/show.html.haml | 2 +- app/views/projects/tags/_tag.html.haml | 3 + app/views/projects/tags/show.html.haml | 2 + app/views/projects/wikis/_sidebar.html.haml | 2 +- app/views/projects/wikis/git_access.html.haml | 5 - app/views/search/_category.html.haml | 2 +- app/views/search/results/_blob_data.html.haml | 2 +- .../search/results/_snippet_blob.html.haml | 50 - .../search/results/_snippet_title.html.haml | 2 +- .../shared/_auto_devops_callout.html.haml | 2 +- app/views/shared/_broadcast_message.html.haml | 2 +- app/views/shared/_clone_panel.html.haml | 2 +- .../_commit_message_container.html.haml | 7 +- .../shared/_delete_label_modal.html.haml | 11 +- app/views/shared/_field.html.haml | 13 +- app/views/shared/_group_form.html.haml | 4 +- app/views/shared/_group_tips.html.haml | 8 +- app/views/shared/_label_row.html.haml | 2 +- app/views/shared/_milestone_expired.html.haml | 6 +- app/views/shared/_milestones_filter.html.haml | 6 +- .../shared/_mini_pipeline_graph.html.haml | 2 +- app/views/shared/_no_ssh.html.haml | 2 +- ..._access_tokens_created_container.html.haml | 15 - .../_personal_access_tokens_form.html.haml | 31 - app/views/shared/_project_limit.html.haml | 6 +- app/views/shared/_recaptcha_form.html.haml | 2 +- app/views/shared/_ref_dropdown.html.haml | 4 +- app/views/shared/_service_settings.html.haml | 35 +- .../_created_container.html.haml | 12 + .../shared/access_tokens/_form.html.haml | 34 + .../_table.html.haml} | 15 +- .../shared/boards/components/_board.html.haml | 3 +- .../components/sidebar/_labels.html.haml | 3 +- .../deploy_keys/_index.html.haml | 7 +- .../_project_group_form.html.haml} | 6 +- .../shared/deploy_tokens/_form.html.haml | 10 + app/views/shared/file_hooks/_index.html.haml | 4 + app/views/shared/hook_logs/_content.html.haml | 2 +- app/views/shared/integrations/_form.html.haml | 2 +- ...ntegrations.html.haml => _index.html.haml} | 11 +- .../issuable/_bulk_update_sidebar.html.haml | 38 +- .../issuable/_close_reopen_button.html.haml | 17 +- .../_close_reopen_report_toggle.html.haml | 23 +- .../shared/issuable/_label_dropdown.html.haml | 7 +- .../issuable/_label_page_default.html.haml | 2 +- app/views/shared/issuable/_nav.html.haml | 8 +- .../shared/issuable/_search_bar.html.haml | 4 +- app/views/shared/issuable/_sidebar.html.haml | 4 +- .../issuable/_sidebar_assignees.html.haml | 2 +- .../issuable/form/_branch_chooser.html.haml | 2 +- app/views/shared/members/_badge.html.haml | 4 + .../shared/members/_blocked_badge.html.haml | 3 + .../shared/members/_its_you_badge.html.haml | 3 + app/views/shared/members/_member.html.haml | 29 +- .../members/_two_factor_auth_badge.html.haml | 3 + .../shared/milestones/_issuable.html.haml | 2 +- .../shared/milestones/_issues_tab.html.haml | 6 +- .../shared/milestones/_labels_tab.html.haml | 4 +- .../milestones/_merge_requests_tab.haml | 8 +- .../shared/milestones/_milestone.html.haml | 16 +- app/views/shared/milestones/_top.html.haml | 12 +- app/views/shared/notes/_form.html.haml | 4 +- app/views/shared/notes/_note.html.haml | 7 +- app/views/shared/snippets/_form.html.haml | 10 +- app/views/shared/snippets/_header.html.haml | 4 +- app/views/shared/snippets/_snippet.html.haml | 5 - .../shared/tokens/_scopes_form.html.haml | 2 +- app/views/snippets/show.html.haml | 2 +- app/views/users/_deletion_guidance.html.haml | 7 +- app/views/users/calendar_activities.html.haml | 4 +- app/workers/all_queues.yml | 73 +- .../project_create_worker.rb | 19 + .../user_refresh_with_low_urgency_worker.rb | 11 + ...aily_build_group_report_results_worker.rb} | 4 +- app/workers/cluster_configure_worker.rb | 10 - .../cluster_project_configure_worker.rb | 12 - app/workers/concerns/application_worker.rb | 17 + app/workers/concerns/chaos_queue.rb | 2 +- .../concerns/reactive_cacheable_worker.rb | 33 + app/workers/create_commit_signature_worker.rb | 4 +- .../design_management/new_version_worker.rb | 31 + ...xternal_service_reactive_caching_worker.rb | 7 + .../gitlab/jira_import/import_issue_worker.rb | 28 +- app/workers/group_import_worker.rb | 11 +- .../process_alert_worker.rb | 25 +- app/workers/irker_worker.rb | 2 +- ...merge_request_mergeability_check_worker.rb | 3 +- app/workers/new_release_worker.rb | 2 + .../pages_domain_ssl_renewal_cron_worker.rb | 5 - app/workers/process_commit_worker.rb | 4 +- ...roject_update_repository_storage_worker.rb | 16 +- app/workers/reactive_caching_worker.rb | 32 +- app/workers/stage_update_worker.rb | 4 +- ..._head_pipeline_for_merge_request_worker.rb | 4 +- app/workers/x509_issuer_crl_check_worker.rb | 76 + bin/background_jobs | 2 +- bin/background_jobs_sk | 2 +- bin/background_jobs_sk_cluster | 2 +- cable/config.ru | 2 + ...-parameter-to-project-environments-api.yml | 5 - config/application.rb | 1 + config/cable.yml.example | 14 + config/environments/test.rb | 7 +- config/feature_categories.yml | 6 +- config/gitlab.yml.example | 13 +- config/helpers/is_eslint.js | 18 + config/initializers/0_thread_cache.rb | 3 - config/initializers/1_settings.rb | 16 +- config/initializers/7_prometheus_metrics.rb | 6 + config/initializers/action_cable.rb | 9 + config/initializers/actioncable.rb | 8 - .../active_record_fix_insert_all.rb | 26 - config/initializers/cookies_serializer.rb | 2 +- .../initializers/gettext_rails_i18n_patch.rb | 2 +- config/initializers/measuring.rb | 3 + config/initializers/rack_attack.rb.example | 29 - config/initializers/rack_attack_new.rb | 10 +- config/initializers/sidekiq.rb | 19 +- config/initializers/zz_metrics.rb | 7 +- .../002_sidekiq.rb | 20 + .../100_patch_omniauth_oauth2.rb | 17 + config/locales/doorkeeper.en.yml | 13 + config/mail_room.yml | 1 + config/prometheus/common_metrics.yml | 45 +- config/pseudonymizer.yml | 1 - .../puma_actioncable.example.development.rb | 2 +- config/redis.cache.yml.example | 6 +- config/redis.queues.yml.example | 6 +- config/redis.shared_state.yml.example | 6 +- config/resque.yml.example | 6 +- config/routes.rb | 42 +- config/routes/admin.rb | 9 +- config/routes/issues.rb | 1 + config/routes/merge_requests.rb | 2 + config/routes/pipelines.rb | 37 + config/routes/project.rb | 109 +- config/routes/repository_scoped.rb | 4 +- config/sidekiq_queues.yml | 4 + config/smime_signature_settings.rb | 1 + config/webpack.config.js | 41 +- config/webpack.vendor.config.js | 1 - danger/changelog/Dangerfile | 8 +- danger/gitlab_ui_wg/Dangerfile | 62 - danger/roulette/Dangerfile | 9 +- danger/specs/Dangerfile | 6 +- danger/telemetry/Dangerfile | 27 +- danger/utility_css/Dangerfile | 51 + db/migrate/20171230123729_init_schema.rb | 6 +- ...0180101160629_create_prometheus_metrics.rb | 4 +- ...42_add_default_project_creation_setting.rb | 2 +- .../20180116193854_create_lfs_file_locks.rb | 2 +- ...o_devops_domain_to_application_settings.rb | 4 +- ...80129193323_add_uploads_builder_context.rb | 4 +- .../20180209115333_create_chatops_tables.rb | 2 +- ...nal_ip_to_clusters_applications_ingress.rb | 4 +- db/migrate/20180214093516_create_badges.rb | 5 +- ...05_create_clusters_applications_runners.rb | 4 +- ...216120000_add_pages_domain_verification.rb | 2 +- ...20180222043024_add_ip_address_to_runner.rb | 2 +- ...ks_and_services_to_application_settings.rb | 2 +- ...20180305144721_add_privileged_to_runner.rb | 2 +- ...r_internal_regex_to_application_setting.rb | 4 +- ...and_footer_banners_to_appearances_table.rb | 2 + ...h_mutual_tls_fields_to_project_settings.rb | 6 +- .../20180319190020_create_deploy_tokens.rb | 4 +- ...134533_create_application_setting_terms.rb | 2 + ...180502122856_create_project_mirror_data.rb | 6 +- .../20180503131624_create_remote_mirrors.rb | 6 +- ..._missing_columns_to_project_mirror_data.rb | 8 +- ...irror_available_to_application_settings.rb | 2 + ...58_create_clusters_applications_jupyter.rb | 10 +- .../20180515121227_create_notes_diff_files.rb | 7 +- ...0529093006_ensure_remote_mirror_columns.rb | 9 +- ...20180531185349_add_repository_languages.rb | 4 +- ..._deploy_strategy_to_project_auto_devops.rb | 2 +- ..._push_events_branch_filter_to_web_hooks.rb | 2 +- ...dd_columns_for_helm_tiller_certificates.rb | 2 + ...3081317_create_ci_builds_runner_session.rb | 4 +- ...0625113853_create_import_export_uploads.rb | 2 + ...rd_party_offers_to_application_settings.rb | 2 +- .../20180713092803_create_user_statuses.rb | 4 +- ...stics_visibility_to_application_setting.rb | 2 +- ...preview_enabled_to_application_settings.rb | 2 +- ...ssh_key_message_to_application_settings.rb | 2 + ...0180814153625_add_commit_email_to_users.rb | 4 +- ...uests_whitelist_to_application_settings.rb | 2 + ...164905_add_common_to_prometheus_metrics.rb | 2 +- ...908_add_identifier_to_prometheus_metric.rb | 2 +- ...d_resource_label_event_reference_fields.rb | 2 + ...dd_legacy_abac_to_cluster_providers_gcp.rb | 2 +- ..._add_attr_encrypted_columns_to_web_hook.rb | 4 +- ..._token_digest_to_personal_access_tokens.rb | 2 +- .../20180912111628_add_knative_application.rb | 6 +- ...max_patch_bytes_to_application_settings.rb | 2 +- ...8_create_clusters_kubernetes_namespaces.rb | 6 +- ...1017001059_add_cluster_type_to_clusters.rb | 2 +- db/migrate/20181019032400_add_shards_table.rb | 2 +- .../20181019032408_add_repositories_table.rb | 2 +- ..._email_hostname_to_application_settings.rb | 4 +- ...rst_day_of_week_to_application_settings.rb | 2 +- ...ed_ci_variables_to_application_settings.rb | 2 +- .../20181031190559_drop_gcp_clusters_table.rb | 2 - ...eate_clusters_applications_cert_manager.rb | 6 +- ...add_encrypted_runners_token_to_settings.rb | 4 +- .../20181116050532_knative_external_ip.rb | 4 +- ...d_encrypted_runners_token_to_namespaces.rb | 4 +- ...add_encrypted_runners_token_to_projects.rb | 4 +- ...51656_add_token_encrypted_to_ci_runners.rb | 2 +- ...81122160027_create_project_repositories.rb | 2 +- .../20181123144235_create_suggestions.rb | 6 +- ...1128123704_add_state_to_pool_repository.rb | 10 +- ...104854_add_token_encrypted_to_ci_builds.rb | 4 +- ...02526_add_project_bfg_object_map_column.rb | 4 +- ..._add_name_author_id_and_sha_to_releases.rb | 6 +- ...12171634_create_error_tracking_settings.rb | 4 +- ...181228175414_create_releases_link_table.rb | 4 +- ...153125_add_merge_request_external_diffs.rb | 2 +- .../20190114172110_add_domain_to_cluster.rb | 2 +- ...columns_project_error_tracking_settings.rb | 6 +- ...1_add_sorting_fields_to_user_preference.rb | 6 +- ...190218134158_add_masked_to_ci_variables.rb | 2 +- ...134209_add_masked_to_ci_group_variables.rb | 2 +- ...20190219201635_add_asset_proxy_settings.rb | 8 +- ...ooter_enabled_flag_to_appearances_table.rb | 2 +- ...add_multi_line_attributes_to_suggestion.rb | 6 +- ...xternal_hostname_to_ingress_and_knative.rb | 6 +- ...ification_email_to_application_settings.rb | 4 +- ...30_add_auto_ssl_enabled_to_pages_domain.rb | 2 +- ...25105715_add_fields_to_user_preferences.rb | 2 +- .../20190325165127_add_managed_to_cluster.rb | 2 +- ...fication_email_to_notification_settings.rb | 4 +- ...ervice_accepted_to_application_settings.rb | 2 +- ...190402150158_backport_enterprise_schema.rb | 8 +- .../20190409224933_add_name_to_geo_nodes.rb | 2 +- ...2_add_comment_to_vulnerability_feedback.rb | 2 +- ...30217_add_variable_type_to_ci_variables.rb | 2 +- ...add_variable_type_to_ci_group_variables.rb | 2 +- ..._type_to_ci_pipeline_schedule_variables.rb | 2 +- ...2082247_create_project_metrics_settings.rb | 2 +- ...9082448_create_pages_domain_acme_orders.rb | 6 +- ...0190430131225_create_issue_tracker_data.rb | 4 +- ...20190430142025_create_jira_tracker_data.rb | 4 +- .../20190514105711_create_ip_restriction.rb | 2 +- ...ypt_private_key_to_application_settings.rb | 2 + ...o_approval_merge_request_approval_rules.rb | 2 +- ...d_template_name_to_application_settings.rb | 4 +- ...tection_enabled_to_application_settings.rb | 2 +- ...20190604091310_add_ldap_membership_lock.rb | 2 +- ...tion_protection_to_application_settings.rb | 2 + ...ted_to_operations_feature_flags_clients.rb | 4 +- .../20190606202100_add_name_to_badges.rb | 2 +- ...90607085356_add_source_to_pages_domains.rb | 2 +- ..._limit_to_hours_to_application_settings.rb | 2 + ...1_add_target_project_id_to_merge_trains.rb | 8 +- ...613044655_add_username_to_deploy_tokens.rb | 2 +- .../20190613073003_create_project_aliases.rb | 2 +- .../20190617123615_add_grafana_to_settings.rb | 2 +- ...0621151636_add_merge_request_rebase_jid.rb | 2 +- ...90624123615_add_grafana_url_to_settings.rb | 6 +- ...90625115224_add_description_to_services.rb | 2 +- ...egies_to_operations_feature_flag_scopes.rb | 2 + ...add_rule_type_to_approval_project_rules.rb | 2 +- .../20190711124721_create_job_variables.rb | 6 +- ...08_add_token_encrypted_to_deploy_tokens.rb | 2 + ...espace_per_environment_flag_to_clusters.rb | 2 +- ...e_to_design_management_designs_versions.rb | 1 - ...819_add_object_storage_flag_to_geo_node.rb | 2 +- ...nalytics_cycle_analytics_project_stages.rb | 2 +- ...104947_add_static_object_token_to_users.rb | 6 +- ...storage_columns_to_application_settings.rb | 2 + ...create_allowed_email_domains_for_groups.rb | 2 +- ..._analytics_cycle_analytics_group_stages.rb | 2 +- ...de_owner_approval_to_protected_branches.rb | 2 +- db/migrate/20190731084415_add_build_need.rb | 2 +- ...441_add_throttle_protected_path_columns.rb | 2 + ...e_epic_issues_default_relative_position.rb | 2 +- ...jects_sorting_field_to_user_preferences.rb | 2 + ...16151221_add_active_jobs_limit_to_plans.rb | 2 +- ...90820163320_add_first_last_name_to_user.rb | 2 + ...0821040941_create_cluster_providers_aws.rb | 4 + ...h_configuration_to_application_settings.rb | 2 + .../20190828172831_create_package_tag.rb | 2 +- ...829131130_create_external_pull_requests.rb | 2 + ...90901174200_add_max_issue_count_to_list.rb | 2 +- ...create_analytics_repository_files_table.rb | 2 + ...add_cloud_run_to_clusters_providers_gcp.rb | 2 +- ...190906104555_create_alerts_service_data.rb | 2 + ...whitespace_in_diffs_to_user_preferences.rb | 2 +- ...526_create_packages_conan_file_metadata.rb | 2 + ...174707_add_spdx_id_to_software_licenses.rb | 2 + ...90918102042_create_grafana_integrations.rb | 2 + ...918104731_add_cleanup_status_to_cluster.rb | 2 +- ...35_add_cleanup_status_reason_to_cluster.rb | 2 +- ...merge_request_context_commits_and_diffs.rb | 4 + ...d_pull_mirror_branch_prefix_to_projects.rb | 6 +- .../20190926225633_create_x509_signatures.rb | 2 + ...90927055500_create_description_versions.rb | 2 +- .../20190929180751_create_vulnerabilities.rb | 4 +- .../20190930153535_create_zoom_meetings.rb | 2 +- db/migrate/20191001170300_create_ci_ref.rb | 2 + ...ate_clusters_applications_elastic_stack.rb | 4 +- ...5155_add_self_managed_prometheus_alerts.rb | 2 + ...ent_hooks_limit_to_application_settings.rb | 2 +- db/migrate/20191003064615_create_aws_roles.rb | 2 + ...d_pendo_enabled_to_application_settings.rb | 2 +- ...0_add_pendo_url_to_application_settings.rb | 2 + ...ctivities_limit_to_application_settings.rb | 2 +- ..._clone_url_root_to_application_settings.rb | 2 + ...lu_registry_url_to_application_settings.rb | 2 + ...ion_delivered_to_personal_access_tokens.rb | 2 +- ...create_clusters_applications_crossplane.rb | 4 +- ...91025092748_add_secret_token_to_snippet.rb | 2 + ...1028130054_add_max_issue_weight_to_list.rb | 2 +- ...29125305_create_packages_conan_metadata.rb | 2 + ...901_add_enabled_to_grafana_integrations.rb | 2 +- ...eks_credentials_to_application_settings.rb | 4 + ...1105134413_create_service_desk_settings.rb | 2 + .../20191105155113_add_secret_to_snippet.rb | 2 +- ...0191106144901_add_state_to_merge_trains.rb | 2 +- .../20191111121500_default_ci_config_path.rb | 2 + ...12090226_add_artifacts_to_ci_build_need.rb | 2 +- ...21_create_container_expiration_policies.rb | 2 + ...ncrypted_fields_to_application_settings.rb | 4 + ...1121111621_create_packages_dependencies.rb | 2 + .../20191121193110_add_issue_links_type.rb | 2 +- ...53_add_target_path_to_broadcast_message.rb | 2 + .../20191125140458_create_import_failures.rb | 2 + ...030005_create_serverless_domain_cluster.rb | 2 + ..._confidential_to_doorkeeper_application.rb | 2 +- ...ldcard_and_domain_type_to_pages_domains.rb | 4 +- .../20191128145231_add_ci_resource_groups.rb | 2 +- ...add_broadcast_type_to_broadcast_message.rb | 2 +- ...ment_auto_stop_in_to_ci_builds_metadata.rb | 2 + ...h_to_geo_hashed_storage_migrated_events.rb | 2 + ...e_to_design_management_designs_versions.rb | 2 + ...d_suggestion_commit_message_to_projects.rb | 6 +- ...mit_user_mentions_commit_id_column_type.rb | 2 + ...0191213104838_add_service_desk_username.rb | 2 + ...191213143656_create_ci_pipelines_config.rb | 2 +- ...dd_saml_provider_prohibited_outer_forks.rb | 2 +- ...abled_for_users_to_application_settings.rb | 2 +- ...4915_add_repository_storage_to_snippets.rb | 4 +- ...8125015_add_storage_version_to_snippets.rb | 2 +- ...4_drop_index_ci_pipelines_on_project_id.rb | 7 +- ...d_environment_name_to_ci_build_metadata.rb | 2 + .../20200121192942_create_geo_events.rb | 2 + ..._add_deploy_token_type_to_deploy_tokens.rb | 2 +- ...124053531_add_source_to_import_failures.rb | 2 + ...200128184209_add_usage_to_pages_domains.rb | 2 +- ...716_add_resource_milestone_events_table.rb | 2 + ...rt_and_key_to_serverless_domain_cluster.rb | 4 + ...0202100932_add_service_desk_project_key.rb | 2 + ...00204131831_create_daily_report_results.rb | 6 +- ...6112850_create_snippet_repository_table.rb | 2 + ...200207151640_create_deployment_clusters.rb | 2 + ...4410_create_operations_strategies_table.rb | 2 + ...10184420_create_operations_scopes_table.rb | 2 + ...il_restrictions_to_application_settings.rb | 2 + ...30_add_verification_columns_to_packages.rb | 2 + ...ests_forwarding_to_application_settings.rb | 2 +- db/migrate/20200213224220_add_sprints.rb | 35 + .../20200214025454_add_canonical_emails.rb | 2 +- ...0215222507_drop_forked_project_links_fk.rb | 5 - ...00218113721_add_indexes_to_package_file.rb | 19 + ...219105209_add_filepath_to_release_links.rb | 2 +- ...219135440_add_limit_metric_type_to_list.rb | 2 +- ...20200224020219_add_status_page_settings.rb | 2 + ...3804_add_version_to_feature_flags_table.rb | 2 + .../20200226100614_create_requirements.rb | 4 +- .../20200227164113_create_scim_identities.rb | 2 + .../20200227165129_create_user_details.rb | 2 + db/migrate/20200302152516_add_wiki_slug.rb | 2 + .../20200304023245_add_sprint_to_issues.rb | 20 + ...0304023851_add_sprint_to_merge_requests.rb | 20 + ...304024025_add_sprint_id_index_to_issues.rb | 21 + ...2_add_sprint_id_index_to_merge_requests.rb | 21 + .../20200305200641_create_terraform_states.rb | 2 + ...309162244_add_open_project_tracker_data.rb | 2 + ...add_runtime_created_to_ci_job_variables.rb | 2 +- ...dd_ci_pipeline_schedules_to_plan_limits.rb | 2 +- ...0311154110_create_vulnerability_exports.rb | 2 + ...200311165635_create_project_export_jobs.rb | 2 + ...modsecurity_mode_to_ingress_application.rb | 2 +- ...162148_add_external_key_to_issues_table.rb | 2 +- ...8164448_add_external_key_to_epics_table.rb | 2 +- ...0318183553_create_pypi_package_metadata.rb | 2 +- ...27_create_metrics_dashboard_annotations.rb | 4 +- ...55_add_cost_factor_fileds_to_ci_runners.rb | 4 +- ...add_letsencrypt_errors_to_pages_domains.rb | 2 +- ...0_add_project_show_default_award_emojis.rb | 11 + .../20200323071918_add_bio_to_user_details.rb | 6 +- ...rage_size_limit_to_application_settings.rb | 2 +- ...at_link_enabled_to_application_settings.rb | 2 +- ...0200326114443_create_jira_imports_table.rb | 2 + ...200326122700_create_diff_note_positions.rb | 4 + ...000_add_confidential_attribute_to_epics.rb | 2 +- ...istoric_entries_to_application_settings.rb | 2 +- ...0401211005_create_operations_user_lists.rb | 4 +- ...1106_add_cluster_type_index_to_clusters.rb | 19 + ...013_add_index_on_modsecurity_to_ingress.rb | 18 + ...yment_and_environment_id_to_deployments.rb | 18 + ..._correlation_id_to_project_import_state.rb | 2 + ...44_create_clusters_applications_fluentd.rb | 4 +- ...newal_user_provided_pages_domains_index.rb | 20 + ...wal_valid_not_after_pages_domains_index.rb | 20 + ...6132529_add_resource_state_events_table.rb | 20 + ...nd_created_at_on_resource_weight_events.rb | 19 + ...059_add_write_registry_to_deploy_tokens.rb | 2 +- ...reate_access_levels_user_id_foreign_key.rb | 2 - ...7182205_create_partitioned_foreign_keys.rb | 31 + ...create_project_repository_storage_moves.rb | 31 + ...20200408125046_create_ci_freeze_periods.rb | 30 + ...merge_access_levels_user_id_foreign_key.rb | 2 - ...4411_add_path_locks_user_id_foreign_key.rb | 2 - ..._push_access_levels_user_id_foreign_key.rb | 2 - ...d_u2f_registrations_user_id_foreign_key.rb | 2 - ...ion_checksum_field_type_in_package_file.rb | 17 + ...5456_add_checksum_index_to_package_file.rb | 17 + ...10104828_add_comment_detail_to_services.rb | 13 + ...656_add_package_scopes_to_deploy_tokens.rb | 19 + ...anch_protection_to_application_settings.rb | 2 +- ...and_cilium_logs_to_applications_fluentd.rb | 29 + ...4_add_group_id_to_vulnerability_exports.rb | 10 + ...d_index_and_fk_to_vulnerability_exports.rb | 20 + ..._project_index_on_vulnerability_exports.rb | 21 + ...415153154_add_unique_index_on_plan_name.rb | 19 + ...203024_add_offset_pagination_plan_limit.rb | 9 + ..._create_status_page_published_incidents.rb | 20 + ...16120128_add_columns_to_terraform_state.rb | 2 + ...17044453_create_alert_management_alerts.rb | 44 + ...and_add_foreign_key_to_project_settings.rb | 19 + ...417145946_add_locked_to_ci_job_artifact.rb | 19 + ...profile_image_guidelines_to_appearances.rb | 21 + ...420104303_add_group_import_states_table.rb | 25 + ...3_add_text_limit_to_group_import_states.rb | 19 + ..._create_metrics_users_starred_dashboard.rb | 25 + ...420141733_add_index_on_enabled_clusters.rb | 18 + ...0172113_add_text_limit_to_sprints_title.rb | 19 + ...752_add_sprints_foreign_key_to_projects.rb | 19 + ...72927_add_sprints_foreign_key_to_groups.rb | 19 + ..._sprint_must_belong_to_project_or_group.rb | 19 + ...on_name_trigram_to_container_repository.rb | 18 + ...create_daily_build_group_report_results.rb | 21 + ...oreign_keys_for_alert_management_alerts.rb | 19 + ...0422091541_create_ci_instance_variables.rb | 31 + ...create_operations_strategies_user_lists.rb | 14 + ...id_foreign_key_to_resource_state_events.rb | 19 + ...id_foreign_key_to_resource_state_events.rb | 19 + ...id_foreign_key_to_resource_state_events.rb | 19 + ...s_must_belong_to_issue_or_merge_request.rb | 19 + ...sers_to_metrics_users_starred_dashboars.rb | 18 + ...ects_to_metrics_users_starred_dashboars.rb | 18 + ...101529_add_scheduled_at_to_jira_imports.rb | 9 + ...4050250_remove_orphaned_invited_members.rb | 13 + ...users_starred_dashboards_dashboard_path.rb | 16 + ...9_create_nuget_dependency_link_metadata.rb | 26 + ...01827_sprint_rename_state_to_state_enum.rb | 17 + ..._fk_to_project_repository_storage_moves.rb | 19 + ...ult_value_for_file_store_to_lfs_objects.rb | 19 + ...alue_for_file_store_to_ci_job_artifacts.rb | 19 + ..._add_default_value_for_store_to_uploads.rb | 19 + ...30103158_create_group_wiki_repositories.rb | 15 + ...30130048_create_packages_nuget_metadata.rb | 34 + ...gistry_settings_to_application_settings.rb | 30 + ...text_limit_to_container_registry_vendor.rb | 17 + ...ext_limit_to_container_registry_version.rb | 17 + ...gistry_features_to_application_settings.rb | 13 + ...46_add_epic_id_to_resource_state_events.rb | 17 + ...key_to_epic_id_on_resource_state_events.rb | 19 + ...0511115430_add_inherit_from_to_services.rb | 9 + ...1_add_index_inherit_from_id_to_services.rb | 21 + ..._wiki_repositories_shard_id_foreign_key.rb | 19 + ..._wiki_repositories_group_id_foreign_key.rb | 19 + ...group_wiki_repositories_disk_path_limit.rb | 18 + ...move_deprecated_jenkins_service_records.rb | 17 + ...riables_of_application_settings_to_true.rb | 9 + ...nt_make_state_enum_not_null_and_default.rb | 15 + ...not_null_check_constraint_inconsistency.rb | 20 + ..._section_to_approval_merge_request_rule.rb | 21 + ...00513234502_fill_file_store_lfs_objects.rb | 19 + .../20200513235347_fill_store_uploads.rb | 19 + ...235532_fill_file_store_ci_job_artifacts.rb | 21 + ...roject_members_on_source_id_source_type.rb | 17 + .../20181008200441_remove_circuit_breaker.rb | 2 + ...remove_koding_from_application_settings.rb | 2 +- ...137_remove_alternate_url_from_geo_nodes.rb | 2 +- ...remove_sentry_from_application_settings.rb | 4 +- ..._remove_pendo_from_application_settings.rb | 2 +- ...ect_ci_cd_settings_merge_trains_enabled.rb | 2 + ..._operations_feature_flags_clients_token.rb | 2 +- ...ve_storage_version_column_from_snippets.rb | 2 +- ...210353_cleanup_optimistic_locking_nulls.rb | 2 +- ...52620_readd_template_column_to_services.rb | 2 +- ...53_cleanup_optimistic_locking_nulls_pt2.rb | 7 + ...20200219193058_remove_state_from_issues.rb | 2 +- ...193117_remove_state_from_merge_requests.rb | 2 +- ...remove_repository_storage_from_snippets.rb | 2 +- ...rate_saml_identities_to_scim_identities.rb | 29 + ...ronment_id_on_deployment_merge_requests.rb | 27 + ..._columns_from_resource_milestone_events.rb | 11 + ...dex_pages_domains_need_auto_ssl_renewal.rb | 21 + ...420094444_backfill_snippet_repositories.rb | 30 + ...ve_additional_application_settings_rows.rb | 17 + .../20200424043515_drop_namespaces_plan_id.rb | 26 + ...anup_optimistic_locking_nulls_pt2_fixed.rb | 47 + ...ental_indexer_from_application_settings.rb | 8 + ...0429002150_cleanup_sprints_state_rename.rb | 17 + ...e_undefined_confidence_from_occurrences.rb | 35 + ...1_cleanup_user_highest_roles_population.rb | 23 + ...e_scim_identities_to_saml_for_new_users.rb | 37 + .../20200508091106_remove_bot_type.rb | 29 + ..._add_projects_foreign_key_to_namespaces.rb | 27 + ...cleanup_projects_with_missing_namespace.rb | 263 + ...defined_confidence_from_vulnerabilities.rb | 35 + ...recated_jenkins_service_records_removal.rb | 17 + ..._interpolation_format_in_common_metrics.rb | 15 + ...62057_add_missing_instance_to_servicess.rb | 30 + ...dex_to_service_unique_instance_per_type.rb | 25 + ...date_projects_foreign_key_to_namespaces.rb | 21 + .../20200513171959_enable_hashed_storage.rb | 17 + ...constraint_on_file_store_to_lfs_objects.rb | 17 + ...not_null_constraint_on_store_to_uploads.rb | 17 + ...aint_on_file_store_to_ci_jobs_artifacts.rb | 17 + db/structure.sql | 735 ++- doc/.vale/gitlab/BadgeCapitalization.yml | 42 + doc/.vale/gitlab/British.yml | 106 + doc/.vale/gitlab/Contractions.yml | 2 +- doc/.vale/gitlab/Profanity.yml | 30 + doc/.vale/gitlab/ReferenceLinks.yml | 10 + doc/.vale/gitlab/SubstitutionWarning.yml | 16 + doc/.vale/gitlab/Substitutions.yml | 9 + doc/.vale/gitlab/spelling-exceptions.txt | 44 +- doc/README.md | 20 +- doc/administration/audit_events.md | 31 +- doc/administration/auditor_users.md | 10 +- doc/administration/auth/crowd.md | 5 +- doc/administration/auth/google_secure_ldap.md | 7 +- .../how_to_configure_ldap_gitlab_ce/index.md | 5 +- .../how_to_configure_ldap_gitlab_ee/index.md | 6 +- doc/administration/auth/jwt.md | 5 +- doc/administration/auth/ldap-ee.md | 3 + .../auth/ldap-troubleshooting.md | 4 +- doc/administration/auth/oidc.md | 2 +- doc/administration/auth/smartcard.md | 4 +- doc/administration/availability/index.md | 138 +- doc/administration/database_load_balancing.md | 37 +- doc/administration/external_database.md | 30 +- .../external_pipeline_validation.md | 2 +- doc/administration/feature_flags.md | 99 + doc/administration/file_hooks.md | 14 +- .../background_verification.md | 4 +- .../geo/disaster_recovery/index.md | 39 + .../geo/disaster_recovery/planned_failover.md | 2 +- .../geo/replication/configuration.md | 10 +- .../geo/replication/database.md | 20 +- .../geo/replication/datatypes.md | 5 +- .../geo/replication/external_database.md | 40 +- .../geo/replication/geo_validation_tests.md | 100 + .../geo/replication/high_availability.md | 463 +- doc/administration/geo/replication/index.md | 12 +- .../geo/replication/multiple_servers.md | 459 ++ .../geo/replication/security_review.md | 4 +- .../geo/replication/troubleshooting.md | 35 +- .../geo/replication/updating_the_geo_nodes.md | 3 +- .../geo/replication/using_a_geo_server.md | 2 +- .../replication/version_specific_updates.md | 10 +- doc/administration/git_annex.md | 33 +- .../img/praefect_architecture_v12_10.png | Bin 29067 -> 29189 bytes doc/administration/gitaly/index.md | 140 +- doc/administration/gitaly/praefect.md | 347 +- doc/administration/gitaly/reference.md | 4 +- .../high_availability/README.md | 6 +- .../high_availability/consul.md | 9 +- .../high_availability/database.md | 16 +- .../high_availability/gitaly.md | 12 +- .../high_availability/gitlab.md | 23 +- .../high_availability/load_balancer.md | 2 +- .../high_availability/monitoring_node.md | 8 +- doc/administration/high_availability/nfs.md | 14 +- .../nfs_host_client_setup.md | 6 +- .../high_availability/pgbouncer.md | 4 +- doc/administration/high_availability/redis.md | 138 +- .../high_availability/redis_source.md | 42 +- .../high_availability/sidekiq.md | 7 +- doc/administration/incoming_email.md | 15 + doc/administration/index.md | 17 +- doc/administration/instance_limits.md | 37 +- doc/administration/instance_review.md | 5 +- doc/administration/integration/plantuml.md | 31 +- doc/administration/integration/terminal.md | 2 +- doc/administration/issue_closing_pattern.md | 4 +- doc/administration/job_artifacts.md | 6 +- doc/administration/job_logs.md | 4 +- doc/administration/lfs/index.md | 64 +- doc/administration/libravatar.md | 4 +- doc/administration/logs.md | 220 +- .../gitlab_self_monitoring_project/index.md | 10 +- .../performance/gitlab_configuration.md | 10 - .../performance/grafana_configuration.md | 56 +- .../monitoring/performance/index.md | 18 +- .../performance/influxdb_configuration.md | 192 +- .../monitoring/performance/influxdb_schema.md | 102 +- .../monitoring/prometheus/gitlab_exporter.md | 6 + .../monitoring/prometheus/gitlab_metrics.md | 165 +- .../monitoring/prometheus/index.md | 12 +- .../monitoring/prometheus/node_exporter.md | 6 + .../prometheus/pgbouncer_exporter.md | 6 + .../prometheus/postgres_exporter.md | 6 + .../monitoring/prometheus/redis_exporter.md | 6 + .../prometheus/registry_exporter.md | 6 + doc/administration/object_storage.md | 12 +- .../operations/extra_sidekiq_processes.md | 159 +- .../operations/fast_ssh_key_lookup.md | 10 +- doc/administration/operations/index.md | 1 + doc/administration/operations/puma.md | 10 +- .../operations/sidekiq_memory_killer.md | 8 +- .../operations/ssh_certificates.md | 6 +- doc/administration/operations/unicorn.md | 4 + .../packages/container_registry.md | 46 +- doc/administration/pages/index.md | 105 +- doc/administration/pages/source.md | 4 +- doc/administration/pseudonymizer.md | 4 +- doc/administration/raketasks/check.md | 12 +- doc/administration/raketasks/geo.md | 4 +- doc/administration/raketasks/github_import.md | 4 +- doc/administration/raketasks/ldap.md | 6 +- doc/administration/raketasks/maintenance.md | 56 +- doc/administration/raketasks/praefect.md | 2 +- .../raketasks/project_import_export.md | 6 +- doc/administration/raketasks/storage.md | 306 +- .../raketasks/uploads/migrate.md | 108 +- .../raketasks/uploads/sanitize.md | 55 +- .../reference_architectures/10k_users.md | 79 + .../reference_architectures/1k_users.md | 82 + .../reference_architectures/25k_users.md | 79 + .../reference_architectures/2k_users.md | 90 + .../reference_architectures/3k_users.md | 82 + .../reference_architectures/50k_users.md | 79 + .../reference_architectures/5k_users.md | 76 + .../img/reference-architectures.png | Bin 0 -> 47459 bytes .../reference_architectures/index.md | 225 + .../reply_by_email_postfix_setup.md | 6 +- doc/administration/repository_checks.md | 20 +- .../repository_storage_paths.md | 16 +- .../repository_storage_types.md | 172 +- doc/administration/restart_gitlab.md | 31 +- doc/administration/scaling/index.md | 255 +- doc/administration/server_hooks.md | 33 +- doc/administration/smime_signing_email.md | 8 + .../static_objects_external_storage.md | 2 +- doc/administration/terraform_state.md | 13 +- doc/administration/timezone.md | 4 +- .../troubleshooting/elasticsearch.md | 5 +- .../gitlab_rails_cheat_sheet.md | 50 +- .../troubleshooting/kubernetes_cheat_sheet.md | 42 +- .../troubleshooting/log_parsing.md | 34 +- .../troubleshooting/postgresql.md | 10 +- doc/administration/troubleshooting/sidekiq.md | 3 +- doc/administration/troubleshooting/ssl.md | 38 + doc/administration/uploads.md | 39 +- doc/api/README.md | 54 +- doc/api/api_resources.md | 14 +- doc/api/appearance.md | 3 + doc/api/applications.md | 8 +- doc/api/avatar.md | 2 +- doc/api/award_emoji.md | 16 +- doc/api/boards.md | 4 +- doc/api/branches.md | 15 +- doc/api/broadcast_messages.md | 8 +- doc/api/commits.md | 76 +- doc/api/container_registry.md | 5 + doc/api/deploy_keys.md | 2 +- doc/api/deploy_tokens.md | 4 +- doc/api/epics.md | 6 +- doc/api/events.md | 34 +- doc/api/feature_flag_specs.md | 12 +- doc/api/feature_flag_user_lists.md | 181 + doc/api/feature_flags.md | 2 +- doc/api/features.md | 44 + doc/api/freeze_periods.md | 168 + doc/api/geo_nodes.md | 8 +- doc/api/graphql/getting_started.md | 2 +- .../graphql/reference/gitlab_schema.graphql | 2033 ++++++- doc/api/graphql/reference/gitlab_schema.json | 5362 ++++++++++++++++- doc/api/graphql/reference/index.md | 384 +- doc/api/group_badges.md | 2 +- doc/api/group_import_export.md | 8 +- doc/api/group_milestones.md | 73 +- doc/api/groups.md | 159 +- doc/api/import.md | 4 +- doc/api/instance_level_ci_variables.md | 162 + doc/api/issues.md | 13 +- doc/api/issues_statistics.md | 6 +- doc/api/jobs.md | 12 +- doc/api/keys.md | 4 +- doc/api/labels.md | 4 +- doc/api/lint.md | 4 +- doc/api/managed_licenses.md | 2 +- doc/api/members.md | 72 + doc/api/merge_request_approvals.md | 2 +- doc/api/merge_requests.md | 45 +- doc/api/metrics_dashboard_annotations.md | 14 +- doc/api/metrics_user_starred_dashboards.md | 61 + doc/api/oauth2.md | 2 +- doc/api/packages.md | 23 +- doc/api/pages.md | 2 +- doc/api/pages_domains.md | 12 +- doc/api/pipeline_schedules.md | 20 +- doc/api/pipeline_triggers.md | 6 +- doc/api/pipelines.md | 65 +- doc/api/project_badges.md | 2 +- doc/api/project_import_export.md | 13 +- doc/api/project_repository_storage_moves.md | 80 + doc/api/project_snippets.md | 4 +- doc/api/projects.md | 27 +- doc/api/releases/index.md | 29 +- doc/api/releases/links.md | 16 +- doc/api/remote_mirrors.md | 17 +- doc/api/repositories.md | 2 + doc/api/repository_files.md | 20 +- doc/api/runners.md | 14 +- doc/api/scim.md | 27 +- doc/api/search.md | 35 +- doc/api/services.md | 82 +- doc/api/settings.md | 32 +- doc/api/snippets.md | 52 +- doc/api/templates/gitignores.md | 2 +- doc/api/todos.md | 9 +- doc/api/users.md | 23 +- doc/api/vulnerability_exports.md | 151 +- doc/api/wikis.md | 4 +- doc/ci/README.md | 32 +- doc/ci/caching/index.md | 5 +- .../bitbucket_integration.md | 2 +- doc/ci/cloud_deployment/index.md | 5 +- doc/ci/directed_acyclic_graph/index.md | 3 +- doc/ci/docker/using_docker_build.md | 2 +- doc/ci/docker/using_docker_images.md | 36 +- doc/ci/docker/using_kaniko.md | 13 + doc/ci/environments.md | 983 +-- doc/ci/environments/environments_dashboard.md | 3 + doc/ci/environments/incremental_rollouts.md | 10 +- doc/ci/environments/index.md | 991 +++ doc/ci/environments/protected_environments.md | 5 +- .../index.md | 6 +- .../index.md | 16 +- .../laravel_with_gitlab_and_envoy/index.md | 2 +- ...and-deploy-python-application-to-heroku.md | 11 +- ...t-and-deploy-ruby-application-to-heroku.md | 18 +- doc/ci/examples/test-scala-application.md | 4 +- .../index.md | 2 +- doc/ci/img/metrics_reports.png | Bin 19450 -> 0 bytes doc/ci/img/metrics_reports_v13_0.png | Bin 0 -> 17996 bytes doc/ci/introduction/index.md | 11 +- doc/ci/jenkins/index.md | 17 +- doc/ci/junit_test_reports.md | 35 +- doc/ci/large_repositories/index.md | 6 +- ...ge_request_pipelines_doubled_MR_v12_09.png | Bin 0 -> 29650 bytes ...equest_pipelines_doubled_branch_v12_09.png | Bin 0 -> 29680 bytes doc/ci/merge_request_pipelines/index.md | 130 +- .../pipelines_for_merged_results/index.md | 17 +- .../merge_trains/index.md | 21 +- doc/ci/metrics_reports.md | 4 +- doc/ci/parent_child_pipelines.md | 6 + doc/ci/pipelines/img/pipelines_index.png | Bin 14896 -> 0 bytes .../pipelines/img/pipelines_index_v13_0.png | Bin 0 -> 46101 bytes doc/ci/pipelines/index.md | 42 +- doc/ci/pipelines/job_artifacts.md | 227 +- doc/ci/pipelines/schedules.md | 9 + doc/ci/pipelines/settings.md | 21 +- doc/ci/review_apps/index.md | 21 +- doc/ci/services/mysql.md | 2 +- doc/ci/services/postgres.md | 2 +- doc/ci/variables/README.md | 451 +- .../img/ci_job_stage_output_example.png | Bin 68964 -> 156322 bytes .../img/inherited_group_variables_v12_5.png | Bin 21349 -> 58215 bytes ...rride_value_via_manual_pipeline_output.png | Bin 72420 -> 310224 bytes .../img/override_variable_manual_pipeline.png | Bin 13885 -> 52678 bytes .../img/variable_types_usage_example.png | Bin 21983 -> 0 bytes doc/ci/variables/predefined_variables.md | 13 +- doc/ci/yaml/README.md | 2679 ++++---- doc/ci/yaml/includes.md | 213 + doc/development/README.md | 28 +- doc/development/api_graphql_styleguide.md | 16 +- doc/development/api_styleguide.md | 18 +- doc/development/application_limits.md | 4 +- doc/development/architecture.md | 2 +- doc/development/auto_devops.md | 6 +- doc/development/background_migrations.md | 11 +- doc/development/changelog.md | 20 +- doc/development/cicd/img/ci_architecture.png | Bin 0 -> 102944 bytes doc/development/cicd/index.md | 75 + doc/development/code_review.md | 64 +- doc/development/contributing/index.md | 102 +- .../contributing/issue_workflow.md | 12 +- .../contributing/merge_request_workflow.md | 8 +- doc/development/contributing/style_guides.md | 2 +- doc/development/creating_enums.md | 89 + doc/development/dangerbot.md | 6 +- .../add_foreign_key_to_existing_column.md | 2 +- doc/development/database_debugging.md | 30 +- doc/development/database_review.md | 8 +- doc/development/diffs.md | 7 +- .../documentation/feature_flags.md | 188 + doc/development/documentation/index.md | 112 +- .../site_architecture/release_process.md | 14 +- doc/development/documentation/structure.md | 10 +- doc/development/documentation/styleguide.md | 224 +- doc/development/documentation/workflow.md | 382 +- doc/development/ee_features.md | 13 +- doc/development/elasticsearch.md | 2 +- doc/development/emails.md | 9 +- doc/development/event_tracking/backend.md | 4 +- doc/development/event_tracking/frontend.md | 4 +- doc/development/event_tracking/index.md | 4 +- doc/development/experiment_guide/index.md | 22 +- doc/development/fe_guide/accessibility.md | 13 +- doc/development/fe_guide/axios.md | 18 +- doc/development/fe_guide/design_patterns.md | 4 +- doc/development/fe_guide/droplab/droplab.md | 18 +- .../fe_guide/droplab/plugins/ajax.md | 2 +- .../fe_guide/droplab/plugins/filter.md | 2 +- .../fe_guide/droplab/plugins/input_setter.md | 2 +- doc/development/fe_guide/event_tracking.md | 4 +- doc/development/fe_guide/frontend_faq.md | 2 +- doc/development/fe_guide/graphql.md | 24 +- doc/development/fe_guide/icons.md | 17 +- doc/development/fe_guide/index.md | 23 +- doc/development/fe_guide/performance.md | 15 +- doc/development/fe_guide/security.md | 31 +- doc/development/fe_guide/style/javascript.md | 5 +- doc/development/fe_guide/style/scss.md | 51 +- doc/development/fe_guide/style/vue.md | 6 +- doc/development/fe_guide/tooling.md | 4 +- doc/development/fe_guide/vue.md | 228 +- doc/development/fe_guide/vue3_migration.md | 124 + doc/development/fe_guide/vuex.md | 85 +- doc/development/feature_flags/controls.md | 115 +- doc/development/feature_flags/index.md | 8 +- doc/development/feature_flags/process.md | 3 + doc/development/file_storage.md | 26 +- doc/development/filtering_by_label.md | 4 +- doc/development/geo.md | 6 +- doc/development/geo/framework.md | 254 +- doc/development/gitaly.md | 4 +- doc/development/go_guide/index.md | 74 +- doc/development/hash_indexes.md | 2 +- doc/development/i18n/externalization.md | 32 +- doc/development/i18n/proofreader.md | 2 +- doc/development/img/snowplow_flow.png | Bin 0 -> 16589 bytes .../img/telemetry_system_overview.png | Bin 0 -> 429082 bytes doc/development/import_export.md | 75 + doc/development/import_project.md | 3 +- doc/development/instrumentation.md | 2 +- doc/development/integrations/example_vuln.png | Bin 0 -> 102950 bytes doc/development/integrations/secure.md | 164 +- .../secure_partner_integration.md | 2 +- doc/development/interacting_components.md | 2 +- doc/development/internal_api.md | 10 +- doc/development/lfs.md | 2 +- .../licensed_feature_availability.md | 4 + doc/development/licensing.md | 64 +- doc/development/logging.md | 7 +- doc/development/mass_insert.md | 6 +- .../merge_request_performance_guidelines.md | 2 +- doc/development/migration_style_guide.md | 95 +- .../multi_version_compatibility.md | 62 + .../namespaces_storage_statistics.md | 12 +- .../new_fe_guide/development/accessibility.md | 23 +- .../new_fe_guide/modules/dirty_submit.md | 2 +- doc/development/newlines_styleguide.md | 2 +- doc/development/ordering_table_columns.md | 90 +- doc/development/packages.md | 12 +- doc/development/performance.md | 4 +- doc/development/permissions.md | 6 +- doc/development/pipelines.md | 531 +- doc/development/policies.md | 4 +- doc/development/polymorphic_associations.md | 2 +- doc/development/profiling.md | 2 +- doc/development/query_recorder.md | 110 +- doc/development/rake_tasks.md | 58 +- doc/development/reactive_caching.md | 12 +- doc/development/repository_mirroring.md | 13 +- doc/development/scalability.md | 6 +- doc/development/secure_coding_guidelines.md | 79 +- .../shell_scripting_guide/index.md | 20 +- doc/development/sidekiq_style_guide.md | 51 +- doc/development/telemetry/index.md | 165 + doc/development/telemetry/snowplow.md | 393 ++ doc/development/telemetry/usage_ping.md | 489 ++ .../testing_guide/best_practices.md | 60 +- .../end_to_end/beginners_guide.md | 340 ++ ...vops-lifecycle-by-stage-numbers_V12_10.png | Bin 0 -> 28571 bytes .../testing_guide/end_to_end/index.md | 2 +- .../testing_guide/end_to_end/page_objects.md | 47 + .../end_to_end/quick_start_guide.md | 621 -- .../end_to_end/rspec_metadata_tests.md | 2 + .../testing_guide/end_to_end/style_guide.md | 1 + doc/development/testing_guide/flaky_tests.md | 2 +- .../testing_guide/frontend_testing.md | 60 +- doc/development/testing_guide/index.md | 12 +- doc/development/testing_guide/review_apps.md | 41 +- .../testing_guide/testing_levels.md | 56 +- doc/development/uploads.md | 2 +- doc/development/value_stream_analytics.md | 2 +- .../verifying_database_capabilities.md | 4 +- doc/development/what_requires_downtime.md | 67 +- doc/development/windows.md | 139 + doc/downgrade_ee_to_ce/README.md | 7 +- doc/gitlab-basics/command-line-commands.md | 2 +- doc/gitlab-basics/create-project.md | 2 +- doc/gitlab-basics/create-your-ssh-keys.md | 2 +- doc/gitlab-basics/start-using-git.md | 145 +- doc/gitlab-geo/ha.md | 4 +- doc/install/README.md | 12 +- doc/install/aws/index.md | 234 +- doc/install/azure/index.md | 47 +- doc/install/google_cloud_platform/index.md | 19 +- doc/install/installation.md | 41 +- doc/install/openshift_and_gitlab/index.md | 27 +- doc/install/relative_url.md | 9 +- doc/install/requirements.md | 81 +- doc/integration/README.md | 2 +- doc/integration/azure.md | 2 +- doc/integration/elasticsearch.md | 81 +- doc/integration/github.md | 7 +- doc/integration/gitlab.md | 5 +- doc/integration/img/gitlab_app.png | Bin 32020 -> 0 bytes .../img/jenkins_gitlab_service_settings.png | Bin 24094 -> 0 bytes doc/integration/jenkins.md | 196 +- doc/integration/jenkins_deprecated.md | 3 + doc/integration/jira_development_panel.md | 9 +- doc/integration/oauth_provider.md | 2 + doc/integration/omniauth.md | 2 +- doc/integration/recaptcha.md | 2 +- doc/integration/slash_commands.md | 6 +- doc/integration/sourcegraph.md | 4 +- doc/integration/vault.md | 3 + .../performance/influxdb_configuration.md | 4 +- doc/monitoring/performance/influxdb_schema.md | 4 +- doc/push_rules/push_rules.md | 41 +- doc/raketasks/README.md | 46 +- doc/raketasks/backup_hrz.png | Bin 11441 -> 0 bytes doc/raketasks/backup_restore.md | 118 +- doc/raketasks/cleanup.md | 13 +- doc/raketasks/features.md | 18 +- .../generate_sample_prometheus_data.md | 20 +- doc/raketasks/import.md | 90 +- doc/raketasks/list_repos.md | 21 +- doc/raketasks/migrate_snippets.md | 96 + doc/raketasks/user_management.md | 117 +- doc/raketasks/web_hooks.md | 52 +- doc/raketasks/x509_signatures.md | 21 +- doc/security/README.md | 4 +- doc/security/asset_proxy.md | 2 +- doc/security/crime_vulnerability.md | 24 +- doc/security/rack_attack.md | 28 +- doc/security/webhooks.md | 2 +- doc/subscriptions/index.md | 24 +- doc/telemetry/backend.md | 34 - doc/telemetry/frontend.md | 167 - doc/telemetry/index.md | 75 +- doc/telemetry/snowplow.md | 5 + doc/tools/email.md | 3 + doc/topics/airgap/index.md | 74 +- doc/topics/authentication/index.md | 3 +- doc/topics/autodevops/customize.md | 48 +- doc/topics/autodevops/index.md | 398 +- doc/topics/autodevops/quick_start_guide.md | 8 +- doc/topics/autodevops/stages.md | 404 +- doc/topics/autodevops/upgrading_postgresql.md | 44 +- doc/topics/git/how_to_install_git/index.md | 49 +- doc/topics/git/index.md | 19 +- doc/topics/git/lfs/index.md | 10 +- .../lfs/migrate_from_git_annex_to_git_lfs.md | 33 +- .../index.md | 20 +- doc/topics/git/partial_clone.md | 23 +- doc/topics/git/troubleshooting_git.md | 16 +- doc/topics/git/useful_git_commands.md | 2 +- doc/topics/gitlab_flow.md | 2 +- ...e_waf_ingress_disabled_settings_v12_10.png | Bin 0 -> 51416 bytes doc/university/support/README.md | 6 +- doc/university/training/end-user/README.md | 2 +- doc/university/training/topics/agile_git.md | 2 +- doc/update/README.md | 32 +- doc/update/patch_versions.md | 2 +- doc/update/restore_after_failure.md | 4 +- doc/update/upgrading_from_ce_to_ee.md | 4 +- doc/user/admin_area/abuse_reports.md | 2 +- doc/user/admin_area/broadcast_messages.md | 11 +- doc/user/admin_area/index.md | 19 +- doc/user/admin_area/license.md | 7 +- .../admin_area/monitoring/health_check.md | 26 +- .../settings/account_and_limit_settings.md | 2 +- doc/user/admin_area/settings/email.md | 5 +- .../settings/external_authorization.md | 7 +- doc/user/admin_area/settings/index.md | 9 +- .../settings/instance_template_repository.md | 2 +- .../admin_area/settings/protected_paths.md | 21 - .../settings/rate_limit_on_issues_creation.md | 2 +- .../settings/sign_up_restrictions.md | 7 +- doc/user/admin_area/settings/terms.md | 4 +- .../admin_area/settings/usage_statistics.md | 374 +- .../visibility_and_access_controls.md | 22 + doc/user/analytics/code_review_analytics.md | 5 + .../img/repository_analytics_v13_0.png | Bin 0 -> 91755 bytes doc/user/analytics/index.md | 9 +- doc/user/analytics/productivity_analytics.md | 7 + doc/user/analytics/repository_analytics.md | 40 + doc/user/analytics/value_stream_analytics.md | 46 +- .../configuration/index.md | 2 +- .../img/container_scanning_v12_9.png | Bin 23030 -> 0 bytes .../img/container_scanning_v13_0.png | Bin 0 -> 33010 bytes .../container_scanning/index.md | 49 +- .../dast/img/dast_all_v12_9.png | Bin 12130 -> 0 bytes .../dast/img/dast_all_v13_0.png | Bin 0 -> 32346 bytes .../dast/img/dast_single_v12_9.png | Bin 96419 -> 0 bytes .../dast/img/dast_single_v13_0.png | Bin 0 -> 211373 bytes doc/user/application_security/dast/index.md | 256 +- .../dependency_scanning/analyzers.md | 2 +- .../img/dependency_scanning.png | Bin 16167 -> 0 bytes .../img/dependency_scanning_v13_0.png | Bin 0 -> 44921 bytes .../dependency_scanning/index.md | 267 +- .../img/adding_a_dismissal_reason_v13_0.png | Bin 0 -> 109979 bytes .../img/dismissed_info_v12_3.png | Bin 35439 -> 0 bytes .../interacting_with_vulnerability_v13_0.png | Bin 0 -> 90299 bytes .../img/interactive_reports.png | Bin 29814 -> 0 bytes .../img/security_configuration_page_v12_9.png | Bin 51545 -> 0 bytes .../img/security_configuration_page_v13_1.png | Bin 0 -> 63337 bytes doc/user/application_security/index.md | 168 +- .../offline_deployments/index.md | 9 + .../application_security/sast/analyzers.md | 4 +- .../sast/img/sast_v12_9.png | Bin 13983 -> 0 bytes .../sast/img/sast_v13_0.png | Bin 0 -> 29907 bytes doc/user/application_security/sast/index.md | 231 +- .../img/secret-detection-merge-request-ui.png | Bin 0 -> 100409 bytes .../secret_detection/index.md | 67 + .../img/group_security_dashboard_v12_6.png | Bin 69145 -> 0 bytes .../img/group_security_dashboard_v13_0.png | Bin 0 -> 212401 bytes ...ce_security_dashboard_export_csv_v13_0.png | Bin 0 -> 5563 bytes ...security_dashboard_with_projects_v12_8.png | Bin 87617 -> 0 bytes ...security_dashboard_with_projects_v13_0.png | Bin 0 -> 58505 bytes ..._security_dashboard_export_csv_v12_10.png} | Bin .../img/project_security_dashboard_v12_3.png | Bin 48767 -> 0 bytes .../img/project_security_dashboard_v13_0.png | Bin 0 -> 199457 bytes .../security_dashboard/index.md | 53 +- .../threat_monitoring/index.md | 6 +- .../vulnerabilities/index.md | 6 +- doc/user/clusters/applications.md | 97 +- doc/user/clusters/crossplane.md | 10 +- doc/user/clusters/environments.md | 8 +- doc/user/clusters/img/fluentd_v12_10.png | Bin 26438 -> 0 bytes doc/user/clusters/img/fluentd_v13_0.png | Bin 0 -> 32445 bytes doc/user/clusters/management_project.md | 6 + .../img/license_compliance.png | Bin 5184 -> 0 bytes .../license_compliance_add_license_v12_3.png | Bin 28440 -> 0 bytes .../license_compliance_add_license_v13_0.png | Bin 0 -> 61862 bytes .../img/license_compliance_decision.png | Bin 5975 -> 0 bytes .../img/license_compliance_decision_v13_0.png | Bin 0 -> 40646 bytes .../license_compliance_pipeline_tab_v12_3.png | Bin 16435 -> 0 bytes .../license_compliance_pipeline_tab_v13_0.png | Bin 0 -> 51906 bytes .../img/license_compliance_search_v12_3.png | Bin 26074 -> 0 bytes .../img/license_compliance_search_v13_0.png | Bin 0 -> 29857 bytes .../img/license_compliance_settings_v12_3.png | Bin 14766 -> 0 bytes .../img/license_compliance_settings_v13_0.png | Bin 0 -> 17567 bytes .../img/license_compliance_v13_0.png | Bin 0 -> 85525 bytes .../img/license_list_v12_6.png | Bin 30154 -> 0 bytes .../img/license_list_v13_0.png | Bin 0 -> 89930 bytes .../img/policies_maintainer_add_v12_9.png | Bin 6745 -> 0 bytes .../img/policies_maintainer_add_v13_0.png | Bin 0 -> 22079 bytes .../img/policies_maintainer_edit_v12_9.png | Bin 10751 -> 0 bytes .../img/policies_maintainer_edit_v13_0.png | Bin 0 -> 40712 bytes .../license_compliance/img/policies_v12_9.png | Bin 18966 -> 0 bytes .../license_compliance/img/policies_v13_0.png | Bin 0 -> 69562 bytes .../compliance/license_compliance/index.md | 183 +- doc/user/feature_highlight.md | 4 +- doc/user/gitlab_com/index.md | 50 +- doc/user/group/clusters/index.md | 81 +- .../group/contribution_analytics/index.md | 5 +- doc/user/group/epics/img/epic_view_v12.3.png | Bin 61402 -> 0 bytes doc/user/group/epics/img/epic_view_v13.0.png | Bin 0 -> 54891 bytes doc/user/group/epics/index.md | 257 +- doc/user/group/epics/manage_epics.md | 302 + doc/user/group/index.md | 35 +- doc/user/group/insights/index.md | 4 + doc/user/group/issues_analytics/index.md | 4 + .../group/roadmap/img/roadmap_view_v12_10.png | Bin 46736 -> 0 bytes .../group/roadmap/img/roadmap_view_v13_0.png | Bin 0 -> 55012 bytes doc/user/group/roadmap/index.md | 5 +- doc/user/group/saml_sso/index.md | 10 +- doc/user/group/saml_sso/scim_setup.md | 82 +- doc/user/group/settings/img/export_panel.png | Bin 0 -> 200162 bytes doc/user/group/settings/import_export.md | 98 + doc/user/group/subgroups/index.md | 5 - doc/user/img/gitlab_snippet.png | Bin 34355 -> 0 bytes doc/user/img/gitlab_snippet_v13_0.png | Bin 0 -> 28925 bytes doc/user/img/snippet_clone_button_v13_0.png | Bin 0 -> 33081 bytes doc/user/incident_management/index.md | 163 +- .../img/terraform_plan_log_v13_0.png | Bin 0 -> 23683 bytes .../img/terraform_plan_widget_v13_0.png | Bin 0 -> 10986 bytes doc/user/infrastructure/index.md | 345 +- doc/user/instance/clusters/index.md | 6 +- doc/user/instance_statistics/user_cohorts.md | 1 + doc/user/markdown.md | 124 +- doc/user/packages/conan_repository/index.md | 17 +- ...ner_registry_group_repositories_v12_10.png | Bin 48791 -> 0 bytes ...iner_registry_group_repositories_v13_0.png | Bin 0 -> 41813 bytes ...container_registry_repositories_v12_10.png | Bin 24128 -> 0 bytes .../container_registry_repositories_v13_0.png | Bin 0 -> 44925 bytes ...ry_repositories_with_quickstart_v12_10.png | Bin 61732 -> 0 bytes ...try_repositories_with_quickstart_v13_0.png | Bin 0 -> 48708 bytes ...ner_registry_repository_details_v12.10.png | Bin 47218 -> 0 bytes ...iner_registry_repository_details_v13.0.png | Bin 0 -> 32673 bytes .../img/container_registry_tags_v12_10.png | Bin 37743 -> 0 bytes .../img/expiration-policy-app.png | Bin 32054 -> 0 bytes .../img/expiration_policy_app_v13_0.png | Bin 0 -> 61601 bytes doc/user/packages/container_registry/index.md | 106 +- .../img/group_dependency_proxy.png | Bin 58663 -> 29334 bytes doc/user/packages/dependency_proxy/index.md | 4 +- .../img/group_packages_list_v12_10.png | Bin 41637 -> 0 bytes .../img/group_packages_list_v13_0.png | Bin 0 -> 50889 bytes .../packages/img/package_detail_v12_10.png | Bin 63529 -> 0 bytes .../packages/img/package_detail_v13_0.png | Bin 0 -> 46047 bytes .../img/project_packages_list_v12_10.png | Bin 39163 -> 0 bytes .../img/project_packages_list_v13_0.png | Bin 0 -> 52752 bytes doc/user/packages/index.md | 27 +- doc/user/packages/maven_repository/index.md | 368 +- doc/user/packages/npm_registry/index.md | 33 +- doc/user/packages/nuget_repository/index.md | 20 +- doc/user/packages/pypi_repository/index.md | 198 +- doc/user/permissions.md | 34 +- .../profile/img/change_password_v13_0.png | Bin 0 -> 15919 bytes .../img/unknown_sign_in_email_v13_0.png | Bin 0 -> 20047 bytes doc/user/profile/index.md | 18 + doc/user/profile/notifications.md | 25 +- doc/user/profile/personal_access_tokens.md | 13 +- doc/user/profile/preferences.md | 5 + .../profile/unknown_sign_in_notification.md | 16 + doc/user/project/clusters/add_eks_clusters.md | 6 + doc/user/project/clusters/add_gke_clusters.md | 6 + .../project/clusters/add_remove_clusters.md | 6 + doc/user/project/clusters/index.md | 42 +- .../project/clusters/kubernetes_pod_logs.md | 58 +- doc/user/project/clusters/runbooks/index.md | 172 +- doc/user/project/clusters/serverless/aws.md | 8 +- doc/user/project/clusters/serverless/index.md | 6 + doc/user/project/code_owners.md | 43 +- doc/user/project/deploy_boards.md | 15 +- doc/user/project/deploy_tokens/index.md | 30 +- doc/user/project/description_templates.md | 20 + doc/user/project/file_lock.md | 7 +- doc/user/project/git_attributes.md | 4 +- ...ervice_desk_custom_email_address_v13_0.png | Bin 0 -> 89721 bytes doc/user/project/import/bitbucket.md | 14 +- doc/user/project/import/bitbucket_server.md | 4 + doc/user/project/import/github.md | 6 +- doc/user/project/import/jira.md | 9 + doc/user/project/index.md | 2 +- doc/user/project/integrations/bamboo.md | 2 +- .../project/integrations/generic_alerts.md | 12 +- .../integrations/gitlab_slack_application.md | 29 +- ...metrics_dashboard_annotations_ui_v13.0.png | Bin 0 -> 31654 bytes .../img/panel_context_menu_v12_10.png | Bin 21057 -> 0 bytes .../img/panel_context_menu_v13_0.png | Bin 0 -> 34737 bytes .../prometheus_dashboard_select_v_13_0.png | Bin 0 -> 14284 bytes ...e_metrics_user_starred_dashboard_v13_0.png | Bin 0 -> 14922 bytes .../img/webex_teams_configuration.png | Bin 0 -> 250628 bytes .../integrations/mattermost_slash_commands.md | 15 +- doc/user/project/integrations/overview.md | 17 +- doc/user/project/integrations/prometheus.md | 255 +- .../prometheus_library/cloudwatch.md | 6 + .../prometheus_library/haproxy.md | 6 + .../integrations/prometheus_library/index.md | 6 + .../prometheus_library/kubernetes.md | 6 + .../integrations/prometheus_library/nginx.md | 6 + .../prometheus_library/nginx_ingress.md | 6 + .../prometheus_library/nginx_ingress_vts.md | 6 + .../project/integrations/prometheus_units.md | 77 +- doc/user/project/integrations/slack.md | 2 +- doc/user/project/integrations/webex_teams.md | 24 + doc/user/project/integrations/webhooks.md | 2 +- doc/user/project/integrations/youtrack.md | 4 +- doc/user/project/issue_board.md | 463 +- doc/user/project/issues/csv_export.md | 2 +- doc/user/project/issues/design_management.md | 6 +- doc/user/project/issues/due_dates.md | 5 + doc/user/project/issues/index.md | 9 +- .../project/issues/issue_data_and_actions.md | 4 +- doc/user/project/issues/managing_issues.md | 27 +- doc/user/project/issues/related_issues.md | 6 +- doc/user/project/labels.md | 19 +- doc/user/project/members/index.md | 2 +- .../merge_requests/accessibility_testing.md | 22 +- .../browser_performance_testing.md | 164 +- .../project/merge_requests/code_quality.md | 26 +- .../merge_requests/creating_merge_requests.md | 2 +- .../img/accessibility_mr_widget_v13_0.png | Bin 0 -> 130072 bytes .../merge_requests/img/code_quality.png | Bin 94062 -> 511302 bytes .../reviewing_and_managing_merge_requests.md | 11 +- .../test_coverage_visualization.md | 4 +- doc/user/project/merge_requests/versions.md | 22 +- .../project/new_ci_build_permissions_model.md | 2 +- .../project/operations/alert_management.md | 79 + doc/user/project/operations/error_tracking.md | 8 +- doc/user/project/operations/feature_flags.md | 79 +- .../operations/img/alert_detail_v13_0.png | Bin 0 -> 24097 bytes .../img/alert_management_1_v13_0.png | Bin 0 -> 19152 bytes .../img/alert_management_1_v13_1.png | Bin 0 -> 57133 bytes .../img/alert_management_severity_v13_0.png | Bin 0 -> 10972 bytes doc/user/project/operations/index.md | 2 +- .../linking_to_an_external_dashboard.md | 2 +- doc/user/project/operations/tracing.md | 6 + .../dns_concepts.md | 3 + .../index.md | 8 + .../lets_encrypt_integration.md | 3 + .../ssl_tls_concepts.md | 3 + .../getting_started/fork_sample_project.md | 3 + .../new_or_existing_website.md | 3 + .../getting_started/pages_bundled_template.md | 3 + .../pages/getting_started_part_four.md | 11 +- .../project/pages/getting_started_part_one.md | 3 + doc/user/project/pages/index.md | 3 + doc/user/project/pages/introduction.md | 14 +- .../project/pages/pages_access_control.md | 6 + doc/user/project/protected_tags.md | 4 +- doc/user/project/push_options.md | 8 +- doc/user/project/quick_actions.md | 2 +- .../releases/img/edit_release_page_v13_0.png | Bin 0 -> 285708 bytes .../img/release_milestone_dropdown_v13_0.png | Bin 0 -> 138986 bytes doc/user/project/releases/index.md | 61 +- doc/user/project/repository/file_finder.md | 17 +- .../project/repository/forking_workflow.md | 2 - .../img/file_finder_find_button.png | Bin 14565 -> 0 bytes .../img/file_finder_find_button_v12_10.png | Bin 0 -> 70732 bytes .../repository/img/file_finder_find_file.png | Bin 19478 -> 0 bytes .../img/file_finder_find_file_v12_10.png | Bin 0 -> 59474 bytes doc/user/project/repository/index.md | 6 +- .../repository/repository_mirroring.md | 22 + .../repository/x509_signed_commits/index.md | 71 +- doc/user/project/requirements/index.md | 3 + doc/user/project/service_desk.md | 72 +- doc/user/project/settings/import_export.md | 27 +- doc/user/project/settings/index.md | 23 +- .../project/settings/project_access_tokens.md | 55 + .../img/static_site_editor_v12_10.png | Bin 50679 -> 0 bytes .../img/wysiwyg_editor_v13_0.png | Bin 0 -> 49012 bytes doc/user/project/static_site_editor/index.md | 14 +- doc/user/project/status_page/index.md | 28 +- .../img/admin_clientside_evaluation.png | Bin 9342 -> 0 bytes .../web_ide/img/admin_live_preview_v13_0.png | Bin 0 -> 5508 bytes .../project/web_ide/img/dark_theme_v13.0.png | Bin 0 -> 852854 bytes ..._evaluation.png => live_preview_v13_0.png} | Bin .../img/solarized_light_theme_v13.0.png | Bin 0 -> 790377 bytes doc/user/project/web_ide/index.md | 42 +- doc/user/project/wiki/index.md | 23 +- doc/user/search/advanced_global_search.md | 8 +- doc/user/search/advanced_search_syntax.md | 8 +- ...ilter_approved_by_merge_requests_v13_0.png | Bin 0 -> 46764 bytes doc/user/search/index.md | 16 +- doc/user/snippets.md | 67 +- doc/user/todos.md | 4 +- haml_lint/linter/no_plain_nodes.rb | 8 +- jest.config.base.js | 92 + jest.config.integration.js | 5 + jest.config.js | 103 - jest.config.unit.js | 17 + lib/api/admin/ci/variables.rb | 137 + lib/api/api.rb | 16 +- lib/api/api_guard.rb | 9 +- lib/api/appearance.rb | 3 +- lib/api/branches.rb | 2 + lib/api/deploy_tokens.rb | 6 +- lib/api/entities/appearance.rb | 1 + lib/api/entities/branch.rb | 6 + lib/api/entities/design_management/design.rb | 16 + lib/api/entities/freeze_period.rb | 11 + lib/api/entities/job_request/artifacts.rb | 1 + lib/api/entities/merge_request_basic.rb | 6 +- .../metrics/user_starred_dashboard.rb | 11 + lib/api/entities/personal_snippet.rb | 3 - .../project_repository_storage_move.rb | 14 + lib/api/entities/release.rb | 2 - lib/api/entities/remote_mirror.rb | 4 +- lib/api/entities/runner_details.rb | 9 +- lib/api/entities/snippet.rb | 10 +- lib/api/entities/todo.rb | 13 + lib/api/entities/user_basic.rb | 2 + lib/api/entities/user_path.rb | 2 + lib/api/features.rb | 22 +- lib/api/freeze_periods.rb | 107 + lib/api/groups.rb | 61 +- lib/api/helpers.rb | 18 +- lib/api/helpers/internal_helpers.rb | 2 +- lib/api/helpers/merge_requests_helpers.rb | 1 + lib/api/helpers/pagination_strategies.rb | 34 +- lib/api/helpers/projects_helpers.rb | 1 + lib/api/helpers/search_helpers.rb | 2 +- lib/api/helpers/services_helpers.rb | 9 + lib/api/helpers/snippets_helpers.rb | 17 + lib/api/internal/base.rb | 19 +- lib/api/issues.rb | 2 + lib/api/job_artifacts.rb | 4 +- lib/api/members.rb | 2 + lib/api/merge_requests.rb | 7 + lib/api/metrics/dashboard/annotations.rb | 45 +- lib/api/metrics/user_starred_dashboards.rb | 46 + lib/api/pipelines.rb | 15 + lib/api/project_repository_storage_moves.rb | 34 + lib/api/project_snippets.rb | 34 +- lib/api/project_templates.rb | 12 +- lib/api/projects.rb | 4 +- lib/api/remote_mirrors.rb | 2 - lib/api/search.rb | 3 +- lib/api/settings.rb | 16 +- lib/api/snippets.rb | 31 +- lib/api/wikis.rb | 14 +- lib/banzai/filter/issue_reference_filter.rb | 20 +- lib/banzai/filter/upload_link_filter.rb | 4 + lib/banzai/filter/user_reference_filter.rb | 2 +- lib/banzai/pipeline.rb | 2 +- lib/banzai/reference_parser/design_parser.rb | 31 + lib/banzai/renderer.rb | 7 +- lib/container_registry/client.rb | 21 +- lib/container_registry/config.rb | 2 +- lib/csv_builder.rb | 11 +- lib/csv_builders/single_batch.rb | 11 + lib/declarative_policy.rb | 17 +- lib/feature.rb | 6 +- lib/gitlab/alert_management/alert_params.rb | 41 + .../alert_management/alert_status_counts.rb | 53 + lib/gitlab/alerting/alert.rb | 12 + .../alerting/notification_payload_parser.rb | 8 +- .../analytics/cycle_analytics/median.rb | 6 +- lib/gitlab/auth.rb | 4 + lib/gitlab/auth/auth_finders.rb | 27 +- lib/gitlab/auth/ldap/access.rb | 4 +- lib/gitlab/auth/ldap/adapter.rb | 4 +- lib/gitlab/auth/ldap/config.rb | 4 +- lib/gitlab/auth/ldap/person.rb | 4 +- lib/gitlab/auth/ldap/user.rb | 4 +- lib/gitlab/auth/o_auth/auth_hash.rb | 4 +- lib/gitlab/auth/o_auth/provider.rb | 14 +- lib/gitlab/auth/o_auth/user.rb | 4 +- lib/gitlab/auth/result.rb | 4 +- lib/gitlab/auth/saml/config.rb | 4 +- lib/gitlab/auth/saml/user.rb | 4 +- ...nvironment_id_deployment_merge_requests.rb | 47 + .../backfill_snippet_repositories.rb | 94 +- .../migrate_issue_trackers_sensitive_data.rb | 2 +- .../populate_user_highest_roles_table.rb | 2 + ...e_undefined_occurrence_confidence_level.rb | 13 + ...ndefined_vulnerability_confidence_level.rb | 13 + lib/gitlab/blob_helper.rb | 16 +- lib/gitlab/chat/responder/mattermost.rb | 131 + lib/gitlab/chat_name_token.rb | 2 +- lib/gitlab/checks/base_checker.rb | 3 +- lib/gitlab/checks/change_access.rb | 4 +- lib/gitlab/checks/diff_check.rb | 3 +- lib/gitlab/ci/ansi2html.rb | 2 +- lib/gitlab/ci/ansi2json/state.rb | 2 +- lib/gitlab/ci/build/artifacts/metadata.rb | 4 +- .../ci/build/artifacts/metadata/entry.rb | 2 +- lib/gitlab/ci/config/entry/artifacts.rb | 10 +- lib/gitlab/ci/config/entry/reports.rb | 4 +- lib/gitlab/ci/config/entry/trigger.rb | 9 +- lib/gitlab/ci/cron_parser.rb | 11 +- lib/gitlab/ci/features.rb | 18 + lib/gitlab/ci/parsers.rb | 8 +- lib/gitlab/ci/parsers/accessibility/pa11y.rb | 33 + lib/gitlab/ci/parsers/terraform/tfplan.rb | 35 + lib/gitlab/ci/parsers/test/junit.rb | 8 +- lib/gitlab/ci/pipeline/chain/command.rb | 15 + lib/gitlab/ci/pipeline/chain/sequence.rb | 3 + .../ci/pipeline/seed/build/resource_group.rb | 1 - .../ci/reports/accessibility_reports.rb | 46 + .../reports/accessibility_reports_comparer.rb | 55 + lib/gitlab/ci/reports/terraform_reports.rb | 27 + lib/gitlab/ci/reports/test_reports.rb | 6 + lib/gitlab/ci/reports/test_suite.rb | 19 +- lib/gitlab/ci/status/build/failed.rb | 4 +- .../ci/templates/Auto-DevOps.gitlab-ci.yml | 3 +- .../ci/templates/Deploy-ECS.gitlab-ci.yml | 31 +- .../Browser-Performance-Testing.gitlab-ci.yml | 14 +- .../ci/templates/Jobs/Build.gitlab-ci.yml | 5 +- .../templates/Jobs/Code-Quality.gitlab-ci.yml | 11 +- .../DAST-Default-Branch-Deploy.gitlab-ci.yml | 44 +- .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 154 +- .../templates/Jobs/Deploy/ECS.gitlab-ci.yml | 30 + .../ci/templates/Jobs/Test.gitlab-ci.yml | 16 +- lib/gitlab/ci/templates/Scala.gitlab-ci.yml | 8 +- .../Security/Container-Scanning.gitlab-ci.yml | 21 +- .../ci/templates/Security/DAST.gitlab-ci.yml | 26 +- .../Dependency-Scanning.gitlab-ci.yml | 120 +- .../Security/License-Management.gitlab-ci.yml | 34 +- .../Security/License-Scanning.gitlab-ci.yml | 25 +- .../ci/templates/Security/SAST.gitlab-ci.yml | 214 +- .../Security/Secure-Binaries.gitlab-ci.yml | 246 + .../ci/templates/Terraform.gitlab-ci.yml | 2 +- .../Verify/Accessibility.gitlab-ci.yml | 4 +- .../Workflows/Branch-Pipelines.gitlab-ci.yml | 7 + .../MergeRequest-Pipelines.gitlab-ci.yml | 8 + lib/gitlab/ci/yaml_processor.rb | 2 +- .../cleanup/orphan_lfs_file_references.rb | 2 + lib/gitlab/code_navigation_path.rb | 16 +- .../external_database_checker.rb | 27 + .../cycle_analytics/group_stage_summary.rb | 54 - lib/gitlab/cycle_analytics/stage_summary.rb | 5 +- lib/gitlab/cycle_analytics/summary/commit.rb | 6 +- lib/gitlab/cycle_analytics/summary/deploy.rb | 16 +- .../summary/deployment_frequency.rb | 3 +- .../cycle_analytics/summary/group/base.rb | 26 - .../cycle_analytics/summary/group/deploy.rb | 31 - .../summary/group/deployment_frequency.rb | 33 - .../cycle_analytics/summary/group/issue.rb | 44 - lib/gitlab/cycle_analytics/summary/issue.rb | 11 +- lib/gitlab/cycle_analytics/summary/value.rb | 42 + lib/gitlab/cycle_analytics/summary_helper.rb | 5 +- lib/gitlab/danger/changelog.rb | 4 - lib/gitlab/danger/commit_linter.rb | 2 +- lib/gitlab/danger/emoji_checker.rb | 6 +- lib/gitlab/danger/helper.rb | 17 + lib/gitlab/danger/request_helper.rb | 2 +- lib/gitlab/danger/teammate.rb | 31 +- lib/gitlab/data_builder/wiki_page.rb | 3 + lib/gitlab/database/batch_count.rb | 8 +- .../count/reltuples_count_strategy.rb | 2 +- lib/gitlab/database/migration_helpers.rb | 182 +- .../partitioning_migration_helpers.rb | 122 + .../partitioned_foreign_key.rb | 13 + .../partitioned_foreign_key_validator.rb | 28 + .../v1/rename_base.rb | 2 +- lib/gitlab/database/schema_helpers.rb | 52 + lib/gitlab/database/with_lock_retries.rb | 14 + lib/gitlab/dependency_linker/json_linker.rb | 2 +- lib/gitlab/diff/file.rb | 17 +- lib/gitlab/diff/formatters/text_formatter.rb | 3 +- lib/gitlab/diff/highlight_cache.rb | 2 +- lib/gitlab/diff/position.rb | 2 +- .../discussions_diff/highlight_cache.rb | 2 +- lib/gitlab/elasticsearch/logs/lines.rb | 9 +- lib/gitlab/email/handler.rb | 10 +- .../email/hook/smime_signature_interceptor.rb | 7 +- lib/gitlab/email/message/repository_push.rb | 2 +- lib/gitlab/email/smime/certificate.rb | 40 +- lib/gitlab/email/smime/signer.rb | 25 +- lib/gitlab/emoji.rb | 4 +- lib/gitlab/exclusive_lease.rb | 20 +- lib/gitlab/exclusive_lease_helpers.rb | 39 +- .../exclusive_lease_helpers/sleeping_lock.rb | 50 + lib/gitlab/experimentation.rb | 74 +- lib/gitlab/external_authorization/response.rb | 2 +- lib/gitlab/git/attributes_parser.rb | 2 + lib/gitlab/git/commit.rb | 14 +- lib/gitlab/git/tag.rb | 21 + lib/gitlab/git_access_design.rb | 28 + lib/gitlab/git_access_snippet.rb | 16 +- lib/gitlab/gitaly_client.rb | 7 +- lib/gitlab/github_import/parallel_importer.rb | 4 +- lib/gitlab/gl_repository.rb | 11 +- lib/gitlab/gl_repository/repo_type.rb | 6 +- lib/gitlab/gon_helper.rb | 4 +- .../loggers/cloudflare_logger.rb | 18 + .../grape_logging/loggers/context_logger.rb | 14 + .../grape_logging/loggers/exception_logger.rb | 28 +- .../authorize/authorize_field_service.rb | 8 +- .../externally_paginated_array_connection.rb | 14 + .../graphql/pagination/keyset/connection.rb | 2 +- .../graphql/pagination/keyset/order_info.rb | 2 + .../query_analyzers/logger_analyzer.rb | 4 +- lib/gitlab/graphql/variables.rb | 2 +- lib/gitlab/group_search_results.rb | 4 +- lib/gitlab/health_checks/puma_check.rb | 2 +- lib/gitlab/i18n.rb | 40 +- lib/gitlab/import_export.rb | 8 + .../web_upload_strategy.rb | 5 +- .../import_export/design_repo_restorer.rb | 15 + lib/gitlab/import_export/design_repo_saver.rb | 19 + .../import_export/group/group_restorer.rb | 71 + .../import_export/group/import_export.yml | 2 - .../group/legacy_import_export.yml | 86 + .../group/legacy_tree_restorer.rb | 2 +- .../import_export/group/legacy_tree_saver.rb | 2 +- .../import_export/group/tree_restorer.rb | 140 + lib/gitlab/import_export/group/tree_saver.rb | 72 + lib/gitlab/import_export/importer.rb | 26 +- lib/gitlab/import_export/project/base_task.rb | 20 +- .../import_export/project/export_task.rb | 13 +- .../import_export/project/import_export.yml | 27 +- .../import_export/project/import_task.rb | 34 +- .../import_export/project/object_builder.rb | 8 +- .../import_export/project/relation_factory.rb | 9 +- .../import_export/project/tree_restorer.rb | 2 +- .../import_export/project/tree_saver.rb | 2 +- .../import_export/relation_tree_restorer.rb | 4 +- .../import_export/snippets_repo_restorer.rb | 1 - .../import_export/snippets_repo_saver.rb | 2 - lib/gitlab/instrumentation/redis.rb | 3 +- lib/gitlab/instrumentation_helper.rb | 9 +- lib/gitlab/jira_import/base_importer.rb | 5 +- .../jira_import/handle_labels_service.rb | 39 + lib/gitlab/jira_import/issue_serializer.rb | 64 +- lib/gitlab/jira_import/issues_importer.rb | 2 +- lib/gitlab/jira_import/labels_importer.rb | 26 +- lib/gitlab/jira_import/metadata_collector.rb | 57 + lib/gitlab/jira_import/user_mapper.rb | 53 + lib/gitlab/json.rb | 34 +- lib/gitlab/kubernetes/helm.rb | 2 +- lib/gitlab/kubernetes/helm/api.rb | 6 +- lib/gitlab/kubernetes/helm/delete_command.rb | 2 - lib/gitlab/kubernetes/helm/parsers/list_v2.rb | 37 + lib/gitlab/kubernetes/kube_client.rb | 72 +- lib/gitlab/kubernetes/network_policy.rb | 91 + lib/gitlab/logging/cloudflare_helper.rb | 23 + lib/gitlab/lograge/custom_options.rb | 8 + lib/gitlab/mail_room.rb | 3 +- lib/gitlab/markdown_cache.rb | 2 +- lib/gitlab/metrics.rb | 93 +- lib/gitlab/metrics/dashboard/url.rb | 2 +- .../metrics/exporter/sidekiq_exporter.rb | 2 +- lib/gitlab/metrics/influx_db.rb | 183 - lib/gitlab/metrics/method_call.rb | 13 - lib/gitlab/metrics/metric.rb | 54 - lib/gitlab/metrics/rack_middleware.rb | 4 - .../metrics/samplers/database_sampler.rb | 58 + lib/gitlab/metrics/samplers/influx_sampler.rb | 49 - lib/gitlab/metrics/samplers/puma_sampler.rb | 2 +- lib/gitlab/metrics/samplers/ruby_sampler.rb | 26 +- lib/gitlab/metrics/sidekiq_middleware.rb | 2 - lib/gitlab/metrics/subscribers/action_view.rb | 8 +- lib/gitlab/metrics/system.rb | 77 +- lib/gitlab/metrics/transaction.rb | 56 +- lib/gitlab/middleware/multipart.rb | 1 + lib/gitlab/middleware/read_only/controller.rb | 4 +- lib/gitlab/omniauth_initializer.rb | 83 +- lib/gitlab/pagination/keyset.rb | 11 +- lib/gitlab/patch/draw_route.rb | 4 +- lib/gitlab/performance_bar.rb | 2 +- .../phabricator_import/conduit/response.rb | 2 +- lib/gitlab/project_search_results.rb | 36 +- lib/gitlab/prometheus/metric_group.rb | 3 +- .../queries/query_additional_metrics.rb | 4 +- lib/gitlab/prometheus_client.rb | 2 +- lib/gitlab/quick_actions/issuable_actions.rb | 2 +- lib/gitlab/regex.rb | 8 +- lib/gitlab/request_context.rb | 7 +- lib/gitlab/rugged_instrumentation.rb | 3 +- lib/gitlab/runtime.rb | 22 +- lib/gitlab/sanitizers/exif.rb | 2 +- lib/gitlab/search/parsed_query.rb | 4 +- lib/gitlab/search_results.rb | 13 +- lib/gitlab/services/logger.rb | 11 + lib/gitlab/setup_helper.rb | 3 +- lib/gitlab/sidekiq_config/cli_methods.rb | 3 +- lib/gitlab/sidekiq_daemon/monitor.rb | 2 +- lib/gitlab/sidekiq_logging/json_formatter.rb | 15 + .../sidekiq_logging/structured_logger.rb | 11 +- lib/gitlab/sidekiq_middleware.rb | 5 +- .../sidekiq_middleware/admin_mode/client.rb | 8 +- .../sidekiq_middleware/arguments_logger.rb | 2 +- .../duplicate_jobs/duplicate_job.rb | 2 +- .../extra_done_log_metadata.rb | 25 + .../slash_commands/presenters/issue_base.rb | 4 +- lib/gitlab/snippet_search_results.rb | 34 +- lib/gitlab/static_site_editor/config.rb | 7 +- lib/gitlab/task_helpers.rb | 8 +- ... clear_process_memory_cache_middleware.rb} | 4 +- lib/gitlab/thread_memory_cache.rb | 15 - lib/gitlab/tracking.rb | 7 - lib/gitlab/tree_summary.rb | 36 +- lib/gitlab/uploads/migration_helper.rb | 3 +- lib/gitlab/url_builder.rb | 30 +- lib/gitlab/usage_data.rb | 205 +- .../usage_data_counters/base_counter.rb | 10 +- .../usage_data_counters/designs_counter.rb | 42 + .../usage_data_counters/note_counter.rb | 10 +- .../usage_data_counters/search_counter.rb | 4 + .../usage_data_counters/web_ide_counter.rb | 56 +- lib/gitlab/user_access_snippet.rb | 14 + lib/gitlab/utils.rb | 6 +- lib/gitlab/utils/measuring.rb | 58 +- lib/gitlab/wiki_pages.rb | 3 + lib/gitlab/with_request_store.rb | 14 +- lib/gitlab/workhorse.rb | 15 +- lib/gitlab/x509/signature.rb | 4 + lib/gitlab/x509/tag.rb | 41 + lib/gitlab_danger.rb | 2 +- lib/google_api/auth.rb | 7 +- lib/mattermost/client.rb | 2 +- lib/quality/helm3_client.rb | 6 +- lib/quality/helm_client.rb | 114 - lib/quality/test_level.rb | 1 + lib/rspec_flaky/listener.rb | 2 +- lib/static_model.rb | 6 +- lib/support/init.d/gitlab | 26 +- lib/support/init.d/gitlab.default.example | 6 +- .../app/hashed_storage_all_projects_check.rb | 22 + .../app/hashed_storage_enabled_check.rb | 23 + lib/system_check/rake_task/app_task.rb | 4 +- lib/tasks/file_hooks.rake | 5 + lib/tasks/gemojione.rake | 6 +- lib/tasks/gitlab/gitaly.rake | 7 +- lib/tasks/gitlab/import_export/export.rake | 6 +- lib/tasks/gitlab/import_export/import.rake | 6 +- lib/tasks/gitlab/shell.rake | 2 +- lib/tasks/gitlab/snippets.rake | 91 + lib/tasks/gitlab/track_deployment.rake | 9 - lib/tasks/gitlab/workhorse.rake | 2 +- lib/tasks/sidekiq.rake | 38 - locale/am_ET/gitlab.po | 1101 +++- locale/ar_SA/gitlab.po | 1121 +++- locale/bg/gitlab.po | 1105 +++- locale/bn_BD/gitlab.po | 1101 +++- locale/bn_IN/gitlab.po | 1101 +++- locale/bs_BA/gitlab.po | 1310 ++-- locale/ca_ES/gitlab.po | 1103 +++- locale/cs_CZ/gitlab.po | 1111 +++- locale/cy_GB/gitlab.po | 1121 +++- locale/da_DK/gitlab.po | 1101 +++- locale/de/gitlab.po | 1155 +++- locale/el_GR/gitlab.po | 1101 +++- locale/eo/gitlab.po | 1101 +++- locale/es/gitlab.po | 1211 +++- locale/et_EE/gitlab.po | 1101 +++- locale/fa_IR/gitlab.po | 1101 +++- locale/fi_FI/gitlab.po | 1101 +++- locale/fil_PH/gitlab.po | 1101 +++- locale/fr/gitlab.po | 1123 +++- locale/gitlab.pot | 2069 +++++-- locale/gl_ES/gitlab.po | 1101 +++- locale/he_IL/gitlab.po | 1111 +++- locale/hi_IN/gitlab.po | 1101 +++- locale/hr_HR/gitlab.po | 1106 +++- locale/hu_HU/gitlab.po | 1101 +++- locale/id_ID/gitlab.po | 1096 +++- locale/it/gitlab.po | 1101 +++- locale/ja/gitlab.po | 3404 ++++++----- locale/ka_GE/gitlab.po | 1101 +++- locale/ko/gitlab.po | 1108 +++- locale/ku_TR/gitlab.po | 1101 +++- locale/mn_MN/gitlab.po | 1101 +++- locale/nb_NO/gitlab.po | 1101 +++- locale/nl_NL/gitlab.po | 1105 +++- locale/pa_IN/gitlab.po | 1101 +++- locale/pl_PL/gitlab.po | 1111 +++- locale/pt_BR/gitlab.po | 1127 +++- locale/pt_PT/gitlab.po | 1105 +++- locale/ro_RO/gitlab.po | 1106 +++- locale/ru/gitlab.po | 3901 +++++++----- locale/sk_SK/gitlab.po | 1111 +++- locale/sl_SI/gitlab.po | 1111 +++- locale/sq_AL/gitlab.po | 1101 +++- locale/sr_CS/gitlab.po | 1106 +++- locale/sr_SP/gitlab.po | 1106 +++- locale/sv_SE/gitlab.po | 1101 +++- locale/sw_KE/gitlab.po | 1101 +++- locale/tr_TR/gitlab.po | 1153 +++- locale/uk/gitlab.po | 1655 +++-- locale/ur_PK/gitlab.po | 1101 +++- locale/uz_UZ/gitlab.po | 1101 +++- locale/vi_VN/gitlab.po | 1096 +++- locale/zh_CN/gitlab.po | 1224 +++- locale/zh_HK/gitlab.po | 1096 +++- locale/zh_TW/gitlab.po | 1098 +++- package.json | 26 +- qa/Gemfile | 7 +- qa/Gemfile.lock | 63 +- qa/README.md | 2 +- qa/Rakefile | 12 + qa/qa.rb | 29 +- .../monitored_auto_devops/.gitlab-ci.yml | 5 +- qa/qa/git/repository.rb | 62 +- qa/qa/page/base.rb | 9 +- qa/qa/page/component/breadcrumbs.rb | 4 + qa/qa/page/component/ci_badge_link.rb | 4 + qa/qa/page/component/clone_panel.rb | 4 + qa/qa/page/component/confirm_modal.rb | 4 + qa/qa/page/component/custom_metric.rb | 49 + qa/qa/page/component/design_management.rb | 82 + qa/qa/page/component/groups_filter.rb | 4 + qa/qa/page/component/issuable/common.rb | 4 + qa/qa/page/component/lazy_loader.rb | 4 + qa/qa/page/component/legacy_clone_panel.rb | 4 + qa/qa/page/component/note.rb | 4 + qa/qa/page/component/project/templates.rb | 15 + qa/qa/page/component/select2.rb | 8 +- qa/qa/page/component/web_ide/alert.rb | 8 +- qa/qa/page/dashboard/snippet/edit.rb | 36 + qa/qa/page/dashboard/snippet/new.rb | 26 +- qa/qa/page/dashboard/snippet/show.rb | 65 +- qa/qa/page/file/shared/commit_button.rb | 4 + qa/qa/page/file/shared/commit_message.rb | 4 + qa/qa/page/file/shared/editor.rb | 4 + qa/qa/page/group/sub_menus/common.rb | 3 + qa/qa/page/main/terms.rb | 24 +- qa/qa/page/page_concern.rb | 16 + qa/qa/page/profile/personal_access_tokens.rb | 14 +- qa/qa/page/profile/ssh_keys.rb | 18 +- qa/qa/page/project/issue/index.rb | 21 + qa/qa/page/project/issue/show.rb | 18 + qa/qa/page/project/job/show.rb | 72 +- qa/qa/page/project/new.rb | 6 + .../project/operations/kubernetes/index.rb | 4 + qa/qa/page/project/operations/metrics/show.rb | 24 +- qa/qa/page/project/pipeline/index.rb | 62 +- qa/qa/page/project/pipeline/show.rb | 120 +- qa/qa/page/project/settings/advanced.rb | 4 + qa/qa/page/project/settings/ci_cd.rb | 9 +- qa/qa/page/project/settings/ci_variables.rb | 2 +- qa/qa/page/project/settings/common.rb | 13 - qa/qa/page/project/settings/deploy_keys.rb | 2 +- .../project/settings/general_pipelines.rb | 23 + qa/qa/page/project/settings/incidents.rb | 37 + qa/qa/page/project/settings/integrations.rb | 19 + qa/qa/page/project/settings/main.rb | 2 +- qa/qa/page/project/settings/merge_request.rb | 2 +- qa/qa/page/project/settings/operations.rb | 23 + qa/qa/page/project/settings/repository.rb | 4 +- .../project/settings/services/prometheus.rb | 36 + qa/qa/page/project/sub_menus/ci_cd.rb | 6 +- qa/qa/page/project/sub_menus/common.rb | 1 + qa/qa/page/project/sub_menus/issues.rb | 6 +- qa/qa/page/project/sub_menus/operations.rb | 12 +- qa/qa/page/project/sub_menus/project.rb | 6 +- qa/qa/page/project/sub_menus/repository.rb | 8 +- qa/qa/page/project/sub_menus/settings.rb | 15 +- qa/qa/page/search/results.rb | 90 +- qa/qa/resource/api_fabricator.rb | 33 +- qa/qa/resource/kubernetes_cluster.rb | 68 - qa/qa/resource/kubernetes_cluster/base.rb | 40 + .../kubernetes_cluster/project_cluster.rb | 72 + qa/qa/resource/pipeline.rb | 53 + qa/qa/resource/project.rb | 34 +- qa/qa/resource/runner.rb | 27 +- qa/qa/resource/ssh_key.rb | 10 +- qa/qa/resource/visibility.rb | 17 + qa/qa/runtime/api/client.rb | 2 - qa/qa/runtime/project.rb | 35 - qa/qa/scenario/test/integration/gitaly_ha.rb | 13 + qa/qa/service/docker_run/gitlab_runner.rb | 59 +- qa/qa/service/praefect_manager.rb | 27 + .../features/api/1_manage/rate_limits_spec.rb | 2 + .../specs/features/api/1_manage/users_spec.rb | 2 + .../closes_issue_via_pushing_a_commit_spec.rb | 2 + .../api/3_create/repository/files_spec.rb | 1 + .../project_archive_compare_spec.rb | 1 + .../email/trigger_email_notification_spec.rb | 2 + .../2_plan/issue/create_issue_spec.rb | 2 +- .../2_plan/issue_boards/focus_mode_spec.rb | 28 + .../add_design_add_annotation.rb | 31 + .../3_create/gitaly/high_availability_spec.rb | 63 + .../merge_merge_request_from_fork_spec.rb | 2 + .../3_create/repository/add_ssh_key_spec.rb | 2 +- .../move_project_create_fork_spec.rb | 4 +- .../push_over_http_file_size_spec.rb | 10 +- .../clone_push_pull_personal_snippet_spec.rb | 102 + .../3_create/snippet/create_snippet_spec.rb | 2 +- .../web_ide/review_merge_request_spec.rb | 2 +- .../4_verify/runner/register_runner_spec.rb | 1 + .../testing/view_code_coverage_spec.rb | 61 + ...d_pipelines_dependent_relationship_spec.rb | 2 +- ...pipelines_independent_relationship_spec.rb | 2 +- .../create_project_with_auto_devops_spec.rb | 2 +- .../kubernetes/kubernetes_integration_spec.rb | 10 +- .../all_monitor_core_features_spec.rb | 155 + .../8_monitor/apm/dashboards_spec.rb | 97 - qa/qa/specs/features/sanity/framework_spec.rb | 2 +- qa/qa/specs/helpers/quarantine.rb | 144 +- qa/qa/specs/runner.rb | 2 + qa/qa/support/api.rb | 3 + qa/qa/tools/delete_test_ssh_keys.rb | 80 + qa/qa/vendor/jenkins/page/configure_job.rb | 15 +- qa/qa/vendor/jenkins/page/last_job_console.rb | 18 +- qa/spec/factory/resource/user_spec.rb | 8 +- qa/spec/git/repository_spec.rb | 127 +- qa/spec/resource/ssh_key_spec.rb | 21 + .../service/docker_run/gitlab_runner_spec.rb | 173 + qa/spec/specs/helpers/quarantine_spec.rb | 8 - qa/spec/specs/runner_spec.rb | 14 + ...id_keyword_arguments_in_sidekiq_workers.rb | 20 + rubocop/cop/gitlab/change_timzone.rb | 20 + rubocop/cop/gitlab/json.rb | 36 + .../cop/inject_enterprise_edition_module.rb | 10 +- rubocop/cop/migration/add_column.rb | 50 - .../cop/migration/add_column_with_default.rb | 28 +- .../migration/add_columns_to_wide_tables.rb | 1 - .../migration/add_concurrent_foreign_key.rb | 14 +- .../migration/add_limit_to_string_columns.rb | 59 - .../migration/add_limit_to_text_columns.rb | 121 + rubocop/cop/migration/prevent_strings.rb | 52 + .../reversible_add_column_with_default.rb | 35 - .../with_lock_retries_disallowed_method.rb | 58 + ...th_lock_retries_without_ddl_transaction.rb | 36 - .../ar_exists_and_present_blank.rb | 57 + .../rspec/empty_line_after_shared_example.rb | 64 + rubocop/migration_helpers.rb | 6 + scripts/build_assets_image | 20 +- scripts/clean-old-cached-assets | 2 +- scripts/create_postgres_user.sh | 2 +- scripts/frontend/webpack_dev_server.js | 68 + scripts/gitaly_test.rb | 2 +- scripts/prepare_build.sh | 12 +- scripts/prepare_postgres_fdw.sh | 2 +- scripts/regenerate-schema | 182 + scripts/review_apps/automated_cleanup.rb | 21 +- scripts/review_apps/gcp_cleanup.sh | 9 +- scripts/review_apps/review-apps.sh | 46 +- scripts/rspec_helpers.sh | 44 +- scripts/schema_changed.sh | 4 +- scripts/security-harness | 2 +- scripts/utils.sh | 35 +- .../application_cable/connection_spec.rb | 47 + spec/channels/issues_channel_spec.rb | 36 + spec/config/application_spec.rb | 12 +- spec/config/mail_room_spec.rb | 3 +- spec/config/smime_signature_settings_spec.rb | 9 +- .../admin/ci/variables_controller_spec.rb | 70 + .../admin/clusters_controller_spec.rb | 25 +- .../requests_profiles_controller_spec.rb | 6 +- .../admin/users_controller_spec.rb | 2 +- .../application_controller_spec.rb | 73 +- .../concerns/issuable_actions_spec.rb | 2 +- .../concerns/metrics_dashboard_spec.rb | 33 +- .../dashboard/projects_controller_spec.rb | 51 +- .../authorizations_controller_spec.rb | 26 +- spec/controllers/graphql_controller_spec.rb | 65 +- .../groups/clusters_controller_spec.rb | 25 +- .../groups/group_links_controller_spec.rb | 36 - .../registry/repositories_controller_spec.rb | 30 +- .../settings/integrations_controller_spec.rb | 4 +- .../settings/repository_controller_spec.rb | 4 +- spec/controllers/groups_controller_spec.rb | 59 +- spec/controllers/help_controller_spec.rb | 7 +- .../import/bitbucket_controller_spec.rb | 2 +- .../omniauth_callbacks_controller_spec.rb | 51 + .../oauth/token_info_controller_spec.rb | 10 +- .../omniauth_callbacks_controller_spec.rb | 11 +- .../profiles/emails_controller_spec.rb | 26 +- .../alert_management_controller_spec.rb | 59 + .../projects/artifacts_controller_spec.rb | 42 +- .../projects/branches_controller_spec.rb | 58 +- ...ld_group_report_results_controller_spec.rb | 80 + .../projects/clusters_controller_spec.rb | 27 +- .../cycle_analytics/events_controller_spec.rb | 6 +- .../designs/raw_images_controller_spec.rb | 153 + .../designs/resized_image_controller_spec.rb | 148 + .../prometheus_api_controller_spec.rb | 4 +- .../projects/environments_controller_spec.rb | 36 + .../projects/grafana_api_controller_spec.rb | 3 +- .../projects/graphs_controller_spec.rb | 20 + .../projects/import/jira_controller_spec.rb | 15 +- .../projects/issues_controller_spec.rb | 281 +- .../projects/logs_controller_spec.rb | 125 +- .../merge_requests_controller_spec.rb | 307 +- .../projects/mirrors_controller_spec.rb | 2 +- .../projects/pages_domains_controller_spec.rb | 16 +- .../projects/pipelines_controller_spec.rb | 119 +- .../prometheus/alerts_controller_spec.rb | 2 +- .../projects/refs_controller_spec.rb | 34 +- .../registry/repositories_controller_spec.rb | 28 +- .../service_hook_logs_controller_spec.rb | 2 +- .../settings/access_tokens_controller_spec.rb | 190 + .../settings/repository_controller_spec.rb | 4 +- .../projects/snippets_controller_spec.rb | 38 +- .../static_site_editor_controller_spec.rb | 14 +- .../projects/usage_ping_controller_spec.rb | 76 +- .../projects/wikis_controller_spec.rb | 26 +- spec/controllers/projects_controller_spec.rb | 26 + .../registrations_controller_spec.rb | 32 +- .../repositories/git_http_controller_spec.rb | 47 +- spec/controllers/search_controller_spec.rb | 10 +- spec/controllers/sessions_controller_spec.rb | 13 +- spec/controllers/snippets_controller_spec.rb | 90 +- spec/db/schema_spec.rb | 18 +- spec/factories/alert_management/alerts.rb | 81 + spec/factories/appearances.rb | 1 + spec/factories/ci/builds.rb | 18 + ...rb => daily_build_group_report_results.rb} | 9 +- spec/factories/ci/freeze_periods.rb | 10 + spec/factories/ci/instance_variables.rb | 13 + spec/factories/ci/job_artifacts.rb | 74 +- spec/factories/ci/pipelines.rb | 24 + spec/factories/ci/test_case.rb | 2 +- spec/factories/clusters/applications/helm.rb | 24 + spec/factories/deploy_tokens.rb | 8 + spec/factories/design_management/actions.rb | 13 + .../design_management/design_at_version.rb | 23 + spec/factories/design_management/designs.rb | 128 + spec/factories/design_management/versions.rb | 142 + spec/factories/events.rb | 14 +- spec/factories/git_wiki_commit_details.rb | 15 + spec/factories/groups.rb | 10 +- spec/factories/identities.rb | 2 +- spec/factories/iterations.rb | 60 + spec/factories/merge_requests.rb | 24 + .../metrics/users_starred_dasboards.rb | 9 + spec/factories/notes.rb | 19 + spec/factories/plan_limits.rb | 11 + spec/factories/plans.rb | 13 + .../project_repository_storage_moves.rb | 14 + spec/factories/project_wikis.rb | 11 - spec/factories/projects.rb | 6 + spec/factories/remote_mirrors.rb | 5 + spec/factories/resource_state_event.rb | 10 + spec/factories/sequences.rb | 1 + spec/factories/services.rb | 7 + spec/factories/uploads.rb | 6 + spec/factories/usage_data.rb | 26 +- spec/factories/users.rb | 6 +- spec/factories/wiki_pages.rb | 44 +- spec/factories/wikis.rb | 21 + spec/features/admin/admin_appearance_spec.rb | 18 + .../features/admin/admin_browses_logs_spec.rb | 20 - spec/features/admin/admin_hooks_spec.rb | 18 + spec/features/admin/admin_mode/login_spec.rb | 77 + spec/features/admin/admin_settings_spec.rb | 40 +- .../admin_users_impersonation_tokens_spec.rb | 4 +- spec/features/boards/boards_spec.rb | 54 + spec/features/boards/focus_mode_spec.rb | 17 + spec/features/boards/sidebar_spec.rb | 2 +- .../commits/user_view_commits_spec.rb | 22 + spec/features/dashboard/help_spec.rb | 21 - spec/features/dashboard/issues_spec.rb | 2 +- spec/features/dashboard/snippets_spec.rb | 43 +- spec/features/dashboard/todos/todos_spec.rb | 42 +- .../user_filters_errors_by_status_spec.rb | 2 +- .../user_sees_error_index_spec.rb | 2 +- spec/features/explore/groups_spec.rb | 2 +- spec/features/global_search_spec.rb | 2 +- .../groups/import_export/export_file_spec.rb | 59 + spec/features/groups/issues_spec.rb | 23 +- .../groups/members/leave_group_spec.rb | 2 - .../groups/members/manage_groups_spec.rb | 99 +- ...r_adds_member_with_expiration_date_spec.rb | 68 + spec/features/groups/navbar_spec.rb | 52 + spec/features/groups_spec.rb | 36 + spec/features/help_pages_spec.rb | 32 +- .../issues/bulk_assignment_labels_spec.rb | 2 +- .../filtered_search/filter_issues_spec.rb | 47 +- .../filtered_search/visual_tokens_spec.rb | 18 +- spec/features/issues/spam_issues_spec.rb | 121 +- spec/features/issues/update_issues_spec.rb | 2 +- ...r_creates_branch_and_merge_request_spec.rb | 12 +- ...r_sees_sidebar_updates_in_realtime_spec.rb | 32 + spec/features/markdown/copy_as_gfm_spec.rb | 6 + spec/features/markdown/metrics_spec.rb | 2 +- .../maintainer_edits_fork_spec.rb | 2 +- ...er_interacts_with_batched_mr_diffs_spec.rb | 2 +- .../user_posts_diff_notes_spec.rb | 4 +- .../merge_request/user_posts_notes_spec.rb | 5 +- .../user_resolves_conflicts_spec.rb | 4 +- ...diff_notes_and_discussions_resolve_spec.rb | 54 +- ...ser_sees_notes_from_forked_project_spec.rb | 1 + .../merge_requests/user_mass_updates_spec.rb | 2 +- .../milestones/user_creates_milestone_spec.rb | 6 +- .../milestones/user_views_milestone_spec.rb | 6 +- spec/features/profiles/emails_spec.rb | 11 +- .../profiles/personal_access_tokens_spec.rb | 4 +- .../activity/user_sees_design_comment_spec.rb | 51 + .../branches/user_creates_branch_spec.rb | 10 +- .../comments/user_edits_comments_spec.rb | 6 +- .../projects/environments_pod_logs_spec.rb | 2 +- .../projects/files/user_browses_files_spec.rb | 39 + spec/features/projects/graph_spec.rb | 2 +- .../import_export/export_file_spec.rb | 4 +- .../user_paginates_designs_spec.rb | 40 + .../user_permissions_upload_spec.rb | 24 + .../user_uploads_designs_spec.rb | 63 + .../user_views_design_images_spec.rb | 41 + .../user_views_design_spec.rb | 29 + .../user_views_designs_spec.rb | 47 + .../user_views_designs_with_svg_xss_spec.rb | 55 + spec/features/projects/members/list_spec.rb | 19 +- spec/features/projects/navbar_spec.rb | 21 +- spec/features/projects/pages_spec.rb | 11 + .../projects/pipelines/pipeline_spec.rb | 72 +- .../projects/serverless/functions_spec.rb | 2 +- .../services/disable_triggers_spec.rb | 10 +- .../prometheus_external_alerts_spec.rb | 20 +- .../user_activates_issue_tracker_spec.rb | 59 +- .../services/user_activates_jira_spec.rb | 42 +- ...activates_mattermost_slash_command_spec.rb | 288 +- ...user_activates_slack_slash_command_spec.rb | 9 +- .../services/user_activates_youtrack_spec.rb | 91 - .../projects/settings/access_tokens_spec.rb | 93 + .../settings/operations_settings_spec.rb | 2 +- .../settings/project_settings_spec.rb | 30 + .../settings/registry_settings_spec.rb | 2 +- .../settings/repository_settings_spec.rb | 16 +- .../user_interacts_with_deploy_keys_spec.rb | 10 +- ...ser_sees_revoke_deploy_token_modal_spec.rb | 2 +- .../projects/snippets/create_snippet_spec.rb | 17 +- .../snippets/user_updates_snippet_spec.rb | 20 +- .../projects/user_sees_user_popover_spec.rb | 18 +- .../projects/wiki/markdown_preview_spec.rb | 2 +- spec/features/projects/wiki/shortcuts_spec.rb | 2 +- .../wiki/user_creates_wiki_page_spec.rb | 35 +- .../wiki/user_git_access_wiki_page_spec.rb | 2 +- .../wiki/user_updates_wiki_page_spec.rb | 4 +- .../user_views_wiki_in_project_page_spec.rb | 2 +- .../wiki/user_views_wiki_page_spec.rb | 2 +- .../wiki/user_views_wiki_pages_spec.rb | 6 +- ..._views_asciidoc_page_with_includes_spec.rb | 2 +- .../search/user_searches_for_code_spec.rb | 4 + .../user_searches_for_wiki_pages_spec.rb | 2 +- .../security/project/internal_access_spec.rb | 6 +- .../security/project/private_access_spec.rb | 2 +- .../security/project/public_access_spec.rb | 10 +- .../features/snippets/search_snippets_spec.rb | 2 +- spec/features/snippets/spam_snippets_spec.rb | 88 +- .../snippets/user_creates_snippet_spec.rb | 19 +- .../snippets/user_edits_snippet_spec.rb | 20 +- spec/features/static_site_editor_spec.rb | 4 +- spec/features/users/signup_spec.rb | 4 +- .../alert_management/alerts_finder_spec.rb | 298 + ..._build_group_report_results_finder_spec.rb | 72 + .../job_artifacts_finder_spec.rb} | 2 +- .../container_repositories_finder_spec.rb | 29 +- .../design_management/designs_finder_spec.rb | 105 + .../design_management/versions_finder_spec.rb | 129 + spec/finders/fork_projects_finder_spec.rb | 2 +- spec/finders/freeze_periods_finder_spec.rb | 59 + spec/finders/issues_finder_spec.rb | 50 +- spec/finders/members_finder_spec.rb | 4 +- spec/finders/merge_requests_finder_spec.rb | 11 +- .../users_starred_dashboards_finder_spec.rb | 55 + .../serverless/functions_finder_spec.rb | 1 + spec/finders/releases_finder_spec.rb | 11 +- spec/finders/todos_finder_spec.rb | 4 +- .../accessibility/pa11y_with_errors.json | 109 + .../accessibility/pa11y_with_invalid_url.json | 12 + .../accessibility/pa11y_without_errors.json | 8 + spec/fixtures/api/schemas/cluster_list.json | 14 + spec/fixtures/api/schemas/cluster_status.json | 2 + .../schemas/entities/accessibility_error.json | 40 + .../accessibility_reports_comparer.json | 43 + .../api/schemas/entities/discussion.json | 11 +- .../schemas/entities/note_user_entity.json | 3 +- spec/fixtures/api/schemas/entities/user.json | 3 +- .../api/schemas/pipeline_schedule.json | 4 +- .../api/schemas/public_api/v4/branch.json | 6 +- .../schemas/public_api/v4/freeze_period.json | 20 + .../schemas/public_api/v4/freeze_periods.json | 5 + .../api/schemas/public_api/v4/issue.json | 9 +- .../api/schemas/public_api/v4/members.json | 5 +- .../api/schemas/public_api/v4/notes.json | 4 +- .../v4/project_repository_storage_move.json | 20 + .../v4/project_repository_storage_moves.json | 6 + .../api/schemas/public_api/v4/snippets.json | 7 +- spec/fixtures/config/mail_room_enabled.yml | 2 + .../config/redis_cache_new_format_host.yml | 8 +- .../fixtures/config/redis_new_format_host.yml | 8 +- .../config/redis_queues_new_format_host.yml | 8 +- .../redis_shared_state_new_format_host.yml | 8 +- spec/fixtures/group_export.tar.gz | Bin 3546 -> 2921 bytes .../group_export_invalid_subrelations.tar.gz | Bin 3602 -> 2868 bytes .../helm_list_v2_prometheus_deployed.json.gz | Bin 0 -> 338 bytes .../helm_list_v2_prometheus_failed.json.gz | Bin 0 -> 339 bytes .../helm_list_v2_prometheus_missing.json.gz | Bin 0 -> 320 bytes spec/fixtures/legacy_group_export.tar.gz | Bin 0 -> 3546 bytes ...y_group_export_invalid_subrelations.tar.gz | Bin 0 -> 3602 bytes spec/fixtures/legacy_symlink_export.tar.gz | Bin 0 -> 435 bytes spec/fixtures/lib/elasticsearch/query.json | 2 +- .../elasticsearch/query_with_container.json | 2 +- .../lib/elasticsearch/query_with_cursor.json | 2 +- .../elasticsearch/query_with_end_time.json | 2 +- .../elasticsearch/query_with_filebeat_6.json | 40 + .../lib/elasticsearch/query_with_search.json | 2 +- .../elasticsearch/query_with_start_time.json | 2 +- .../lib/elasticsearch/query_with_times.json | 2 +- .../gitlab/import_export/complex/project.json | 40 +- .../gitlab/import_export/complex/tree.tar.gz | Bin 32595 -> 0 bytes .../import_export/complex/tree/project.json | 1 + .../complex/tree/project/auto_devops.ndjson | 1 + .../complex/tree/project/boards.ndjson | 1 + .../tree/project/ci_cd_settings.ndjson | 1 + .../complex/tree/project/ci_pipelines.ndjson | 7 + .../container_expiration_policy.ndjson | 1 + .../tree/project/custom_attributes.ndjson | 2 + .../project/error_tracking_setting.ndjson | 1 + .../project/external_pull_requests.ndjson | 1 + .../complex/tree/project/issues.ndjson | 10 + .../complex/tree/project/labels.ndjson | 2 + .../tree/project/merge_requests.ndjson | 9 + .../complex/tree/project/milestones.ndjson | 3 + .../tree/project/pipeline_schedules.ndjson | 1 + .../tree/project/project_badges.ndjson | 2 + .../tree/project/project_feature.ndjson | 1 + .../tree/project/project_members.ndjson | 4 + .../tree/project/protected_branches.ndjson | 1 + .../project/protected_environments.ndjson | 1 + .../tree/project/protected_tags.ndjson | 1 + .../complex/tree/project/releases.ndjson | 1 + .../complex/tree/project/services.ndjson | 19 + .../complex/tree/project/snippets.ndjson | 1 + .../complex/tree/project/triggers.ndjson | 2 + .../gitlab/import_export/designs/project.json | 502 ++ .../gitlab/import_export/group/tree.tar.gz | Bin 1246 -> 0 bytes .../import_export/group/tree/project.json | 1 + .../group/tree/project/issues.ndjson | 3 + .../group/tree/project/labels.ndjson | 1 + .../group/tree/project/milestones.ndjson | 1 + .../tree/groups/4351.json | 1 + .../tree/groups/4352.json | 1 + .../tree/groups/_all.ndjson | 2 + .../complex/tree/groups/4351.json | 1 + .../complex/tree/groups/4351/badges.ndjson | 1 + .../complex/tree/groups/4351/boards.ndjson | 1 + .../complex/tree/groups/4351/epics.ndjson | 5 + .../complex/tree/groups/4351/labels.ndjson | 10 + .../complex/tree/groups/4351/members.ndjson | 6 + .../tree/groups/4351/milestones.ndjson | 5 + .../complex/tree/groups/4352.json | 1 + .../complex/tree/groups/4352/badges.ndjson | 1 + .../complex/tree/groups/4352/boards.ndjson | 2 + .../complex/tree/groups/4352/epics.ndjson | 5 + .../complex/tree/groups/4352/labels.ndjson | 9 + .../complex/tree/groups/4352/members.ndjson | 6 + .../tree/groups/4352/milestones.ndjson | 5 + .../complex/tree/groups/4353.json | 1 + .../complex/tree/groups/4353/badges.ndjson | 1 + .../complex/tree/groups/4353/boards.ndjson | 2 + .../complex/tree/groups/4353/epics.ndjson | 5 + .../complex/tree/groups/4353/labels.ndjson | 9 + .../complex/tree/groups/4353/members.ndjson | 6 + .../tree/groups/4353/milestones.ndjson | 5 + .../complex/tree/groups/_all.ndjson | 3 + .../no_children/tree/groups/4353.json | 41 + .../tree/groups/4353/badges.ndjson | 1 + .../tree/groups/4353/boards.ndjson | 2 + .../no_children/tree/groups/4353/epics.ndjson | 5 + .../tree/groups/4353/labels.ndjson | 10 + .../tree/groups/4353/members.ndjson | 6 + .../tree/groups/4353/milestones.ndjson | 5 + .../no_children/tree/groups/_all.ndjson | 1 + .../internal/tree/groups/283.json | 1 + .../internal/tree/groups/284.json | 1 + .../internal/tree/groups/285.json | 1 + .../internal/tree/groups/286.json | 1 + .../internal/tree/groups/_all.ndjson | 4 + .../private/tree/groups/283.json | 1 + .../private/tree/groups/284.json | 1 + .../private/tree/groups/285.json | 1 + .../private/tree/groups/286.json | 1 + .../private/tree/groups/_all.ndjson | 4 + .../public/tree/groups/283.json | 1 + .../public/tree/groups/284.json | 1 + .../public/tree/groups/285.json | 1 + .../public/tree/groups/286.json | 1 + .../public/tree/groups/_all.ndjson | 4 + .../import_export/invalid_json/tree.tar.gz | Bin 191 -> 0 bytes .../invalid_json/tree/project.json | 1 + .../gitlab/import_export/light/tree.tar.gz | Bin 1435 -> 0 bytes .../import_export/light/tree/project.json | 1 + .../tree/project/custom_attributes.ndjson | 2 + .../light/tree/project/issues.ndjson | 1 + .../light/tree/project/labels.ndjson | 1 + .../light/tree/project/milestones.ndjson | 1 + .../light/tree/project/services.ndjson | 2 + .../import_export/milestone-iid/tree.tar.gz | Bin 714 -> 0 bytes .../milestone-iid/tree/project.json | 1 + .../milestone-iid/tree/project/issues.ndjson | 2 + .../tree.tar.gz | Bin 1172 -> 0 bytes .../tree/project.json | 1 + .../tree/project/ci_cd_settings.ndjson | 1 + .../tree/project/ci_pipelines.ndjson | 2 + .../project/external_pull_requests.ndjson | 1 + .../tree/project/project_feature.ndjson | 1 + .../with_invalid_records/tree.tar.gz | Bin 513 -> 0 bytes .../with_invalid_records/tree/project.json | 1 + .../tree/project/milestones.ndjson | 2 + .../metrics/dashboard/development_metrics.yml | 39 + spec/fixtures/lsif.json.zip | Bin 0 -> 2178 bytes spec/fixtures/sample_doc.md | 1 + spec/fixtures/terraform/tfplan.json | 1 + .../terraform/tfplan_with_corrupted_data.json | 1 + spec/fixtures/trace/sample_trace | 4 - spec/fixtures/x509/ZZZZZZA6.crl | Bin 0 -> 205280 bytes spec/frontend/.eslintrc.yml | 17 +- .../__mocks__/@toast-ui/vue-editor/index.js | 29 + .../ajax_loading_spinner_spec.js | 4 +- .../alert_management_detail_spec.js | 242 + .../components/alert_management_list_spec.js | 325 + .../alert_management/mocks/alerts.json | 29 + spec/frontend/api_spec.js | 2 +- spec/frontend/autosave_spec.js | 90 +- .../avatar_helper_spec.js | 14 +- .../markdown/paste_markdown_table_spec.js | 12 + .../behaviors/markdown/render_metrics_spec.js | 36 +- .../blob_edit_header_spec.js.snap | 2 +- .../blob_header_filepath_spec.js.snap | 11 +- .../__snapshots__/blob_header_spec.js.snap | 2 +- .../components/blob_content_error_spec.js | 51 +- .../blob/components/blob_content_spec.js | 36 +- .../components/blob_header_filepath_spec.js | 10 +- .../blob/components/blob_header_spec.js | 2 +- spec/frontend/blob/components/mock_data.js | 2 +- .../blob/pipeline_tour_success_modal_spec.js | 2 +- .../components/popover_spec.js | 9 +- spec/frontend/blob/utils_spec.js | 42 - spec/frontend/boards/board_list_spec.js | 2 +- spec/frontend/boards/boards_store_spec.js | 137 + spec/frontend/boards/issue_spec.js | 22 +- .../bootstrap_linked_tabs_spec.js | 4 +- spec/frontend/broadcast_notification_spec.js | 35 + .../ajax_variable_list_spec.js | 100 +- .../ci_variable_list/ci_variable_list_spec.js | 76 +- .../native_form_variable_list_spec.js | 0 .../components/ci_variable_modal_spec.js | 7 + .../ci_variable_list/services/mock_data.js | 12 +- .../ci_variable_list/store/actions_spec.js | 10 + .../ci_variable_list/store/mutations_spec.js | 10 +- .../close_reopen_report_toggle_spec.js | 56 +- .../clusters/components/applications_spec.js | 33 + .../fluentd_output_settings_spec.js | 186 + .../components/knative_domain_editor_spec.js | 2 +- spec/frontend/clusters/services/mock_data.js | 1 + .../clusters/stores/clusters_store_spec.js | 18 + .../clusters_list/components/clusters_spec.js | 110 +- spec/frontend/clusters_list/mock_data.js | 18 +- .../clusters_list/store/actions_spec.js | 29 +- .../__snapshots__/popover_spec.js.snap | 11 +- .../code_navigation/components/app_spec.js | 1 + .../components/popover_spec.js | 41 +- .../code_navigation/store/actions_spec.js | 28 +- .../commit/pipelines/pipelines_spec.js | 44 +- .../commit_merge_requests_spec.js | 0 .../{javascripts => frontend}/commits_spec.js | 6 +- .../contributors/store/actions_spec.js | 3 - .../contributors/store/getters_spec.js | 3 - .../services/aws_services_facade_spec.js | 14 +- .../create_item_dropdown_spec.js | 0 .../custom_metrics_form_fields_spec.js | 1 - .../deploy_keys/components/action_btn_spec.js | 54 + .../deploy_keys/components/app_spec.js | 142 + .../deploy_keys/components/key_spec.js | 161 + .../deploy_keys/components/keys_panel_spec.js | 63 + .../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 | 61 + .../design_reply_form_spec.js.snap | 15 + .../design_notes/design_discussion_spec.js | 133 + .../design_notes/design_note_spec.js | 170 + .../design_notes/design_reply_form_spec.js | 182 + .../components/design_overlay_spec.js | 393 ++ .../components/design_presentation_spec.js | 546 ++ .../components/design_scaler_spec.js | 67 + .../components/image_spec.js | 133 + .../list/__snapshots__/item_spec.js.snap | 472 ++ .../components/list/item_spec.js | 168 + .../toolbar/__snapshots__/index_spec.js.snap | 61 + .../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 | 79 + .../design_dropzone_spec.js.snap | 455 ++ .../design_version_dropdown_spec.js.snap | 111 + .../components/upload/button_spec.js | 59 + .../components/upload/design_dropzone_spec.js | 132 + .../upload/design_version_dropdown_spec.js | 114 + .../upload/mock_data/all_versions.js | 14 + .../mock_data/all_versions.js | 8 + .../design_management/mock_data/design.js | 54 + .../design_management/mock_data/designs.js | 17 + .../design_management/mock_data/no_designs.js | 11 + .../design_management/mock_data/notes.js | 32 + .../pages/__snapshots__/index_spec.js.snap | 263 + .../design/__snapshots__/index_spec.js.snap | 184 + .../pages/design/index_spec.js | 301 + .../design_management/pages/index_spec.js | 533 ++ .../frontend/design_management/router_spec.js | 81 + .../utils/cache_update_spec.js | 44 + .../utils/design_management_utils_spec.js | 176 + .../utils/error_messages_spec.js | 62 + .../design_management/utils/tracking_spec.js | 53 + .../diff_comments_store_spec.js | 19 +- spec/frontend/diffs/components/app_spec.js | 214 +- .../diffs/components/commit_item_spec.js | 144 +- .../diffs/components/diff_content_spec.js | 2 +- .../diffs/components/diff_discussions_spec.js | 2 +- .../components/diff_expansion_cell_spec.js | 2 +- .../components/diff_gutter_avatars_spec.js | 2 +- .../components/diff_line_note_form_spec.js | 2 +- .../diffs/components/edit_button_spec.js | 19 +- .../inline_diff_expansion_row_spec.js | 2 +- .../diffs/components/inline_diff_view_spec.js | 4 +- .../parallel_diff_expansion_row_spec.js | 2 +- .../components/parallel_diff_view_spec.js | 2 +- spec/frontend/diffs/store/actions_spec.js | 184 +- spec/frontend/diffs/store/getters_spec.js | 4 +- .../store/getters_versions_dropdowns_spec.js | 9 - spec/frontend/diffs/store/mutations_spec.js | 30 + spec/frontend/diffs/store/utils_spec.js | 84 +- .../dirty_submit_collection_spec.js | 22 + .../dirty_submit/dirty_submit_factory_spec.js | 0 .../dirty_submit/dirty_submit_form_spec.js | 65 +- .../dirty_submit/helper.js | 5 - .../editor/editor_lite_spec.js | 37 +- spec/{javascripts => frontend}/emoji_spec.js | 25 +- .../feature_highlight_helper_spec.js | 31 +- .../feature_highlight_options_spec.js | 42 +- .../feature_highlight_spec.js | 35 +- .../filtered_search/dropdown_utils_spec.js | 4 +- .../filtered_search_manager_spec.js | 97 +- .../filtered_search_tokenizer_spec.js | 0 .../issues_filtered_search_token_keys_spec.js | 0 .../recent_searches_root_spec.js | 8 +- .../services/recent_searches_service_spec.js | 45 +- .../visual_token_value_spec.js | 46 +- spec/frontend/fixtures/test_report.rb | 2 +- spec/{javascripts => frontend}/flash_spec.js | 15 +- .../frequent_items/components/app_spec.js | 34 +- spec/frontend/frequent_items/mock_data.js | 127 +- .../frequent_items/store/actions_spec.js | 4 +- .../frequent_items/store/mutations_spec.js | 0 .../frequent_items/utils_spec.js | 14 +- .../groups/components/app_spec.js | 310 +- .../groups/components/group_folder_spec.js | 8 +- .../groups/components/group_item_spec.js | 37 +- .../groups/components/groups_spec.js | 26 +- .../groups/components/item_actions_spec.js | 8 +- .../groups/components/item_caret_spec.js | 20 +- .../groups/components/item_stats_spec.js | 27 +- .../components/item_stats_value_spec.js | 12 +- .../groups/components/item_type_icon_spec.js | 7 +- .../groups/mock_data.js | 0 .../groups/service/groups_service_spec.js | 4 +- .../groups/store/groups_store_spec.js | 16 +- spec/frontend/header_spec.js | 16 +- spec/frontend/helpers/class_spec_helper.js | 1 + .../helpers/event_hub_factory_spec.js | 94 + .../helpers/filtered_search_spec_helper.js | 69 + spec/frontend/helpers/fixtures.js | 5 +- .../helpers/set_window_location_helper.js | 40 + .../set_window_location_helper_spec.js | 40 + .../helpers/vue_mount_component_helper.js | 25 + spec/frontend/helpers/web_worker_mock.js | 10 + .../ide/components/activity_bar_spec.js | 2 +- .../commit_sidebar/editor_header_spec.js | 54 +- .../components/commit_sidebar/form_spec.js | 121 +- .../components/commit_sidebar/list_spec.js | 2 - .../commit_sidebar/radio_group_spec.js | 13 +- .../ide/components/file_row_extra_spec.js | 8 +- .../ide/components/file_templates/bar_spec.js | 10 +- .../ide/components/ide_review_spec.js | 26 +- .../ide/components/ide_side_bar_spec.js | 2 +- .../ide/components/ide_spec.js | 6 +- .../ide/components/ide_status_bar_spec.js | 24 +- .../ide/components/ide_tree_list_spec.js | 6 +- .../ide/components/ide_tree_spec.js | 2 +- .../jobs/detail/description_spec.js | 0 .../ide/components/jobs/item_spec.js | 0 .../components/merge_requests/item_spec.js | 2 +- .../components/nav_dropdown_button_spec.js | 4 +- .../ide/components/nav_dropdown_spec.js | 102 + .../components/new_dropdown/button_spec.js | 4 +- .../ide/components/new_dropdown/index_spec.js | 20 +- .../ide/components/new_dropdown/modal_spec.js | 175 + .../components/new_dropdown/upload_spec.js | 16 +- .../ide/components/pipelines/list_spec.js | 17 +- .../ide/components/preview/clientside_spec.js | 8 - .../components/repo_commit_section_spec.js | 1 - .../ide/components/repo_tab_spec.js | 8 +- .../ide/components/repo_tabs_spec.js | 0 .../components/shared/tokened_input_spec.js | 6 +- .../ide/lib/common/model_manager_spec.js | 14 +- .../ide/lib/common/model_spec.js | 18 +- .../ide/lib/decorations/controller_spec.js | 8 +- .../ide/lib/diff/controller_spec.js | 26 +- .../ide/lib/editor_spec.js | 75 +- spec/frontend/ide/lib/languages/vue_spec.js | 92 + spec/frontend/ide/services/index_spec.js | 63 + spec/frontend/ide/stores/mutations_spec.js | 41 - spec/frontend/ide/stores/utils_spec.js | 71 + spec/frontend/ide/utils_spec.js | 92 +- .../image_diff/helpers/badge_helper_spec.js | 4 +- .../helpers/comment_indicator_helper_spec.js | 4 +- .../image_diff/helpers/dom_helper_spec.js | 4 +- .../image_diff/helpers/utils_helper_spec.js | 0 .../image_diff/image_badge_spec.js | 20 +- .../image_diff/image_diff_spec.js | 54 +- .../image_diff/mock_data.js | 0 .../image_diff/replaced_image_diff_spec.js | 53 +- .../components/import_projects_table_spec.js | 5 +- .../provider_repo_table_row_spec.js | 4 +- .../edit/components/active_toggle_spec.js | 8 +- .../edit/components/integration_form_spec.js | 99 + .../components/jira_trigger_fields_spec.js | 97 + .../edit/components/trigger_fields_spec.js | 136 + .../integration_settings_form_spec.js | 157 +- .../issuable_spec.js | 4 +- .../components/issuable_list_root_app_spec.js | 121 + .../issue_show/components/app_spec.js | 519 +- .../issue_show/components/description_spec.js | 142 +- .../issue_show/components/edited_spec.js | 0 .../fields/description_template_spec.js | 4 +- .../issue_show/components/form_spec.js | 19 +- .../issue_show/components/title_spec.js | 48 +- .../components/jira_import_app_spec.js | 102 +- .../components/jira_import_form_spec.js | 31 +- .../components/jira_import_progress_spec.js | 21 +- .../components/jira_import_setup_spec.js | 18 +- spec/frontend/jira_import/utils_spec.js | 81 +- .../jobs/components/artifacts_block_spec.js | 0 .../jobs/components/commit_block_spec.js | 2 +- .../jobs/components/empty_state_spec.js | 0 .../components/environments_block_spec.js | 0 .../components/job_container_item_spec.js | 12 +- .../jobs/components/job_log_spec.js | 2 +- .../jobs/components/jobs_container_spec.js | 0 .../jobs/components/log/line_header_spec.js | 2 +- .../components/manual_variables_form_spec.js | 0 .../jobs/components/sidebar_spec.js | 7 +- .../jobs/components/stages_dropdown_spec.js | 2 +- .../jobs/components/trigger_block_spec.js | 0 .../unmet_prerequisites_block_spec.js | 0 .../jobs/mixins/delayed_job_mixin_spec.js | 52 +- .../jobs/store/actions_spec.js | 20 +- .../jobs/store/helpers.js | 0 spec/frontend/jobs/store/mutations_spec.js | 2 +- spec/frontend/labels_select_spec.js | 15 - spec/frontend/landing_spec.js | 184 + spec/frontend/lib/utils/axios_utils_spec.js | 1 + spec/frontend/lib/utils/common_utils_spec.js | 2 +- .../lib/utils/csrf_token_spec.js | 25 +- spec/frontend/lib/utils/downloader_spec.js | 40 + .../lib/utils/navigation_utility_spec.js | 6 +- .../lib/utils/poll_spec.js | 123 +- .../lib/utils/sticky_spec.js | 23 +- spec/frontend/lib/utils/text_markdown_spec.js | 8 +- spec/frontend/lib/utils/url_utility_spec.js | 155 +- spec/frontend/milestones/mock_data.js | 82 + .../project_milestone_combobox_spec.js | 150 + .../mocks/ce/diffs/workers/tree_worker.js | 9 +- .../mocks/ce/ide/lib/diff/diff_worker.js | 1 + spec/frontend/mocks_spec.js | 13 +- .../__snapshots__/alert_widget_spec.js.snap | 43 + spec/frontend/monitoring/alert_widget_spec.js | 422 ++ .../dashboard_template_spec.js.snap | 25 +- .../components/alert_widget_form_spec.js | 220 + .../components/charts/single_stat_spec.js | 14 +- .../components/charts/time_series_spec.js | 43 +- ...l_type_spec.js => dashboard_panel_spec.js} | 270 +- .../monitoring/components/dashboard_spec.js | 551 +- .../components/dashboard_template_spec.js | 15 +- .../components/dashboard_url_time_spec.js | 2 +- .../components/dashboards_dropdown_spec.js | 127 +- .../duplicate_dashboard_form_spec.js | 26 +- .../components/embeds/metric_embed_spec.js | 10 +- .../variables/custom_variable_spec.js | 52 + .../variables/text_variable_spec.js | 59 + .../components/variables_section_spec.js | 126 + spec/frontend/monitoring/mock_data.js | 231 +- .../frontend/monitoring/store/actions_spec.js | 180 +- .../frontend/monitoring/store/getters_spec.js | 84 +- .../monitoring/store/mutations_spec.js | 92 + spec/frontend/monitoring/store/utils_spec.js | 6 + .../monitoring/store/variable_mapping_spec.js | 22 + spec/frontend/monitoring/store_utils.js | 47 +- spec/frontend/monitoring/stubs/modal_stub.js | 11 + spec/frontend/monitoring/utils_spec.js | 302 +- spec/frontend/monitoring/validators_spec.js | 80 + .../notebook/cells/code_spec.js | 30 +- spec/frontend/notebook/cells/markdown_spec.js | 167 + .../cells/output/html_sanitize_tests.js | 0 .../notebook/cells/output/html_spec.js | 0 .../notebook/cells/output/index_spec.js | 10 +- .../notebook/cells/prompt_spec.js | 4 +- .../notebook/index_spec.js | 6 +- .../notes/components/comment_form_spec.js | 7 +- .../components/discussion_actions_spec.js | 2 +- .../components/discussion_counter_spec.js | 9 +- .../components/discussion_filter_spec.js | 4 +- .../notes/components/discussion_notes_spec.js | 2 +- .../notes/components/note_form_spec.js | 8 +- .../notes/components/note_header_spec.js | 94 +- .../components/noteable_discussion_spec.js | 2 +- .../notes/components/notes_app_spec.js | 2 +- .../mixins/discussion_navigation_spec.js | 4 +- spec/frontend/notes/mock_data.js | 1 + spec/frontend/notes/old_notes_spec.js | 52 +- spec/frontend/notes/stores/actions_spec.js | 31 +- .../notes/stores/collapse_utils_spec.js | 4 +- spec/frontend/notes/stores/mutation_spec.js | 56 +- .../oauth_remember_me_spec.js | 0 .../account_and_limits_spec.js | 0 .../index/components/stop_jobs_modal_spec.js | 19 +- .../delete_user_modal_spec.js.snap | 1 - .../pages/admin/users/new/index_spec.js | 0 .../components/promote_label_modal_spec.js | 8 +- .../components/delete_milestone_modal_spec.js | 25 +- .../promote_milestone_modal_spec.js | 8 +- .../components/interval_pattern_input_spec.js | 154 + .../pipeline_schedule_callout_spec.js | 50 +- .../components/settings_panel_spec.js | 29 +- .../new/preserve_url_fragment_spec.js | 0 .../pipelines_filtered_search_spec.js | 97 + .../graph/stage_column_component_spec.js | 2 +- .../pipelines/header_component_spec.js | 116 + .../pipelines/linked_pipelines_mock.json | 3 +- .../pipelines/mock_data.js | 145 + .../pipeline_details_mediator_spec.js | 8 +- .../pipelines/pipelines_actions_spec.js | 142 + .../pipelines/pipelines_artifacts_spec.js | 46 + spec/frontend/pipelines/pipelines_spec.js | 710 +++ .../pipelines/pipelines_table_row_spec.js | 2 +- .../pipelines/pipelines_table_spec.js | 66 + spec/frontend/pipelines/stage_spec.js | 156 + .../pipelines/stores/pipeline_store_spec.js} | 40 +- .../test_reports/stores/mutations_spec.js | 6 +- .../test_reports/test_summary_spec.js | 18 +- .../test_reports/test_summary_table_spec.js | 36 + spec/frontend/pipelines/time_ago_spec.js | 67 + .../tokens/pipeline_branch_name_token_spec.js | 89 + .../pipeline_trigger_author_token_spec.js | 98 + .../pipelines_spec.js | 0 .../prometheus_metrics/custom_metrics_spec.js | 2 +- spec/frontend/prometheus_metrics/mock_data.js | 44 +- .../prometheus_metrics_spec.js | 12 +- .../explorer/components/image_list_spec.js | 74 + spec/frontend/registry/explorer/mock_data.js | 8 + .../registry/explorer/pages/details_spec.js | 198 +- .../registry/explorer/pages/index_spec.js | 36 - .../registry/explorer/pages/list_spec.js | 283 +- .../registry/explorer/stores/actions_spec.js | 20 +- spec/frontend/registry/explorer/stubs.js | 5 + .../registry/settings/store/getters_spec.js | 14 + .../expiration_policy_fields_spec.js.snap | 18 +- .../expiration_policy_fields_spec.js | 37 +- .../components/related_merge_requests_spec.js | 8 +- .../store/actions_spec.js | 13 +- .../store/mutations_spec.js | 0 .../releases/components/app_edit_spec.js | 9 +- .../components/release_block_footer_spec.js | 81 +- .../components/release_block_metadata_spec.js | 67 + .../release_block_milestone_info_spec.js | 4 +- .../releases/components/release_block_spec.js | 13 +- .../stores/modules/detail/actions_spec.js | 12 +- .../stores/modules/detail/mutations_spec.js | 31 +- .../grouped_accessibility_reports_app_spec.js | 126 + .../reports/accessibility_report/mock_data.js | 55 + .../store/actions_spec.js | 121 + .../store/getters_spec.js | 149 + .../store/mutations_spec.js | 64 + .../grouped_issues_list_spec.js.snap | 25 + .../issue_status_icon_spec.js.snap | 37 + .../components/grouped_issues_list_spec.js | 86 + .../grouped_test_reports_app_spec.js | 61 +- .../components/issue_status_icon_spec.js | 29 + .../components/modal_open_name_spec.js | 4 +- .../reports/components/modal_spec.js | 0 .../reports/components/summary_row_spec.js | 2 +- .../components/test_issue_body_spec.js | 4 +- spec/frontend/reports/mock_data/mock_data.js | 24 + .../new_and_fixed_failures_report.json | 0 .../reports/mock_data/new_errors_report.json | 0 .../mock_data/new_failures_report.json | 0 .../reports/mock_data/no_failures_report.json | 0 .../reports/mock_data/resolved_failures.json | 0 .../reports/store/actions_spec.js | 4 +- .../reports/store/mutations_spec.js | 0 .../__snapshots__/last_commit_spec.js.snap | 8 +- .../repository/components/last_commit_spec.js | 1 + spec/frontend/repository/utils/commit_spec.js | 2 + .../settings_panels_spec.js | 0 .../confidential_issue_sidebar_spec.js.snap | 12 +- .../sidebar/assignees_realtime_spec.js | 102 + .../time_tracking/time_tracker_spec.js | 45 +- .../confidential/edit_form_buttons_spec.js | 41 + .../sidebar/confidential/edit_form_spec.js | 45 + .../sidebar/confidential_edit_buttons_spec.js | 35 - .../confidential_edit_form_buttons_spec.js | 35 - .../confidential_issue_sidebar_spec.js | 25 +- .../sidebar/lock/edit_form_buttons_spec.js | 31 + .../sidebar/lock/lock_issue_sidebar_spec.js | 6 +- spec/frontend/sidebar/participants_spec.js | 206 + .../sidebar/sidebar_assignees_spec.js | 46 +- .../frontend/sidebar/sidebar_mediator_spec.js | 135 + .../sidebar/sidebar_move_issue_spec.js | 167 + .../sidebar/sidebar_subscriptions_spec.js | 36 + spec/frontend/sidebar/subscriptions_spec.js | 106 + spec/frontend/smart_interval_spec.js | 2 - spec/frontend/snippet/snippet_bundle_spec.js | 143 +- .../snippet_blob_edit_spec.js.snap | 1 + .../snippet_description_edit_spec.js.snap | 4 +- .../snippet_description_view_spec.js.snap | 16 + .../frontend/snippets/components/edit_spec.js | 16 + .../components/snippet_blob_view_spec.js | 38 +- .../snippet_description_view_spec.js | 27 + .../components/snippet_header_spec.js | 86 +- .../snippets/components/snippet_title_spec.js | 6 +- .../components/edit_area_spec.js | 76 + .../components/publish_toolbar_spec.js | 17 +- .../components/saved_changes_message_spec.js | 7 +- .../components/static_site_editor_spec.js | 247 - .../graphql/resolvers/file_spec.js | 25 + .../resolvers/submit_content_changes_spec.js | 37 + spec/frontend/static_site_editor/mock_data.js | 5 + .../static_site_editor/pages/home_spec.js | 211 + .../static_site_editor/pages/success_spec.js | 78 + .../services/submit_content_changes_spec.js | 32 +- .../static_site_editor/store/actions_spec.js | 152 - .../static_site_editor/store/getters_spec.js | 19 - .../store/mutations_spec.js | 54 - spec/frontend/tracking_spec.js | 57 +- spec/frontend/users_select/utils_spec.js | 33 + .../mr_collapsible_extension_spec.js | 4 +- .../mr_widget_pipeline_container_spec.js | 57 +- .../mr_widget_terraform_plan_spec.js | 18 + .../stores/artifacts_list/actions_spec.js | 4 +- .../stores/get_state_key_spec.js | 24 + .../stores/mr_widget_store_spec.js | 8 +- .../__snapshots__/clone_dropdown_spec.js.snap | 38 +- .../__snapshots__/code_block_spec.js.snap | 18 +- .../__snapshots__/identicon_spec.js.snap | 12 +- .../vue_shared/components/awards_list_spec.js | 42 + .../__snapshots__/simple_viewer_spec.js.snap | 3 +- .../blob_viewers/rich_viewer_spec.js | 5 + .../components/ci_badge_link_spec.js | 2 +- .../vue_shared/components/ci_icon_spec.js | 2 +- .../vue_shared/components/code_block_spec.js | 29 +- .../content_viewer/content_viewer_spec.js | 21 + .../content_viewer/lib/viewer_utils_spec.js | 20 + .../viewers/download_viewer_spec.js | 28 + .../viewers/image_viewer_spec.js | 55 +- .../viewers/markdown_viewer_spec.js | 114 + .../date_time_picker_lib_spec.js | 9 +- .../diff_viewer/diff_viewer_spec.js | 57 +- .../dropdown/dropdown_button_spec.js | 4 +- .../dropdown/dropdown_hidden_input_spec.js | 2 +- .../components/dropdown/mock_data.js | 0 .../components/file_finder/item_spec.js | 6 +- .../vue_shared/components/file_row_spec.js | 8 +- .../filtered_search_dropdown_spec.js | 4 +- .../components/gl_countdown_spec.js | 26 +- .../components/header_ci_component_spec.js | 2 +- .../vue_shared/components/identicon_spec.js | 37 +- .../components/issue/issue_milestone_spec.js | 44 +- .../issue/related_issuable_item_spec.js | 5 +- .../components/markdown/field_spec.js | 34 +- .../components/markdown/field_view_spec.js | 26 + .../components/markdown/suggestions_spec.js | 10 +- .../components/markdown/toolbar_spec.js | 9 +- .../components/navigation_tabs_spec.js | 4 +- .../vue_shared/components/pikaday_spec.js | 4 +- .../components/project_avatar/default_spec.js | 8 +- .../project_list_item_spec.js | 8 +- .../project_selector/project_selector_spec.js | 40 +- .../rich_content_editor_spec.js | 59 + .../rich_content_editor/toolbar_item_spec.js | 44 + .../toolbar_service_spec.js | 29 + .../sidebar/labels_select/base_spec.js | 5 +- .../labels_select/dropdown_button_spec.js | 20 +- .../dropdown_create_label_spec.js | 2 +- .../labels_select/dropdown_footer_spec.js | 2 +- .../dropdown_value_collapsed_spec.js | 2 +- .../labels_select/dropdown_value_spec.js | 5 +- .../sidebar/labels_select/mock_data.js | 0 .../labels_select_vue/dropdown_button_spec.js | 25 +- .../dropdown_contents_create_view_spec.js | 14 +- .../dropdown_contents_labels_view_spec.js | 89 +- .../labels_select_vue/label_item_spec.js | 111 + .../labels_select_root_spec.js | 24 +- .../sidebar/labels_select_vue/mock_data.js | 3 +- .../labels_select_vue/store/actions_spec.js | 2 +- .../labels_select_vue/store/getters_spec.js | 24 +- .../labels_select_vue/store/mutations_spec.js | 5 +- .../components/stacked_progress_bar_spec.js | 23 +- .../vue_shared/components/tabs/tab_spec.js | 2 +- .../vue_shared/components/tabs/tabs_spec.js | 31 +- .../components/toggle_button_spec.js | 6 +- spec/frontend/wikis_spec.js | 26 + spec/frontend_integration/.eslintrc.yml | 6 + spec/frontend_integration/README.md | 17 + .../ide_integration_spec.js.snap | 136 + .../ide/ide_integration_spec.js | 100 + spec/graphql/gitlab_schema_spec.rb | 14 +- .../create_alert_issue_spec.rb | 60 + .../update_alert_status_spec.rb | 73 + .../graphql/mutations/branches/create_spec.rb | 55 + .../design_management/delete_spec.rb | 145 + .../design_management/upload_spec.rb | 136 + .../mutations/issues/set_confidential_spec.rb | 2 + .../mutations/issues/set_due_date_spec.rb | 2 + spec/graphql/mutations/issues/update_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/todos/mark_all_done_spec.rb | 2 + .../graphql/mutations/todos/mark_done_spec.rb | 2 + spec/graphql/mutations/todos/restore_spec.rb | 2 + .../alert_status_counts_resolver_spec.rb | 24 + .../alert_management_alert_resolver_spec.rb | 63 + .../resolvers/board_lists_resolver_spec.rb | 82 + .../resolvers/branch_commit_resolver_spec.rb | 26 + .../design_at_version_resolver_spec.rb | 69 + .../design_management/design_resolver_spec.rb | 88 + .../designs_resolver_spec.rb | 93 + .../design_at_version_resolver_spec.rb | 93 + .../designs_at_version_resolver_spec.rb | 86 + .../version_in_collection_resolver_spec.rb | 64 + .../version_resolver_spec.rb | 43 + .../versions_resolver_spec.rb | 117 + .../graphql/resolvers/issues_resolver_spec.rb | 78 +- .../resolvers/milestone_resolver_spec.rb | 28 +- .../projects/jira_imports_resolver_spec.rb | 8 +- .../resolvers/projects_resolver_spec.rb | 77 + .../resolvers/release_resolver_spec.rb | 51 + .../resolvers/releases_resolver_spec.rb | 42 + .../alert_status_count_type_spec.rb | 20 + .../types/alert_management/alert_type_spec.rb | 31 + .../alert_management/severity_enum_spec.rb | 11 + .../alert_management/status_enum_spec.rb | 24 + .../award_emojis/award_emoji_type_spec.rb | 6 +- .../types/blob_viewers/type_enum_spec.rb | 2 +- spec/graphql/types/board_list_type_spec.rb | 13 + spec/graphql/types/board_type_spec.rb | 4 +- spec/graphql/types/branch_type_spec.rb | 9 + .../types/ci/detailed_status_type_spec.rb | 2 +- spec/graphql/types/ci/pipeline_type_spec.rb | 4 +- spec/graphql/types/commit_type_spec.rb | 6 +- .../design_at_version_type_spec.rb | 16 + .../design_collection_type_spec.rb | 13 + .../design_management/design_type_spec.rb | 13 + .../design_version_event_enum_spec.rb | 11 + .../design_management/version_type_spec.rb | 13 + .../types/design_management_type_spec.rb | 7 + spec/graphql/types/diff_refs_type_spec.rb | 10 +- spec/graphql/types/environment_type_spec.rb | 4 +- .../sentry_detailed_error_type_spec.rb | 4 +- .../sentry_error_collection_type_spec.rb | 4 +- ...entry_error_stack_trace_entry_type_spec.rb | 2 +- .../sentry_error_stack_trace_type_spec.rb | 4 +- .../error_tracking/sentry_error_type_spec.rb | 2 +- .../types/grafana_integration_type_spec.rb | 6 +- spec/graphql/types/group_type_spec.rb | 6 +- spec/graphql/types/issuable_sort_enum_spec.rb | 15 + .../graphql/types/issuable_state_enum_spec.rb | 2 +- spec/graphql/types/issue_sort_enum_spec.rb | 6 +- spec/graphql/types/issue_state_enum_spec.rb | 2 +- spec/graphql/types/issue_type_spec.rb | 11 +- spec/graphql/types/jira_import_type_spec.rb | 4 +- spec/graphql/types/label_type_spec.rb | 2 +- .../types/merge_request_state_enum_spec.rb | 2 +- spec/graphql/types/merge_request_type_spec.rb | 6 +- spec/graphql/types/metadata_type_spec.rb | 4 +- .../types/metrics/dashboard_type_spec.rb | 2 +- .../dashboards/annotation_type_spec.rb | 4 +- spec/graphql/types/milestone_type_spec.rb | 4 +- spec/graphql/types/namespace_type_spec.rb | 4 +- .../types/notes/discussion_type_spec.rb | 4 +- spec/graphql/types/notes/note_type_spec.rb | 4 +- .../graphql/types/notes/noteable_type_spec.rb | 3 +- .../types/permission_types/issue_spec.rb | 5 +- .../merge_request_type_spec.rb | 2 +- .../types/permission_types/project_spec.rb | 2 +- spec/graphql/types/project_type_spec.rb | 23 +- .../types/projects/base_service_type_spec.rb | 4 +- .../types/projects/jira_service_type_spec.rb | 4 +- .../types/projects/service_type_spec.rb | 2 +- .../types/projects/services_enum_spec.rb | 2 +- spec/graphql/types/query_type_spec.rb | 2 +- spec/graphql/types/release_type_spec.rb | 37 + spec/graphql/types/repository_type_spec.rb | 8 +- .../root_storage_statistics_type_spec.rb | 4 +- spec/graphql/types/snippet_type_spec.rb | 10 +- spec/graphql/types/snippets/blob_type_spec.rb | 16 +- .../types/snippets/blob_viewer_type_spec.rb | 81 + 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 | 4 +- .../types/tree/tree_entry_type_spec.rb | 4 +- spec/graphql/types/tree/tree_type_spec.rb | 4 +- spec/graphql/types/tree/type_enum_spec.rb | 2 +- spec/graphql/types/user_type_spec.rb | 6 +- spec/haml_lint/linter/no_plain_nodes_spec.rb | 38 + spec/helpers/access_tokens_helper_spec.rb | 18 + spec/helpers/application_helper_spec.rb | 27 +- spec/helpers/auth_helper_spec.rb | 36 + spec/helpers/boards_helper_spec.rb | 4 + spec/helpers/clusters_helper_spec.rb | 26 + spec/helpers/commits_helper_spec.rb | 28 + spec/helpers/environments_helper_spec.rb | 18 +- spec/helpers/events_helper_spec.rb | 14 + spec/helpers/export_helper_spec.rb | 11 + spec/helpers/groups_helper_spec.rb | 27 + spec/helpers/issuables_helper_spec.rb | 42 - spec/helpers/markup_helper_spec.rb | 39 +- spec/helpers/members_helper_spec.rb | 11 + spec/helpers/milestones_helper_spec.rb | 15 + spec/helpers/nav_helper_spec.rb | 23 + spec/helpers/preferences_helper_spec.rb | 2 +- .../projects/alert_management_helper_spec.rb | 82 + spec/helpers/projects_helper_spec.rb | 42 +- spec/helpers/releases_helper_spec.rb | 4 +- spec/helpers/search_helper_spec.rb | 1 - spec/helpers/snippets_helper_spec.rb | 31 - spec/helpers/todos_helper_spec.rb | 71 +- spec/helpers/visibility_level_helper_spec.rb | 26 +- spec/helpers/x509_helper_spec.rb | 18 + spec/initializers/action_mailer_hooks_spec.rb | 4 + spec/initializers/lograge_spec.rb | 2 +- spec/initializers/secret_token_spec.rb | 9 +- spec/initializers/zz_metrics_spec.rb | 4 - .../deploy_keys/components/action_btn_spec.js | 72 - .../deploy_keys/components/app_spec.js | 155 - .../deploy_keys/components/key_spec.js | 157 - .../deploy_keys/components/keys_panel_spec.js | 63 - spec/javascripts/diffs/create_diffs_store.js | 5 - .../diffs/mock_data/diff_discussions.js | 5 - spec/javascripts/diffs/mock_data/diff_file.js | 5 - .../diffs/mock_data/diff_file_unreadable.js | 5 - .../diffs/mock_data/diff_with_commit.js | 7 - .../diffs/mock_data/merge_request_diffs.js | 7 - .../dirty_submit_collection_spec.js | 29 - spec/javascripts/frequent_items/mock_data.js | 168 - spec/javascripts/gl_dropdown_spec.js | 22 +- .../helpers/filtered_search_spec_helper.js | 70 +- .../helpers/init_vue_mr_page_helper.js | 2 +- .../helpers/vue_mount_component_helper.js | 40 +- .../ide/components/nav_dropdown_spec.js | 80 - .../ide/components/new_dropdown/modal_spec.js | 150 - .../ide/components/repo_editor_spec.js | 43 +- .../ide/stores/actions/tree_spec.js | 3 +- spec/javascripts/issue_show/helpers.js | 1 - spec/javascripts/issue_show/mock_data.js | 1 - spec/javascripts/landing_spec.js | 166 - spec/javascripts/line_highlighter_spec.js | 17 +- ...ec.js => dashboard_resize_browser_spec.js} | 7 + .../notebook/cells/markdown_spec.js | 105 - .../components/interval_pattern_input_spec.js | 192 - .../pipelines/header_component_spec.js | 108 - .../pipelines/pipelines_actions_spec.js | 128 - .../pipelines/pipelines_artifacts_spec.js | 38 - spec/javascripts/pipelines/pipelines_spec.js | 783 --- .../pipelines/pipelines_table_spec.js | 86 - spec/javascripts/pipelines/stage_spec.js | 136 - .../pipelines/stores/pipeline.json | 167 - .../stores/pipeline_with_triggered.json | 381 -- .../stores/pipeline_with_triggered_by.json | 379 -- .../pipeline_with_triggered_triggered_by.json | 452 -- spec/javascripts/pipelines/time_ago_spec.js | 64 - .../prometheus_metrics/mock_data.js | 41 - .../reports/mock_data/mock_data.js | 8 - spec/javascripts/search_autocomplete_spec.js | 24 + .../sidebar/lock/edit_form_buttons_spec.js | 32 - spec/javascripts/sidebar/mock_data.js | 7 - spec/javascripts/sidebar/participants_spec.js | 202 - .../sidebar/sidebar_mediator_spec.js | 134 - .../sidebar/sidebar_move_issue_spec.js | 166 - .../sidebar/sidebar_subscriptions_spec.js | 38 - .../javascripts/sidebar/subscriptions_spec.js | 100 - .../components/mr_widget_header_spec.js | 4 +- .../components/mr_widget_pipeline_spec.js | 13 + .../states/mr_widget_ready_to_merge_spec.js | 7 +- .../content_viewer/content_viewer_spec.js | 123 - .../user_avatar/user_avatar_svg_spec.js | 29 - spec/lib/api/entities/branch_spec.rb | 28 + .../entities/design_management/design_spec.rb | 19 + .../project_repository_storage_move_spec.rb | 21 + spec/lib/api/entities/snippet_spec.rb | 94 + .../api/helpers/pagination_strategies_spec.rb | 77 +- .../filter/issue_reference_filter_spec.rb | 55 + .../banzai/filter/upload_link_filter_spec.rb | 17 + .../filter/user_reference_filter_spec.rb | 2 +- .../lib/banzai/pipeline/wiki_pipeline_spec.rb | 8 +- .../reference_parser/design_parser_spec.rb | 91 + spec/lib/banzai/renderer_spec.rb | 57 +- .../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 +- spec/lib/container_registry/client_spec.rb | 52 +- spec/lib/declarative_policy_spec.rb | 38 + spec/lib/feature_spec.rb | 8 - .../alert_management/alert_params_spec.rb | 94 + .../alert_status_counts_spec.rb | 55 + spec/lib/gitlab/alerting/alert_spec.rb | 24 + .../notification_payload_parser_spec.rb | 29 +- .../analytics/cycle_analytics/median_spec.rb | 42 + spec/lib/gitlab/app_json_logger_spec.rb | 4 +- spec/lib/gitlab/application_context_spec.rb | 14 +- spec/lib/gitlab/auth/auth_finders_spec.rb | 160 +- spec/lib/gitlab/auth/o_auth/provider_spec.rb | 12 +- spec/lib/gitlab/auth_spec.rb | 8 + ...nment_id_deployment_merge_requests_spec.rb | 46 + .../backfill_snippet_repositories_spec.rb | 187 +- ...rate_issue_trackers_sensitive_data_spec.rb | 71 +- .../gitlab/chat/responder/mattermost_spec.rb | 117 + .../checks/push_file_count_check_spec.rb | 4 +- .../gitlab/ci/config/entry/artifacts_spec.rb | 48 +- .../gitlab/ci/config/entry/reports_spec.rb | 2 + .../gitlab/ci/config/entry/trigger_spec.rb | 13 - spec/lib/gitlab/ci/cron_parser_spec.rb | 396 +- .../ci/parsers/accessibility/pa11y_spec.rb | 118 + .../ci/parsers/terraform/tfplan_spec.rb | 51 + spec/lib/gitlab/ci/parsers/test/junit_spec.rb | 60 +- spec/lib/gitlab/ci/parsers_spec.rb | 16 + .../gitlab/ci/pipeline/chain/sequence_spec.rb | 10 + .../accessibility_reports_comparer_spec.rb | 270 + .../ci/reports/accessibility_reports_spec.rb | 232 + .../ci/reports/terraform_reports_spec.rb | 34 + spec/lib/gitlab/ci/reports/test_case_spec.rb | 2 +- .../gitlab/ci/reports/test_reports_spec.rb | 25 +- spec/lib/gitlab/ci/reports/test_suite_spec.rb | 27 +- ...performance_testing_gitlab_ci_yaml_spec.rb | 85 + .../Jobs/build_gitlab_ci_yaml_spec.rb | 58 + .../Jobs/code_quality_gitlab_ci_yaml_spec.rb | 86 + .../Jobs/deploy_gitlab_ci_yaml_spec.rb | 222 + .../Jobs/test_gitlab_ci_yaml_spec.rb | 86 + .../auto_devops_gitlab_ci_yaml_spec.rb | 100 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 22 +- spec/lib/gitlab/code_navigation_path_spec.rb | 31 +- .../external_database_checker_spec.rb | 56 + .../group_stage_summary_spec.rb | 176 - .../cycle_analytics/summary/value_spec.rb | 33 + spec/lib/gitlab/danger/changelog_spec.rb | 8 - spec/lib/gitlab/danger/helper_spec.rb | 65 + spec/lib/gitlab/danger/teammate_spec.rb | 13 +- spec/lib/gitlab/database/batch_count_spec.rb | 8 + .../gitlab/database/migration_helpers_spec.rb | 391 +- .../partitioned_foreign_key_spec.rb | 48 + .../partitioning_migration_helpers_spec.rb | 230 + .../v1/rename_base_spec.rb | 4 +- .../gitlab/database/with_lock_retries_spec.rb | 21 +- spec/lib/gitlab/diff/file_spec.rb | 55 + .../diff/formatters/text_formatter_spec.rb | 18 + spec/lib/gitlab/diff/position_spec.rb | 4 +- .../gitlab/elasticsearch/logs/lines_spec.rb | 24 +- .../gitlab/elasticsearch/logs/pods_spec.rb | 4 +- spec/lib/gitlab/email/handler_spec.rb | 12 + .../hook/smime_signature_interceptor_spec.rb | 23 +- .../gitlab/email/smime/certificate_spec.rb | 55 +- spec/lib/gitlab/email/smime/signer_spec.rb | 35 +- .../sleeping_lock_spec.rb | 102 + .../gitlab/exclusive_lease_helpers_spec.rb | 31 +- spec/lib/gitlab/exclusive_lease_spec.rb | 84 +- spec/lib/gitlab/experimentation_spec.rb | 53 +- .../lib/gitlab/gfm/reference_rewriter_spec.rb | 12 + spec/lib/gitlab/git/attributes_parser_spec.rb | 8 + spec/lib/gitlab/git/blob_spec.rb | 12 + spec/lib/gitlab/git/commit_spec.rb | 20 + spec/lib/gitlab/git/tag_spec.rb | 30 + spec/lib/gitlab/git_access_design_spec.rb | 45 + spec/lib/gitlab/git_access_snippet_spec.rb | 155 +- spec/lib/gitlab/git_access_wiki_spec.rb | 10 +- .../gitlab/gl_repository/repo_type_spec.rb | 37 + spec/lib/gitlab/gl_repository_spec.rb | 15 + .../gitlab/google_code_import/client_spec.rb | 2 +- .../google_code_import/importer_spec.rb | 2 +- .../formatters/lograge_with_timestamp_spec.rb | 2 +- .../loggers/cloudflare_logger_spec.rb | 31 + .../loggers/exception_logger_spec.rb | 69 +- .../authorize/authorize_field_service_spec.rb | 10 + ...ernally_paginated_array_connection_spec.rb | 14 + .../pagination/keyset/connection_spec.rb | 15 +- spec/lib/gitlab/graphql_logger_spec.rb | 6 +- .../gitlab/health_checks/master_check_spec.rb | 5 +- .../gitlab/hook_data/issuable_builder_spec.rb | 1 + spec/lib/gitlab/import_export/all_models.yml | 22 +- .../attribute_configuration_spec.rb | 3 - .../design_repo_restorer_spec.rb | 42 + .../import_export/design_repo_saver_spec.rb | 37 + .../fast_hash_serializer_spec.rb | 2 +- .../group/legacy_tree_restorer_spec.rb | 2 +- .../import_export/group/tree_restorer_spec.rb | 184 + .../import_export/group/tree_saver_spec.rb | 140 + .../import_export_equivalence_spec.rb | 4 +- .../import_test_coverage_spec.rb | 13 +- .../lib/gitlab/import_export/importer_spec.rb | 85 +- .../json/legacy_reader/file_spec.rb | 2 +- .../json/legacy_reader/hash_spec.rb | 4 +- .../import_export/json/ndjson_reader_spec.rb | 14 +- .../gitlab/import_export/lfs_saver_spec.rb | 2 +- .../import_export/project/export_task_spec.rb | 43 +- .../import_export/project/import_task_spec.rb | 49 +- .../project/tree_restorer_spec.rb | 108 +- .../import_export/project/tree_saver_spec.rb | 25 + .../relation_tree_restorer_spec.rb | 14 +- .../import_export/safe_model_attributes.yml | 2 + .../lib/gitlab/instrumentation_helper_spec.rb | 6 +- .../gitlab/jira_import/base_importer_spec.rb | 20 +- .../jira_import/handle_labels_service_spec.rb | 53 + .../jira_import/issue_serializer_spec.rb | 152 +- .../jira_import/issues_importer_spec.rb | 36 +- .../jira_import/labels_importer_spec.rb | 83 +- .../jira_import/metadata_collector_spec.rb | 178 + .../gitlab/jira_import/user_mapper_spec.rb | 80 + spec/lib/gitlab/json_logger_spec.rb | 4 +- spec/lib/gitlab/json_spec.rb | 152 +- spec/lib/gitlab/kubernetes/helm/api_spec.rb | 25 +- .../kubernetes/helm/base_command_spec.rb | 80 +- .../kubernetes/helm/delete_command_spec.rb | 41 +- .../kubernetes/helm/init_command_spec.rb | 73 +- .../kubernetes/helm/install_command_spec.rb | 84 +- .../kubernetes/helm/parsers/list_v2_spec.rb | 100 + .../kubernetes/helm/patch_command_spec.rb | 68 +- spec/lib/gitlab/kubernetes/helm/pod_spec.rb | 2 +- .../kubernetes/helm/reset_command_spec.rb | 33 +- .../lib/gitlab/kubernetes/kube_client_spec.rb | 108 +- .../gitlab/kubernetes/network_policy_spec.rb | 224 + .../legacy_github_import/importer_spec.rb | 1 + .../gitlab/logging/cloudflare_helper_spec.rb | 52 + .../lib/gitlab/lograge/custom_options_spec.rb | 33 +- spec/lib/gitlab/mail_room/mail_room_spec.rb | 3 +- .../metrics/background_transaction_spec.rb | 6 - .../stages/grafana_formatter_spec.rb | 6 +- spec/lib/gitlab/metrics/dashboard/url_spec.rb | 32 +- .../metrics/exporter/sidekiq_exporter_spec.rb | 2 +- spec/lib/gitlab/metrics/method_call_spec.rb | 19 - spec/lib/gitlab/metrics/metric_spec.rb | 71 - .../gitlab/metrics/rack_middleware_spec.rb | 25 - .../metrics/samplers/database_sampler_spec.rb | 49 + .../metrics/samplers/influx_sampler_spec.rb | 105 - .../metrics/samplers/ruby_sampler_spec.rb | 36 +- .../gitlab/metrics/sidekiq_middleware_spec.rb | 7 - .../metrics/subscribers/action_view_spec.rb | 6 - spec/lib/gitlab/metrics/system_spec.rb | 117 +- spec/lib/gitlab/metrics/transaction_spec.rb | 171 +- .../gitlab/metrics/web_transaction_spec.rb | 146 +- spec/lib/gitlab/metrics_spec.rb | 78 - spec/lib/gitlab/middleware/multipart_spec.rb | 11 + spec/lib/gitlab/omniauth_initializer_spec.rb | 16 + spec/lib/gitlab/pagination/keyset_spec.rb | 12 + spec/lib/gitlab/path_regex_spec.rb | 15 + spec/lib/gitlab/performance_bar_spec.rb | 59 +- .../conduit/response_spec.rb | 4 +- .../conduit/tasks_response_spec.rb | 2 +- .../conduit/users_response_spec.rb | 2 +- .../issues/importer_spec.rb | 2 +- .../lib/gitlab/project_search_results_spec.rb | 113 +- spec/lib/gitlab/prometheus_client_spec.rb | 4 +- spec/lib/gitlab/regex_spec.rb | 33 + .../lib/gitlab/repository_url_builder_spec.rb | 2 +- spec/lib/gitlab/request_context_spec.rb | 4 + spec/lib/gitlab/runtime_spec.rb | 13 + spec/lib/gitlab/search_results_spec.rb | 10 +- .../gitlab/sidekiq_config/cli_methods_spec.rb | 8 - .../sidekiq_logging/json_formatter_spec.rb | 27 +- .../sidekiq_logging/structured_logger_spec.rb | 25 +- .../duplicate_jobs/duplicate_job_spec.rb | 19 +- .../extra_done_log_metadata_spec.rb | 35 + spec/lib/gitlab/sidekiq_middleware_spec.rb | 24 +- .../lib/gitlab/snippet_search_results_spec.rb | 29 +- .../gitlab/static_site_editor/config_spec.rb | 28 +- spec/lib/gitlab/throttle_spec.rb | 78 +- spec/lib/gitlab/tracking_spec.rb | 8 +- spec/lib/gitlab/tree_summary_spec.rb | 16 +- spec/lib/gitlab/url_builder_spec.rb | 13 +- .../designs_counter_spec.rb | 14 + .../web_ide_counter_spec.rb | 47 +- spec/lib/gitlab/usage_data_spec.rb | 340 +- spec/lib/gitlab/user_access_snippet_spec.rb | 52 + spec/lib/gitlab/utils/measuring_spec.rb | 40 + spec/lib/gitlab/utils_spec.rb | 34 +- .../lib/gitlab/view/presenter/factory_spec.rb | 6 +- .../wiki_pages/front_matter_parser_spec.rb | 6 +- spec/lib/gitlab/with_request_store_spec.rb | 30 + spec/lib/gitlab/workhorse_spec.rb | 88 +- spec/lib/gitlab/x509/signature_spec.rb | 160 + spec/lib/gitlab/x509/tag_spec.rb | 42 + spec/lib/gitlab_danger_spec.rb | 2 +- spec/lib/google_api/auth_spec.rb | 14 + spec/lib/grafana/validator_spec.rb | 4 +- spec/lib/omni_auth/strategies/jwt_spec.rb | 4 +- spec/lib/quality/helm_client_spec.rb | 132 - spec/lib/quality/test_level_spec.rb | 4 +- spec/lib/rspec_flaky/flaky_example_spec.rb | 2 +- spec/lib/rspec_flaky/report_spec.rb | 6 +- spec/lib/sentry/client/event_spec.rb | 2 +- spec/lib/sentry/client/issue_link_spec.rb | 4 +- spec/lib/sentry/client/issue_spec.rb | 4 +- spec/lib/sentry/client/projects_spec.rb | 2 +- spec/lib/sentry/client/repo_spec.rb | 2 +- spec/lib/serializers/json_spec.rb | 2 +- .../hashed_storage_all_projects_check_spec.rb | 24 + .../app/hashed_storage_enabled_check_spec.rb | 24 + spec/lib/system_check/simple_executor_spec.rb | 142 +- spec/lib/system_check_spec.rb | 27 +- spec/mailers/emails/groups_spec.rb | 41 + spec/mailers/emails/profile_spec.rb | 40 + spec/mailers/notify_spec.rb | 43 + ...rpolation_format_in_common_metrics_spec.rb | 34 + .../backfill_snippet_repositories_spec.rb | 44 + ...optimistic_locking_nulls_pt2_fixed_spec.rb | 45 + .../cleanup_optimistic_locking_nulls_spec.rb | 9 +- ...up_projects_with_missing_namespace_spec.rb | 134 + ...attributes_on_application_settings_spec.rb | 10 +- .../fill_file_store_ci_job_artifacts_spec.rb | 44 + .../fill_file_store_lfs_objects_spec.rb | 36 + spec/migrations/fill_store_uploads_spec.rb | 48 + ...ditional_application_settings_rows_spec.rb | 27 + ...deprecated_jenkins_service_records_spec.rb | 28 + .../remove_orphaned_invited_members_spec.rb | 55 + spec/models/ability_spec.rb | 46 +- spec/models/alert_management/alert_spec.rb | 320 + spec/models/application_setting_spec.rb | 14 + spec/models/blob_spec.rb | 548 +- spec/models/blob_viewer/readme_spec.rb | 2 +- spec/models/broadcast_message_spec.rb | 18 + spec/models/ci/build_spec.rb | 465 +- ...> daily_build_group_report_result_spec.rb} | 25 +- spec/models/ci/freeze_period_spec.rb | 50 + spec/models/ci/freeze_period_status_spec.rb | 62 + spec/models/ci/instance_variable_spec.rb | 93 + spec/models/ci/job_artifact_spec.rb | 122 +- spec/models/ci/persistent_ref_spec.rb | 12 - spec/models/ci/pipeline_schedule_spec.rb | 8 +- spec/models/ci/pipeline_spec.rb | 145 +- spec/models/ci/processable_spec.rb | 163 +- spec/models/ci/runner_spec.rb | 8 +- spec/models/ci/stage_spec.rb | 26 +- .../applications/elastic_stack_spec.rb | 70 +- .../clusters/applications/fluentd_spec.rb | 36 +- .../clusters/applications/ingress_spec.rb | 6 + .../clusters/applications/jupyter_spec.rb | 4 +- spec/models/clusters/cluster_spec.rb | 98 +- spec/models/commit_status_spec.rb | 44 + spec/models/concerns/awardable_spec.rb | 41 + .../blocks_json_serialization_spec.rb | 7 +- .../concerns/cache_markdown_field_spec.rb | 52 + .../concerns/cacheable_attributes_spec.rb | 4 +- spec/models/concerns/has_user_type_spec.rb | 86 + spec/models/concerns/mentionable_spec.rb | 52 +- spec/models/concerns/noteable_spec.rb | 2 +- spec/models/concerns/reactive_caching_spec.rb | 106 +- spec/models/concerns/redis_cacheable_spec.rb | 6 +- spec/models/concerns/spammable_spec.rb | 97 +- spec/models/container_repository_spec.rb | 12 +- spec/models/cycle_analytics/code_spec.rb | 2 +- .../cycle_analytics/group_level_spec.rb | 44 - 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_token_spec.rb | 4 +- spec/models/design_management/action_spec.rb | 105 + .../design_management/design_action_spec.rb | 98 + .../design_at_version_spec.rb | 426 ++ .../design_collection_spec.rb | 82 + spec/models/design_management/design_spec.rb | 575 ++ .../design_management/repository_spec.rb | 58 + spec/models/design_management/version_spec.rb | 342 ++ spec/models/design_user_mention_spec.rb | 12 + spec/models/diff_note_spec.rb | 18 + spec/models/email_spec.rb | 20 +- spec/models/environment_spec.rb | 21 + spec/models/event_spec.rb | 171 +- spec/models/group_spec.rb | 190 +- spec/models/hooks/project_hook_spec.rb | 4 + spec/models/issue_spec.rb | 132 +- spec/models/iteration_spec.rb | 170 + spec/models/jira_import_state_spec.rb | 1 + spec/models/member_spec.rb | 22 +- spec/models/merge_request_diff_spec.rb | 59 +- spec/models/merge_request_spec.rb | 168 +- .../metrics/users_starred_dashboard_spec.rb | 39 + spec/models/milestone_note_spec.rb | 10 + spec/models/milestone_spec.rb | 163 +- .../namespace/root_storage_size_spec.rb | 67 + spec/models/note_spec.rb | 40 + spec/models/pages_domain_spec.rb | 6 +- .../prometheus_dashboard_spec.rb | 102 + .../prometheus_metric_spec.rb | 59 + .../prometheus_panel_group_spec.rb | 54 + .../prometheus_panel_spec.rb | 77 + spec/models/personal_access_token_spec.rb | 23 + spec/models/personal_snippet_spec.rb | 1 + spec/models/plan_limits_spec.rb | 74 + spec/models/plan_spec.rb | 17 + spec/models/project_ci_cd_setting_spec.rb | 12 - spec/models/project_feature_spec.rb | 74 +- .../project_repository_storage_move_spec.rb | 63 + .../chat_message/pipeline_message_spec.rb | 653 +- .../project_services/irker_service_spec.rb | 2 +- .../project_services/jira_service_spec.rb | 93 +- .../mattermost_slash_commands_service_spec.rb | 7 + .../microsoft_teams_service_spec.rb | 2 +- .../webex_teams_service_spec.rb | 10 + spec/models/project_snippet_spec.rb | 1 + spec/models/project_spec.rb | 279 +- spec/models/project_wiki_spec.rb | 453 +- spec/models/release_spec.rb | 52 - spec/models/remote_mirror_spec.rb | 54 +- spec/models/repository_spec.rb | 76 + spec/models/resource_label_event_spec.rb | 3 - spec/models/resource_milestone_event_spec.rb | 17 + spec/models/resource_state_event_spec.rb | 14 + spec/models/sent_notification_spec.rb | 22 + spec/models/service_spec.rb | 32 +- spec/models/snippet_repository_spec.rb | 32 + spec/models/snippet_spec.rb | 56 +- spec/models/spam_log_spec.rb | 27 +- spec/models/state_note_spec.rb | 29 + spec/models/timelog_spec.rb | 6 +- spec/models/todo_spec.rb | 32 + spec/models/tree_spec.rb | 17 +- spec/models/user_spec.rb | 165 +- spec/models/user_type_enums_spec.rb | 13 - spec/models/wiki_page/meta_spec.rb | 91 +- spec/models/wiki_page_spec.rb | 165 +- spec/models/x509_commit_signature_spec.rb | 32 +- .../alert_management/alert_policy_spec.rb | 25 + spec/policies/base_policy_spec.rb | 2 +- spec/policies/blob_policy_spec.rb | 2 +- spec/policies/ci/build_policy_spec.rb | 18 +- spec/policies/clusters/cluster_policy_spec.rb | 11 +- .../policies/clusters/instance_policy_spec.rb | 20 +- spec/policies/deploy_key_policy_spec.rb | 18 +- .../design_management/design_policy_spec.rb | 181 + spec/policies/environment_policy_spec.rb | 32 +- spec/policies/global_policy_spec.rb | 78 +- spec/policies/group_policy_spec.rb | 30 +- spec/policies/issue_policy_spec.rb | 22 +- spec/policies/merge_request_policy_spec.rb | 6 +- spec/policies/namespace_policy_spec.rb | 8 +- spec/policies/note_policy_spec.rb | 12 +- spec/policies/personal_snippet_policy_spec.rb | 10 +- spec/policies/project_policy_spec.rb | 369 +- spec/policies/project_snippet_policy_spec.rb | 15 +- spec/policies/user_policy_spec.rb | 8 +- spec/policies/wiki_page_policy_spec.rb | 2 +- spec/presenters/ci/build_presenter_spec.rb | 26 - .../ci/build_runner_presenter_spec.rb | 144 +- spec/presenters/clusterable_presenter_spec.rb | 16 + .../presenters/pages_domain_presenter_spec.rb | 8 - .../prometheus/alert_presenter_spec.rb | 142 + spec/requests/api/admin/ci/variables_spec.rb | 210 + spec/requests/api/appearance_spec.rb | 5 +- spec/requests/api/branches_spec.rb | 9 +- spec/requests/api/deployments_spec.rb | 2 +- spec/requests/api/features_spec.rb | 36 +- spec/requests/api/freeze_periods_spec.rb | 475 ++ .../graphql/boards/board_lists_query_spec.rb | 137 + .../graphql/current_user/todos_query_spec.rb | 7 +- .../api/graphql/gitlab_schema_spec.rb | 2 +- .../api/graphql/group/milestones_spec.rb | 48 +- .../metrics/dashboard/annotations_spec.rb | 74 +- .../alerts/update_alert_status_spec.rb | 42 + .../mutations/award_emojis/add_spec.rb | 2 +- .../mutations/award_emojis/remove_spec.rb | 2 +- .../mutations/award_emojis/toggle_spec.rb | 2 +- .../graphql/mutations/branches/create_spec.rb | 45 + .../design_management/delete_spec.rb | 127 + .../design_management/upload_spec.rb | 99 + .../mutations/jira_import/start_spec.rb | 5 +- .../dashboard/annotations/create_spec.rb | 231 + .../graphql/mutations/snippets/create_spec.rb | 52 +- .../mutations/snippets/destroy_spec.rb | 13 +- .../mutations/snippets/mark_as_spam_spec.rb | 8 +- .../graphql/mutations/snippets/update_spec.rb | 25 +- .../alert_status_counts_spec.rb | 61 + .../project/alert_management/alerts_spec.rb | 139 + .../project/grafana_integration_spec.rb | 10 +- .../issue/design_collection/version_spec.rb | 216 + .../issue/design_collection/versions_spec.rb | 113 + .../project/issue/designs/designs_spec.rb | 388 ++ .../project/issue/designs/notes_spec.rb | 70 + .../api/graphql/project/issue_spec.rb | 189 + .../api/graphql/project/issues_spec.rb | 223 +- .../api/graphql/project/jira_import_spec.rb | 3 +- spec/requests/api/graphql/query_spec.rb | 95 + spec/requests/api/graphql_spec.rb | 2 +- spec/requests/api/groups_spec.rb | 271 +- spec/requests/api/helpers_spec.rb | 4 + spec/requests/api/internal/base_spec.rb | 117 +- .../api/issues/get_group_issues_spec.rb | 51 +- spec/requests/api/issues/issues_spec.rb | 28 +- .../api/issues/post_projects_issues_spec.rb | 2 +- .../api/issues/put_projects_issues_spec.rb | 9 +- spec/requests/api/merge_requests_spec.rb | 70 +- .../api/metrics/dashboard/annotations_spec.rb | 154 +- .../metrics/user_starred_dashboards_spec.rb | 164 + spec/requests/api/pipeline_schedules_spec.rb | 2 +- spec/requests/api/pipelines_spec.rb | 99 +- spec/requests/api/project_export_spec.rb | 4 +- spec/requests/api/project_milestones_spec.rb | 8 +- .../project_repository_storage_moves_spec.rb | 89 + spec/requests/api/project_snippets_spec.rb | 114 +- spec/requests/api/project_statistics_spec.rb | 30 +- spec/requests/api/project_templates_spec.rb | 28 +- spec/requests/api/projects_spec.rb | 6 +- spec/requests/api/remote_mirrors_spec.rb | 23 +- spec/requests/api/runner_spec.rb | 58 +- spec/requests/api/runners_spec.rb | 85 +- spec/requests/api/search_spec.rb | 254 +- spec/requests/api/settings_spec.rb | 14 +- spec/requests/api/snippets_spec.rb | 136 +- spec/requests/api/statistics_spec.rb | 4 +- spec/requests/api/terraform/state_spec.rb | 16 + spec/requests/api/todos_spec.rb | 41 + spec/requests/api/users_spec.rb | 6 +- spec/requests/api/wikis_spec.rb | 4 +- spec/requests/jwt_controller_spec.rb | 42 +- spec/requests/rack_attack_global_spec.rb | 57 - spec/requests/user_activity_spec.rb | 4 +- spec/routing/admin_routing_spec.rb | 7 - spec/routing/project_routing_spec.rb | 55 +- spec/routing/routing_spec.rb | 24 + ...yword_arguments_in_sidekiq_workers_spec.rb | 49 + .../cop/gitlab/change_timezone_spec.rb | 21 + spec/rubocop/cop/gitlab/json_spec.rb | 39 + .../inject_enterprise_edition_module_spec.rb | 11 + .../migration/add_column_with_default_spec.rb | 45 +- .../add_columns_to_wide_tables_spec.rb | 4 +- .../add_concurrent_foreign_key_spec.rb | 6 + .../add_limit_to_string_columns_spec.rb | 268 - .../add_limit_to_text_columns_spec.rb | 160 + .../cop/migration/prevent_strings_spec.rb | 143 + ...reversible_add_column_with_default_spec.rb | 43 - ...ith_lock_retries_disallowed_method_spec.rb | 68 + ...ck_retries_without_ddl_transaction_spec.rb | 46 - .../ar_exists_and_present_blank_spec.rb | 111 + .../empty_line_after_shared_example_spec.rb | 86 + spec/rubocop/cop/rspec/env_assignment_spec.rb | 12 +- .../accessibility_error_entity_spec.rb | 37 + ...essibility_reports_comparer_entity_spec.rb | 87 + ...bility_reports_comparer_serializer_spec.rb | 65 + spec/serializers/ci/dag_job_entity_spec.rb | 43 + .../ci/dag_job_group_entity_spec.rb | 58 + .../ci/dag_pipeline_entity_spec.rb | 112 + .../ci/dag_pipeline_serializer_spec.rb | 17 + spec/serializers/ci/dag_stage_entity_spec.rb | 31 + .../cluster_application_entity_spec.rb | 12 + spec/serializers/cluster_entity_spec.rb | 6 +- spec/serializers/cluster_serializer_spec.rb | 38 +- .../serializers/diff_file_base_entity_spec.rb | 58 + .../serializers/diffs_metadata_entity_spec.rb | 2 +- spec/serializers/environment_entity_spec.rb | 50 +- .../merge_request_poll_widget_entity_spec.rb | 44 + ...merge_request_sidebar_basic_entity_spec.rb | 2 +- spec/serializers/service_event_entity_spec.rb | 41 + spec/serializers/test_case_entity_spec.rb | 4 +- spec/serializers/test_suite_entity_spec.rb | 50 +- .../create_alert_issue_service_spec.rb | 152 + .../process_prometheus_alert_service_spec.rb | 136 + .../update_alert_status_service_spec.rb | 66 + .../update_service_spec.rb | 2 +- ...er_registry_authentication_service_spec.rb | 20 +- .../project_create_service_spec.rb | 142 + spec/services/base_container_service_spec.rb | 23 + .../boards/issues/list_service_spec.rb | 2 +- spec/services/branches/create_service_spec.rb | 30 +- ...pare_accessibility_reports_service_spec.rb | 62 + .../ci/compare_test_reports_service_spec.rb | 7 +- .../ci/create_job_artifacts_service_spec.rb | 67 + .../custom_config_content_spec.rb | 4 +- ...build_group_report_result_service_spec.rb} | 41 +- ...troy_expired_job_artifacts_service_spec.rb | 26 +- ...generate_terraform_reports_service_spec.rb | 71 + .../status_collection_spec.rb | 15 +- .../atomic_processing_service_spec.rb | 6 + .../legacy_processing_service_spec.rb | 19 +- .../shared_processing_service.rb | 25 +- ...ared_processing_service_tests_with_yaml.rb | 57 + ...ag_build_allow_failure_test_on_failure.yml | 47 + .../test_cases/dag_build_fails.yml | 39 + .../dag_build_fails_deploy_needs_test.yml | 39 + ...ld_fails_deploy_needs_test_when_always.yml | 43 + .../dag_build_fails_other_build_succeeds.yml | 62 + ...ils_other_build_succeeds_deploy_always.yml | 63 + .../dag_build_fails_test_allow_failure.yml | 40 + .../dag_build_fails_test_always.yml | 35 + .../dag_build_fails_test_on_failure.yml | 35 + .../dag_build_succeeds_test_on_failure.yml | 35 + .../dag_builds_succeed_test_on_failure.yml | 63 + ..._succeed_test_on_failure_deploy_always.yml | 64 + .../dag_test_allow_failure_true.yml | 43 + .../dag_test_manual_allow_failure_false.yml | 66 + .../dag_test_manual_allow_failure_true.yml | 58 + ...anual_allow_failure_true_deploy_always.yml | 27 + ...l_allow_failure_true_deploy_on_failure.yml | 48 + ...allow_failure_true_other_test_succeeds.yml | 42 + .../dag_test_on_failure_with_failure.yml | 66 + .../dag_test_on_failure_with_success.yml | 40 + ...ge_build_allow_failure_test_on_failure.yml | 53 + .../test_cases/stage_build_fails.yml | 38 + .../stage_build_fails_test_allow_failure.yml | 39 + .../stage_test_manual_allow_failure_false.yml | 65 + .../stage_test_manual_allow_failure_true.yml | 54 + ...l_allow_failure_true_deploy_on_failure.yml | 44 + .../stage_test_on_failure_with_failure.yml | 52 + .../stage_test_on_failure_with_success.yml | 52 + .../ci/pipeline_schedule_service_spec.rb | 32 - .../ci/process_pipeline_service_spec.rb | 19 - spec/services/ci/register_job_service_spec.rb | 2 +- spec/services/ci/retry_build_service_spec.rb | 50 +- .../ci/retry_pipeline_service_spec.rb | 19 + .../update_instance_variables_service_spec.rb | 230 + .../check_upgrade_progress_service_spec.rb | 4 +- .../ingress_modsecurity_usage_service_spec.rb | 196 - .../schedule_update_service_spec.rb | 6 +- .../gcp/finalize_creation_service_spec.rb | 3 +- .../configure_istio_ingress_service_spec.rb | 4 +- ...create_or_update_namespace_service_spec.rb | 1 - ..._or_update_service_account_service_spec.rb | 12 +- ...ster_applications_artifact_service_spec.rb | 200 + spec/services/cohorts_service_spec.rb | 2 +- .../older_deployments_drop_service_spec.rb | 37 + .../delete_designs_service_spec.rb | 195 + .../design_user_notes_count_service_spec.rb | 43 + .../generate_image_versions_service_spec.rb | 77 + .../save_designs_service_spec.rb | 356 ++ spec/services/emails/confirm_service_spec.rb | 6 +- spec/services/event_create_service_spec.rb | 13 +- spec/services/git/branch_push_service_spec.rb | 10 +- .../git/wiki_push_service/change_spec.rb | 109 + spec/services/git/wiki_push_service_spec.rb | 338 ++ spec/services/grafana/proxy_service_spec.rb | 2 +- spec/services/groups/create_service_spec.rb | 21 + .../import_export/export_service_spec.rb | 40 +- .../import_export/import_service_spec.rb | 266 +- spec/services/groups/update_service_spec.rb | 20 + .../create_issue_service_spec.rb | 24 +- .../clone/attributes_rewriter_spec.rb | 28 +- spec/services/issues/close_service_spec.rb | 2 +- spec/services/issues/create_service_spec.rb | 86 +- .../issues/related_branches_service_spec.rb | 102 +- .../issues/resolve_discussions_spec.rb | 19 +- spec/services/issues/update_service_spec.rb | 30 +- .../jira_import/start_import_service_spec.rb | 142 +- spec/services/lfs/file_transformer_spec.rb | 17 + .../merge_requests/create_service_spec.rb | 13 - .../merge_requests/merge_service_spec.rb | 2 +- .../merge_requests/rebase_service_spec.rb | 19 +- .../merge_requests/refresh_service_spec.rb | 40 +- .../merge_requests/squash_service_spec.rb | 40 +- .../merge_requests/update_service_spec.rb | 3 +- .../dashboard/clone_dashboard_service_spec.rb | 4 +- .../grafana_metric_embed_service_spec.rb | 4 +- .../dashboard/transient_embed_service_spec.rb | 6 + .../create_service_spec.rb | 72 + .../delete_service_spec.rb | 41 + .../check_storage_size_service_spec.rb | 159 + spec/services/note_summary_spec.rb | 6 +- spec/services/notes/create_service_spec.rb | 56 +- .../notes/post_process_service_spec.rb | 27 + spec/services/notification_service_spec.rb | 66 +- ...n_lets_encrypt_certificate_service_spec.rb | 2 +- spec/services/pod_logs/base_service_spec.rb | 30 + .../pod_logs/elasticsearch_service_spec.rb | 32 +- .../pod_logs/kubernetes_service_spec.rb | 20 +- spec/services/post_receive_service_spec.rb | 35 + .../projects/alerting/notify_service_spec.rb | 96 +- spec/services/projects/create_service_spec.rb | 98 + spec/services/projects/fork_service_spec.rb | 8 +- .../base_attachment_service_spec.rb | 2 +- .../migrate_repository_service_spec.rb | 10 +- .../rollback_repository_service_spec.rb | 8 +- .../import_export/export_service_spec.rb | 28 +- spec/services/projects/import_service_spec.rb | 22 +- .../alerts/create_events_service_spec.rb | 6 +- .../prometheus/alerts/notify_service_spec.rb | 33 + .../propagate_service_template_spec.rb | 36 +- .../projects/transfer_service_spec.rb | 273 +- .../update_remote_mirror_service_spec.rb | 43 +- .../update_repository_storage_service_spec.rb | 48 +- .../services/prometheus/proxy_service_spec.rb | 2 +- ...roxy_variable_substitution_service_spec.rb | 156 +- .../quick_actions/interpret_service_spec.rb | 4 +- spec/services/releases/create_service_spec.rb | 3 + ...epository_archive_clean_up_service_spec.rb | 2 + .../create_service_spec.rb} | 22 +- .../revoke_service_spec.rb | 111 + .../change_milestone_service_spec.rb | 10 +- .../merge_into_notes_service_spec.rb | 2 +- spec/services/search/snippet_service_spec.rb | 50 +- spec/services/search_service_spec.rb | 86 +- spec/services/snippets/create_service_spec.rb | 154 +- spec/services/snippets/update_service_spec.rb | 90 +- ...ce_spec.rb => spam_action_service_spec.rb} | 87 +- .../spam/spam_verdict_service_spec.rb | 65 + spec/services/system_note_service_spec.rb | 28 +- .../design_management_service_spec.rb | 155 + .../template_engines/liquid_service_spec.rb | 126 - spec/services/todo_service_spec.rb | 30 + ...date_merge_request_metrics_service_spec.rb | 4 +- ...ser_project_access_changed_service_spec.rb | 9 + spec/services/users/destroy_service_spec.rb | 14 +- .../migrate_to_ghost_user_service_spec.rb | 6 + .../verify_pages_domain_service_spec.rb | 2 +- spec/services/wiki_pages/base_service_spec.rb | 2 +- .../wiki_pages/create_service_spec.rb | 93 +- .../wiki_pages/destroy_service_spec.rb | 49 +- .../wiki_pages/event_create_service_spec.rb | 87 + .../wiki_pages/update_service_spec.rb | 97 +- .../wikis/create_attachment_service_spec.rb | 67 +- spec/spec_helper.rb | 52 +- spec/support/capybara.rb | 13 +- .../test_generation.rb | 4 + spec/support/database_cleaner.rb | 2 + spec/support/helpers/admin_mode_helpers.rb | 3 + spec/support/helpers/concurrent_helpers.rb | 40 + .../helpers/design_management_test_helpers.rb | 45 + .../helpers/exclusive_lease_helpers.rb | 4 +- spec/support/helpers/fake_blob_helpers.rb | 6 +- spec/support/helpers/graphql_helpers.rb | 9 +- spec/support/helpers/jira_service_helper.rb | 5 + spec/support/helpers/kubernetes_helpers.rb | 112 +- spec/support/helpers/login_helpers.rb | 2 - spec/support/helpers/query_recorder.rb | 4 +- .../helpers/reactive_caching_helpers.rb | 11 +- spec/support/helpers/smime_helper.rb | 14 +- spec/support/helpers/stub_feature_flags.rb | 34 +- spec/support/helpers/stub_gitlab_calls.rb | 8 +- spec/support/helpers/stub_object_storage.rb | 2 +- spec/support/helpers/test_env.rb | 20 +- spec/support/helpers/usage_data_helpers.rb | 95 +- spec/support/helpers/wiki_helpers.rb | 7 +- spec/support/helpers/workhorse_helpers.rb | 2 +- spec/support/helpers/x509_helpers.rb | 137 + spec/support/import_export/common_util.rb | 19 - .../import_export/configuration_helper.rb | 4 +- spec/support/kubeclient.rb | 10 + .../matchers/disallow_request_matchers.rb | 2 +- spec/support/matchers/graphql_matchers.rb | 10 +- spec/support/rails/test_case_patch.rb | 53 - spec/support/redis/redis_shared_examples.rb | 2 +- spec/support/renameable_upload.rb | 15 + ...lowed_users_in_namespace_shared_context.rb | 31 + .../design_management_shared_contexts.rb | 38 + .../features/error_tracking_shared_context.rb | 4 +- .../issuable/merge_request_shared_context.rb | 49 + .../issuable/project_shared_context.rb | 16 + .../json_response_shared_context.rb | 2 +- ...rake_task_object_storage_shared_context.rb | 17 + .../navbar_structure_context.rb | 2 + .../policies/group_policy_shared_context.rb | 10 +- .../policies/project_policy_shared_context.rb | 3 +- .../project_service_shared_context.rb | 5 + .../services_shared_context.rb | 3 +- .../support/shared_contexts/spam_constants.rb | 7 + ..._statistics_controllers_shared_examples.rb | 20 +- .../known_sign_in_shared_examples.rb | 59 + .../controllers/variables_shared_examples.rb | 25 +- .../features/error_tracking_shared_example.rb | 14 +- .../features/variable_list_shared_examples.rb | 3 +- .../graphql/design_fields_shared_examples.rb | 80 + .../jira_import_resolver_shared_examples.rb | 4 +- .../sorted_paginated_query_shared_examples.rb | 92 + .../helm_commands_shared_examples.rb | 131 + .../base_stage_shared_examples.rb | 2 +- .../helm_generated_script_shared_examples.rb | 15 - ...ake_task_object_storage_shared_examples.rb | 22 + .../migration_helpers_shared_examples.rb | 3 +- .../models/chat_service_shared_examples.rb | 2 +- ...ster_application_status_shared_examples.rb | 61 + ...lob_replicator_strategy_shared_examples.rb | 4 +- .../has_repository_shared_examples.rb | 20 +- .../concerns/has_wiki_shared_examples.rb | 79 + .../concerns/limitable_shared_examples.rb | 36 + .../concerns/timebox_shared_examples.rb | 242 + .../diff_positionable_note_shared_examples.rb | 24 + .../models/email_format_shared_examples.rb | 41 + .../issuable_hook_data_shared_examples.rb | 1 + .../models/mentionable_shared_examples.rb | 4 + ...attermost_notifications_shared_examples.rb | 2 +- .../models/wiki_shared_examples.rb | 423 ++ .../project_policy_shared_examples.rb | 14 +- .../policies/wiki_policies_shared_examples.rb | 246 +- .../issuable_quick_actions_shared_examples.rb | 22 +- .../api/award_emoji_todo_shared_examples.rb | 2 +- ...nd_project_boards_query_shared_examples.rb | 2 +- .../mutations/snippets_shared_examples.rb | 10 + .../requests/snippet_shared_examples.rb | 70 +- .../requires_variables_shared_example.rb | 13 + .../shared_examples/resource_events.rb | 18 + .../diff_file_entity_shared_examples.rb | 2 +- .../lists_list_service_shared_examples.rb | 4 + .../measurable_service_shared_examples.rb | 32 + .../metrics/dashboard_shared_examples.rb | 4 +- ...ository_storage_service_shared_examples.rb | 28 +- ...hange_milestone_service_shared_examples.rb | 7 +- .../services/snippets_shared_examples.rb | 42 + .../create_service_shared_examples.rb | 94 + .../destroy_service_shared_examples.rb | 50 + .../update_service_shared_examples.rb | 98 + ...eate_attachment_service_shared_examples.rb | 62 + .../measurable_shared_examples.rb | 31 - ...thorized_projects_worker_shared_example.rb | 42 + .../jira_import_workers_shared_examples.rb | 2 +- ...ages_domain_cron_worker_shared_examples.rb | 10 +- .../reactive_cacheable_shared_examples.rb | 59 + spec/support/sidekiq.rb | 13 +- spec/support/sidekiq_middleware.rb | 13 + spec/support/unicorn.rb | 27 + spec/support/webmock.rb | 18 +- .../active_record/query_recorder_spec.rb | 8 +- .../helpers/stub_feature_flags_spec.rb | 130 + .../gitlab/artifacts/migrate_rake_spec.rb | 12 - spec/tasks/gitlab/gitaly_rake_spec.rb | 10 +- spec/tasks/gitlab/snippets_rake_spec.rb | 114 + spec/tasks/gitlab/task_helpers_spec.rb | 15 +- .../tasks/gitlab/uploads/migrate_rake_spec.rb | 12 + spec/tasks/gitlab/workhorse_rake_spec.rb | 2 +- spec/uploaders/content_type_whitelist_spec.rb | 22 +- .../design_v432x230_uploader_spec.rb | 86 + spec/uploaders/file_uploader_spec.rb | 68 +- spec/uploaders/records_uploads_spec.rb | 4 +- .../migrate_uploads_worker_spec.rb | 12 + ...n_freeze_period_timezone_validator_spec.rb | 24 + spec/validators/cron_validator_spec.rb | 47 + .../admin/sessions/new.html.haml_spec.rb | 59 +- .../views/admin/users/_user.html.haml_spec.rb | 12 +- .../devise/sessions/new.html.haml_spec.rb | 4 +- .../shared/_signin_box.html.haml_spec.rb | 2 +- spec/views/help/index.html.haml_spec.rb | 12 + spec/views/help/show.html.haml_spec.rb | 18 + .../nav/sidebar/_admin.html.haml_spec.rb | 9 - .../nav/sidebar/_project.html.haml_spec.rb | 62 +- spec/views/profiles/show.html.haml_spec.rb | 44 - .../_related_branches.html.haml_spec.rb | 24 +- .../projects/issues/show.html.haml_spec.rb | 27 +- .../merge_requests/show.html.haml_spec.rb | 60 +- .../pages_domains/show.html.haml_spec.rb | 2 +- .../projects/services/_form.haml_spec.rb | 17 +- .../ci_cd/_autodevops_form.html.haml_spec.rb | 2 +- .../project_create_worker_spec.rb | 50 + ...er_refresh_with_low_urgency_worker_spec.rb | 11 + .../authorized_projects_worker_spec.rb | 37 +- ...build_group_report_results_worker_spec.rb} | 6 +- .../concerns/application_worker_spec.rb | 15 + .../create_commit_signature_worker_spec.rb | 19 + .../new_version_worker_spec.rb | 72 + ...al_service_reactive_caching_worker_spec.rb | 7 + .../jira_import/import_issue_worker_spec.rb | 39 +- .../stage/finish_import_worker_spec.rb | 4 +- .../stage/import_attachments_worker_spec.rb | 4 +- .../stage/import_issues_worker_spec.rb | 7 +- .../stage/import_labels_worker_spec.rb | 11 +- .../stage/import_notes_worker_spec.rb | 4 +- spec/workers/group_import_worker_spec.rb | 59 +- .../process_alert_worker_spec.rb | 67 +- ..._request_mergeability_check_worker_spec.rb | 11 + ...mespaceless_project_destroy_worker_spec.rb | 14 - spec/workers/new_release_worker_spec.rb | 2 + spec/workers/post_receive_spec.rb | 44 + spec/workers/process_commit_worker_spec.rb | 24 +- spec/workers/project_export_worker_spec.rb | 10 +- ...t_update_repository_storage_worker_spec.rb | 38 +- spec/workers/reactive_caching_worker_spec.rb | 44 +- spec/workers/stage_update_worker_spec.rb | 9 + ..._pipeline_for_merge_request_worker_spec.rb | 65 +- .../update_highest_role_worker_spec.rb | 2 - .../x509_issuer_crl_check_worker_spec.rb | 90 + vendor/elastic_stack/values.yaml | 89 +- .../elastic_stack/wait-for-elasticsearch.sh | 2 +- vendor/project_templates/android.tar.gz | Bin 132592 -> 133429 bytes vendor/project_templates/sse_middleman.tar.gz | Bin 7099 -> 7368 bytes yarn.lock | 320 +- 4947 files changed, 182810 insertions(+), 61833 deletions(-) create mode 100644 app/assets/images/cluster_app_logos/fluentd.png create mode 100644 app/assets/javascripts/access_tokens/components/expires_at_field.vue create mode 100644 app/assets/javascripts/access_tokens/index.js create mode 100644 app/assets/javascripts/actioncable_consumer.js create mode 100644 app/assets/javascripts/alert_management/components/alert_details.vue create mode 100644 app/assets/javascripts/alert_management/components/alert_management_list.vue create mode 100644 app/assets/javascripts/alert_management/constants.js create mode 100644 app/assets/javascripts/alert_management/details.js create mode 100644 app/assets/javascripts/alert_management/graphql/fragments/detailItem.fragment.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/fragments/listItem.fragment.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/queries/details.query.graphql create mode 100644 app/assets/javascripts/alert_management/graphql/queries/getAlerts.query.graphql create mode 100644 app/assets/javascripts/alert_management/list.js create mode 100644 app/assets/javascripts/alert_management/services/index.js create mode 100644 app/assets/javascripts/boards/icons/fullscreen_collapse.svg create mode 100644 app/assets/javascripts/boards/icons/fullscreen_expand.svg create mode 100644 app/assets/javascripts/boards/queries/board_list.fragment.graphql create mode 100644 app/assets/javascripts/boards/queries/board_list_shared.fragment.graphql create mode 100644 app/assets/javascripts/boards/queries/group_board.query.graphql create mode 100644 app/assets/javascripts/boards/queries/project_board.query.graphql create mode 100644 app/assets/javascripts/clusters/components/fluentd_output_settings.vue create mode 100644 app/assets/javascripts/design_management/components/app.vue create mode 100644 app/assets/javascripts/design_management/components/delete_button.vue create mode 100644 app/assets/javascripts/design_management/components/design_destroyer.vue create mode 100644 app/assets/javascripts/design_management/components/design_note_pin.vue create mode 100644 app/assets/javascripts/design_management/components/design_notes/design_discussion.vue create mode 100644 app/assets/javascripts/design_management/components/design_notes/design_note.vue create mode 100644 app/assets/javascripts/design_management/components/design_notes/design_reply_form.vue create mode 100644 app/assets/javascripts/design_management/components/design_overlay.vue create mode 100644 app/assets/javascripts/design_management/components/design_presentation.vue create mode 100644 app/assets/javascripts/design_management/components/design_scaler.vue create mode 100644 app/assets/javascripts/design_management/components/image.vue create mode 100644 app/assets/javascripts/design_management/components/list/item.vue create mode 100644 app/assets/javascripts/design_management/components/toolbar/index.vue create mode 100644 app/assets/javascripts/design_management/components/toolbar/pagination.vue create mode 100644 app/assets/javascripts/design_management/components/toolbar/pagination_button.vue create mode 100644 app/assets/javascripts/design_management/components/upload/button.vue create mode 100644 app/assets/javascripts/design_management/components/upload/design_dropzone.vue create mode 100644 app/assets/javascripts/design_management/components/upload/design_version_dropdown.vue create mode 100644 app/assets/javascripts/design_management/constants.js create mode 100644 app/assets/javascripts/design_management/graphql.js create mode 100644 app/assets/javascripts/design_management/graphql/fragments/design.fragment.graphql create mode 100644 app/assets/javascripts/design_management/graphql/fragments/designList.fragment.graphql create mode 100644 app/assets/javascripts/design_management/graphql/fragments/designNote.fragment.graphql create mode 100644 app/assets/javascripts/design_management/graphql/fragments/diffRefs.fragment.graphql create mode 100644 app/assets/javascripts/design_management/graphql/fragments/note_permissions.fragment.graphql create mode 100644 app/assets/javascripts/design_management/graphql/fragments/version.fragment.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/createImageDiffNote.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/createNote.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/destroyDesign.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/updateImageDiffNote.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/update_active_discussion.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/update_note.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/mutations/uploadDesign.mutation.graphql create mode 100644 app/assets/javascripts/design_management/graphql/queries/active_discussion.query.graphql create mode 100644 app/assets/javascripts/design_management/graphql/queries/appData.query.graphql create mode 100644 app/assets/javascripts/design_management/graphql/queries/design_permissions.query.graphql create mode 100644 app/assets/javascripts/design_management/graphql/queries/getDesign.query.graphql create mode 100644 app/assets/javascripts/design_management/graphql/queries/get_design_list.query.graphql create mode 100644 app/assets/javascripts/design_management/graphql/typedefs.graphql create mode 100644 app/assets/javascripts/design_management/index.js create mode 100644 app/assets/javascripts/design_management/mixins/all_designs.js create mode 100644 app/assets/javascripts/design_management/mixins/all_versions.js create mode 100644 app/assets/javascripts/design_management/pages/design/index.vue create mode 100644 app/assets/javascripts/design_management/pages/index.vue create mode 100644 app/assets/javascripts/design_management/router/constants.js create mode 100644 app/assets/javascripts/design_management/router/index.js create mode 100644 app/assets/javascripts/design_management/router/routes.js create mode 100644 app/assets/javascripts/design_management/utils/cache_update.js create mode 100644 app/assets/javascripts/design_management/utils/design_management_utils.js create mode 100644 app/assets/javascripts/design_management/utils/error_messages.js create mode 100644 app/assets/javascripts/design_management/utils/tracking.js delete mode 100644 app/assets/javascripts/environments/mixins/container_mixin.js delete mode 100644 app/assets/javascripts/environments/mixins/environment_item_mixin.js delete mode 100644 app/assets/javascripts/environments/mixins/environments_app_mixin.js delete mode 100644 app/assets/javascripts/environments/mixins/environments_folder_view_mixin.js delete mode 100644 app/assets/javascripts/environments/mixins/environments_table_mixin.js create mode 100644 app/assets/javascripts/helpers/event_hub_factory.js create mode 100644 app/assets/javascripts/ide/lib/languages/index.js create mode 100644 app/assets/javascripts/ide/lib/languages/vue.js create mode 100644 app/assets/javascripts/ide/lib/themes/monokai.js create mode 100644 app/assets/javascripts/ide/lib/themes/none.js create mode 100644 app/assets/javascripts/ide/lib/themes/solarized_dark.js create mode 100644 app/assets/javascripts/ide/lib/themes/solarized_light.js create mode 100644 app/assets/javascripts/integrations/edit/components/integration_form.vue create mode 100644 app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue create mode 100644 app/assets/javascripts/integrations/edit/components/trigger_fields.vue create mode 100644 app/assets/javascripts/issuable_sidebar/queries/issue_sidebar.query.graphql create mode 100644 app/assets/javascripts/issuables_list/components/issuable_list_root_app.vue create mode 100644 app/assets/javascripts/issuables_list/queries/get_issues_list_details.query.graphql create mode 100644 app/assets/javascripts/lib/utils/downloader.js create mode 100644 app/assets/javascripts/lib/utils/keys.js create mode 100644 app/assets/javascripts/milestones/project_milestone_combobox.vue create mode 100644 app/assets/javascripts/monitoring/components/alert_widget.vue create mode 100644 app/assets/javascripts/monitoring/components/alert_widget_form.vue rename app/assets/javascripts/monitoring/components/{panel_type.vue => dashboard_panel.vue} (67%) create mode 100644 app/assets/javascripts/monitoring/components/variables/custom_variable.vue create mode 100644 app/assets/javascripts/monitoring/components/variables/text_variable.vue create mode 100644 app/assets/javascripts/monitoring/components/variables_section.vue create mode 100644 app/assets/javascripts/monitoring/monitoring_bundle_with_alerts.js create mode 100644 app/assets/javascripts/monitoring/services/alerts_service.js create mode 100644 app/assets/javascripts/monitoring/stores/variable_mapping.js create mode 100644 app/assets/javascripts/monitoring/validators.js create mode 100644 app/assets/javascripts/pages/projects/alert_management/details/index.js create mode 100644 app/assets/javascripts/pages/projects/alert_management/index/index.js create mode 100644 app/assets/javascripts/pages/projects/pipelines/dag/index.js create mode 100644 app/assets/javascripts/pages/projects/settings/access_tokens/index.js create mode 100644 app/assets/javascripts/pipelines/components/pipelines_filtered_search.vue create mode 100644 app/assets/javascripts/pipelines/components/tokens/pipeline_branch_name_token.vue create mode 100644 app/assets/javascripts/pipelines/components/tokens/pipeline_trigger_author_token.vue create mode 100644 app/assets/javascripts/registry/explorer/components/image_list.vue create mode 100644 app/assets/javascripts/reports/accessibility_report/grouped_accessibility_reports_app.vue create mode 100644 app/assets/javascripts/reports/accessibility_report/store/actions.js create mode 100644 app/assets/javascripts/reports/accessibility_report/store/getters.js rename app/assets/javascripts/{static_site_editor => reports/accessibility_report}/store/index.js (55%) create mode 100644 app/assets/javascripts/reports/accessibility_report/store/mutation_types.js create mode 100644 app/assets/javascripts/reports/accessibility_report/store/mutations.js create mode 100644 app/assets/javascripts/reports/accessibility_report/store/state.js create mode 100644 app/assets/javascripts/reports/components/grouped_issues_list.vue create mode 100644 app/assets/javascripts/sidebar/components/assignees/assignees_realtime.vue create mode 100644 app/assets/javascripts/snippets/components/snippet_description_view.vue create mode 100644 app/assets/javascripts/static_site_editor/components/app.vue create mode 100644 app/assets/javascripts/static_site_editor/components/skeleton_loader.vue delete mode 100644 app/assets/javascripts/static_site_editor/components/static_site_editor.vue create mode 100644 app/assets/javascripts/static_site_editor/graphql/index.js create mode 100644 app/assets/javascripts/static_site_editor/graphql/mutations/submit_content_changes.mutation.graphql create mode 100644 app/assets/javascripts/static_site_editor/graphql/queries/app_data.query.graphql create mode 100644 app/assets/javascripts/static_site_editor/graphql/queries/saved_content_meta.query.graphql create mode 100644 app/assets/javascripts/static_site_editor/graphql/queries/source_content.query.graphql create mode 100644 app/assets/javascripts/static_site_editor/graphql/resolvers/file.js create mode 100644 app/assets/javascripts/static_site_editor/graphql/resolvers/submit_content_changes.js create mode 100644 app/assets/javascripts/static_site_editor/graphql/typedefs.graphql create mode 100644 app/assets/javascripts/static_site_editor/pages/home.vue create mode 100644 app/assets/javascripts/static_site_editor/pages/success.vue create mode 100644 app/assets/javascripts/static_site_editor/router/constants.js create mode 100644 app/assets/javascripts/static_site_editor/router/index.js create mode 100644 app/assets/javascripts/static_site_editor/router/routes.js delete mode 100644 app/assets/javascripts/static_site_editor/store/actions.js delete mode 100644 app/assets/javascripts/static_site_editor/store/getters.js delete mode 100644 app/assets/javascripts/static_site_editor/store/mutation_types.js delete mode 100644 app/assets/javascripts/static_site_editor/store/mutations.js delete mode 100644 app/assets/javascripts/static_site_editor/store/state.js create mode 100644 app/assets/javascripts/users_select/constants.js rename app/assets/javascripts/{users_select.js => users_select/index.js} (93%) create mode 100644 app/assets/javascripts/users_select/utils.js create mode 100644 app/assets/javascripts/vue_shared/components/markdown/field_view.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/rich_content_editor.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/toolbar_item.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_content_editor/toolbar_service.js create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/label_item.vue delete mode 100644 app/assets/javascripts/vue_shared/components/user_avatar/badges/gitlab_team_member_badge.vue delete mode 100644 app/assets/javascripts/vue_shared/components/user_avatar/user_avatar_svg.vue create mode 100644 app/assets/stylesheets/components/design_management/design.scss create mode 100644 app/assets/stylesheets/components/design_management/design_list_item.scss create mode 100644 app/assets/stylesheets/components/design_management/design_version_dropdown.scss create mode 100644 app/assets/stylesheets/components/milestone_combobox.scss create mode 100644 app/assets/stylesheets/components/rich_content_editor.scss create mode 100644 app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss create mode 100644 app/assets/stylesheets/page_bundles/ide_themes/README.md create mode 100644 app/assets/stylesheets/page_bundles/ide_themes/_dark.scss create mode 100644 app/assets/stylesheets/pages/alert_management/details.scss create mode 100644 app/assets/stylesheets/pages/alert_management/list.scss create mode 100644 app/assets/stylesheets/pages/alert_management/severity-icons.scss create mode 100644 app/channels/application_cable/channel.rb create mode 100644 app/channels/application_cable/connection.rb create mode 100644 app/channels/issues_channel.rb create mode 100644 app/controllers/admin/ci/variables_controller.rb delete mode 100644 app/controllers/admin/logs_controller.rb create mode 100644 app/controllers/concerns/impersonation.rb create mode 100644 app/controllers/concerns/known_sign_in.rb create mode 100644 app/controllers/concerns/renders_ldap_servers.rb create mode 100644 app/controllers/projects/alert_management_controller.rb create mode 100644 app/controllers/projects/ci/daily_build_group_report_results_controller.rb create mode 100644 app/controllers/projects/design_management/designs/raw_images_controller.rb create mode 100644 app/controllers/projects/design_management/designs/resized_image_controller.rb create mode 100644 app/controllers/projects/design_management/designs_controller.rb create mode 100644 app/controllers/projects/settings/access_tokens_controller.rb create mode 100644 app/finders/alert_management/alerts_finder.rb delete mode 100644 app/finders/artifacts_finder.rb create mode 100644 app/finders/ci/daily_build_group_report_results_finder.rb create mode 100644 app/finders/ci/job_artifacts_finder.rb create mode 100644 app/finders/design_management/designs_finder.rb create mode 100644 app/finders/design_management/versions_finder.rb create mode 100644 app/finders/freeze_periods_finder.rb create mode 100644 app/finders/metrics/users_starred_dashboards_finder.rb create mode 100644 app/graphql/mutations/alert_management/base.rb create mode 100644 app/graphql/mutations/alert_management/create_alert_issue.rb create mode 100644 app/graphql/mutations/alert_management/update_alert_status.rb create mode 100644 app/graphql/mutations/branches/create.rb create mode 100644 app/graphql/mutations/design_management/base.rb create mode 100644 app/graphql/mutations/design_management/delete.rb create mode 100644 app/graphql/mutations/design_management/upload.rb create mode 100644 app/graphql/mutations/metrics/dashboard/annotations/create.rb create mode 100644 app/graphql/resolvers/alert_management/alert_status_counts_resolver.rb create mode 100644 app/graphql/resolvers/alert_management_alert_resolver.rb create mode 100644 app/graphql/resolvers/board_lists_resolver.rb create mode 100644 app/graphql/resolvers/branch_commit_resolver.rb create mode 100644 app/graphql/resolvers/design_management/design_at_version_resolver.rb create mode 100644 app/graphql/resolvers/design_management/design_resolver.rb create mode 100644 app/graphql/resolvers/design_management/designs_resolver.rb create mode 100644 app/graphql/resolvers/design_management/version/design_at_version_resolver.rb create mode 100644 app/graphql/resolvers/design_management/version/designs_at_version_resolver.rb create mode 100644 app/graphql/resolvers/design_management/version_in_collection_resolver.rb create mode 100644 app/graphql/resolvers/design_management/version_resolver.rb create mode 100644 app/graphql/resolvers/design_management/versions_resolver.rb create mode 100644 app/graphql/resolvers/projects_resolver.rb create mode 100644 app/graphql/resolvers/release_resolver.rb create mode 100644 app/graphql/resolvers/releases_resolver.rb create mode 100644 app/graphql/types/alert_management/alert_sort_enum.rb create mode 100644 app/graphql/types/alert_management/alert_status_counts_type.rb create mode 100644 app/graphql/types/alert_management/alert_type.rb create mode 100644 app/graphql/types/alert_management/severity_enum.rb create mode 100644 app/graphql/types/alert_management/status_enum.rb create mode 100644 app/graphql/types/board_list_type.rb create mode 100644 app/graphql/types/branch_type.rb create mode 100644 app/graphql/types/design_management/design_at_version_type.rb create mode 100644 app/graphql/types/design_management/design_collection_type.rb create mode 100644 app/graphql/types/design_management/design_fields.rb create mode 100644 app/graphql/types/design_management/design_type.rb create mode 100644 app/graphql/types/design_management/design_version_event_enum.rb create mode 100644 app/graphql/types/design_management/version_type.rb create mode 100644 app/graphql/types/design_management_type.rb create mode 100644 app/graphql/types/release_type.rb create mode 100644 app/helpers/access_tokens_helper.rb create mode 100644 app/helpers/projects/alert_management_helper.rb create mode 100644 app/mailers/emails/groups.rb create mode 100644 app/models/alert_management/alert.rb create mode 100644 app/models/ci/daily_build_group_report_result.rb delete mode 100644 app/models/ci/daily_report_result.rb create mode 100644 app/models/ci/freeze_period.rb create mode 100644 app/models/ci/freeze_period_status.rb create mode 100644 app/models/ci/instance_variable.rb create mode 100644 app/models/concerns/async_devise_email.rb create mode 100644 app/models/concerns/has_user_type.rb create mode 100644 app/models/concerns/has_wiki.rb create mode 100644 app/models/concerns/issue_resource_event.rb create mode 100644 app/models/concerns/limitable.rb create mode 100644 app/models/concerns/merge_request_resource_event.rb create mode 100644 app/models/concerns/state_eventable.rb delete mode 100644 app/models/concerns/storage/legacy_project_wiki.rb create mode 100644 app/models/concerns/timebox.rb delete mode 100644 app/models/cycle_analytics/group_level.rb create mode 100644 app/models/design_management.rb create mode 100644 app/models/design_management/action.rb create mode 100644 app/models/design_management/design.rb create mode 100644 app/models/design_management/design_action.rb create mode 100644 app/models/design_management/design_at_version.rb create mode 100644 app/models/design_management/design_collection.rb create mode 100644 app/models/design_management/repository.rb create mode 100644 app/models/design_management/version.rb create mode 100644 app/models/design_user_mention.rb create mode 100644 app/models/group_import_state.rb create mode 100644 app/models/iteration.rb create mode 100644 app/models/metrics/users_starred_dashboard.rb create mode 100644 app/models/namespace/root_storage_size.rb create mode 100644 app/models/plan.rb create mode 100644 app/models/plan_limits.rb create mode 100644 app/models/project_repository_storage_move.rb create mode 100644 app/models/project_services/webex_teams_service.rb create mode 100644 app/models/resource_state_event.rb create mode 100644 app/models/state_note.rb delete mode 100644 app/models/user_type_enums.rb create mode 100644 app/models/wiki.rb create mode 100644 app/policies/alert_management/alert_policy.rb create mode 100644 app/policies/ci/freeze_period_policy.rb create mode 100644 app/policies/design_management/design_at_version_policy.rb create mode 100644 app/policies/design_management/design_collection_policy.rb create mode 100644 app/policies/design_management/design_policy.rb create mode 100644 app/policies/design_management/version_policy.rb create mode 100644 app/serializers/accessibility_error_entity.rb create mode 100644 app/serializers/accessibility_reports_comparer_entity.rb create mode 100644 app/serializers/accessibility_reports_comparer_serializer.rb create mode 100644 app/serializers/ci/basic_variable_entity.rb create mode 100644 app/serializers/ci/dag_job_entity.rb create mode 100644 app/serializers/ci/dag_job_group_entity.rb create mode 100644 app/serializers/ci/dag_pipeline_entity.rb create mode 100644 app/serializers/ci/dag_pipeline_serializer.rb create mode 100644 app/serializers/ci/dag_stage_entity.rb create mode 100644 app/serializers/ci/instance_variable_serializer.rb create mode 100644 app/serializers/service_event_entity.rb create mode 100644 app/serializers/service_event_serializer.rb create mode 100644 app/services/alert_management/create_alert_issue_service.rb create mode 100644 app/services/alert_management/process_prometheus_alert_service.rb create mode 100644 app/services/alert_management/update_alert_status_service.rb create mode 100644 app/services/authorized_project_update/project_create_service.rb create mode 100644 app/services/base_container_service.rb create mode 100644 app/services/ci/compare_accessibility_reports_service.rb rename app/services/ci/{daily_report_result_service.rb => daily_build_group_report_result_service.rb} (77%) create mode 100644 app/services/ci/generate_terraform_reports_service.rb create mode 100644 app/services/ci/update_instance_variables_service.rb delete mode 100644 app/services/clusters/applications/ingress_modsecurity_usage_service.rb create mode 100644 app/services/clusters/parse_cluster_applications_artifact_service.rb create mode 100644 app/services/concerns/base_service_utility.rb delete mode 100644 app/services/concerns/git/logger.rb create mode 100644 app/services/concerns/measurable.rb create mode 100644 app/services/design_management/delete_designs_service.rb create mode 100644 app/services/design_management/design_service.rb create mode 100644 app/services/design_management/design_user_notes_count_service.rb create mode 100644 app/services/design_management/generate_image_versions_service.rb create mode 100644 app/services/design_management/on_success_callbacks.rb create mode 100644 app/services/design_management/runs_design_actions.rb create mode 100644 app/services/design_management/save_designs_service.rb create mode 100644 app/services/git/wiki_push_service/change.rb create mode 100644 app/services/metrics/users_starred_dashboards/create_service.rb create mode 100644 app/services/metrics/users_starred_dashboards/delete_service.rb create mode 100644 app/services/namespaces/check_storage_size_service.rb rename app/services/{resources/create_access_token_service.rb => resource_access_tokens/create_service.rb} (87%) create mode 100644 app/services/resource_access_tokens/revoke_service.rb create mode 100644 app/services/spam/spam_action_service.rb delete mode 100644 app/services/spam/spam_check_service.rb create mode 100644 app/services/spam/spam_constants.rb create mode 100644 app/services/spam/spam_verdict_service.rb create mode 100644 app/services/system_notes/design_management_service.rb delete mode 100644 app/services/template_engines/liquid_service.rb create mode 100644 app/services/wiki_pages/event_create_service.rb create mode 100644 app/uploaders/design_management/design_v432x230_uploader.rb create mode 100644 app/validators/cron_freeze_period_timezone_validator.rb delete mode 100644 app/views/admin/application_settings/_influx.html.haml delete mode 100644 app/views/admin/logs/show.html.haml delete mode 100644 app/views/admin/services/_deprecated_message.html.haml create mode 100644 app/views/admin/sessions/_signin_box.html.haml delete mode 100644 app/views/admin/sessions/_tabs_normal.html.haml create mode 100644 app/views/groups/_flash_messages.html.haml create mode 100644 app/views/groups/settings/_default_branch_protection.html.haml create mode 100644 app/views/groups/settings/_export.html.haml create mode 100644 app/views/notify/group_was_exported_email.html.haml create mode 100644 app/views/notify/group_was_exported_email.text.erb create mode 100644 app/views/notify/group_was_not_exported_email.html.haml create mode 100644 app/views/notify/group_was_not_exported_email.text.erb create mode 100644 app/views/notify/note_design_email.html.haml create mode 100644 app/views/notify/note_design_email.text.erb create mode 100644 app/views/notify/unknown_sign_in_email.html.haml create mode 100644 app/views/notify/unknown_sign_in_email.text.haml create mode 100644 app/views/projects/alert_management/details.html.haml create mode 100644 app/views/projects/alert_management/index.html.haml create mode 100644 app/views/projects/issues/_design_management.html.haml create mode 100644 app/views/projects/issues/_tabs.html.haml delete mode 100644 app/views/projects/merge_requests/creations/update_branches.html.haml delete mode 100644 app/views/projects/services/_deprecated_message.html.haml delete mode 100644 app/views/projects/services/_index.html.haml create mode 100644 app/views/projects/settings/access_tokens/index.html.haml delete mode 100644 app/views/search/results/_snippet_blob.html.haml delete mode 100644 app/views/shared/_personal_access_tokens_created_container.html.haml delete mode 100644 app/views/shared/_personal_access_tokens_form.html.haml create mode 100644 app/views/shared/access_tokens/_created_container.html.haml create mode 100644 app/views/shared/access_tokens/_form.html.haml rename app/views/shared/{_personal_access_tokens_table.html.haml => access_tokens/_table.html.haml} (53%) rename app/views/{projects => shared}/deploy_keys/_index.html.haml (63%) rename app/views/{projects/deploy_keys/_form.html.haml => shared/deploy_keys/_project_group_form.html.haml} (80%) rename app/views/shared/integrations/{_integrations.html.haml => _index.html.haml} (63%) create mode 100644 app/views/shared/members/_badge.html.haml create mode 100644 app/views/shared/members/_blocked_badge.html.haml create mode 100644 app/views/shared/members/_its_you_badge.html.haml create mode 100644 app/views/shared/members/_two_factor_auth_badge.html.haml create mode 100644 app/workers/authorized_project_update/project_create_worker.rb create mode 100644 app/workers/authorized_project_update/user_refresh_with_low_urgency_worker.rb rename app/workers/ci/{daily_report_results_worker.rb => daily_build_group_report_results_worker.rb} (68%) delete mode 100644 app/workers/cluster_configure_worker.rb delete mode 100644 app/workers/cluster_project_configure_worker.rb create mode 100644 app/workers/concerns/reactive_cacheable_worker.rb create mode 100644 app/workers/design_management/new_version_worker.rb create mode 100644 app/workers/external_service_reactive_caching_worker.rb create mode 100644 app/workers/x509_issuer_crl_check_worker.rb delete mode 100644 changelogs/add-name-parameter-to-project-environments-api.yml create mode 100644 config/cable.yml.example create mode 100644 config/helpers/is_eslint.js delete mode 100644 config/initializers/0_thread_cache.rb create mode 100644 config/initializers/action_cable.rb delete mode 100644 config/initializers/actioncable.rb delete mode 100644 config/initializers/active_record_fix_insert_all.rb create mode 100644 config/initializers/measuring.rb delete mode 100644 config/initializers/rack_attack.rb.example create mode 100644 config/initializers_before_autoloader/002_sidekiq.rb create mode 100644 config/initializers_before_autoloader/100_patch_omniauth_oauth2.rb create mode 100644 config/routes/pipelines.rb delete mode 100644 danger/gitlab_ui_wg/Dangerfile create mode 100644 danger/utility_css/Dangerfile create mode 100644 db/migrate/20200213224220_add_sprints.rb create mode 100644 db/migrate/20200218113721_add_indexes_to_package_file.rb create mode 100644 db/migrate/20200304023245_add_sprint_to_issues.rb create mode 100644 db/migrate/20200304023851_add_sprint_to_merge_requests.rb create mode 100644 db/migrate/20200304024025_add_sprint_id_index_to_issues.rb create mode 100644 db/migrate/20200304024042_add_sprint_id_index_to_merge_requests.rb create mode 100644 db/migrate/20200320212400_add_project_show_default_award_emojis.rb create mode 100644 db/migrate/20200402001106_add_cluster_type_index_to_clusters.rb create mode 100644 db/migrate/20200402115013_add_index_on_modsecurity_to_ingress.rb create mode 100644 db/migrate/20200402115623_add_index_on_successful_deployment_and_environment_id_to_deployments.rb create mode 100644 db/migrate/20200406095930_add_needs_ssl_renewal_user_provided_pages_domains_index.rb create mode 100644 db/migrate/20200406100909_add_needs_ssl_renewal_valid_not_after_pages_domains_index.rb create mode 100644 db/migrate/20200406132529_add_resource_state_events_table.rb create mode 100644 db/migrate/20200406141452_add_index_to_issue_id_and_created_at_on_resource_weight_events.rb create mode 100644 db/migrate/20200407182205_create_partitioned_foreign_keys.rb create mode 100644 db/migrate/20200407222647_create_project_repository_storage_moves.rb create mode 100644 db/migrate/20200408125046_create_ci_freeze_periods.rb create mode 100644 db/migrate/20200409105455_change_verification_checksum_field_type_in_package_file.rb create mode 100644 db/migrate/20200409105456_add_checksum_index_to_package_file.rb create mode 100644 db/migrate/20200410104828_add_comment_detail_to_services.rb create mode 100644 db/migrate/20200411125656_add_package_scopes_to_deploy_tokens.rb create mode 100644 db/migrate/20200413230056_add_waf_and_cilium_logs_to_applications_fluentd.rb create mode 100644 db/migrate/20200414112444_add_group_id_to_vulnerability_exports.rb create mode 100644 db/migrate/20200414114611_add_group_id_index_and_fk_to_vulnerability_exports.rb create mode 100644 db/migrate/20200414115801_change_project_index_on_vulnerability_exports.rb create mode 100644 db/migrate/20200415153154_add_unique_index_on_plan_name.rb create mode 100644 db/migrate/20200415203024_add_offset_pagination_plan_limit.rb create mode 100644 db/migrate/20200416005331_create_status_page_published_incidents.rb create mode 100644 db/migrate/20200417044453_create_alert_management_alerts.rb create mode 100644 db/migrate/20200417075843_remove_and_add_foreign_key_to_project_settings.rb create mode 100644 db/migrate/20200417145946_add_locked_to_ci_job_artifact.rb create mode 100644 db/migrate/20200420092011_add_profile_image_guidelines_to_appearances.rb create mode 100644 db/migrate/20200420104303_add_group_import_states_table.rb create mode 100644 db/migrate/20200420104323_add_text_limit_to_group_import_states.rb create mode 100644 db/migrate/20200420115948_create_metrics_users_starred_dashboard.rb create mode 100644 db/migrate/20200420141733_add_index_on_enabled_clusters.rb create mode 100644 db/migrate/20200420172113_add_text_limit_to_sprints_title.rb create mode 100644 db/migrate/20200420172752_add_sprints_foreign_key_to_projects.rb create mode 100644 db/migrate/20200420172927_add_sprints_foreign_key_to_groups.rb create mode 100644 db/migrate/20200420201933_add_check_constraint_to_sprint_must_belong_to_project_or_group.rb create mode 100644 db/migrate/20200421092907_add_index_container_repository_on_name_trigram_to_container_repository.rb create mode 100644 db/migrate/20200421111005_create_daily_build_group_report_results.rb create mode 100644 db/migrate/20200421233150_add_foreign_keys_for_alert_management_alerts.rb create mode 100644 db/migrate/20200422091541_create_ci_instance_variables.rb create mode 100644 db/migrate/20200422213749_create_operations_strategies_user_lists.rb create mode 100644 db/migrate/20200423075720_add_user_id_foreign_key_to_resource_state_events.rb create mode 100644 db/migrate/20200423080334_add_issue_id_foreign_key_to_resource_state_events.rb create mode 100644 db/migrate/20200423080607_add_merge_request_id_foreign_key_to_resource_state_events.rb create mode 100644 db/migrate/20200423081409_add_constraint_to_resource_state_events_must_belong_to_issue_or_merge_request.rb create mode 100644 db/migrate/20200423081441_add_foreign_key_from_users_to_metrics_users_starred_dashboars.rb create mode 100644 db/migrate/20200423081519_add_foreign_key_from_projects_to_metrics_users_starred_dashboars.rb create mode 100644 db/migrate/20200423101529_add_scheduled_at_to_jira_imports.rb create mode 100644 db/migrate/20200424050250_remove_orphaned_invited_members.rb create mode 100644 db/migrate/20200424101920_add_text_limit_to_metrics_users_starred_dashboards_dashboard_path.rb create mode 100644 db/migrate/20200424135319_create_nuget_dependency_link_metadata.rb create mode 100644 db/migrate/20200429001827_sprint_rename_state_to_state_enum.rb create mode 100644 db/migrate/20200429015603_add_fk_to_project_repository_storage_moves.rb create mode 100644 db/migrate/20200429181335_add_default_value_for_file_store_to_lfs_objects.rb create mode 100644 db/migrate/20200429181955_add_default_value_for_file_store_to_ci_job_artifacts.rb create mode 100644 db/migrate/20200429182245_add_default_value_for_store_to_uploads.rb create mode 100644 db/migrate/20200430103158_create_group_wiki_repositories.rb create mode 100644 db/migrate/20200430130048_create_packages_nuget_metadata.rb create mode 100644 db/migrate/20200505164958_add_registry_settings_to_application_settings.rb create mode 100644 db/migrate/20200505171834_add_text_limit_to_container_registry_vendor.rb create mode 100644 db/migrate/20200505172405_add_text_limit_to_container_registry_version.rb create mode 100644 db/migrate/20200507221434_add_container_registry_features_to_application_settings.rb create mode 100644 db/migrate/20200511092246_add_epic_id_to_resource_state_events.rb create mode 100644 db/migrate/20200511092505_add_foreign_key_to_epic_id_on_resource_state_events.rb create mode 100644 db/migrate/20200511115430_add_inherit_from_to_services.rb create mode 100644 db/migrate/20200511115431_add_index_inherit_from_id_to_services.rb create mode 100644 db/migrate/20200511121549_add_group_wiki_repositories_shard_id_foreign_key.rb create mode 100644 db/migrate/20200511121610_add_group_wiki_repositories_group_id_foreign_key.rb create mode 100644 db/migrate/20200511121620_add_group_wiki_repositories_disk_path_limit.rb create mode 100644 db/migrate/20200511130129_remove_deprecated_jenkins_service_records.rb create mode 100644 db/migrate/20200512085150_change_default_value_of_protected_ci_variables_of_application_settings_to_true.rb create mode 100644 db/migrate/20200512164334_sprint_make_state_enum_not_null_and_default.rb create mode 100644 db/migrate/20200513160930_fix_not_null_check_constraint_inconsistency.rb create mode 100644 db/migrate/20200513224143_add_section_to_approval_merge_request_rule.rb create mode 100644 db/migrate/20200513234502_fill_file_store_lfs_objects.rb create mode 100644 db/migrate/20200513235347_fill_store_uploads.rb create mode 100644 db/migrate/20200513235532_fill_file_store_ci_job_artifacts.rb create mode 100644 db/migrate/20200515155620_add_index_non_requested_project_members_on_source_id_source_type.rb create mode 100644 db/post_migrate/20200217210353_cleanup_optimistic_locking_nulls_pt2.rb create mode 100644 db/post_migrate/20200310215714_migrate_saml_identities_to_scim_identities.rb create mode 100644 db/post_migrate/20200312134637_backfill_environment_id_on_deployment_merge_requests.rb create mode 100644 db/post_migrate/20200401091051_remove_reference_columns_from_resource_milestone_events.rb create mode 100644 db/post_migrate/20200403132349_remove_old_index_pages_domains_need_auto_ssl_renewal.rb create mode 100644 db/post_migrate/20200420094444_backfill_snippet_repositories.rb create mode 100644 db/post_migrate/20200420162730_remove_additional_application_settings_rows.rb create mode 100644 db/post_migrate/20200424043515_drop_namespaces_plan_id.rb create mode 100644 db/post_migrate/20200427064130_cleanup_optimistic_locking_nulls_pt2_fixed.rb create mode 100644 db/post_migrate/20200428134356_remove_elastic_experimental_indexer_from_application_settings.rb create mode 100644 db/post_migrate/20200429002150_cleanup_sprints_state_rename.rb create mode 100644 db/post_migrate/20200506085748_update_undefined_confidence_from_occurrences.rb create mode 100644 db/post_migrate/20200506125731_cleanup_user_highest_roles_population.rb create mode 100644 db/post_migrate/20200506154421_migrate_scim_identities_to_saml_for_new_users.rb create mode 100644 db/post_migrate/20200508091106_remove_bot_type.rb create mode 100644 db/post_migrate/20200511080113_add_projects_foreign_key_to_namespaces.rb create mode 100644 db/post_migrate/20200511083541_cleanup_projects_with_missing_namespace.rb create mode 100644 db/post_migrate/20200511092714_update_undefined_confidence_from_vulnerabilities.rb create mode 100644 db/post_migrate/20200511130130_ensure_deprecated_jenkins_service_records_removal.rb create mode 100644 db/post_migrate/20200511145545_change_variable_interpolation_format_in_common_metrics.rb create mode 100644 db/post_migrate/20200511162057_add_missing_instance_to_servicess.rb create mode 100644 db/post_migrate/20200511162115_add_missing_index_to_service_unique_instance_per_type.rb create mode 100644 db/post_migrate/20200511220023_validate_projects_foreign_key_to_namespaces.rb create mode 100644 db/post_migrate/20200513171959_enable_hashed_storage.rb create mode 100644 db/post_migrate/20200514000009_add_not_null_constraint_on_file_store_to_lfs_objects.rb create mode 100644 db/post_migrate/20200514000132_add_not_null_constraint_on_store_to_uploads.rb create mode 100644 db/post_migrate/20200514000340_add_not_null_constraint_on_file_store_to_ci_jobs_artifacts.rb create mode 100644 doc/.vale/gitlab/BadgeCapitalization.yml create mode 100644 doc/.vale/gitlab/British.yml create mode 100644 doc/.vale/gitlab/Profanity.yml create mode 100644 doc/.vale/gitlab/ReferenceLinks.yml create mode 100644 doc/.vale/gitlab/SubstitutionWarning.yml create mode 100644 doc/administration/feature_flags.md create mode 100644 doc/administration/geo/replication/geo_validation_tests.md create mode 100644 doc/administration/geo/replication/multiple_servers.md create mode 100644 doc/administration/reference_architectures/10k_users.md create mode 100644 doc/administration/reference_architectures/1k_users.md create mode 100644 doc/administration/reference_architectures/25k_users.md create mode 100644 doc/administration/reference_architectures/2k_users.md create mode 100644 doc/administration/reference_architectures/3k_users.md create mode 100644 doc/administration/reference_architectures/50k_users.md create mode 100644 doc/administration/reference_architectures/5k_users.md create mode 100644 doc/administration/reference_architectures/img/reference-architectures.png create mode 100644 doc/administration/reference_architectures/index.md create mode 100644 doc/api/feature_flag_user_lists.md create mode 100644 doc/api/freeze_periods.md create mode 100644 doc/api/instance_level_ci_variables.md create mode 100644 doc/api/metrics_user_starred_dashboards.md create mode 100644 doc/api/project_repository_storage_moves.md create mode 100644 doc/ci/environments/index.md delete mode 100644 doc/ci/img/metrics_reports.png create mode 100644 doc/ci/img/metrics_reports_v13_0.png create mode 100644 doc/ci/merge_request_pipelines/img/merge_request_pipelines_doubled_MR_v12_09.png create mode 100644 doc/ci/merge_request_pipelines/img/merge_request_pipelines_doubled_branch_v12_09.png delete mode 100644 doc/ci/pipelines/img/pipelines_index.png create mode 100644 doc/ci/pipelines/img/pipelines_index_v13_0.png delete mode 100644 doc/ci/variables/img/variable_types_usage_example.png create mode 100644 doc/ci/yaml/includes.md create mode 100644 doc/development/cicd/img/ci_architecture.png create mode 100644 doc/development/documentation/feature_flags.md create mode 100644 doc/development/fe_guide/vue3_migration.md create mode 100644 doc/development/img/snowplow_flow.png create mode 100644 doc/development/img/telemetry_system_overview.png create mode 100644 doc/development/integrations/example_vuln.png create mode 100644 doc/development/multi_version_compatibility.md create mode 100644 doc/development/telemetry/index.md create mode 100644 doc/development/telemetry/snowplow.md create mode 100644 doc/development/telemetry/usage_ping.md create mode 100644 doc/development/testing_guide/end_to_end/beginners_guide.md create mode 100644 doc/development/testing_guide/end_to_end/img/gl-devops-lifecycle-by-stage-numbers_V12_10.png delete mode 100644 doc/development/testing_guide/end_to_end/quick_start_guide.md create mode 100644 doc/development/windows.md delete mode 100644 doc/integration/img/gitlab_app.png delete mode 100644 doc/integration/img/jenkins_gitlab_service_settings.png delete mode 100644 doc/raketasks/backup_hrz.png create mode 100644 doc/raketasks/migrate_snippets.md delete mode 100644 doc/telemetry/backend.md delete mode 100644 doc/telemetry/frontend.md create mode 100644 doc/telemetry/snowplow.md create mode 100644 doc/topics/web_application_firewall/img/guide_waf_ingress_disabled_settings_v12_10.png create mode 100644 doc/user/analytics/img/repository_analytics_v13_0.png create mode 100644 doc/user/analytics/repository_analytics.md delete mode 100644 doc/user/application_security/container_scanning/img/container_scanning_v12_9.png create mode 100644 doc/user/application_security/container_scanning/img/container_scanning_v13_0.png delete mode 100644 doc/user/application_security/dast/img/dast_all_v12_9.png create mode 100644 doc/user/application_security/dast/img/dast_all_v13_0.png delete mode 100644 doc/user/application_security/dast/img/dast_single_v12_9.png create mode 100644 doc/user/application_security/dast/img/dast_single_v13_0.png delete mode 100644 doc/user/application_security/dependency_scanning/img/dependency_scanning.png create mode 100644 doc/user/application_security/dependency_scanning/img/dependency_scanning_v13_0.png create mode 100644 doc/user/application_security/img/adding_a_dismissal_reason_v13_0.png delete mode 100644 doc/user/application_security/img/dismissed_info_v12_3.png create mode 100644 doc/user/application_security/img/interacting_with_vulnerability_v13_0.png delete mode 100644 doc/user/application_security/img/interactive_reports.png delete mode 100644 doc/user/application_security/img/security_configuration_page_v12_9.png create mode 100644 doc/user/application_security/img/security_configuration_page_v13_1.png delete mode 100644 doc/user/application_security/sast/img/sast_v12_9.png create mode 100644 doc/user/application_security/sast/img/sast_v13_0.png create mode 100644 doc/user/application_security/secret_detection/img/secret-detection-merge-request-ui.png create mode 100644 doc/user/application_security/secret_detection/index.md delete mode 100644 doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_6.png create 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/instance_security_dashboard_export_csv_v13_0.png delete mode 100644 doc/user/application_security/security_dashboard/img/instance_security_dashboard_with_projects_v12_8.png create mode 100644 doc/user/application_security/security_dashboard/img/instance_security_dashboard_with_projects_v13_0.png rename doc/user/application_security/security_dashboard/img/{project_security_dashboard_export_csv_v12.10.png => project_security_dashboard_export_csv_v12_10.png} (100%) delete mode 100644 doc/user/application_security/security_dashboard/img/project_security_dashboard_v12_3.png create mode 100644 doc/user/application_security/security_dashboard/img/project_security_dashboard_v13_0.png delete mode 100644 doc/user/clusters/img/fluentd_v12_10.png create mode 100644 doc/user/clusters/img/fluentd_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/license_compliance.png delete mode 100644 doc/user/compliance/license_compliance/img/license_compliance_add_license_v12_3.png create mode 100644 doc/user/compliance/license_compliance/img/license_compliance_add_license_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/license_compliance_decision.png create mode 100644 doc/user/compliance/license_compliance/img/license_compliance_decision_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/license_compliance_pipeline_tab_v12_3.png create mode 100644 doc/user/compliance/license_compliance/img/license_compliance_pipeline_tab_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/license_compliance_search_v12_3.png create mode 100644 doc/user/compliance/license_compliance/img/license_compliance_search_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/license_compliance_settings_v12_3.png create mode 100644 doc/user/compliance/license_compliance/img/license_compliance_settings_v13_0.png create mode 100644 doc/user/compliance/license_compliance/img/license_compliance_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/license_list_v12_6.png create mode 100644 doc/user/compliance/license_compliance/img/license_list_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_add_v12_9.png create mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_add_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_edit_v12_9.png create mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_edit_v13_0.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_v12_9.png create mode 100644 doc/user/compliance/license_compliance/img/policies_v13_0.png delete mode 100644 doc/user/group/epics/img/epic_view_v12.3.png create mode 100644 doc/user/group/epics/img/epic_view_v13.0.png create mode 100644 doc/user/group/epics/manage_epics.md delete mode 100644 doc/user/group/roadmap/img/roadmap_view_v12_10.png create mode 100644 doc/user/group/roadmap/img/roadmap_view_v13_0.png create mode 100644 doc/user/group/settings/img/export_panel.png create mode 100644 doc/user/group/settings/import_export.md delete mode 100644 doc/user/img/gitlab_snippet.png create mode 100644 doc/user/img/gitlab_snippet_v13_0.png create mode 100644 doc/user/img/snippet_clone_button_v13_0.png create mode 100644 doc/user/infrastructure/img/terraform_plan_log_v13_0.png create mode 100644 doc/user/infrastructure/img/terraform_plan_widget_v13_0.png delete mode 100644 doc/user/packages/container_registry/img/container_registry_group_repositories_v12_10.png create mode 100644 doc/user/packages/container_registry/img/container_registry_group_repositories_v13_0.png delete mode 100644 doc/user/packages/container_registry/img/container_registry_repositories_v12_10.png create mode 100644 doc/user/packages/container_registry/img/container_registry_repositories_v13_0.png delete mode 100644 doc/user/packages/container_registry/img/container_registry_repositories_with_quickstart_v12_10.png create mode 100644 doc/user/packages/container_registry/img/container_registry_repositories_with_quickstart_v13_0.png delete mode 100644 doc/user/packages/container_registry/img/container_registry_repository_details_v12.10.png create mode 100644 doc/user/packages/container_registry/img/container_registry_repository_details_v13.0.png delete mode 100644 doc/user/packages/container_registry/img/container_registry_tags_v12_10.png delete mode 100644 doc/user/packages/container_registry/img/expiration-policy-app.png create mode 100644 doc/user/packages/container_registry/img/expiration_policy_app_v13_0.png delete mode 100644 doc/user/packages/img/group_packages_list_v12_10.png create mode 100644 doc/user/packages/img/group_packages_list_v13_0.png delete mode 100644 doc/user/packages/img/package_detail_v12_10.png create mode 100644 doc/user/packages/img/package_detail_v13_0.png delete mode 100644 doc/user/packages/img/project_packages_list_v12_10.png create mode 100644 doc/user/packages/img/project_packages_list_v13_0.png create mode 100644 doc/user/profile/img/change_password_v13_0.png create mode 100644 doc/user/profile/img/unknown_sign_in_email_v13_0.png create mode 100644 doc/user/profile/unknown_sign_in_notification.md create mode 100644 doc/user/project/img/service_desk_custom_email_address_v13_0.png create mode 100644 doc/user/project/integrations/img/metrics_dashboard_annotations_ui_v13.0.png delete mode 100644 doc/user/project/integrations/img/panel_context_menu_v12_10.png create mode 100644 doc/user/project/integrations/img/panel_context_menu_v13_0.png create mode 100644 doc/user/project/integrations/img/prometheus_dashboard_select_v_13_0.png create mode 100644 doc/user/project/integrations/img/toggle_metrics_user_starred_dashboard_v13_0.png create mode 100644 doc/user/project/integrations/img/webex_teams_configuration.png create mode 100644 doc/user/project/integrations/webex_teams.md create mode 100644 doc/user/project/merge_requests/img/accessibility_mr_widget_v13_0.png create mode 100644 doc/user/project/operations/alert_management.md create mode 100644 doc/user/project/operations/img/alert_detail_v13_0.png create mode 100644 doc/user/project/operations/img/alert_management_1_v13_0.png create mode 100644 doc/user/project/operations/img/alert_management_1_v13_1.png create mode 100644 doc/user/project/operations/img/alert_management_severity_v13_0.png create mode 100644 doc/user/project/releases/img/edit_release_page_v13_0.png create mode 100644 doc/user/project/releases/img/release_milestone_dropdown_v13_0.png delete mode 100644 doc/user/project/repository/img/file_finder_find_button.png create mode 100644 doc/user/project/repository/img/file_finder_find_button_v12_10.png delete mode 100644 doc/user/project/repository/img/file_finder_find_file.png create mode 100644 doc/user/project/repository/img/file_finder_find_file_v12_10.png create mode 100644 doc/user/project/settings/project_access_tokens.md delete mode 100644 doc/user/project/static_site_editor/img/static_site_editor_v12_10.png create mode 100644 doc/user/project/static_site_editor/img/wysiwyg_editor_v13_0.png delete mode 100644 doc/user/project/web_ide/img/admin_clientside_evaluation.png create mode 100644 doc/user/project/web_ide/img/admin_live_preview_v13_0.png create mode 100644 doc/user/project/web_ide/img/dark_theme_v13.0.png rename doc/user/project/web_ide/img/{clientside_evaluation.png => live_preview_v13_0.png} (100%) create mode 100644 doc/user/project/web_ide/img/solarized_light_theme_v13.0.png create mode 100644 doc/user/search/img/filter_approved_by_merge_requests_v13_0.png create mode 100644 jest.config.base.js create mode 100644 jest.config.integration.js delete mode 100644 jest.config.js create mode 100644 jest.config.unit.js create mode 100644 lib/api/admin/ci/variables.rb create mode 100644 lib/api/entities/design_management/design.rb create mode 100644 lib/api/entities/freeze_period.rb create mode 100644 lib/api/entities/metrics/user_starred_dashboard.rb create mode 100644 lib/api/entities/project_repository_storage_move.rb create mode 100644 lib/api/freeze_periods.rb create mode 100644 lib/api/helpers/snippets_helpers.rb create mode 100644 lib/api/metrics/user_starred_dashboards.rb create mode 100644 lib/api/project_repository_storage_moves.rb create mode 100644 lib/banzai/reference_parser/design_parser.rb create mode 100644 lib/csv_builders/single_batch.rb create mode 100644 lib/gitlab/alert_management/alert_params.rb create mode 100644 lib/gitlab/alert_management/alert_status_counts.rb create mode 100644 lib/gitlab/background_migration/backfill_environment_id_deployment_merge_requests.rb create mode 100644 lib/gitlab/background_migration/remove_undefined_occurrence_confidence_level.rb create mode 100644 lib/gitlab/background_migration/remove_undefined_vulnerability_confidence_level.rb create mode 100644 lib/gitlab/chat/responder/mattermost.rb create mode 100644 lib/gitlab/ci/features.rb create mode 100644 lib/gitlab/ci/parsers/accessibility/pa11y.rb create mode 100644 lib/gitlab/ci/parsers/terraform/tfplan.rb create mode 100644 lib/gitlab/ci/reports/accessibility_reports.rb create mode 100644 lib/gitlab/ci/reports/accessibility_reports_comparer.rb create mode 100644 lib/gitlab/ci/reports/terraform_reports.rb create mode 100644 lib/gitlab/ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/Secure-Binaries.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Workflows/Branch-Pipelines.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Workflows/MergeRequest-Pipelines.gitlab-ci.yml create mode 100644 lib/gitlab/config_checker/external_database_checker.rb delete mode 100644 lib/gitlab/cycle_analytics/group_stage_summary.rb delete mode 100644 lib/gitlab/cycle_analytics/summary/group/base.rb delete mode 100644 lib/gitlab/cycle_analytics/summary/group/deploy.rb delete mode 100644 lib/gitlab/cycle_analytics/summary/group/deployment_frequency.rb delete mode 100644 lib/gitlab/cycle_analytics/summary/group/issue.rb create mode 100644 lib/gitlab/cycle_analytics/summary/value.rb create mode 100644 lib/gitlab/database/partitioning_migration_helpers.rb create mode 100644 lib/gitlab/database/partitioning_migration_helpers/partitioned_foreign_key.rb create mode 100644 lib/gitlab/database/partitioning_migration_helpers/partitioned_foreign_key_validator.rb create mode 100644 lib/gitlab/database/schema_helpers.rb create mode 100644 lib/gitlab/exclusive_lease_helpers/sleeping_lock.rb create mode 100644 lib/gitlab/git_access_design.rb create mode 100644 lib/gitlab/grape_logging/loggers/cloudflare_logger.rb create mode 100644 lib/gitlab/grape_logging/loggers/context_logger.rb create mode 100644 lib/gitlab/import_export/design_repo_restorer.rb create mode 100644 lib/gitlab/import_export/design_repo_saver.rb create mode 100644 lib/gitlab/import_export/group/group_restorer.rb create mode 100644 lib/gitlab/import_export/group/legacy_import_export.yml create mode 100644 lib/gitlab/import_export/group/tree_restorer.rb create mode 100644 lib/gitlab/import_export/group/tree_saver.rb create mode 100644 lib/gitlab/jira_import/handle_labels_service.rb create mode 100644 lib/gitlab/jira_import/metadata_collector.rb create mode 100644 lib/gitlab/jira_import/user_mapper.rb create mode 100644 lib/gitlab/kubernetes/helm/parsers/list_v2.rb create mode 100644 lib/gitlab/kubernetes/network_policy.rb create mode 100644 lib/gitlab/logging/cloudflare_helper.rb delete mode 100644 lib/gitlab/metrics/influx_db.rb delete mode 100644 lib/gitlab/metrics/metric.rb create mode 100644 lib/gitlab/metrics/samplers/database_sampler.rb delete mode 100644 lib/gitlab/metrics/samplers/influx_sampler.rb create mode 100644 lib/gitlab/services/logger.rb create mode 100644 lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb rename lib/gitlab/testing/{clear_thread_memory_cache_middleware.rb => clear_process_memory_cache_middleware.rb} (65%) delete mode 100644 lib/gitlab/thread_memory_cache.rb create mode 100644 lib/gitlab/usage_data_counters/designs_counter.rb create mode 100644 lib/gitlab/x509/tag.rb delete mode 100644 lib/quality/helm_client.rb create mode 100644 lib/system_check/app/hashed_storage_all_projects_check.rb create mode 100644 lib/system_check/app/hashed_storage_enabled_check.rb create mode 100644 lib/tasks/gitlab/snippets.rake delete mode 100644 lib/tasks/gitlab/track_deployment.rake delete mode 100644 lib/tasks/sidekiq.rake create mode 100644 qa/qa/page/component/custom_metric.rb create mode 100644 qa/qa/page/component/design_management.rb create mode 100644 qa/qa/page/component/project/templates.rb create mode 100644 qa/qa/page/dashboard/snippet/edit.rb create mode 100644 qa/qa/page/page_concern.rb delete mode 100644 qa/qa/page/project/settings/common.rb create mode 100644 qa/qa/page/project/settings/general_pipelines.rb create mode 100644 qa/qa/page/project/settings/incidents.rb create mode 100644 qa/qa/page/project/settings/integrations.rb create mode 100644 qa/qa/page/project/settings/operations.rb create mode 100644 qa/qa/page/project/settings/services/prometheus.rb delete mode 100644 qa/qa/resource/kubernetes_cluster.rb create mode 100644 qa/qa/resource/kubernetes_cluster/base.rb create mode 100644 qa/qa/resource/kubernetes_cluster/project_cluster.rb create mode 100644 qa/qa/resource/pipeline.rb create mode 100644 qa/qa/resource/visibility.rb delete mode 100644 qa/qa/runtime/project.rb create mode 100644 qa/qa/scenario/test/integration/gitaly_ha.rb create mode 100644 qa/qa/service/praefect_manager.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/design_management/add_design_add_annotation.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/gitaly/high_availability_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/8_monitor/all_monitor_core_features_spec.rb delete mode 100644 qa/qa/specs/features/browser_ui/8_monitor/apm/dashboards_spec.rb create mode 100644 qa/qa/tools/delete_test_ssh_keys.rb create mode 100644 qa/spec/resource/ssh_key_spec.rb create mode 100644 qa/spec/service/docker_run/gitlab_runner_spec.rb create mode 100644 rubocop/cop/avoid_keyword_arguments_in_sidekiq_workers.rb create mode 100644 rubocop/cop/gitlab/change_timzone.rb create mode 100644 rubocop/cop/gitlab/json.rb delete mode 100644 rubocop/cop/migration/add_column.rb delete mode 100644 rubocop/cop/migration/add_limit_to_string_columns.rb create mode 100644 rubocop/cop/migration/add_limit_to_text_columns.rb create mode 100644 rubocop/cop/migration/prevent_strings.rb delete mode 100644 rubocop/cop/migration/reversible_add_column_with_default.rb create mode 100644 rubocop/cop/migration/with_lock_retries_disallowed_method.rb delete mode 100644 rubocop/cop/migration/with_lock_retries_without_ddl_transaction.rb create mode 100644 rubocop/cop/performance/ar_exists_and_present_blank.rb create mode 100644 rubocop/cop/rspec/empty_line_after_shared_example.rb create mode 100755 scripts/frontend/webpack_dev_server.js create mode 100755 scripts/regenerate-schema create mode 100644 spec/channels/application_cable/connection_spec.rb create mode 100644 spec/channels/issues_channel_spec.rb create mode 100644 spec/controllers/admin/ci/variables_controller_spec.rb create mode 100644 spec/controllers/projects/alert_management_controller_spec.rb create mode 100644 spec/controllers/projects/ci/daily_build_group_report_results_controller_spec.rb create mode 100644 spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb create mode 100644 spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb create mode 100644 spec/controllers/projects/settings/access_tokens_controller_spec.rb create mode 100644 spec/factories/alert_management/alerts.rb rename spec/factories/ci/{daily_report_results.rb => daily_build_group_report_results.rb} (54%) create mode 100644 spec/factories/ci/freeze_periods.rb create mode 100644 spec/factories/ci/instance_variables.rb create mode 100644 spec/factories/design_management/actions.rb create mode 100644 spec/factories/design_management/design_at_version.rb create mode 100644 spec/factories/design_management/designs.rb create mode 100644 spec/factories/design_management/versions.rb create mode 100644 spec/factories/git_wiki_commit_details.rb create mode 100644 spec/factories/iterations.rb create mode 100644 spec/factories/metrics/users_starred_dasboards.rb create mode 100644 spec/factories/plan_limits.rb create mode 100644 spec/factories/plans.rb create mode 100644 spec/factories/project_repository_storage_moves.rb delete mode 100644 spec/factories/project_wikis.rb create mode 100644 spec/factories/resource_state_event.rb create mode 100644 spec/factories/wikis.rb delete mode 100644 spec/features/admin/admin_browses_logs_spec.rb create mode 100644 spec/features/boards/focus_mode_spec.rb create mode 100644 spec/features/commits/user_view_commits_spec.rb delete mode 100644 spec/features/dashboard/help_spec.rb create mode 100644 spec/features/groups/import_export/export_file_spec.rb create mode 100644 spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb create mode 100644 spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb create mode 100644 spec/features/projects/activity/user_sees_design_comment_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_paginates_designs_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_permissions_upload_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_uploads_designs_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_views_design_images_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_views_design_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_views_designs_spec.rb create mode 100644 spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb delete mode 100644 spec/features/projects/services/user_activates_youtrack_spec.rb create mode 100644 spec/features/projects/settings/access_tokens_spec.rb create mode 100644 spec/finders/alert_management/alerts_finder_spec.rb create mode 100644 spec/finders/ci/daily_build_group_report_results_finder_spec.rb rename spec/finders/{artifacts_finder_spec.rb => ci/job_artifacts_finder_spec.rb} (95%) create mode 100644 spec/finders/design_management/designs_finder_spec.rb create mode 100644 spec/finders/design_management/versions_finder_spec.rb create mode 100644 spec/finders/freeze_periods_finder_spec.rb create mode 100644 spec/finders/metrics/users_starred_dashboards_finder_spec.rb create mode 100644 spec/fixtures/accessibility/pa11y_with_errors.json create mode 100644 spec/fixtures/accessibility/pa11y_with_invalid_url.json create mode 100644 spec/fixtures/accessibility/pa11y_without_errors.json create mode 100644 spec/fixtures/api/schemas/cluster_list.json create mode 100644 spec/fixtures/api/schemas/entities/accessibility_error.json create mode 100644 spec/fixtures/api/schemas/entities/accessibility_reports_comparer.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/freeze_period.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/freeze_periods.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/project_repository_storage_move.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/project_repository_storage_moves.json create mode 100644 spec/fixtures/helm/helm_list_v2_prometheus_deployed.json.gz create mode 100644 spec/fixtures/helm/helm_list_v2_prometheus_failed.json.gz create mode 100644 spec/fixtures/helm/helm_list_v2_prometheus_missing.json.gz create mode 100644 spec/fixtures/legacy_group_export.tar.gz create mode 100644 spec/fixtures/legacy_group_export_invalid_subrelations.tar.gz create mode 100644 spec/fixtures/legacy_symlink_export.tar.gz create mode 100644 spec/fixtures/lib/elasticsearch/query_with_filebeat_6.json delete mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project.json create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/auto_devops.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/boards.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/ci_cd_settings.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/ci_pipelines.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/container_expiration_policy.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/custom_attributes.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/error_tracking_setting.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/external_pull_requests.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/issues.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/merge_requests.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/pipeline_schedules.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_badges.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_feature.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_members.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_branches.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_environments.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_tags.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/releases.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/services.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/snippets.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/complex/tree/project/triggers.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/designs/project.json delete mode 100644 spec/fixtures/lib/gitlab/import_export/group/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/group/tree/project.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group/tree/project/issues.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group/tree/project/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group/tree/project/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/child_with_no_parent/tree/groups/4351.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/child_with_no_parent/tree/groups/4352.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/child_with_no_parent/tree/groups/_all.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351/badges.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351/boards.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351/epics.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351/members.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4351/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352/badges.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352/boards.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352/epics.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352/members.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4352/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353/badges.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353/boards.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353/epics.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353/members.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/4353/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/tree/groups/_all.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353/badges.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353/boards.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353/epics.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353/members.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/4353/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/tree/groups/_all.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/tree/groups/283.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/tree/groups/284.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/tree/groups/285.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/tree/groups/286.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/tree/groups/_all.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/tree/groups/283.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/tree/groups/284.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/tree/groups/285.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/tree/groups/286.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/tree/groups/_all.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/tree/groups/283.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/tree/groups/284.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/tree/groups/285.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/tree/groups/286.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/tree/groups/_all.ndjson delete mode 100644 spec/fixtures/lib/gitlab/import_export/invalid_json/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/invalid_json/tree/project.json delete mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree/project.json create mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree/project/custom_attributes.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree/project/issues.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree/project/labels.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree/project/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/light/tree/project/services.ndjson delete mode 100644 spec/fixtures/lib/gitlab/import_export/milestone-iid/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/milestone-iid/tree/project.json create mode 100644 spec/fixtures/lib/gitlab/import_export/milestone-iid/tree/project/issues.ndjson delete mode 100644 spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project.json create mode 100644 spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project/ci_cd_settings.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project/ci_pipelines.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project/external_pull_requests.ndjson create mode 100644 spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project/project_feature.ndjson delete mode 100644 spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree.tar.gz create mode 100644 spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree/project.json create mode 100644 spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree/project/milestones.ndjson create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/development_metrics.yml create mode 100644 spec/fixtures/lsif.json.zip create mode 100644 spec/fixtures/sample_doc.md create mode 100644 spec/fixtures/terraform/tfplan.json create mode 100644 spec/fixtures/terraform/tfplan_with_corrupted_data.json create mode 100644 spec/fixtures/x509/ZZZZZZA6.crl create mode 100644 spec/frontend/__mocks__/@toast-ui/vue-editor/index.js rename spec/{javascripts => frontend}/ajax_loading_spinner_spec.js (94%) create mode 100644 spec/frontend/alert_management/components/alert_management_detail_spec.js create mode 100644 spec/frontend/alert_management/components/alert_management_list_spec.js create mode 100644 spec/frontend/alert_management/mocks/alerts.json rename spec/{javascripts => frontend}/avatar_helper_spec.js (84%) rename spec/{javascripts => frontend}/bootstrap_linked_tabs_spec.js (90%) create mode 100644 spec/frontend/broadcast_notification_spec.js rename spec/{javascripts => frontend/ci_variable_list}/ci_variable_list/ajax_variable_list_spec.js (70%) rename spec/{javascripts => frontend/ci_variable_list}/ci_variable_list/ci_variable_list_spec.js (83%) rename spec/{javascripts => frontend/ci_variable_list}/ci_variable_list/native_form_variable_list_spec.js (100%) rename spec/{javascripts => frontend}/close_reopen_report_toggle_spec.js (85%) create mode 100644 spec/frontend/clusters/components/fluentd_output_settings_spec.js rename spec/{javascripts => frontend}/commit_merge_requests_spec.js (100%) rename spec/{javascripts => frontend}/commits_spec.js (93%) rename spec/{javascripts => frontend}/create_item_dropdown_spec.js (100%) create mode 100644 spec/frontend/deploy_keys/components/action_btn_spec.js create mode 100644 spec/frontend/deploy_keys/components/app_spec.js create mode 100644 spec/frontend/deploy_keys/components/key_spec.js create mode 100644 spec/frontend/deploy_keys/components/keys_panel_spec.js create mode 100644 spec/frontend/design_management/components/__snapshots__/design_note_pin_spec.js.snap create mode 100644 spec/frontend/design_management/components/__snapshots__/design_presentation_spec.js.snap create mode 100644 spec/frontend/design_management/components/__snapshots__/design_scaler_spec.js.snap create mode 100644 spec/frontend/design_management/components/__snapshots__/image_spec.js.snap create mode 100644 spec/frontend/design_management/components/delete_button_spec.js create mode 100644 spec/frontend/design_management/components/design_note_pin_spec.js create mode 100644 spec/frontend/design_management/components/design_notes/__snapshots__/design_note_spec.js.snap create mode 100644 spec/frontend/design_management/components/design_notes/__snapshots__/design_reply_form_spec.js.snap create mode 100644 spec/frontend/design_management/components/design_notes/design_discussion_spec.js create mode 100644 spec/frontend/design_management/components/design_notes/design_note_spec.js create mode 100644 spec/frontend/design_management/components/design_notes/design_reply_form_spec.js create mode 100644 spec/frontend/design_management/components/design_overlay_spec.js create mode 100644 spec/frontend/design_management/components/design_presentation_spec.js create mode 100644 spec/frontend/design_management/components/design_scaler_spec.js create mode 100644 spec/frontend/design_management/components/image_spec.js create mode 100644 spec/frontend/design_management/components/list/__snapshots__/item_spec.js.snap create mode 100644 spec/frontend/design_management/components/list/item_spec.js create mode 100644 spec/frontend/design_management/components/toolbar/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/design_management/components/toolbar/__snapshots__/pagination_button_spec.js.snap create mode 100644 spec/frontend/design_management/components/toolbar/__snapshots__/pagination_spec.js.snap create mode 100644 spec/frontend/design_management/components/toolbar/index_spec.js create mode 100644 spec/frontend/design_management/components/toolbar/pagination_button_spec.js create mode 100644 spec/frontend/design_management/components/toolbar/pagination_spec.js create mode 100644 spec/frontend/design_management/components/upload/__snapshots__/button_spec.js.snap create mode 100644 spec/frontend/design_management/components/upload/__snapshots__/design_dropzone_spec.js.snap create mode 100644 spec/frontend/design_management/components/upload/__snapshots__/design_version_dropdown_spec.js.snap create mode 100644 spec/frontend/design_management/components/upload/button_spec.js create mode 100644 spec/frontend/design_management/components/upload/design_dropzone_spec.js create mode 100644 spec/frontend/design_management/components/upload/design_version_dropdown_spec.js create mode 100644 spec/frontend/design_management/components/upload/mock_data/all_versions.js create mode 100644 spec/frontend/design_management/mock_data/all_versions.js create mode 100644 spec/frontend/design_management/mock_data/design.js create mode 100644 spec/frontend/design_management/mock_data/designs.js create mode 100644 spec/frontend/design_management/mock_data/no_designs.js create mode 100644 spec/frontend/design_management/mock_data/notes.js create mode 100644 spec/frontend/design_management/pages/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/design_management/pages/design/__snapshots__/index_spec.js.snap create mode 100644 spec/frontend/design_management/pages/design/index_spec.js create mode 100644 spec/frontend/design_management/pages/index_spec.js create mode 100644 spec/frontend/design_management/router_spec.js create mode 100644 spec/frontend/design_management/utils/cache_update_spec.js create mode 100644 spec/frontend/design_management/utils/design_management_utils_spec.js create mode 100644 spec/frontend/design_management/utils/error_messages_spec.js create mode 100644 spec/frontend/design_management/utils/tracking_spec.js rename spec/{javascripts => frontend}/diff_comments_store_spec.js (79%) create mode 100644 spec/frontend/dirty_submit/dirty_submit_collection_spec.js rename spec/{javascripts => frontend}/dirty_submit/dirty_submit_factory_spec.js (100%) rename spec/{javascripts => frontend}/dirty_submit/dirty_submit_form_spec.js (55%) rename spec/{javascripts => frontend}/dirty_submit/helper.js (81%) rename spec/{javascripts => frontend}/editor/editor_lite_spec.js (78%) rename spec/{javascripts => frontend}/emoji_spec.js (96%) rename spec/{javascripts => frontend}/feature_highlight/feature_highlight_helper_spec.js (64%) rename spec/{javascripts => frontend}/feature_highlight/feature_highlight_spec.js (78%) rename spec/{javascripts => frontend}/filtered_search/dropdown_utils_spec.js (98%) rename spec/{javascripts => frontend}/filtered_search/filtered_search_manager_spec.js (83%) rename spec/{javascripts => frontend}/filtered_search/filtered_search_tokenizer_spec.js (100%) rename spec/{javascripts => frontend}/filtered_search/issues_filtered_search_token_keys_spec.js (100%) rename spec/{javascripts => frontend}/filtered_search/recent_searches_root_spec.js (82%) rename spec/{javascripts => frontend}/filtered_search/services/recent_searches_service_spec.js (67%) rename spec/{javascripts => frontend}/filtered_search/visual_token_value_spec.js (89%) rename spec/{javascripts => frontend}/flash_spec.js (94%) rename spec/{javascripts => frontend}/frequent_items/components/app_spec.js (88%) rename spec/{javascripts => frontend}/frequent_items/store/actions_spec.js (97%) rename spec/{javascripts => frontend}/frequent_items/store/mutations_spec.js (100%) rename spec/{javascripts => frontend}/frequent_items/utils_spec.js (88%) rename spec/{javascripts => frontend}/groups/components/app_spec.js (66%) rename spec/{javascripts => frontend}/groups/components/group_folder_spec.js (92%) rename spec/{javascripts => frontend}/groups/components/group_item_spec.js (86%) rename spec/{javascripts => frontend}/groups/components/groups_spec.js (79%) rename spec/{javascripts => frontend}/groups/components/item_actions_spec.js (91%) rename spec/{javascripts => frontend}/groups/components/item_caret_spec.js (79%) rename spec/{javascripts => frontend}/groups/components/item_stats_spec.js (77%) rename spec/{javascripts => frontend}/groups/components/item_stats_value_spec.js (93%) rename spec/{javascripts => frontend}/groups/components/item_type_icon_spec.js (90%) rename spec/{javascripts => frontend}/groups/mock_data.js (100%) rename spec/{javascripts => frontend}/groups/service/groups_service_spec.js (91%) rename spec/{javascripts => frontend}/groups/store/groups_store_spec.js (87%) create mode 100644 spec/frontend/helpers/event_hub_factory_spec.js create mode 100644 spec/frontend/helpers/filtered_search_spec_helper.js create mode 100644 spec/frontend/helpers/set_window_location_helper.js create mode 100644 spec/frontend/helpers/set_window_location_helper_spec.js create mode 100644 spec/frontend/helpers/web_worker_mock.js rename spec/{javascripts => frontend}/ide/components/activity_bar_spec.js (96%) rename spec/{javascripts => frontend}/ide/components/commit_sidebar/radio_group_spec.js (91%) rename spec/{javascripts => frontend}/ide/components/file_row_extra_spec.js (91%) rename spec/{javascripts => frontend}/ide/components/file_templates/bar_spec.js (88%) rename spec/{javascripts => frontend}/ide/components/ide_review_spec.js (73%) rename spec/{javascripts => frontend}/ide/components/ide_side_bar_spec.js (94%) rename spec/{javascripts => frontend}/ide/components/ide_spec.js (92%) rename spec/{javascripts => frontend}/ide/components/ide_status_bar_spec.js (84%) rename spec/{javascripts => frontend}/ide/components/ide_tree_list_spec.js (91%) rename spec/{javascripts => frontend}/ide/components/ide_tree_spec.js (92%) rename spec/{javascripts => frontend}/ide/components/jobs/detail/description_spec.js (100%) rename spec/{javascripts => frontend}/ide/components/jobs/item_spec.js (100%) rename spec/{javascripts => frontend}/ide/components/merge_requests/item_spec.js (96%) rename spec/{javascripts => frontend}/ide/components/nav_dropdown_button_spec.js (94%) create mode 100644 spec/frontend/ide/components/nav_dropdown_spec.js rename spec/{javascripts => frontend}/ide/components/new_dropdown/button_spec.js (91%) rename spec/{javascripts => frontend}/ide/components/new_dropdown/index_spec.js (73%) create mode 100644 spec/frontend/ide/components/new_dropdown/modal_spec.js rename spec/{javascripts => frontend}/ide/components/new_dropdown/upload_spec.js (82%) rename spec/{javascripts => frontend}/ide/components/repo_tab_spec.js (94%) rename spec/{javascripts => frontend}/ide/components/repo_tabs_spec.js (100%) rename spec/{javascripts => frontend}/ide/components/shared/tokened_input_spec.js (94%) rename spec/{javascripts => frontend}/ide/lib/common/model_manager_spec.js (88%) rename spec/{javascripts => frontend}/ide/lib/common/model_spec.js (88%) rename spec/{javascripts => frontend}/ide/lib/decorations/controller_spec.js (92%) rename spec/{javascripts => frontend}/ide/lib/diff/controller_spec.js (84%) rename spec/{javascripts => frontend}/ide/lib/editor_spec.js (75%) create mode 100644 spec/frontend/ide/lib/languages/vue_spec.js rename spec/{javascripts => frontend}/image_diff/helpers/badge_helper_spec.js (96%) rename spec/{javascripts => frontend}/image_diff/helpers/comment_indicator_helper_spec.js (96%) rename spec/{javascripts => frontend}/image_diff/helpers/dom_helper_spec.js (94%) rename spec/{javascripts => frontend}/image_diff/helpers/utils_helper_spec.js (100%) rename spec/{javascripts => frontend}/image_diff/image_badge_spec.js (82%) rename spec/{javascripts => frontend}/image_diff/image_diff_spec.js (81%) rename spec/{javascripts => frontend}/image_diff/mock_data.js (100%) rename spec/{javascripts => frontend}/image_diff/replaced_image_diff_spec.js (84%) create mode 100644 spec/frontend/integrations/edit/components/integration_form_spec.js create mode 100644 spec/frontend/integrations/edit/components/jira_trigger_fields_spec.js create mode 100644 spec/frontend/integrations/edit/components/trigger_fields_spec.js rename spec/{javascripts => frontend}/integrations/integration_settings_form_spec.js (69%) rename spec/{javascripts => frontend}/issuable_spec.js (96%) create mode 100644 spec/frontend/issuables_list/components/issuable_list_root_app_spec.js rename spec/{javascripts => frontend}/issue_show/components/app_spec.js (58%) rename spec/{javascripts => frontend}/issue_show/components/description_spec.js (63%) rename spec/{javascripts => frontend}/issue_show/components/edited_spec.js (100%) rename spec/{javascripts => frontend}/issue_show/components/fields/description_template_spec.js (95%) rename spec/{javascripts => frontend}/issue_show/components/form_spec.js (81%) rename spec/{javascripts => frontend}/issue_show/components/title_spec.js (71%) rename spec/{javascripts => frontend}/jobs/components/artifacts_block_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/commit_block_spec.js (97%) rename spec/{javascripts => frontend}/jobs/components/empty_state_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/environments_block_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/job_container_item_spec.js (87%) rename spec/{javascripts => frontend}/jobs/components/job_log_spec.js (95%) rename spec/{javascripts => frontend}/jobs/components/jobs_container_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/manual_variables_form_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/sidebar_spec.js (96%) rename spec/{javascripts => frontend}/jobs/components/stages_dropdown_spec.js (98%) rename spec/{javascripts => frontend}/jobs/components/trigger_block_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/unmet_prerequisites_block_spec.js (100%) rename spec/{javascripts => frontend}/jobs/mixins/delayed_job_mixin_spec.js (55%) rename spec/{javascripts => frontend}/jobs/store/actions_spec.js (97%) rename spec/{javascripts => frontend}/jobs/store/helpers.js (100%) create mode 100644 spec/frontend/landing_spec.js rename spec/{javascripts => frontend}/lib/utils/csrf_token_spec.js (63%) create mode 100644 spec/frontend/lib/utils/downloader_spec.js rename spec/{javascripts => frontend}/lib/utils/navigation_utility_spec.js (80%) rename spec/{javascripts => frontend}/lib/utils/poll_spec.js (63%) rename spec/{javascripts => frontend}/lib/utils/sticky_spec.js (77%) create mode 100644 spec/frontend/milestones/mock_data.js create mode 100644 spec/frontend/milestones/project_milestone_combobox_spec.js create mode 100644 spec/frontend/mocks/ce/ide/lib/diff/diff_worker.js create mode 100644 spec/frontend/monitoring/__snapshots__/alert_widget_spec.js.snap create mode 100644 spec/frontend/monitoring/alert_widget_spec.js create mode 100644 spec/frontend/monitoring/components/alert_widget_form_spec.js rename spec/frontend/monitoring/components/{panel_type_spec.js => dashboard_panel_spec.js} (52%) create mode 100644 spec/frontend/monitoring/components/variables/custom_variable_spec.js create mode 100644 spec/frontend/monitoring/components/variables/text_variable_spec.js create mode 100644 spec/frontend/monitoring/components/variables_section_spec.js create mode 100644 spec/frontend/monitoring/store/variable_mapping_spec.js create mode 100644 spec/frontend/monitoring/stubs/modal_stub.js create mode 100644 spec/frontend/monitoring/validators_spec.js rename spec/{javascripts => frontend}/notebook/cells/code_spec.js (69%) create mode 100644 spec/frontend/notebook/cells/markdown_spec.js rename spec/{javascripts => frontend}/notebook/cells/output/html_sanitize_tests.js (100%) rename spec/{javascripts => frontend}/notebook/cells/output/html_spec.js (100%) rename spec/{javascripts => frontend}/notebook/cells/output/index_spec.js (94%) rename spec/{javascripts => frontend}/notebook/cells/prompt_spec.js (95%) rename spec/{javascripts => frontend}/notebook/index_spec.js (96%) rename spec/{javascripts => frontend}/oauth_remember_me_spec.js (100%) rename spec/{javascripts => frontend}/pages/admin/application_settings/account_and_limits_spec.js (100%) rename spec/{javascripts => frontend}/pages/admin/jobs/index/components/stop_jobs_modal_spec.js (72%) rename spec/{javascripts => frontend}/pages/admin/users/new/index_spec.js (100%) rename spec/{javascripts => frontend}/pages/labels/components/promote_label_modal_spec.js (92%) rename spec/{javascripts => frontend}/pages/milestones/shared/components/delete_milestone_modal_spec.js (81%) rename spec/{javascripts => frontend}/pages/milestones/shared/components/promote_milestone_modal_spec.js (91%) create mode 100644 spec/frontend/pages/projects/pipeline_schedules/shared/components/interval_pattern_input_spec.js rename spec/{javascripts => frontend}/pages/projects/pipeline_schedules/shared/components/pipeline_schedule_callout_spec.js (53%) rename spec/{javascripts => frontend}/pages/sessions/new/preserve_url_fragment_spec.js (100%) create mode 100644 spec/frontend/pipelines/components/pipelines_filtered_search_spec.js create mode 100644 spec/frontend/pipelines/header_component_spec.js rename spec/{javascripts => frontend}/pipelines/linked_pipelines_mock.json (99%) rename spec/{javascripts => frontend}/pipelines/mock_data.js (77%) rename spec/{javascripts => frontend}/pipelines/pipeline_details_mediator_spec.js (84%) create mode 100644 spec/frontend/pipelines/pipelines_actions_spec.js create mode 100644 spec/frontend/pipelines/pipelines_artifacts_spec.js create mode 100644 spec/frontend/pipelines/pipelines_spec.js create mode 100644 spec/frontend/pipelines/pipelines_table_spec.js create mode 100644 spec/frontend/pipelines/stage_spec.js rename spec/{javascripts/pipelines/stores/pipeline_store.js => frontend/pipelines/stores/pipeline_store_spec.js} (86%) create mode 100644 spec/frontend/pipelines/time_ago_spec.js create mode 100644 spec/frontend/pipelines/tokens/pipeline_branch_name_token_spec.js create mode 100644 spec/frontend/pipelines/tokens/pipeline_trigger_author_token_spec.js rename spec/{javascripts => frontend}/pipelines_spec.js (100%) rename spec/{javascripts => frontend}/prometheus_metrics/prometheus_metrics_spec.js (95%) create mode 100644 spec/frontend/registry/explorer/components/image_list_spec.js rename spec/{javascripts => frontend}/related_merge_requests/components/related_merge_requests_spec.js (93%) rename spec/{javascripts => frontend}/related_merge_requests/store/actions_spec.js (87%) rename spec/{javascripts => frontend}/related_merge_requests/store/mutations_spec.js (100%) create mode 100644 spec/frontend/releases/components/release_block_metadata_spec.js create mode 100644 spec/frontend/reports/accessibility_report/grouped_accessibility_reports_app_spec.js create mode 100644 spec/frontend/reports/accessibility_report/mock_data.js create mode 100644 spec/frontend/reports/accessibility_report/store/actions_spec.js create mode 100644 spec/frontend/reports/accessibility_report/store/getters_spec.js create mode 100644 spec/frontend/reports/accessibility_report/store/mutations_spec.js create mode 100644 spec/frontend/reports/components/__snapshots__/grouped_issues_list_spec.js.snap create mode 100644 spec/frontend/reports/components/__snapshots__/issue_status_icon_spec.js.snap create mode 100644 spec/frontend/reports/components/grouped_issues_list_spec.js rename spec/{javascripts => frontend}/reports/components/grouped_test_reports_app_spec.js (87%) create mode 100644 spec/frontend/reports/components/issue_status_icon_spec.js rename spec/{javascripts => frontend}/reports/components/modal_open_name_spec.js (85%) rename spec/{javascripts => frontend}/reports/components/modal_spec.js (100%) rename spec/{javascripts => frontend}/reports/components/summary_row_spec.js (92%) rename spec/{javascripts => frontend}/reports/components/test_issue_body_spec.js (93%) create mode 100644 spec/frontend/reports/mock_data/mock_data.js rename spec/{javascripts => frontend}/reports/mock_data/new_and_fixed_failures_report.json (100%) rename spec/{javascripts => frontend}/reports/mock_data/new_errors_report.json (100%) rename spec/{javascripts => frontend}/reports/mock_data/new_failures_report.json (100%) rename spec/{javascripts => frontend}/reports/mock_data/no_failures_report.json (100%) rename spec/{javascripts => frontend}/reports/mock_data/resolved_failures.json (100%) rename spec/{javascripts => frontend}/reports/store/actions_spec.js (97%) rename spec/{javascripts => frontend}/reports/store/mutations_spec.js (100%) rename spec/{javascripts => frontend}/settings_panels_spec.js (100%) create mode 100644 spec/frontend/sidebar/assignees_realtime_spec.js rename spec/{javascripts => frontend}/sidebar/components/time_tracking/time_tracker_spec.js (90%) create mode 100644 spec/frontend/sidebar/confidential/edit_form_buttons_spec.js create mode 100644 spec/frontend/sidebar/confidential/edit_form_spec.js delete mode 100644 spec/frontend/sidebar/confidential_edit_buttons_spec.js delete mode 100644 spec/frontend/sidebar/confidential_edit_form_buttons_spec.js create mode 100644 spec/frontend/sidebar/lock/edit_form_buttons_spec.js rename spec/{javascripts => frontend}/sidebar/lock/lock_issue_sidebar_spec.js (93%) create mode 100644 spec/frontend/sidebar/participants_spec.js create mode 100644 spec/frontend/sidebar/sidebar_mediator_spec.js create mode 100644 spec/frontend/sidebar/sidebar_move_issue_spec.js create mode 100644 spec/frontend/sidebar/sidebar_subscriptions_spec.js create mode 100644 spec/frontend/sidebar/subscriptions_spec.js create mode 100644 spec/frontend/snippets/components/__snapshots__/snippet_description_view_spec.js.snap create mode 100644 spec/frontend/snippets/components/snippet_description_view_spec.js create mode 100644 spec/frontend/static_site_editor/components/edit_area_spec.js delete mode 100644 spec/frontend/static_site_editor/components/static_site_editor_spec.js create mode 100644 spec/frontend/static_site_editor/graphql/resolvers/file_spec.js create mode 100644 spec/frontend/static_site_editor/graphql/resolvers/submit_content_changes_spec.js create mode 100644 spec/frontend/static_site_editor/pages/home_spec.js create mode 100644 spec/frontend/static_site_editor/pages/success_spec.js delete mode 100644 spec/frontend/static_site_editor/store/actions_spec.js delete mode 100644 spec/frontend/static_site_editor/store/getters_spec.js delete mode 100644 spec/frontend/static_site_editor/store/mutations_spec.js create mode 100644 spec/frontend/users_select/utils_spec.js rename spec/{javascripts => frontend}/vue_mr_widget/components/mr_widget_pipeline_container_spec.js (63%) rename spec/{javascripts => frontend}/vue_mr_widget/stores/artifacts_list/actions_spec.js (97%) rename spec/{javascripts => frontend}/vue_mr_widget/stores/mr_widget_store_spec.js (92%) rename spec/{javascripts => frontend}/vue_shared/components/ci_badge_link_spec.js (97%) rename spec/{javascripts => frontend}/vue_shared/components/ci_icon_spec.js (97%) create mode 100644 spec/frontend/vue_shared/components/content_viewer/content_viewer_spec.js create mode 100644 spec/frontend/vue_shared/components/content_viewer/lib/viewer_utils_spec.js create mode 100644 spec/frontend/vue_shared/components/content_viewer/viewers/download_viewer_spec.js create mode 100644 spec/frontend/vue_shared/components/content_viewer/viewers/markdown_viewer_spec.js rename spec/{javascripts => frontend}/vue_shared/components/diff_viewer/diff_viewer_spec.js (68%) rename spec/{javascripts => frontend}/vue_shared/components/dropdown/dropdown_button_spec.js (93%) rename spec/{javascripts => frontend}/vue_shared/components/dropdown/dropdown_hidden_input_spec.js (92%) rename spec/{javascripts => frontend}/vue_shared/components/dropdown/mock_data.js (100%) rename spec/{javascripts => frontend}/vue_shared/components/file_finder/item_spec.js (94%) rename spec/{javascripts => frontend}/vue_shared/components/filtered_search_dropdown_spec.js (97%) rename spec/{javascripts => frontend}/vue_shared/components/gl_countdown_spec.js (70%) rename spec/{javascripts => frontend}/vue_shared/components/header_ci_component_spec.js (96%) create mode 100644 spec/frontend/vue_shared/components/markdown/field_view_spec.js rename spec/{javascripts => frontend}/vue_shared/components/markdown/suggestions_spec.js (91%) rename spec/{javascripts => frontend}/vue_shared/components/markdown/toolbar_spec.js (78%) rename spec/{javascripts => frontend}/vue_shared/components/navigation_tabs_spec.js (92%) rename spec/{javascripts => frontend}/vue_shared/components/pikaday_spec.js (86%) rename spec/{javascripts => frontend}/vue_shared/components/project_avatar/default_spec.js (84%) rename spec/{javascripts => frontend}/vue_shared/components/project_selector/project_list_item_spec.js (95%) rename spec/{javascripts => frontend}/vue_shared/components/project_selector/project_selector_spec.js (77%) create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/rich_content_editor_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/toolbar_item_spec.js create mode 100644 spec/frontend/vue_shared/components/rich_content_editor/toolbar_service_spec.js rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/mock_data.js (100%) create mode 100644 spec/frontend/vue_shared/components/sidebar/labels_select_vue/label_item_spec.js rename spec/{javascripts => frontend}/vue_shared/components/stacked_progress_bar_spec.js (90%) rename spec/{javascripts => frontend}/vue_shared/components/tabs/tab_spec.js (88%) rename spec/{javascripts => frontend}/vue_shared/components/tabs/tabs_spec.js (76%) rename spec/{javascripts => frontend}/vue_shared/components/toggle_button_spec.js (92%) create mode 100644 spec/frontend_integration/.eslintrc.yml create mode 100644 spec/frontend_integration/README.md create mode 100644 spec/frontend_integration/ide/__snapshots__/ide_integration_spec.js.snap create mode 100644 spec/frontend_integration/ide/ide_integration_spec.js create mode 100644 spec/graphql/mutations/alert_management/create_alert_issue_spec.rb create mode 100644 spec/graphql/mutations/alert_management/update_alert_status_spec.rb create mode 100644 spec/graphql/mutations/branches/create_spec.rb create mode 100644 spec/graphql/mutations/design_management/delete_spec.rb create mode 100644 spec/graphql/mutations/design_management/upload_spec.rb create mode 100644 spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb create mode 100644 spec/graphql/resolvers/alert_management_alert_resolver_spec.rb create mode 100644 spec/graphql/resolvers/board_lists_resolver_spec.rb create mode 100644 spec/graphql/resolvers/branch_commit_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/design_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/designs_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/version/designs_at_version_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/version_in_collection_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/version_resolver_spec.rb create mode 100644 spec/graphql/resolvers/design_management/versions_resolver_spec.rb create mode 100644 spec/graphql/resolvers/projects_resolver_spec.rb create mode 100644 spec/graphql/resolvers/release_resolver_spec.rb create mode 100644 spec/graphql/resolvers/releases_resolver_spec.rb create mode 100644 spec/graphql/types/alert_management/alert_status_count_type_spec.rb create mode 100644 spec/graphql/types/alert_management/alert_type_spec.rb create mode 100644 spec/graphql/types/alert_management/severity_enum_spec.rb create mode 100644 spec/graphql/types/alert_management/status_enum_spec.rb create mode 100644 spec/graphql/types/board_list_type_spec.rb create mode 100644 spec/graphql/types/branch_type_spec.rb create mode 100644 spec/graphql/types/design_management/design_at_version_type_spec.rb create mode 100644 spec/graphql/types/design_management/design_collection_type_spec.rb create mode 100644 spec/graphql/types/design_management/design_type_spec.rb create mode 100644 spec/graphql/types/design_management/design_version_event_enum_spec.rb create mode 100644 spec/graphql/types/design_management/version_type_spec.rb create mode 100644 spec/graphql/types/design_management_type_spec.rb create mode 100644 spec/graphql/types/issuable_sort_enum_spec.rb create mode 100644 spec/graphql/types/release_type_spec.rb create mode 100644 spec/helpers/access_tokens_helper_spec.rb create mode 100644 spec/helpers/export_helper_spec.rb create mode 100644 spec/helpers/projects/alert_management_helper_spec.rb delete mode 100644 spec/javascripts/deploy_keys/components/action_btn_spec.js delete mode 100644 spec/javascripts/deploy_keys/components/app_spec.js delete mode 100644 spec/javascripts/deploy_keys/components/key_spec.js delete mode 100644 spec/javascripts/deploy_keys/components/keys_panel_spec.js delete mode 100644 spec/javascripts/diffs/create_diffs_store.js delete mode 100644 spec/javascripts/diffs/mock_data/diff_discussions.js delete mode 100644 spec/javascripts/diffs/mock_data/diff_file.js delete mode 100644 spec/javascripts/diffs/mock_data/diff_file_unreadable.js delete mode 100644 spec/javascripts/diffs/mock_data/diff_with_commit.js delete mode 100644 spec/javascripts/diffs/mock_data/merge_request_diffs.js delete mode 100644 spec/javascripts/dirty_submit/dirty_submit_collection_spec.js delete mode 100644 spec/javascripts/frequent_items/mock_data.js delete mode 100644 spec/javascripts/ide/components/nav_dropdown_spec.js delete mode 100644 spec/javascripts/ide/components/new_dropdown/modal_spec.js delete mode 100644 spec/javascripts/issue_show/helpers.js delete mode 100644 spec/javascripts/issue_show/mock_data.js delete mode 100644 spec/javascripts/landing_spec.js rename spec/javascripts/monitoring/components/{dashboard_resize_spec.js => dashboard_resize_browser_spec.js} (85%) delete mode 100644 spec/javascripts/notebook/cells/markdown_spec.js delete mode 100644 spec/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input_spec.js delete mode 100644 spec/javascripts/pipelines/header_component_spec.js delete mode 100644 spec/javascripts/pipelines/pipelines_actions_spec.js delete mode 100644 spec/javascripts/pipelines/pipelines_artifacts_spec.js delete mode 100644 spec/javascripts/pipelines/pipelines_spec.js delete mode 100644 spec/javascripts/pipelines/pipelines_table_spec.js delete mode 100644 spec/javascripts/pipelines/stage_spec.js delete mode 100644 spec/javascripts/pipelines/stores/pipeline.json delete mode 100644 spec/javascripts/pipelines/stores/pipeline_with_triggered.json delete mode 100644 spec/javascripts/pipelines/stores/pipeline_with_triggered_by.json delete mode 100644 spec/javascripts/pipelines/stores/pipeline_with_triggered_triggered_by.json delete mode 100644 spec/javascripts/pipelines/time_ago_spec.js delete mode 100644 spec/javascripts/prometheus_metrics/mock_data.js delete mode 100644 spec/javascripts/reports/mock_data/mock_data.js delete mode 100644 spec/javascripts/sidebar/lock/edit_form_buttons_spec.js delete mode 100644 spec/javascripts/sidebar/mock_data.js delete mode 100644 spec/javascripts/sidebar/participants_spec.js delete mode 100644 spec/javascripts/sidebar/sidebar_mediator_spec.js delete mode 100644 spec/javascripts/sidebar/sidebar_move_issue_spec.js delete mode 100644 spec/javascripts/sidebar/sidebar_subscriptions_spec.js delete mode 100644 spec/javascripts/sidebar/subscriptions_spec.js delete mode 100644 spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js delete mode 100644 spec/javascripts/vue_shared/components/user_avatar/user_avatar_svg_spec.js create mode 100644 spec/lib/api/entities/branch_spec.rb create mode 100644 spec/lib/api/entities/design_management/design_spec.rb create mode 100644 spec/lib/api/entities/project_repository_storage_move_spec.rb create mode 100644 spec/lib/api/entities/snippet_spec.rb create mode 100644 spec/lib/banzai/reference_parser/design_parser_spec.rb create mode 100644 spec/lib/declarative_policy_spec.rb create mode 100644 spec/lib/gitlab/alert_management/alert_params_spec.rb create mode 100644 spec/lib/gitlab/alert_management/alert_status_counts_spec.rb create mode 100644 spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb create mode 100644 spec/lib/gitlab/background_migration/backfill_environment_id_deployment_merge_requests_spec.rb create mode 100644 spec/lib/gitlab/chat/responder/mattermost_spec.rb create mode 100644 spec/lib/gitlab/ci/parsers/accessibility/pa11y_spec.rb create mode 100644 spec/lib/gitlab/ci/parsers/terraform/tfplan_spec.rb create mode 100644 spec/lib/gitlab/ci/reports/accessibility_reports_comparer_spec.rb create mode 100644 spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb create mode 100644 spec/lib/gitlab/ci/reports/terraform_reports_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/Jobs/browser_performance_testing_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/Jobs/build_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/config_checker/external_database_checker_spec.rb delete mode 100644 spec/lib/gitlab/cycle_analytics/group_stage_summary_spec.rb create mode 100644 spec/lib/gitlab/cycle_analytics/summary/value_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning_migration_helpers/partitioned_foreign_key_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning_migration_helpers_spec.rb create mode 100644 spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb create mode 100644 spec/lib/gitlab/git_access_design_spec.rb create mode 100644 spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb create mode 100644 spec/lib/gitlab/import_export/design_repo_restorer_spec.rb create mode 100644 spec/lib/gitlab/import_export/design_repo_saver_spec.rb create mode 100644 spec/lib/gitlab/import_export/group/tree_restorer_spec.rb create mode 100644 spec/lib/gitlab/import_export/group/tree_saver_spec.rb create mode 100644 spec/lib/gitlab/jira_import/handle_labels_service_spec.rb create mode 100644 spec/lib/gitlab/jira_import/metadata_collector_spec.rb create mode 100644 spec/lib/gitlab/jira_import/user_mapper_spec.rb create mode 100644 spec/lib/gitlab/kubernetes/helm/parsers/list_v2_spec.rb create mode 100644 spec/lib/gitlab/kubernetes/network_policy_spec.rb create mode 100644 spec/lib/gitlab/logging/cloudflare_helper_spec.rb delete mode 100644 spec/lib/gitlab/metrics/metric_spec.rb create mode 100644 spec/lib/gitlab/metrics/samplers/database_sampler_spec.rb delete mode 100644 spec/lib/gitlab/metrics/samplers/influx_sampler_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb create mode 100644 spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb create mode 100644 spec/lib/gitlab/utils/measuring_spec.rb create mode 100644 spec/lib/gitlab/with_request_store_spec.rb create mode 100644 spec/lib/gitlab/x509/tag_spec.rb delete mode 100644 spec/lib/quality/helm_client_spec.rb create mode 100644 spec/lib/system_check/app/hashed_storage_all_projects_check_spec.rb create mode 100644 spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb create mode 100644 spec/mailers/emails/groups_spec.rb create mode 100644 spec/migrations/20200511145545_change_variable_interpolation_format_in_common_metrics_spec.rb create mode 100644 spec/migrations/backfill_snippet_repositories_spec.rb create mode 100644 spec/migrations/cleanup_optimistic_locking_nulls_pt2_fixed_spec.rb create mode 100644 spec/migrations/cleanup_projects_with_missing_namespace_spec.rb create mode 100644 spec/migrations/fill_file_store_ci_job_artifacts_spec.rb create mode 100644 spec/migrations/fill_file_store_lfs_objects_spec.rb create mode 100644 spec/migrations/fill_store_uploads_spec.rb create mode 100644 spec/migrations/remove_additional_application_settings_rows_spec.rb create mode 100644 spec/migrations/remove_deprecated_jenkins_service_records_spec.rb create mode 100644 spec/migrations/remove_orphaned_invited_members_spec.rb create mode 100644 spec/models/alert_management/alert_spec.rb rename spec/models/ci/{daily_report_result_spec.rb => daily_build_group_report_result_spec.rb} (69%) create mode 100644 spec/models/ci/freeze_period_spec.rb create mode 100644 spec/models/ci/freeze_period_status_spec.rb create mode 100644 spec/models/ci/instance_variable_spec.rb create mode 100644 spec/models/concerns/has_user_type_spec.rb delete mode 100644 spec/models/cycle_analytics/group_level_spec.rb create mode 100644 spec/models/design_management/action_spec.rb create mode 100644 spec/models/design_management/design_action_spec.rb create mode 100644 spec/models/design_management/design_at_version_spec.rb create mode 100644 spec/models/design_management/design_collection_spec.rb create mode 100644 spec/models/design_management/design_spec.rb create mode 100644 spec/models/design_management/repository_spec.rb create mode 100644 spec/models/design_management/version_spec.rb create mode 100644 spec/models/design_user_mention_spec.rb create mode 100644 spec/models/iteration_spec.rb create mode 100644 spec/models/metrics/users_starred_dashboard_spec.rb create mode 100644 spec/models/namespace/root_storage_size_spec.rb create mode 100644 spec/models/performance_monitoring/prometheus_dashboard_spec.rb create mode 100644 spec/models/performance_monitoring/prometheus_metric_spec.rb create mode 100644 spec/models/performance_monitoring/prometheus_panel_group_spec.rb create mode 100644 spec/models/performance_monitoring/prometheus_panel_spec.rb create mode 100644 spec/models/plan_limits_spec.rb create mode 100644 spec/models/plan_spec.rb create mode 100644 spec/models/project_repository_storage_move_spec.rb create mode 100644 spec/models/project_services/webex_teams_service_spec.rb create mode 100644 spec/models/resource_state_event_spec.rb create mode 100644 spec/models/state_note_spec.rb delete mode 100644 spec/models/user_type_enums_spec.rb create mode 100644 spec/policies/alert_management/alert_policy_spec.rb create mode 100644 spec/policies/design_management/design_policy_spec.rb create mode 100644 spec/requests/api/admin/ci/variables_spec.rb create mode 100644 spec/requests/api/freeze_periods_spec.rb create mode 100644 spec/requests/api/graphql/boards/board_lists_query_spec.rb create mode 100644 spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb create mode 100644 spec/requests/api/graphql/mutations/branches/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/design_management/delete_spec.rb create mode 100644 spec/requests/api/graphql/mutations/design_management/upload_spec.rb create mode 100644 spec/requests/api/graphql/mutations/metrics/dashboard/annotations/create_spec.rb create mode 100644 spec/requests/api/graphql/project/alert_management/alert_status_counts_spec.rb create mode 100644 spec/requests/api/graphql/project/alert_management/alerts_spec.rb create mode 100644 spec/requests/api/graphql/project/issue/design_collection/version_spec.rb create mode 100644 spec/requests/api/graphql/project/issue/design_collection/versions_spec.rb create mode 100644 spec/requests/api/graphql/project/issue/designs/designs_spec.rb create mode 100644 spec/requests/api/graphql/project/issue/designs/notes_spec.rb create mode 100644 spec/requests/api/graphql/project/issue_spec.rb create mode 100644 spec/requests/api/graphql/query_spec.rb create mode 100644 spec/requests/api/metrics/user_starred_dashboards_spec.rb create mode 100644 spec/requests/api/project_repository_storage_moves_spec.rb create mode 100644 spec/rubocop/cop/avoid_keyword_arguments_in_sidekiq_workers_spec.rb create mode 100644 spec/rubocop/cop/gitlab/change_timezone_spec.rb create mode 100644 spec/rubocop/cop/gitlab/json_spec.rb delete mode 100644 spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb create mode 100644 spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb create mode 100644 spec/rubocop/cop/migration/prevent_strings_spec.rb delete mode 100644 spec/rubocop/cop/migration/reversible_add_column_with_default_spec.rb create mode 100644 spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb delete mode 100644 spec/rubocop/cop/migration/with_lock_retries_without_ddl_transaction_spec.rb create mode 100644 spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb create mode 100644 spec/rubocop/cop/rspec/empty_line_after_shared_example_spec.rb create mode 100644 spec/serializers/accessibility_error_entity_spec.rb create mode 100644 spec/serializers/accessibility_reports_comparer_entity_spec.rb create mode 100644 spec/serializers/accessibility_reports_comparer_serializer_spec.rb create mode 100644 spec/serializers/ci/dag_job_entity_spec.rb create mode 100644 spec/serializers/ci/dag_job_group_entity_spec.rb create mode 100644 spec/serializers/ci/dag_pipeline_entity_spec.rb create mode 100644 spec/serializers/ci/dag_pipeline_serializer_spec.rb create mode 100644 spec/serializers/ci/dag_stage_entity_spec.rb create mode 100644 spec/serializers/service_event_entity_spec.rb create mode 100644 spec/services/alert_management/create_alert_issue_service_spec.rb create mode 100644 spec/services/alert_management/process_prometheus_alert_service_spec.rb create mode 100644 spec/services/alert_management/update_alert_status_service_spec.rb create mode 100644 spec/services/authorized_project_update/project_create_service_spec.rb create mode 100644 spec/services/base_container_service_spec.rb create mode 100644 spec/services/ci/compare_accessibility_reports_service_spec.rb rename spec/services/ci/{daily_report_result_service_spec.rb => daily_build_group_report_result_service_spec.rb} (79%) create mode 100644 spec/services/ci/generate_terraform_reports_service_spec.rb create mode 100644 spec/services/ci/pipeline_processing/shared_processing_service_tests_with_yaml.rb create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_allow_failure_test_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_needs_test.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_needs_test_when_always.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_other_build_succeeds.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_other_build_succeeds_deploy_always.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_allow_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_always.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_build_succeeds_test_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_builds_succeed_test_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_builds_succeed_test_on_failure_deploy_always.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_allow_failure_true.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_deploy_always.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_deploy_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_other_test_succeeds.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_on_failure_with_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/dag_test_on_failure_with_success.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_build_allow_failure_test_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_build_fails.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_build_fails_test_allow_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_false.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true_deploy_on_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_test_on_failure_with_failure.yml create mode 100644 spec/services/ci/pipeline_processing/test_cases/stage_test_on_failure_with_success.yml create mode 100644 spec/services/ci/update_instance_variables_service_spec.rb delete mode 100644 spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb create mode 100644 spec/services/clusters/parse_cluster_applications_artifact_service_spec.rb create mode 100644 spec/services/design_management/delete_designs_service_spec.rb create mode 100644 spec/services/design_management/design_user_notes_count_service_spec.rb create mode 100644 spec/services/design_management/generate_image_versions_service_spec.rb create mode 100644 spec/services/design_management/save_designs_service_spec.rb create mode 100644 spec/services/git/wiki_push_service/change_spec.rb create mode 100644 spec/services/git/wiki_push_service_spec.rb create mode 100644 spec/services/metrics/users_starred_dashboards/create_service_spec.rb create mode 100644 spec/services/metrics/users_starred_dashboards/delete_service_spec.rb create mode 100644 spec/services/namespaces/check_storage_size_service_spec.rb rename spec/services/{resources/create_access_token_service_spec.rb => resource_access_tokens/create_service_spec.rb} (87%) create mode 100644 spec/services/resource_access_tokens/revoke_service_spec.rb rename spec/services/spam/{spam_check_service_spec.rb => spam_action_service_spec.rb} (60%) create mode 100644 spec/services/spam/spam_verdict_service_spec.rb create mode 100644 spec/services/system_notes/design_management_service_spec.rb delete mode 100644 spec/services/template_engines/liquid_service_spec.rb create mode 100644 spec/services/wiki_pages/event_create_service_spec.rb create mode 100644 spec/support/helpers/concurrent_helpers.rb create mode 100644 spec/support/helpers/design_management_test_helpers.rb create mode 100644 spec/support/kubeclient.rb delete mode 100644 spec/support/rails/test_case_patch.rb create mode 100644 spec/support/renameable_upload.rb create mode 100644 spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb create mode 100644 spec/support/shared_contexts/design_management_shared_contexts.rb create mode 100644 spec/support/shared_contexts/issuable/merge_request_shared_context.rb create mode 100644 spec/support/shared_contexts/issuable/project_shared_context.rb create mode 100644 spec/support/shared_contexts/lib/gitlab/import_export/project/rake_task_object_storage_shared_context.rb create mode 100644 spec/support/shared_contexts/spam_constants.rb create mode 100644 spec/support/shared_examples/controllers/known_sign_in_shared_examples.rb create mode 100644 spec/support/shared_examples/graphql/design_fields_shared_examples.rb create mode 100644 spec/support/shared_examples/graphql/sorted_paginated_query_shared_examples.rb create mode 100644 spec/support/shared_examples/helm_commands_shared_examples.rb delete mode 100644 spec/support/shared_examples/lib/gitlab/helm_generated_script_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/import_export/project/rake_task_object_storage_shared_examples.rb create mode 100644 spec/support/shared_examples/models/concerns/has_wiki_shared_examples.rb create mode 100644 spec/support/shared_examples/models/concerns/limitable_shared_examples.rb create mode 100644 spec/support/shared_examples/models/concerns/timebox_shared_examples.rb create mode 100644 spec/support/shared_examples/models/wiki_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/graphql/mutations/snippets_shared_examples.rb create mode 100644 spec/support/shared_examples/requires_variables_shared_example.rb create mode 100644 spec/support/shared_examples/services/measurable_service_shared_examples.rb create mode 100644 spec/support/shared_examples/services/snippets_shared_examples.rb create mode 100644 spec/support/shared_examples/services/wiki_pages/create_service_shared_examples.rb create mode 100644 spec/support/shared_examples/services/wiki_pages/destroy_service_shared_examples.rb create mode 100644 spec/support/shared_examples/services/wiki_pages/update_service_shared_examples.rb create mode 100644 spec/support/shared_examples/services/wikis/create_attachment_service_shared_examples.rb delete mode 100644 spec/support/shared_examples/tasks/gitlab/import_export/measurable_shared_examples.rb create mode 100644 spec/support/shared_examples/workers/authorized_projects_worker_shared_example.rb create mode 100644 spec/support/shared_examples/workers/reactive_cacheable_shared_examples.rb create mode 100644 spec/support/unicorn.rb create mode 100644 spec/support_specs/helpers/stub_feature_flags_spec.rb create mode 100644 spec/tasks/gitlab/snippets_rake_spec.rb create mode 100644 spec/uploaders/design_management/design_v432x230_uploader_spec.rb create mode 100644 spec/validators/cron_freeze_period_timezone_validator_spec.rb create mode 100644 spec/validators/cron_validator_spec.rb create mode 100644 spec/views/help/show.html.haml_spec.rb create mode 100644 spec/workers/authorized_project_update/project_create_worker_spec.rb create mode 100644 spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb rename spec/workers/ci/{daily_report_results_worker_spec.rb => daily_build_group_report_results_worker_spec.rb} (76%) create mode 100644 spec/workers/design_management/new_version_worker_spec.rb create mode 100644 spec/workers/external_service_reactive_caching_worker_spec.rb create mode 100644 spec/workers/x509_issuer_crl_check_worker_spec.rb diff --git a/.eslintignore b/.eslintignore index 9a5e15c86a..f364771e54 100644 --- a/.eslintignore +++ b/.eslintignore @@ -9,6 +9,6 @@ /scripts/ /tmp/ /vendor/ -jest.config.js +jest.config.*.js karma.config.js webpack.config.js diff --git a/.eslintrc.yml b/.eslintrc.yml index 0639228fe5..f8bc2a3ae9 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -22,17 +22,16 @@ rules: - allow: - __ - _links - # Disabled for now, to make the airbnb-base 12.1.0 -> 13.1.0 update smoother - no-else-return: - - error - - allowElseIf: true import/no-unresolved: - error - ignore: # https://gitlab.com/gitlab-org/gitlab/issues/38226 - '^ee_component/' - import/no-useless-path-segments: off import/order: off + # Disabled for now, to make the airbnb-base 12.1.0 -> 13.1.0 update smoother + no-else-return: + - error + - allowElseIf: true lines-between-class-members: off # Disabled for now, to make the plugin-vue 4.5 -> 5.0 update smoother vue/no-confusing-v-for-v-if: error @@ -45,8 +44,6 @@ rules: no-jquery/no-serialize: error promise/always-return: off promise/no-callback-in-promise: off - # Make update to eslint@6 smoother: - prefer-object-spread: off overrides: - files: - '**/spec/**/*' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9e808cc7a9..21dfd6563e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,7 @@ -image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" - stages: - sync - prepare + - build-images - fixtures - test - post-test @@ -16,6 +15,7 @@ stages: # in cases where jobs require Docker-in-Docker, the job # definition must be extended with `.use-docker-in-docker` default: + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-9.6-graphicsmagick-1.3.34" tags: - gitlab-org # All jobs are interruptible by default @@ -25,10 +25,17 @@ workflow: rules: # If `$FORCE_GITLAB_CI` is set, create a pipeline. - if: '$FORCE_GITLAB_CI' + # As part of the process of creating RCs automatically, we update stable + # branches with the changes of the most recent production deployment. The + # merge requests used for this merge a branch release-tools/X into a stable + # branch. For these merge requests we don't want to run any pipelines, as + # they serve no purpose and will run anyway when the changes are merged. + - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^release-tools\/\d+\.\d+\.\d+-rc\d+$/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^[\d-]+-stable(-ee)?$/ && $CI_PROJECT_PATH == "gitlab-org/gitlab"' + when: never # For merge requests, create a pipeline. - if: '$CI_MERGE_REQUEST_IID' # For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.). - - if: '$CI_COMMIT_BRANCH == "master"' + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # For tags, create a pipeline. - if: '$CI_COMMIT_TAG' # If `$GITLAB_INTERNAL` isn't set, don't create a pipeline. diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 28ad2b4192..e71e74fd4d 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -7,8 +7,12 @@ *.rake @gitlab-org/maintainers/rails-backend # Technical writing team are the default reviewers for all markdown docs -*.md @gl-docsteam /doc/ @gl-docsteam +# Dev and Doc guidelines +/doc/development/ @marcia @mjang1 +/doc/development/documentation/ @mikelewis +/doc/ci @marcel.amirault @sselhorn +/doc/.linting @marcel.amirault @eread @aqualls @mikelewis # Frontend maintainers should see everything in `app/assets/` *.scss @annabeldunstone @gitlab-org/maintainers/frontend @@ -33,7 +37,7 @@ /ee/app/finders/ @gitlab-org/maintainers/database # Feature specific owners -/ee/lib/gitlab/code_owners/ @reprazent +/ee/lib/gitlab/code_owners/ @reprazent @kerrizor /ee/lib/ee/gitlab/auth/ldap/ @dblessing @mkozono /lib/gitlab/auth/ldap/ @dblessing @mkozono /lib/gitlab/ci/templates/ @nolith @zj diff --git a/.gitlab/ci/cache-repo.gitlab-ci.yml b/.gitlab/ci/cache-repo.gitlab-ci.yml index ecbed0ed6c..a091785dec 100644 --- a/.gitlab/ci/cache-repo.gitlab-ci.yml +++ b/.gitlab/ci/cache-repo.gitlab-ci.yml @@ -21,7 +21,6 @@ cache-repo: extends: .cache-repo:rules image: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine stage: sync - allow_failure: true variables: GIT_STRATEGY: none TAR_FILENAME: /tmp/gitlab-master.tar diff --git a/.gitlab/ci/cng.gitlab-ci.yml b/.gitlab/ci/cng.gitlab-ci.yml index 2450e34656..d7699de74e 100644 --- a/.gitlab/ci/cng.gitlab-ci.yml +++ b/.gitlab/ci/cng.gitlab-ci.yml @@ -3,7 +3,6 @@ cloud-native-image: image: ruby:2.6-alpine dependencies: [] stage: post-test - allow_failure: true variables: GIT_DEPTH: "1" script: diff --git a/.gitlab/ci/dev-fixtures.gitlab-ci.yml b/.gitlab/ci/dev-fixtures.gitlab-ci.yml index 27ceb6f37d..fc3678a7d1 100644 --- a/.gitlab/ci/dev-fixtures.gitlab-ci.yml +++ b/.gitlab/ci/dev-fixtures.gitlab-ci.yml @@ -1,11 +1,11 @@ .run-dev-fixtures: extends: - .default-retry - - .default-cache + - .rails-cache - .default-before_script - .use-pg11 stage: test - needs: ["setup-test-env pg11"] + needs: ["setup-test-env"] variables: FIXTURE_PATH: "db/fixtures/development" SEED_CYCLE_ANALYTICS: "true" @@ -19,8 +19,9 @@ run-dev-fixtures: - .run-dev-fixtures - .dev-fixtures:rules:ee-and-foss script: - - scripts/gitaly-test-spawn - - RAILS_ENV=test bundle exec rake db:seed_fu + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - run_timed_command "RAILS_ENV=test bundle exec rake db:seed_fu" run-dev-fixtures-ee: extends: @@ -28,6 +29,7 @@ run-dev-fixtures-ee: - .dev-fixtures:rules:ee-only - .use-pg11-ee script: - - scripts/gitaly-test-spawn + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" - cp ee/db/fixtures/development/* $FIXTURE_PATH - - RAILS_ENV=test bundle exec rake db:seed_fu + - run_timed_command "RAILS_ENV=test bundle exec rake db:seed_fu" diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index b8a66decbb..50dbef4459 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -2,7 +2,6 @@ extends: - .default-retry - .docs:rules:review-docs - allow_failure: true image: ruby:2.6-alpine stage: review dependencies: [] @@ -68,7 +67,7 @@ graphql-reference-verify: - .docs:rules:graphql-reference-verify - .use-pg11 stage: test - needs: ["setup-test-env pg11"] + needs: ["setup-test-env"] script: - bundle exec rake gitlab:graphql:check_docs - bundle exec rake gitlab:graphql:check_schema diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 2b22162b0c..6e9119f295 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -15,8 +15,7 @@ - .default-retry - .default-before_script - .assets-compile-cache - - .use-docker-in-docker - image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-graphicsmagick-1.3.34-docker-19.03.1 + image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-graphicsmagick-1.3.34-docker-19.03.1 stage: prepare variables: NODE_ENV: "production" @@ -34,20 +33,16 @@ paths: - webpack-report/ - assets-compile.log - # We consume these files in GitLab UI for integration tests: - # https://gitlab.com/gitlab-org/gitlab-ui/-/blob/e88493b3c855aea30bf60baee692a64606b0eb1e/.storybook/preview-head.pug#L1 - - public/assets/application-*.css - - public/assets/application-*.css.gz + # These assets are used in multiple locations: + # - in `build-assets-image` job to create assets image for packaging systems + # - GitLab UI for integration tests: https://gitlab.com/gitlab-org/gitlab-ui/-/blob/e88493b3c855aea30bf60baee692a64606b0eb1e/.storybook/preview-head.pug#L1 + - public/assets when: always script: - node --version - retry yarn install --frozen-lockfile --production --cache-folder .yarn-cache --prefer-offline - free -m - time bin/rake gitlab:assets:compile > assets-compile.log 2>&1 - # 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 - - time scripts/build_assets_image - scripts/clean-old-cached-assets - rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here @@ -65,6 +60,20 @@ gitlab:assets:compile pull-cache: cache: policy: pull +build-assets-image: + extends: + - .use-kaniko + - .frontend:rules:gitlab-assets-compile-pull-cache + stage: build-images + needs: ["gitlab:assets:compile pull-cache"] + 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 + - scripts/build_assets_image + .compile-assets-metadata: extends: - .default-retry @@ -127,16 +136,15 @@ compile-assets pull-cache as-if-foss: .frontend-fixtures-base: extends: - .default-retry - - .default-cache + - .rails-cache - .default-before_script - .use-pg11 stage: fixtures - needs: ["setup-test-env pg11", "compile-assets pull-cache"] + needs: ["setup-test-env", "compile-assets pull-cache"] script: - - date - - scripts/gitaly-test-spawn - - date - - bundle exec rake frontend:fixtures + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - run_timed_command "bundle exec rake frontend:fixtures" artifacts: name: frontend-fixtures expire_in: 31d @@ -154,7 +162,7 @@ frontend-fixtures: frontend-fixtures-as-if-foss: extends: - .frontend-fixtures-base - - .frontend:rules:default-frontend-jobs-no-foss + - .frontend:rules:default-frontend-jobs-as-if-foss - .as-if-foss .frontend-job-base: @@ -197,7 +205,7 @@ karma: karma-as-if-foss: extends: - .karma-base - - .frontend:rules:default-frontend-jobs-no-foss + - .frontend:rules:default-frontend-jobs-as-if-foss - .as-if-foss needs: ["frontend-fixtures-as-if-foss"] @@ -229,10 +237,24 @@ jest: junit: junit_jest.xml parallel: 2 +jest-integration: + extends: + - .frontend-job-base + - .frontend:rules:default-frontend-jobs + script: + - date + - yarn jest:integration --ci + needs: ["frontend-fixtures"] + cache: + key: jest-integration + paths: + - tmp/cache/jest/ + policy: pull-push + jest-as-if-foss: extends: - .jest-base - - .frontend:rules:default-frontend-jobs-no-foss + - .frontend:rules:default-frontend-jobs-as-if-foss - .as-if-foss needs: ["frontend-fixtures-as-if-foss"] cache: @@ -241,11 +263,13 @@ jest-as-if-foss: coverage-frontend: extends: - .default-retry - - .frontend:rules:default-frontend-jobs-no-foss + - .yarn-cache + - .frontend:rules:ee-mr-and-master-only needs: ["jest"] stage: post-test before_script: - - yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline + - source scripts/utils.sh + - retry yarn install --frozen-lockfile script: - yarn node scripts/frontend/merge_coverage_frontend.js artifacts: @@ -254,8 +278,7 @@ coverage-frontend: paths: - coverage-frontend/ cache: - paths: - - .yarn-cache/ + policy: pull .qa-frontend-node: extends: @@ -279,22 +302,32 @@ qa-frontend-node:10: image: node:dubnium qa-frontend-node:latest: - extends: .qa-frontend-node + extends: + - .qa-frontend-node + - .frontend:rules:qa-frontend-node-latest image: node:latest - allow_failure: true webpack-dev-server: extends: - .default-retry - - .default-cache - .frontend:rules:default-frontend-jobs stage: test - needs: ["setup-test-env pg11", "compile-assets pull-cache"] + needs: [] variables: WEBPACK_MEMORY_TEST: "true" WEBPACK_VENDOR_DLL: "true" + cache: + key: + files: + - yarn.lock + prefix: "v1" + paths: + - node_modules/ + - tmp/cache/webpack-dlls/ script: - - yarn webpack-vendor + - source scripts/utils.sh + - retry yarn install --frozen-lockfile + - retry yarn webpack-vendor - node --expose-gc node_modules/.bin/webpack-dev-server --config config/webpack.config.js artifacts: name: webpack-dev-server diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 66b7c47efc..e6619ff2b6 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -21,7 +21,7 @@ # Jobs that only need to pull cache .default-cache: cache: - key: "debian-stretch-ruby-2.6.5-pg11-node-12.x" + key: "debian-stretch-ruby-2.6.6-pg11-node-12.x" paths: - .go/pkg/mod - vendor/ruby @@ -29,65 +29,39 @@ - vendor/gitaly-ruby policy: pull -.use-pg9: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-9.6-graphicsmagick-1.3.34" - services: - - name: postgres:9.6.17 - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - - name: redis:alpine - variables: - POSTGRES_HOST_AUTH_METHOD: trust +.rails-cache: cache: - key: "debian-stretch-ruby-2.6.5-pg9-node-12.x" + key: + files: + - Gemfile.lock + - GITALY_SERVER_VERSION + prefix: "ruby-go-cache-v1" + paths: + - vendor/ruby + - vendor/gitaly-ruby + - .go/pkg/mod + policy: pull -.use-pg10: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" - services: - - name: postgres:10.12 - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - - name: redis:alpine - variables: - POSTGRES_HOST_AUTH_METHOD: trust +.yarn-cache: cache: - key: "debian-stretch-ruby-2.6.5-pg10-node-12.x" + key: + files: + - yarn.lock + prefix: "v1" + paths: + - node_modules/ .use-pg11: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34" + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34" services: - name: postgres:11.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine variables: POSTGRES_HOST_AUTH_METHOD: trust - cache: - key: "debian-stretch-ruby-2.6.5-pg11-node-12.x" - -.use-pg9-ee: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-9.6-graphicsmagick-1.3.34" - services: - - name: postgres:9.6.17 - 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 - cache: - key: "debian-stretch-ruby-2.6.5-pg9-node-12.x" - -.use-pg10-ee: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" - services: - - name: postgres:10.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 - cache: - key: "debian-stretch-ruby-2.6.5-pg10-node-12.x" .use-pg11-ee: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34" + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.26-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34" services: - name: postgres:11.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] @@ -95,15 +69,13 @@ - name: elasticsearch:6.4.2 variables: POSTGRES_HOST_AUTH_METHOD: trust - cache: - key: "debian-stretch-ruby-2.6.5-pg11-node-12.x" -# Pin kaniko to v0.16.0 due to https://github.com/GoogleContainerTools/kaniko/issues/1162 .use-kaniko: image: - name: gcr.io/kaniko-project/executor:debug-v0.16.0 + name: gcr.io/kaniko-project/executor:debug-v0.20.0 entrypoint: [""] before_script: + - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json .as-if-foss: diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml index af75ff257e..79dfc88d13 100644 --- a/.gitlab/ci/memory.gitlab-ci.yml +++ b/.gitlab/ci/memory.gitlab-ci.yml @@ -8,7 +8,7 @@ memory-static: extends: .only-code-memory-job-base stage: test - needs: ["setup-test-env pg11"] + needs: ["setup-test-env"] variables: SETUP_DB: "false" script: @@ -28,6 +28,7 @@ memory-static: - tmp/memory_*.txt reports: metrics: tmp/memory_metrics.txt + expire_in: 31d # Show memory usage caused by invoking require per gem. # Unlike `memory-static`, it hits the app with one request to ensure that any last minute require-s have been called. @@ -38,7 +39,7 @@ memory-on-boot: - .only-code-memory-job-base - .use-pg11 stage: test - needs: ["setup-test-env pg11", "compile-assets pull-cache"] + needs: ["setup-test-env", "compile-assets pull-cache"] variables: NODE_ENV: "production" RAILS_ENV: "production" @@ -54,3 +55,4 @@ memory-on-boot: - tmp/memory_*.txt reports: metrics: tmp/memory_on_boot_metrics.txt + expire_in: 31d diff --git a/.gitlab/ci/pages.gitlab-ci.yml b/.gitlab/ci/pages.gitlab-ci.yml index 38d79ddb09..218ec7043d 100644 --- a/.gitlab/ci/pages.gitlab-ci.yml +++ b/.gitlab/ci/pages.gitlab-ci.yml @@ -15,3 +15,4 @@ pages: artifacts: paths: - public + expire_in: 31d diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index 8a8f66a464..40ef13dd92 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -23,7 +23,7 @@ qa:internal: qa:internal-as-if-foss: extends: - .qa-job-base - - .qa:rules:ee-only + - .qa:rules:as-if-foss - .as-if-foss script: - bundle exec rspec @@ -38,7 +38,7 @@ qa:selectors: qa:selectors-as-if-foss: extends: - qa:selectors - - .qa:rules:ee-only + - .qa:rules:as-if-foss - .as-if-foss .package-and-qa-base: @@ -58,6 +58,5 @@ package-and-qa: needs: - job: build-qa-image artifacts: false - - job: gitlab:assets:compile pull-cache + - job: build-assets-image artifacts: false - allow_failure: true diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 28ec96b838..e8087aebce 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -1,48 +1,43 @@ .rails:needs:setup-and-assets: - needs: ["setup-test-env pg11", "compile-assets pull-cache"] + needs: ["setup-test-env", "compile-assets pull-cache"] .rails-job-base: extends: - .default-retry - - .default-cache - .default-before_script + - .rails-cache -#################### -# EE and FOSS jobs # -.base-setup-test-env: +####################################################### +# EE/FOSS: default refs (MRs, master, schedules) jobs # +setup-test-env: extends: - .rails-job-base + - .rails:rules:default-refs-code-backstage-qa + - .use-pg11 stage: prepare + variables: + GITLAB_TEST_EAGER_LOAD: "0" script: - - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' - - scripts/gitaly-test-build # Do not use 'bundle exec' here + - run_timed_command "bundle exec ruby -I. -e 'require \"config/environment\"; TestEnv.init'" + - run_timed_command "scripts/gitaly-test-build" # Do not use 'bundle exec' here + - rm tmp/tests/gitaly/.ruby-bundle # This file prevents gems from being installed even if vendor/gitaly-ruby is missing artifacts: expire_in: 7d paths: - - tmp/tests - config/secrets.yml - - vendor/gitaly-ruby + - tmp/tests/gitaly + - tmp/tests/gitlab-elasticsearch-indexer + - tmp/tests/gitlab-shell + - tmp/tests/gitlab-test-fork + - tmp/tests/gitlab-test-fork_bare + - tmp/tests/gitlab-test + - tmp/tests/gitlab-workhorse + - tmp/tests/repositories + - tmp/tests/second_storage + when: always cache: policy: pull-push -setup-test-env pg11: - extends: - - .base-setup-test-env - - .rails:rules:default-refs-code-backstage-qa - - .use-pg11 - -setup-test-env pg10: - extends: - - .base-setup-test-env - - .rails:rules:master-refs-code-backstage - - .use-pg10 - -setup-test-env pg9: - extends: - - .base-setup-test-env - - .rails:rules:nightly-master-refs-code-backstage - - .use-pg9 - static-analysis: extends: - .rails-job-base @@ -55,7 +50,7 @@ static-analysis: script: - scripts/static-analysis cache: - key: "ruby-2.6.5-pg11-rubocop" + key: "ruby-2.6.6-pg11-rubocop" paths: - vendor/ruby - tmp/rubocop_cache @@ -64,8 +59,8 @@ static-analysis: downtime_check: extends: - .rails-job-base - - .rails:needs:setup-and-assets - .rails:rules:downtime_check + needs: ["setup-test-env"] stage: test variables: SETUP_DB: "false" @@ -75,8 +70,10 @@ downtime_check: .rspec-base: extends: .rails-job-base stage: test - needs: ["setup-test-env pg11", "retrieve-tests-metadata", "compile-assets pull-cache"] + needs: ["setup-test-env", "retrieve-tests-metadata", "compile-assets pull-cache"] 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: @@ -89,7 +86,7 @@ downtime_check: - rspec_profiling/ - tmp/capybara/ - tmp/memory_test/ - - junit_rspec.xml + - log/*.log reports: junit: junit_rspec.xml @@ -101,6 +98,8 @@ downtime_check: .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" @@ -133,7 +132,7 @@ rspec fast_spec_helper: - .rails:rules:ee-and-foss - .use-pg11 stage: test - needs: ["setup-test-env pg11"] + needs: ["setup-test-env"] db:migrate:reset: extends: .db-job-base @@ -141,28 +140,28 @@ db:migrate:reset: - bundle exec rake db:migrate:reset db:check-schema: - extends: .db-job-base + extends: + - .db-job-base + - .rails:rules:ee-mr-and-master-only script: - source scripts/schema_changed.sh -db:migrate-from-v11.11.0: +db:migrate-from-v12.10.0: extends: .db-job-base variables: SETUP_DB: "false" script: - - export PROJECT_TO_CHECKOUT="gitlab-foss" - - export TAG_TO_CHECKOUT="v11.11.0" - - '[[ ! -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"' - - '[[ ! -d "ee/" ]] || export TAG_TO_CHECKOUT="v11.11.0-ee"' + - export PROJECT_TO_CHECKOUT="gitlab" + - export TAG_TO_CHECKOUT="v12.10.0-ee" + - '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab-foss"' + - '[[ -d "ee/" ]] || export TAG_TO_CHECKOUT="v12.10.0"' - git fetch https://gitlab.com/gitlab-org/$PROJECT_TO_CHECKOUT.git $TAG_TO_CHECKOUT - git checkout -f FETCH_HEAD - - sed -i "s/gem 'oj', '~> 2.17.4'//" Gemfile - - sed -i "s/gem 'bootsnap', '~> 1.0.0'/gem 'bootsnap'/" Gemfile - bundle update google-protobuf grpc bootsnap - bundle install $BUNDLE_INSTALL_FLAGS - date - cp config/gitlab.yml.example config/gitlab.yml - - bundle exec rake db:drop db:create db:schema:load db:seed_fu + - bundle exec rake db:drop db:create db:structure:load db:seed_fu - date - git checkout -f $CI_COMMIT_SHA - bundle install $BUNDLE_INSTALL_FLAGS @@ -186,23 +185,24 @@ gitlab:setup: # db/fixtures/development/04_project.rb thanks to SIZE=1 below - git clone https://gitlab.com/gitlab-org/gitlab-test.git /home/git/repositories/gitlab-org/gitlab-test.git - - scripts/gitaly-test-spawn + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" - force=yes SIZE=1 FIXTURE_PATH="db/fixtures/development" bundle exec rake gitlab:setup artifacts: when: on_failure expire_in: 1d paths: - - log/development.log + - log/*.log rspec:coverage: extends: - .rails-job-base - - .rails:rules:ee-only + - .rails:rules:ee-mr-and-master-only stage: post-test # We cannot use needs since it would mean needing 84 jobs (since most are parallelized) # so we use `dependencies` here. dependencies: - - setup-test-env pg11 + - setup-test-env - rspec migration pg11 - rspec unit pg11 - rspec integration pg11 @@ -231,104 +231,11 @@ rspec:coverage: - coverage/index.html - coverage/assets/ - tmp/memory_test/ -# EE and FOSS jobs # -#################### +# EE/FOSS: default refs (MRs, master, schedules) jobs # +####################################################### -#################### -# master-only jobs # -.rspec-base-pg10: - extends: - - .rspec-base - - .rails:rules:master-refs-code-backstage - - .use-pg10 - needs: ["setup-test-env pg10", "retrieve-tests-metadata", "compile-assets pull-cache"] - -rspec migration pg10: - extends: - - .rspec-base-pg10 - - .rspec-base-migration - parallel: 5 - -rspec unit pg10: - extends: .rspec-base-pg10 - parallel: 20 - -rspec integration pg10: - extends: .rspec-base-pg10 - parallel: 8 - -rspec system pg10: - extends: .rspec-base-pg10 - parallel: 24 -# master-only jobs # -#################### - -###################### -# nightly-only jobs # -.rspec-base-pg9: - extends: - - .rspec-base - - .rails:rules:nightly-master-refs-code-backstage - - .use-pg9 - needs: ["setup-test-env pg9", "retrieve-tests-metadata", "compile-assets pull-cache"] - -rspec migration pg9: - extends: - - .rspec-base-pg9 - - .rspec-base-migration - parallel: 5 - -rspec unit pg9: - extends: .rspec-base-pg9 - parallel: 20 - -rspec integration pg9: - extends: .rspec-base-pg9 - parallel: 8 - -rspec system pg9: - extends: .rspec-base-pg9 - parallel: 24 -# nightly-only jobs # -##################### - -####################### -# EE master-only jobs # -.rspec-ee-base-pg10: - extends: - - .rspec-base-ee - - .use-pg10-ee - needs: ["setup-test-env pg10", "retrieve-tests-metadata", "compile-assets pull-cache"] - -rspec-ee migration pg10: - extends: - - .rspec-ee-base-pg10 - - .rspec-base-migration - - .rails:rules:master-refs-code-backstage - parallel: 2 - -rspec-ee unit pg10: - extends: - - .rspec-ee-base-pg10 - - .rails:rules:master-refs-code-backstage - parallel: 10 - -rspec-ee integration pg10: - extends: - - .rspec-ee-base-pg10 - - .rails:rules:master-refs-code-backstage - parallel: 4 - -rspec-ee system pg10: - extends: - - .rspec-ee-base-pg10 - - .rails:rules:master-refs-code-backstage - parallel: 6 -# EE master-only jobs # -####################### - -################ -# EE-only jobs # +################################################## +# EE: default refs (MRs, master, schedules) jobs # .rspec-base-ee: extends: - .rspec-base @@ -336,10 +243,11 @@ rspec-ee system pg10: .rspec-base-pg11-as-if-foss: extends: - - .rspec-base-ee + - .rspec-base + - .rails:rules:as-if-foss - .as-if-foss - .use-pg11 - needs: ["setup-test-env pg11", "retrieve-tests-metadata", "compile-assets pull-cache as-if-foss"] + needs: ["setup-test-env", "retrieve-tests-metadata", "compile-assets pull-cache as-if-foss"] .rspec-ee-base-pg11: extends: @@ -385,6 +293,8 @@ rspec-ee system pg11: .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" @@ -411,26 +321,5 @@ db:rollback geo: script: - bundle exec rake geo:db:migrate VERSION=20170627195211 - bundle exec rake geo:db:migrate -# EE-only jobs # -################ - -######################## -# EE nightly-only jobs # -.rspec-ee-base-geo-pg9: - extends: - - .rspec-ee-base-geo - - .use-pg9-ee - - .rails:rules:nightly-master-refs-code-backstage-ee-only - needs: ["setup-test-env pg9", "retrieve-tests-metadata", "compile-assets pull-cache"] - -rspec-ee unit pg9 geo: - extends: .rspec-ee-base-geo-pg9 - parallel: 2 - -rspec-ee integration pg9 geo: - extends: .rspec-ee-base-geo-pg9 - -rspec-ee system pg9 geo: - extends: .rspec-ee-base-geo-pg9 -# EE nightly-only jobs # -######################## +# EE: default refs (MRs, master, schedules) jobs # +################################################## diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 61915aa798..153334e1af 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -14,11 +14,7 @@ code_quality: - .use-docker-in-docker stage: test needs: [] - allow_failure: true variables: - # emptying DOCKER_HOST so it can be detected properly on kubernetes executor - # with the script below - DOCKER_HOST: "" CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.9" script: - | @@ -47,12 +43,10 @@ code_quality: extends: - .default-retry - .reports:rules:sast - - .use-docker-in-docker stage: test # `needs: []` starts the job immediately in the pipeline # https://docs.gitlab.com/ee/ci/yaml/README.html#needs needs: [] - allow_failure: true artifacts: paths: - gl-sast-report.json # GitLab-specific @@ -60,10 +54,6 @@ code_quality: sast: gl-sast-report.json expire_in: 1 week # GitLab-specific variables: - # emptying DOCKER_HOST so it can be detected properly on kubernetes executor - # with the script below - DOCKER_HOST: "" - DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "" SAST_ANALYZER_IMAGE_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers" SAST_ANALYZER_IMAGE_TAG: 2 @@ -82,15 +72,11 @@ eslint-sast: image: name: "$SAST_ANALYZER_IMAGE_PREFIX/eslint:$SAST_ANALYZER_IMAGE_TAG" -kubesec-sast: - extends: .sast - image: - name: "$SAST_ANALYZER_IMAGE_PREFIX/kubesec:$SAST_ANALYZER_IMAGE_TAG" - -nodejs-scan-sast: - extends: .sast - image: - name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$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" secrets-sast: extends: .sast @@ -108,11 +94,7 @@ dependency_scanning: stage: test needs: [] variables: - # emptying DOCKER_HOST so it can be detected properly on kubernetes executor - # with the script below - DOCKER_HOST: "" DS_EXCLUDED_PATHS: "qa/qa/ee/fixtures/secure_premade_reports,spec,ee/spec" # GitLab-specific - allow_failure: true script: - export DS_VERSION=${SP_VERSION:-$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')} - | @@ -183,7 +165,6 @@ dast: # DAST_USERNAME_FIELD: "user[login]" # DAST_PASSWORD_FIELD: "user[passowrd]" DAST_VERSION: 1 - allow_failure: true script: - 'export DAST_WEBSITE="${DAST_WEBSITE:-$(cat environment_url.txt)}"' # To be done in a later iteration diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 06710b3b9d..46a281cd48 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -1,70 +1,36 @@ -.review-docker: - extends: - - .default-retry - - .use-docker-in-docker - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6 - variables: - GITLAB_EDITION: "ce" - build-qa-image: extends: - .use-kaniko - .default-retry - - .review:rules:mr-and-schedule-auto - stage: prepare + - .review:rules:build-qa-image + stage: build-images + needs: [] script: - - '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"' - - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-${GITLAB_EDITION}-qa:${CI_COMMIT_REF_SLUG}" + - 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 -.review-cleanup-base: +review-cleanup: extends: - .default-retry - .review:rules:review-cleanup + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3-kubectl1.14 stage: prepare - allow_failure: true environment: name: review/auto-cleanup action: stop before_script: - source scripts/utils.sh + - source scripts/review_apps/gcp_cleanup.sh - install_gitlab_gem + - setup_gcp_dependencies script: - ruby -rrubygems scripts/review_apps/automated_cleanup.rb - -review-cleanup: - extends: - - .review-cleanup-base - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base - -review-cleanup-helm3: - extends: - - .review-cleanup-base - variables: - HELM_3: 1 - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3-kubectl1.14 - -review-gcp-cleanup: - extends: - - .review:rules:review-gcp-cleanup - stage: prepare - image: gcr.io/google.com/cloudsdktool/cloud-sdk:latest - allow_failure: true - environment: - name: review/auto-gcp-cleanup - action: stop - before_script: - - gcloud auth activate-service-account --key-file=$REVIEW_APPS_GCP_CREDENTIALS - - gcloud config set project $REVIEW_APPS_GCP_PROJECT - - apt-get install -y jq - - source scripts/review_apps/gcp_cleanup.sh - script: - gcp_cleanup review-build-cng: extends: - .default-retry - - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise + - .review:rules:review-build-cng image: ruby:2.6-alpine stage: review-prepare before_script: @@ -87,8 +53,7 @@ review-build-cng: variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "v3.2.2" - GITLAB_EDITION: "ce" + GITLAB_HELM_CHART_REF: "v3.3.3" environment: name: review/${CI_COMMIT_REF_NAME} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} @@ -102,9 +67,7 @@ review-deploy: stage: review dependencies: [] resource_group: "review/${CI_COMMIT_REF_NAME}" - allow_failure: true before_script: - - '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"' - export GITLAB_SHELL_VERSION=$( + ### Problem to solve @@ -10,33 +10,44 @@ Personas are described at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ -* [Rachel (Release Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#rachel-release-manager) +* [Cameron (Compliance Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#cameron-compliance-manager) * [Parker (Product Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#parker-product-manager) * [Delaney (Development Team Lead)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#delaney-development-team-lead) -* [Sasha (Software Developer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sasha-software-developer) * [Presley (Product Designer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#presley-product-designer) +* [Sasha (Software Developer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sasha-software-developer) * [Devon (DevOps Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#devon-devops-engineer) * [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator) * [Sam (Security Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sam-security-analyst) -* [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst) +* [Rachel (Release Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#rachel-release-manager) +* [Alex (Security Operations Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#alex-security-operations-engineer) * [Simone (Software Engineer in Test)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#simone-software-engineer-in-test) -* [Allison (Application Ops)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#allison-application-ops) --> +* [Allison (Application Ops)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#allison-application-ops) +* [Priyanka (Platform Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#priyanka-platform-engineer) +* [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst) +--> -### Further details +### User experience goal + + - ### Proposal +### Further details + + + ### Permissions and Security ### Documentation - diff --git a/.gitlab/issue_templates/Productivity Improvement.md b/.gitlab/issue_templates/Productivity Improvement.md index 79e1461392..974f11f6da 100644 --- a/.gitlab/issue_templates/Productivity Improvement.md +++ b/.gitlab/issue_templates/Productivity Improvement.md @@ -1,7 +1,7 @@ -## What is the productivity problem to solve? +## What is the GitLab engineering productivity problem to solve? @@ -37,4 +37,3 @@ after the implementation is merged/deployed/released. - Otherwise, create a new "Productivity Improvement" issue. You can re-use the description from this issue, but obviously another solution should be chosen this time. /label ~"Engineering Productivity" ~meta -/cc @gl-quality/eng-prod diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 2c80360d32..695f0167ad 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -36,7 +36,8 @@ After your merge request has been approved according to our [approval guidelines ## Documentation and final details - [ ] Ensure the [Links section](#links) is completed. -- [ ] Find out the versions affected (the Git history of the files affected may help you with this) and add them to the [details section](#details) +- [ ] Add the GitLab [versions](https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/security/developer.md#versions-affected) and editions affected to the [details section](#details) + * The Git history of the files affected may help you associate the issue with a [release](https://about.gitlab.com/releases/) - [ ] 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) @@ -56,6 +57,7 @@ After your merge request has been approved according to our [approval guidelines | Description | Details | Further details| | -------- | -------- | -------- | | Versions affected | X.Y | | +| GitLab EE only | Yes/No | | | Upgrade notes | | | | GitLab Settings updated | Yes/No| | | Migration required | Yes/No | | diff --git a/.gitlab/issue_templates/Technical Evaluation.md b/.gitlab/issue_templates/Technical Evaluation.md index f603d88a76..533a134382 100644 --- a/.gitlab/issue_templates/Technical Evaluation.md +++ b/.gitlab/issue_templates/Technical Evaluation.md @@ -7,7 +7,7 @@ ### Tasks to Evaluate - + - [ ] Determine feasibility of the feature - [ ] Create issue for implementation or update existing implementation issue description with implementation proposal @@ -18,7 +18,7 @@ ### Risks and Implementation Considerations - + ### Team diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md index 901228ee77..72bfd2cdec 100644 --- a/.gitlab/merge_request_templates/Documentation.md +++ b/.gitlab/merge_request_templates/Documentation.md @@ -13,12 +13,25 @@ -## Author's checklist +## Author's checklist (required) - [ ] Follow the [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/) and [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide.html). -- [ ] If applicable, update the [permissions table](https://docs.gitlab.com/ee/user/permissions.html). +- If you have `developer` access or higher (for example, GitLab team members or [Core Team](https://about.gitlab.com/community/core-team/) members) + - [ ] Apply the ~documentation label, plus: + - The corresponding DevOps stage and group label, if applicable. + - ~"development guidelines" when changing docs under `doc/development/*`, `CONTRIBUTING.md`, or `README.md`. + - ~"development guidelines" and ~"Documentation guidelines" when changing docs under `development/documentation/*`. + - ~"development guidelines" and ~"Description templates (.gitlab/\*)" when creating/updating issue and MR description templates. + - [ ] Assign the [designated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments). + +When applicable: + +- [ ] Update the [permissions table](https://docs.gitlab.com/ee/user/permissions.html). - [ ] Link docs to and from the higher-level index page, plus other related docs where helpful. -- [ ] Apply the ~documentation label. +- [ ] Add [GitLab's version history note(s)](https://docs.gitlab.com/ee/development/documentation/styleguide.html#text-for-documentation-requiring-version-text). +- [ ] Add the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide.html#product-badges). +- [ ] Add/update the [feature flag section](https://docs.gitlab.com/ee/development/documentation/feature_flags.html). +- [ ] If you're changing document headings, search `doc/*`, `app/views/*`, and `ee/app/views/*` for old headings replacing with the new ones to [avoid broken anchors](https://docs.gitlab.com/ee/development/documentation/styleguide.html#anchor-links). ## Review checklist @@ -30,7 +43,9 @@ 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). +- [ ] 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. + - [ ] Add ~docs-only when the only files changed are under `doc/*`. **3. Maintainer** diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md index af3839a96a..f852bebae9 100644 --- a/.gitlab/merge_request_templates/Security Release.md +++ b/.gitlab/merge_request_templates/Security Release.md @@ -19,7 +19,7 @@ See [the general developer security release guidelines](https://gitlab.com/gitla - [ ] 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]. - [ ] For the MR targeting `master`: - - [ ] Ping appsec team member who created the issue and ask for a non-blocking review with `Please review this MR`. + - [ ] 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. - [ ] Ensure it's approved according to our [Approval Guidelines]. - [ ] Merge request _must not_ close the corresponding security issue, _unless_ it targets `master`. diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 1417f37f76..a79bba24ed 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -1,431 +1,390 @@ # This configuration was generated by # `haml-lint --auto-gen-config` -# on 2020-03-04 13:16:29 +0100 using Haml-Lint version 0.34.0. +# on 2020-04-20 07:11:26 +0000 using Haml-Lint version 0.34.0. # The point is for the user to remove these configuration records # one by one as the lints are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of Haml-Lint, may require this file to be generated again. linters: - # Offense count: 1646 + + # Offense count: 1552 NoPlainNodes: enabled: true exclude: - - 'app/views/admin/abuse_reports/_abuse_report.html.haml' - - 'app/views/admin/abuse_reports/index.html.haml' - - 'app/views/admin/appearances/_form.html.haml' - - 'app/views/admin/application_settings/_abuse.html.haml' - - 'app/views/admin/application_settings/_diff_limits.html.haml' - - 'app/views/admin/application_settings/_gitaly.html.haml' - - 'app/views/admin/application_settings/_influx.html.haml' - - 'app/views/admin/application_settings/_ip_limits.html.haml' - - 'app/views/admin/application_settings/_performance.html.haml' - - 'app/views/admin/application_settings/_plantuml.html.haml' - - 'app/views/admin/application_settings/_prometheus.html.haml' - - 'app/views/admin/application_settings/_realtime.html.haml' - - 'app/views/admin/application_settings/_repository_check.html.haml' - - 'app/views/admin/application_settings/_signin.html.haml' - - 'app/views/admin/application_settings/_signup.html.haml' - - 'app/views/admin/application_settings/_spam.html.haml' - - 'app/views/admin/application_settings/_terminal.html.haml' - - 'app/views/admin/application_settings/_usage.html.haml' - - 'app/views/admin/application_settings/_visibility_and_access.html.haml' - - 'app/views/admin/applications/_delete_form.html.haml' - - 'app/views/admin/applications/_form.html.haml' - - 'app/views/admin/applications/edit.html.haml' - - 'app/views/admin/applications/index.html.haml' - - 'app/views/admin/applications/new.html.haml' - - 'app/views/admin/applications/show.html.haml' - - 'app/views/admin/background_jobs/show.html.haml' - - 'app/views/admin/broadcast_messages/index.html.haml' - - 'app/views/admin/dashboard/index.html.haml' - - 'app/views/admin/deploy_keys/new.html.haml' - - 'app/views/admin/health_check/show.html.haml' - - 'app/views/admin/hook_logs/_index.html.haml' - - 'app/views/admin/hook_logs/show.html.haml' - - 'app/views/admin/hooks/_form.html.haml' - - 'app/views/admin/hooks/edit.html.haml' - - 'app/views/admin/labels/_form.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' - - 'app/views/admin/runners/show.html.haml' - - 'app/views/admin/services/_form.html.haml' - - 'app/views/admin/services/index.html.haml' - - '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' - - 'app/views/admin/users/_projects.html.haml' - - 'app/views/admin/users/new.html.haml' - - 'app/views/admin/users/projects.html.haml' - - 'app/views/admin/users/show.html.haml' - - 'app/views/clusters/clusters/_cluster.html.haml' - - 'app/views/clusters/clusters/_form.html.haml' - - 'app/views/clusters/clusters/_gcp_signup_offer_banner.html.haml' - - 'app/views/clusters/clusters/gcp/_form.html.haml' - - 'app/views/clusters/clusters/new.html.haml' - - 'app/views/dashboard/milestones/index.html.haml' - - 'app/views/dashboard/projects/_blank_state_admin_welcome.html.haml' - - 'app/views/dashboard/projects/_blank_state_welcome.html.haml' - - 'app/views/dashboard/todos/_todo.html.haml' - - 'app/views/dashboard/todos/index.html.haml' - - 'app/views/devise/confirmations/almost_there.haml' - - 'app/views/devise/mailer/_confirmation_instructions_account.html.haml' - - 'app/views/devise/mailer/_confirmation_instructions_secondary.html.haml' - - 'app/views/devise/mailer/email_changed.html.haml' - - 'app/views/devise/mailer/password_change.html.haml' - - 'app/views/devise/mailer/reset_password_instructions.html.haml' - - 'app/views/devise/mailer/unlock_instructions.html.haml' - - 'app/views/devise/passwords/edit.html.haml' - - 'app/views/devise/sessions/_new_base.html.haml' - - 'app/views/devise/sessions/_new_crowd.html.haml' - - 'app/views/devise/sessions/_new_ldap.html.haml' - - 'app/views/devise/sessions/new.html.haml' - - 'app/views/devise/sessions/two_factor.html.haml' - - 'app/views/devise/shared/_omniauth_box.html.haml' - - 'app/views/devise/shared/_sign_in_link.html.haml' - - 'app/views/devise/shared/_tabs_normal.html.haml' - - 'app/views/discussions/_discussion.html.haml' - - 'app/views/discussions/_headline.html.haml' - - 'app/views/discussions/_notes.html.haml' - - 'app/views/doorkeeper/applications/_delete_form.html.haml' - - 'app/views/doorkeeper/authorized_applications/_delete_form.html.haml' - - 'app/views/errors/encoding.html.haml' - - 'app/views/errors/git_not_found.html.haml' - - 'app/views/errors/omniauth_error.html.haml' - - 'app/views/errors/precondition_failed.html.haml' - - 'app/views/events/_commit.html.haml' - - 'app/views/events/_event_push.atom.haml' - - 'app/views/events/event/_push.html.haml' - - 'app/views/groups/_create_chat_team.html.haml' - - 'app/views/groups/_group_admin_settings.html.haml' - - 'app/views/groups/labels/edit.html.haml' - - 'app/views/groups/labels/new.html.haml' - - 'app/views/groups/milestones/edit.html.haml' - - 'app/views/groups/milestones/index.html.haml' - - 'app/views/groups/milestones/new.html.haml' - - 'app/views/groups/projects.html.haml' - - 'app/views/groups/runners/edit.html.haml' - - 'app/views/groups/settings/_advanced.html.haml' - - 'app/views/groups/settings/_lfs.html.haml' - - 'app/views/help/_shortcuts.html.haml' - - 'app/views/help/index.html.haml' - - 'app/views/help/instance_configuration.html.haml' - - 'app/views/help/instance_configuration/_gitlab_ci.html.haml' - - 'app/views/help/instance_configuration/_gitlab_pages.html.haml' - - 'app/views/help/ui.html.haml' - - 'app/views/import/bitbucket/status.html.haml' - - 'app/views/import/bitbucket_server/status.html.haml' - - 'app/views/invites/show.html.haml' - - 'app/views/layouts/_mailer.html.haml' - - 'app/views/layouts/header/_default.html.haml' - - 'app/views/layouts/header/_new_dropdown.haml' - - 'app/views/layouts/mailer/devise.html.haml' - - 'app/views/layouts/notify.html.haml' - - 'app/views/notify/_failed_builds.html.haml' - - 'app/views/notify/_reassigned_issuable_email.html.haml' - - 'app/views/notify/_removal_notification.html.haml' - - 'app/views/notify/_successful_pipeline.html.haml' - - 'app/views/notify/autodevops_disabled_email.html.haml' - - 'app/views/notify/changed_milestone_email.html.haml' - - 'app/views/notify/import_issues_csv_email.html.haml' - - 'app/views/notify/issue_moved_email.html.haml' - - 'app/views/notify/member_access_denied_email.html.haml' - - 'app/views/notify/member_invite_accepted_email.html.haml' - - 'app/views/notify/member_invited_email.html.haml' - - 'app/views/notify/new_gpg_key_email.html.haml' - - 'app/views/notify/new_mention_in_issue_email.html.haml' - - 'app/views/notify/new_ssh_key_email.html.haml' - - 'app/views/notify/new_user_email.html.haml' - - 'app/views/notify/pages_domain_disabled_email.html.haml' - - 'app/views/notify/pages_domain_enabled_email.html.haml' - - 'app/views/notify/pages_domain_verification_failed_email.html.haml' - - 'app/views/notify/pages_domain_verification_succeeded_email.html.haml' - - 'app/views/notify/pipeline_failed_email.html.haml' - - 'app/views/notify/project_was_exported_email.html.haml' - - 'app/views/notify/project_was_moved_email.html.haml' - - 'app/views/notify/project_was_not_exported_email.html.haml' - - 'app/views/notify/push_to_merge_request_email.html.haml' - - 'app/views/notify/remote_mirror_update_failed_email.html.haml' - - 'app/views/notify/removed_milestone_issue_email.html.haml' - - 'app/views/notify/removed_milestone_merge_request_email.html.haml' - - 'app/views/notify/repository_push_email.html.haml' - - 'app/views/profiles/chat_names/_chat_name.html.haml' - - 'app/views/profiles/chat_names/index.html.haml' - - 'app/views/profiles/chat_names/new.html.haml' - - 'app/views/profiles/keys/_key.html.haml' - - 'app/views/profiles/show.html.haml' - - 'app/views/projects/_bitbucket_import_modal.html.haml' - - 'app/views/projects/_customize_workflow.html.haml' - - 'app/views/projects/_deletion_failed.html.haml' - - 'app/views/projects/_fork_suggestion.html.haml' - - 'app/views/projects/_gitlab_import_modal.html.haml' - - 'app/views/projects/_home_panel.html.haml' - - 'app/views/projects/_import_project_pane.html.haml' - - 'app/views/projects/_issuable_by_email.html.haml' - - 'app/views/projects/_md_preview.html.haml' - - 'app/views/projects/_readme.html.haml' - - 'app/views/projects/artifacts/_artifact.html.haml' - - 'app/views/projects/artifacts/_tree_file.html.haml' - - 'app/views/projects/artifacts/browse.html.haml' - - 'app/views/projects/blame/_age_map_legend.html.haml' - - 'app/views/projects/blame/show.html.haml' - - 'app/views/projects/blob/_editor.html.haml' - - 'app/views/projects/blob/_header_content.html.haml' - - 'app/views/projects/blob/_new_dir.html.haml' - - 'app/views/projects/blob/_remove.html.haml' - - 'app/views/projects/blob/_render_error.html.haml' - - 'app/views/projects/blob/_upload.html.haml' - - 'app/views/projects/blob/edit.html.haml' - - 'app/views/projects/blob/new.html.haml' - - 'app/views/projects/blob/preview.html.haml' - - 'app/views/projects/blob/viewers/_empty.html.haml' - - 'app/views/projects/blob/viewers/_stl.html.haml' - - 'app/views/projects/branches/_branch.html.haml' - - 'app/views/projects/branches/_commit.html.haml' - - 'app/views/projects/branches/_delete_protected_modal.html.haml' - - 'app/views/projects/branches/new.html.haml' - - 'app/views/projects/ci/builds/_build.html.haml' - - 'app/views/projects/ci/lints/_create.html.haml' - - 'app/views/projects/commit/_change.html.haml' - - 'app/views/projects/commits/_commit.html.haml' - - 'app/views/projects/commits/_inline_commit.html.haml' - - 'app/views/projects/compare/_form.html.haml' - - 'app/views/projects/compare/index.html.haml' - - 'app/views/projects/cycle_analytics/_empty_stage.html.haml' - - 'app/views/projects/cycle_analytics/_no_access.html.haml' - - 'app/views/projects/cycle_analytics/_overview.html.haml' - - 'app/views/projects/cycle_analytics/show.html.haml' - - 'app/views/projects/deploy_keys/_form.html.haml' - - 'app/views/projects/deploy_keys/_index.html.haml' - - 'app/views/projects/deploy_keys/edit.html.haml' - - 'app/views/projects/deployments/_deployment.html.haml' - - 'app/views/projects/diffs/_file_header.html.haml' - - 'app/views/projects/diffs/_replaced_image_diff.html.haml' - - 'app/views/projects/diffs/_stats.html.haml' - - 'app/views/projects/empty.html.haml' - - 'app/views/projects/environments/show.html.haml' - - 'app/views/projects/forks/error.html.haml' - - 'app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml' - - 'app/views/projects/hook_logs/_index.html.haml' - - 'app/views/projects/hook_logs/show.html.haml' - - 'app/views/projects/hooks/edit.html.haml' - - 'app/views/projects/imports/new.html.haml' - - 'app/views/projects/imports/show.html.haml' - - 'app/views/projects/issues/_issue.html.haml' - - 'app/views/projects/issues/_new_branch.html.haml' - - 'app/views/projects/issues/import_csv/_modal.html.haml' - - 'app/views/projects/issues/show.html.haml' - - 'app/views/projects/jobs/_header.html.haml' - - 'app/views/projects/jobs/_table.html.haml' - - 'app/views/projects/jobs/index.html.haml' - - 'app/views/projects/labels/edit.html.haml' - - 'app/views/projects/labels/new.html.haml' - - 'app/views/projects/mattermosts/_no_teams.html.haml' - - 'app/views/projects/mattermosts/_team_selection.html.haml' - - 'app/views/projects/mattermosts/new.html.haml' - - 'app/views/projects/merge_requests/_commits.html.haml' - - 'app/views/projects/merge_requests/_discussion.html.haml' - - 'app/views/projects/merge_requests/_how_to_merge.html.haml' - - 'app/views/projects/merge_requests/_merge_request.html.haml' - - 'app/views/projects/merge_requests/_mr_title.html.haml' - - 'app/views/projects/merge_requests/conflicts/_commit_stats.html.haml' - - 'app/views/projects/merge_requests/conflicts/_file_actions.html.haml' - - 'app/views/projects/merge_requests/conflicts/_submit_form.html.haml' - - 'app/views/projects/merge_requests/conflicts/components/_diff_file_editor.html.haml' - - 'app/views/projects/merge_requests/conflicts/components/_inline_conflict_lines.html.haml' - - 'app/views/projects/merge_requests/conflicts/show.html.haml' - - 'app/views/projects/merge_requests/creations/_diffs.html.haml' - - 'app/views/projects/merge_requests/creations/_new_compare.html.haml' - - 'app/views/projects/merge_requests/creations/_new_submit.html.haml' - - 'app/views/projects/merge_requests/diffs/_different_base.html.haml' - - 'app/views/projects/merge_requests/diffs/_diffs.html.haml' - - 'app/views/projects/merge_requests/diffs/_version_controls.html.haml' - - 'app/views/projects/merge_requests/invalid.html.haml' - - 'app/views/projects/merge_requests/widget/open/_error.html.haml' - - 'app/views/projects/mirrors/_regenerate_public_ssh_key_confirm_modal.html.haml' - - 'app/views/projects/mirrors/_ssh_host_keys.html.haml' - - 'app/views/projects/no_repo.html.haml' - - 'app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml' - - 'app/views/projects/pipelines/_info.html.haml' - - 'app/views/projects/protected_branches/shared/_dropdown.html.haml' - - 'app/views/projects/protected_branches/shared/_index.html.haml' - - 'app/views/projects/protected_branches/shared/_matching_branch.html.haml' - - 'app/views/projects/protected_branches/shared/_protected_branch.html.haml' - - 'app/views/projects/protected_branches/show.html.haml' - - 'app/views/projects/protected_tags/shared/_create_protected_tag.html.haml' - - 'app/views/projects/protected_tags/shared/_dropdown.html.haml' - - 'app/views/projects/protected_tags/shared/_index.html.haml' - - 'app/views/projects/protected_tags/shared/_matching_tag.html.haml' - - 'app/views/projects/protected_tags/shared/_protected_tag.html.haml' - - 'app/views/projects/protected_tags/shared/_tags_list.html.haml' - - 'app/views/projects/protected_tags/show.html.haml' - - 'app/views/projects/registry/repositories/_tag.html.haml' - - 'app/views/projects/repositories/_feed.html.haml' - - 'app/views/projects/runners/_shared_runners.html.haml' - - 'app/views/projects/runners/edit.html.haml' - - 'app/views/projects/services/_form.html.haml' - - 'app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml' - - 'app/views/projects/services/mattermost_slash_commands/_help.html.haml' - - 'app/views/projects/services/prometheus/_metrics.html.haml' - - 'app/views/projects/services/slack_slash_commands/_help.html.haml' - - 'app/views/projects/settings/ci_cd/_badge.html.haml' - - 'app/views/projects/settings/ci_cd/_form.html.haml' - - 'app/views/projects/stage/_stage.html.haml' - - 'app/views/projects/tags/index.html.haml' - - 'app/views/projects/tags/new.html.haml' - - 'app/views/projects/tags/releases/edit.html.haml' - - 'app/views/projects/tree/_tree_row.html.haml' - - 'app/views/projects/tree/_truncated_notice_tree_row.html.haml' - - 'app/views/projects/triggers/_form.html.haml' - - 'app/views/projects/triggers/_index.html.haml' - - 'app/views/projects/triggers/_trigger.html.haml' - - 'app/views/projects/triggers/edit.html.haml' - - 'app/views/projects/wikis/_pages_wiki_page.html.haml' - - 'app/views/projects/wikis/edit.html.haml' - - 'app/views/projects/wikis/history.html.haml' - - 'app/views/search/results/_issue.html.haml' - - 'app/views/search/results/_note.html.haml' - - 'app/views/search/results/_snippet_blob.html.haml' - - 'app/views/search/results/_snippet_title.html.haml' - - 'app/views/shared/_auto_devops_implicitly_enabled_banner.html.haml' - - 'app/views/shared/_commit_message_container.html.haml' - - 'app/views/shared/_confirm_fork_modal.html.haml' - - 'app/views/shared/_confirm_modal.html.haml' - - 'app/views/shared/_delete_label_modal.html.haml' - - 'app/views/shared/_group_form.html.haml' - - 'app/views/shared/_group_tips.html.haml' - - 'app/views/shared/_milestone_expired.html.haml' - - 'app/views/shared/_no_password.html.haml' - - 'app/views/shared/_no_ssh.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' - - 'app/views/shared/boards/components/sidebar/_milestone.html.haml' - - 'app/views/shared/deploy_tokens/_revoke_modal.html.haml' - - 'app/views/shared/hook_logs/_content.html.haml' - - 'app/views/shared/issuable/_assignees.html.haml' - - 'app/views/shared/issuable/_board_create_list_dropdown.html.haml' - - 'app/views/shared/issuable/_bulk_update_sidebar.html.haml' - - 'app/views/shared/issuable/_close_reopen_report_toggle.html.haml' - - 'app/views/shared/issuable/_form.html.haml' - - 'app/views/shared/issuable/_search_bar.html.haml' - - 'app/views/shared/issuable/_sidebar.html.haml' - - 'app/views/shared/issuable/form/_default_templates.html.haml' - - 'app/views/shared/issuable/form/_issue_assignee.html.haml' - - 'app/views/shared/issuable/form/_template_selector.html.haml' - - 'app/views/shared/issuable/form/_title.html.haml' - - 'app/views/shared/labels/_form.html.haml' - - 'app/views/shared/members/_member.html.haml' - - 'app/views/shared/milestones/_form_dates.html.haml' - - 'app/views/shared/milestones/_issuable.html.haml' - - 'app/views/shared/milestones/_milestone.html.haml' - - 'app/views/shared/milestones/_sidebar.html.haml' - - 'app/views/shared/milestones/_top.html.haml' - - 'app/views/shared/notes/_hints.html.haml' - - 'app/views/shared/notes/_note.html.haml' - - 'app/views/shared/notifications/_button.html.haml' - - 'app/views/shared/notifications/_custom_notifications.html.haml' - - 'app/views/shared/notifications/_new_button.html.haml' - - 'app/views/shared/runners/_runner_description.html.haml' - - 'app/views/shared/runners/show.html.haml' - - 'app/views/shared/snippets/_header.html.haml' - - 'app/views/shared/snippets/_snippet.html.haml' - - 'app/views/shared/web_hooks/_form.html.haml' - - 'app/views/shared/web_hooks/_hook.html.haml' - - 'app/views/u2f/_authenticate.html.haml' - - 'app/views/u2f/_register.html.haml' - - 'app/views/users/_deletion_guidance.html.haml' - - 'ee/app/views/admin/_namespace_plan_info.html.haml' - - 'ee/app/views/admin/application_settings/_templates.html.haml' - - 'ee/app/views/admin/audit_logs/index.html.haml' - - 'ee/app/views/admin/emails/show.html.haml' - - 'ee/app/views/admin/geo/nodes/edit.html.haml' - - 'ee/app/views/admin/geo/nodes/new.html.haml' - - 'ee/app/views/admin/geo/projects/_registry_failed.html.haml' - - 'ee/app/views/admin/geo/projects/_registry_never.html.haml' - - 'ee/app/views/admin/licenses/_upload_trial_license.html.haml' - - 'ee/app/views/admin/licenses/new.html.haml' - - 'ee/app/views/admin/licenses/show.html.haml' - - 'ee/app/views/admin/monitoring/ee/_nav.html.haml' - - 'ee/app/views/admin/projects/_shared_runner_status.html.haml' - - 'ee/app/views/admin/users/_auditor_access_level_radio.html.haml' - - 'ee/app/views/admin/users/_auditor_user_badge.html.haml' - - 'ee/app/views/admin/users/_limits.html.haml' - - 'ee/app/views/admin/users/_user_detail_note.html.haml' - - 'ee/app/views/dashboard/projects/_blank_state_ee_trial.html.haml' - - 'ee/app/views/errors/kerberos_denied.html.haml' - - 'ee/app/views/groups/ee/_settings_nav.html.haml' - - 'ee/app/views/groups/epics/_epic.html.haml' - - 'ee/app/views/groups/group_members/_ldap_sync.html.haml' - - 'ee/app/views/groups/group_members/_sync_button.html.haml' - - 'ee/app/views/groups/hooks/edit.html.haml' - - 'ee/app/views/groups/ldap_group_links/index.html.haml' - - 'ee/app/views/jira_connect/subscriptions/index.html.haml' - - 'ee/app/views/layouts/jira_connect.html.haml' - - 'ee/app/views/layouts/nav/ee/admin/_new_monitoring_sidebar.html.haml' - - 'ee/app/views/layouts/service_desk.html.haml' - - 'ee/app/views/ldap_group_links/_form.html.haml' - - 'ee/app/views/ldap_group_links/_ldap_group_link.html.haml' - - 'ee/app/views/ldap_group_links/_ldap_group_links.html.haml' - - 'ee/app/views/ldap_group_links/_ldap_group_links_show.html.haml' - - 'ee/app/views/ldap_group_links/_ldap_group_links_synchronizations.html.haml' - - 'ee/app/views/namespaces/_shared_runner_status.html.haml' - - 'ee/app/views/namespaces/_shared_runners_minutes_setting.html.haml' - - 'ee/app/views/namespaces/pipelines_quota/_extra_shared_runners_minutes_quota.html.haml' - - 'ee/app/views/namespaces/pipelines_quota/_list.haml' - - 'ee/app/views/notify/approved_merge_request_email.html.haml' - - 'ee/app/views/notify/epic_status_changed_email.html.haml' - - 'ee/app/views/notify/issues_csv_email.html.haml' - - 'ee/app/views/notify/new_review_email.html.haml' - - 'ee/app/views/notify/send_admin_notification.html.haml' - - 'ee/app/views/notify/send_unsubscribed_notification.html.haml' - - 'ee/app/views/notify/unapproved_merge_request_email.html.haml' - - 'ee/app/views/oauth/geo_auth/error.html.haml' - - 'ee/app/views/profiles/pipeline_quota/index.haml' - - 'ee/app/views/projects/blob/_owners.html.haml' - - 'ee/app/views/projects/commits/_mirror_status.html.haml' - - 'ee/app/views/projects/issues/_issue_weight.html.haml' - - 'ee/app/views/projects/issues/export_csv/_modal.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' - - 'ee/app/views/projects/protected_branches/_update_protected_branch.html.haml' - - 'ee/app/views/projects/protected_branches/ee/_create_protected_branch.html.haml' - - 'ee/app/views/projects/protected_branches/ee/_dropdown.html.haml' - - 'ee/app/views/projects/protected_tags/_protected_tag_extra_create_access_levels.haml' - - 'ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml' - - 'ee/app/views/projects/push_rules/_index.html.haml' - - 'ee/app/views/projects/services/gitlab_slack_application/_help.html.haml' - - '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/_additional_email_text.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' - - 'ee/app/views/shared/issuable/_filter_weight.html.haml' - - 'ee/app/views/shared/members/ee/_ldap_tag.html.haml' - - 'ee/app/views/shared/members/ee/_override_member_buttons.html.haml' - - 'ee/app/views/shared/members/ee/_sso_badge.html.haml' - - 'ee/app/views/shared/milestones/_burndown.html.haml' - - 'ee/app/views/shared/milestones/_weight.html.haml' - - 'ee/app/views/shared/promotions/_promote_burndown_charts.html.haml' - - 'ee/app/views/shared/promotions/_promote_csv_export.html.haml' - - 'ee/app/views/shared/promotions/_promote_issue_weights.html.haml' - - 'ee/app/views/shared/promotions/_promote_repository_features.html.haml' - - 'ee/app/views/shared/promotions/_promote_servicedesk.html.haml' - - 'ee/app/views/shared/push_rules/_form.html.haml' - - 'ee/app/views/unsubscribes/show.html.haml' + - "app/views/admin/abuse_reports/_abuse_report.html.haml" + - "app/views/admin/abuse_reports/index.html.haml" + - "app/views/admin/appearances/_form.html.haml" + - "app/views/admin/application_settings/_abuse.html.haml" + - "app/views/admin/application_settings/_diff_limits.html.haml" + - "app/views/admin/application_settings/_gitaly.html.haml" + - "app/views/admin/application_settings/_ip_limits.html.haml" + - "app/views/admin/application_settings/_performance.html.haml" + - "app/views/admin/application_settings/_plantuml.html.haml" + - "app/views/admin/application_settings/_prometheus.html.haml" + - "app/views/admin/application_settings/_realtime.html.haml" + - "app/views/admin/application_settings/_repository_check.html.haml" + - "app/views/admin/application_settings/_signin.html.haml" + - "app/views/admin/application_settings/_signup.html.haml" + - "app/views/admin/application_settings/_spam.html.haml" + - "app/views/admin/application_settings/_terminal.html.haml" + - "app/views/admin/application_settings/_usage.html.haml" + - "app/views/admin/application_settings/_visibility_and_access.html.haml" + - "app/views/admin/applications/_delete_form.html.haml" + - "app/views/admin/applications/_form.html.haml" + - "app/views/admin/applications/edit.html.haml" + - "app/views/admin/applications/index.html.haml" + - "app/views/admin/applications/new.html.haml" + - "app/views/admin/applications/show.html.haml" + - "app/views/admin/background_jobs/show.html.haml" + - "app/views/admin/broadcast_messages/index.html.haml" + - "app/views/admin/dashboard/index.html.haml" + - "app/views/admin/deploy_keys/new.html.haml" + - "app/views/admin/health_check/show.html.haml" + - "app/views/admin/hook_logs/_index.html.haml" + - "app/views/admin/hook_logs/show.html.haml" + - "app/views/admin/hooks/_form.html.haml" + - "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" + - "app/views/admin/runners/show.html.haml" + - "app/views/admin/services/_form.html.haml" + - "app/views/admin/services/index.html.haml" + - "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" + - "app/views/admin/users/_projects.html.haml" + - "app/views/admin/users/new.html.haml" + - "app/views/admin/users/projects.html.haml" + - "app/views/admin/users/show.html.haml" + - "app/views/clusters/clusters/_cluster.html.haml" + - "app/views/clusters/clusters/new.html.haml" + - "app/views/dashboard/milestones/index.html.haml" + - "app/views/dashboard/projects/_blank_state_admin_welcome.html.haml" + - "app/views/dashboard/projects/_blank_state_welcome.html.haml" + - "app/views/dashboard/todos/_todo.html.haml" + - "app/views/dashboard/todos/index.html.haml" + - "app/views/devise/confirmations/almost_there.haml" + - "app/views/devise/mailer/_confirmation_instructions_account.html.haml" + - "app/views/devise/mailer/_confirmation_instructions_secondary.html.haml" + - "app/views/devise/mailer/email_changed.html.haml" + - "app/views/devise/mailer/password_change.html.haml" + - "app/views/devise/mailer/reset_password_instructions.html.haml" + - "app/views/devise/mailer/unlock_instructions.html.haml" + - "app/views/devise/passwords/edit.html.haml" + - "app/views/devise/sessions/_new_base.html.haml" + - "app/views/devise/sessions/_new_crowd.html.haml" + - "app/views/devise/sessions/_new_ldap.html.haml" + - "app/views/devise/sessions/new.html.haml" + - "app/views/devise/sessions/two_factor.html.haml" + - "app/views/devise/shared/_omniauth_box.html.haml" + - "app/views/devise/shared/_sign_in_link.html.haml" + - "app/views/devise/shared/_tabs_normal.html.haml" + - "app/views/discussions/_discussion.html.haml" + - "app/views/discussions/_headline.html.haml" + - "app/views/discussions/_notes.html.haml" + - "app/views/doorkeeper/applications/_delete_form.html.haml" + - "app/views/doorkeeper/authorized_applications/_delete_form.html.haml" + - "app/views/errors/encoding.html.haml" + - "app/views/errors/git_not_found.html.haml" + - "app/views/errors/omniauth_error.html.haml" + - "app/views/errors/precondition_failed.html.haml" + - "app/views/events/_event_push.atom.haml" + - "app/views/events/event/_push.html.haml" + - "app/views/groups/_create_chat_team.html.haml" + - "app/views/groups/_group_admin_settings.html.haml" + - "app/views/groups/labels/edit.html.haml" + - "app/views/groups/labels/new.html.haml" + - "app/views/groups/milestones/edit.html.haml" + - "app/views/groups/milestones/index.html.haml" + - "app/views/groups/milestones/new.html.haml" + - "app/views/groups/projects.html.haml" + - "app/views/groups/runners/edit.html.haml" + - "app/views/groups/settings/_advanced.html.haml" + - "app/views/groups/settings/_lfs.html.haml" + - "app/views/help/_shortcuts.html.haml" + - "app/views/help/index.html.haml" + - "app/views/help/instance_configuration.html.haml" + - "app/views/help/instance_configuration/_gitlab_ci.html.haml" + - "app/views/help/instance_configuration/_gitlab_pages.html.haml" + - "app/views/help/ui.html.haml" + - "app/views/import/bitbucket/status.html.haml" + - "app/views/import/bitbucket_server/status.html.haml" + - "app/views/invites/show.html.haml" + - "app/views/layouts/_mailer.html.haml" + - "app/views/layouts/header/_default.html.haml" + - "app/views/layouts/header/_new_dropdown.haml" + - "app/views/layouts/notify.html.haml" + - "app/views/notify/_failed_builds.html.haml" + - "app/views/notify/_reassigned_issuable_email.html.haml" + - "app/views/notify/_removal_notification.html.haml" + - "app/views/notify/_successful_pipeline.html.haml" + - "app/views/notify/autodevops_disabled_email.html.haml" + - "app/views/notify/changed_milestone_email.html.haml" + - "app/views/notify/import_issues_csv_email.html.haml" + - "app/views/notify/issue_moved_email.html.haml" + - "app/views/notify/member_access_denied_email.html.haml" + - "app/views/notify/member_invite_accepted_email.html.haml" + - "app/views/notify/member_invited_email.html.haml" + - "app/views/notify/new_gpg_key_email.html.haml" + - "app/views/notify/new_mention_in_issue_email.html.haml" + - "app/views/notify/new_ssh_key_email.html.haml" + - "app/views/notify/new_user_email.html.haml" + - "app/views/notify/pages_domain_disabled_email.html.haml" + - "app/views/notify/pages_domain_enabled_email.html.haml" + - "app/views/notify/pages_domain_verification_failed_email.html.haml" + - "app/views/notify/pages_domain_verification_succeeded_email.html.haml" + - "app/views/notify/pipeline_failed_email.html.haml" + - "app/views/notify/project_was_exported_email.html.haml" + - "app/views/notify/project_was_moved_email.html.haml" + - "app/views/notify/project_was_not_exported_email.html.haml" + - "app/views/notify/push_to_merge_request_email.html.haml" + - "app/views/notify/remote_mirror_update_failed_email.html.haml" + - "app/views/notify/removed_milestone_issue_email.html.haml" + - "app/views/notify/removed_milestone_merge_request_email.html.haml" + - "app/views/notify/repository_push_email.html.haml" + - "app/views/profiles/chat_names/_chat_name.html.haml" + - "app/views/profiles/chat_names/index.html.haml" + - "app/views/profiles/chat_names/new.html.haml" + - "app/views/projects/_bitbucket_import_modal.html.haml" + - "app/views/projects/_customize_workflow.html.haml" + - "app/views/projects/_deletion_failed.html.haml" + - "app/views/projects/_fork_suggestion.html.haml" + - "app/views/projects/_gitlab_import_modal.html.haml" + - "app/views/projects/_home_panel.html.haml" + - "app/views/projects/_import_project_pane.html.haml" + - "app/views/projects/_issuable_by_email.html.haml" + - "app/views/projects/_md_preview.html.haml" + - "app/views/projects/_readme.html.haml" + - "app/views/projects/artifacts/_artifact.html.haml" + - "app/views/projects/artifacts/_tree_file.html.haml" + - "app/views/projects/artifacts/browse.html.haml" + - "app/views/projects/blame/_age_map_legend.html.haml" + - "app/views/projects/blame/show.html.haml" + - "app/views/projects/blob/_editor.html.haml" + - "app/views/projects/blob/_header_content.html.haml" + - "app/views/projects/blob/_remove.html.haml" + - "app/views/projects/blob/_render_error.html.haml" + - "app/views/projects/blob/edit.html.haml" + - "app/views/projects/blob/new.html.haml" + - "app/views/projects/blob/preview.html.haml" + - "app/views/projects/blob/viewers/_empty.html.haml" + - "app/views/projects/blob/viewers/_stl.html.haml" + - "app/views/projects/branches/_branch.html.haml" + - "app/views/projects/branches/_delete_protected_modal.html.haml" + - "app/views/projects/branches/new.html.haml" + - "app/views/projects/ci/builds/_build.html.haml" + - "app/views/projects/ci/lints/_create.html.haml" + - "app/views/projects/compare/_form.html.haml" + - "app/views/projects/compare/index.html.haml" + - "app/views/projects/cycle_analytics/_empty_stage.html.haml" + - "app/views/projects/cycle_analytics/_no_access.html.haml" + - "app/views/projects/cycle_analytics/_overview.html.haml" + - "app/views/projects/cycle_analytics/show.html.haml" + - "app/views/projects/deploy_keys/_form.html.haml" + - "app/views/projects/deploy_keys/_index.html.haml" + - "app/views/projects/deploy_keys/edit.html.haml" + - "app/views/projects/deployments/_deployment.html.haml" + - "app/views/projects/diffs/_file_header.html.haml" + - "app/views/projects/diffs/_replaced_image_diff.html.haml" + - "app/views/projects/diffs/_stats.html.haml" + - "app/views/projects/empty.html.haml" + - "app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml" + - "app/views/projects/hook_logs/_index.html.haml" + - "app/views/projects/hook_logs/show.html.haml" + - "app/views/projects/hooks/edit.html.haml" + - "app/views/projects/imports/new.html.haml" + - "app/views/projects/imports/show.html.haml" + - "app/views/projects/issues/_new_branch.html.haml" + - "app/views/projects/issues/import_csv/_modal.html.haml" + - "app/views/projects/issues/show.html.haml" + - "app/views/projects/jobs/_header.html.haml" + - "app/views/projects/jobs/_table.html.haml" + - "app/views/projects/jobs/index.html.haml" + - "app/views/projects/labels/edit.html.haml" + - "app/views/projects/labels/new.html.haml" + - "app/views/projects/mattermosts/_no_teams.html.haml" + - "app/views/projects/mattermosts/_team_selection.html.haml" + - "app/views/projects/mattermosts/new.html.haml" + - "app/views/projects/merge_requests/_commits.html.haml" + - "app/views/projects/merge_requests/_discussion.html.haml" + - "app/views/projects/merge_requests/_how_to_merge.html.haml" + - "app/views/projects/merge_requests/_mr_title.html.haml" + - "app/views/projects/merge_requests/conflicts/_commit_stats.html.haml" + - "app/views/projects/merge_requests/conflicts/_file_actions.html.haml" + - "app/views/projects/merge_requests/conflicts/_submit_form.html.haml" + - "app/views/projects/merge_requests/conflicts/components/_diff_file_editor.html.haml" + - "app/views/projects/merge_requests/conflicts/components/_inline_conflict_lines.html.haml" + - "app/views/projects/merge_requests/conflicts/show.html.haml" + - "app/views/projects/merge_requests/creations/_diffs.html.haml" + - "app/views/projects/merge_requests/creations/_new_compare.html.haml" + - "app/views/projects/merge_requests/creations/_new_submit.html.haml" + - "app/views/projects/merge_requests/diffs/_different_base.html.haml" + - "app/views/projects/merge_requests/diffs/_diffs.html.haml" + - "app/views/projects/merge_requests/diffs/_version_controls.html.haml" + - "app/views/projects/merge_requests/invalid.html.haml" + - "app/views/projects/merge_requests/widget/open/_error.html.haml" + - "app/views/projects/mirrors/_regenerate_public_ssh_key_confirm_modal.html.haml" + - "app/views/projects/mirrors/_ssh_host_keys.html.haml" + - "app/views/projects/no_repo.html.haml" + - "app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml" + - "app/views/projects/pipelines/_info.html.haml" + - "app/views/projects/protected_branches/shared/_dropdown.html.haml" + - "app/views/projects/protected_branches/shared/_index.html.haml" + - "app/views/projects/protected_branches/shared/_matching_branch.html.haml" + - "app/views/projects/protected_branches/shared/_protected_branch.html.haml" + - "app/views/projects/protected_branches/show.html.haml" + - "app/views/projects/protected_tags/shared/_create_protected_tag.html.haml" + - "app/views/projects/protected_tags/shared/_dropdown.html.haml" + - "app/views/projects/protected_tags/shared/_index.html.haml" + - "app/views/projects/protected_tags/shared/_matching_tag.html.haml" + - "app/views/projects/protected_tags/shared/_protected_tag.html.haml" + - "app/views/projects/protected_tags/shared/_tags_list.html.haml" + - "app/views/projects/protected_tags/show.html.haml" + - "app/views/projects/registry/repositories/_tag.html.haml" + - "app/views/projects/repositories/_feed.html.haml" + - "app/views/projects/runners/_shared_runners.html.haml" + - "app/views/projects/runners/edit.html.haml" + - "app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml" + - "app/views/projects/services/mattermost_slash_commands/_help.html.haml" + - "app/views/projects/services/prometheus/_metrics.html.haml" + - "app/views/projects/services/slack_slash_commands/_help.html.haml" + - "app/views/projects/settings/ci_cd/_badge.html.haml" + - "app/views/projects/settings/ci_cd/_form.html.haml" + - "app/views/projects/tags/index.html.haml" + - "app/views/projects/tags/releases/edit.html.haml" + - "app/views/projects/tree/_tree_row.html.haml" + - "app/views/projects/tree/_truncated_notice_tree_row.html.haml" + - "app/views/projects/triggers/_form.html.haml" + - "app/views/projects/triggers/_index.html.haml" + - "app/views/projects/triggers/_trigger.html.haml" + - "app/views/projects/triggers/edit.html.haml" + - "app/views/projects/wikis/_pages_wiki_page.html.haml" + - "app/views/search/results/_issue.html.haml" + - "app/views/search/results/_note.html.haml" + - "app/views/search/results/_snippet_blob.html.haml" + - "app/views/search/results/_snippet_title.html.haml" + - "app/views/shared/_auto_devops_implicitly_enabled_banner.html.haml" + - "app/views/shared/_commit_message_container.html.haml" + - "app/views/shared/_delete_label_modal.html.haml" + - "app/views/shared/_group_form.html.haml" + - "app/views/shared/_group_tips.html.haml" + - "app/views/shared/_milestone_expired.html.haml" + - "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" + - "app/views/shared/boards/components/sidebar/_milestone.html.haml" + - "app/views/shared/hook_logs/_content.html.haml" + - "app/views/shared/issuable/_assignees.html.haml" + - "app/views/shared/issuable/_board_create_list_dropdown.html.haml" + - "app/views/shared/issuable/_close_reopen_report_toggle.html.haml" + - "app/views/shared/issuable/_form.html.haml" + - "app/views/shared/issuable/_search_bar.html.haml" + - "app/views/shared/issuable/_sidebar.html.haml" + - "app/views/shared/issuable/form/_default_templates.html.haml" + - "app/views/shared/issuable/form/_issue_assignee.html.haml" + - "app/views/shared/issuable/form/_template_selector.html.haml" + - "app/views/shared/issuable/form/_title.html.haml" + - "app/views/shared/labels/_form.html.haml" + - "app/views/shared/members/_member.html.haml" + - "app/views/shared/milestones/_form_dates.html.haml" + - "app/views/shared/milestones/_issuable.html.haml" + - "app/views/shared/milestones/_milestone.html.haml" + - "app/views/shared/milestones/_sidebar.html.haml" + - "app/views/shared/milestones/_top.html.haml" + - "app/views/shared/notes/_hints.html.haml" + - "app/views/shared/notifications/_button.html.haml" + - "app/views/shared/notifications/_new_button.html.haml" + - "app/views/shared/runners/_runner_description.html.haml" + - "app/views/shared/runners/show.html.haml" + - "app/views/shared/snippets/_header.html.haml" + - "app/views/shared/snippets/_snippet.html.haml" + - "app/views/shared/web_hooks/_form.html.haml" + - "app/views/shared/web_hooks/_hook.html.haml" + - "app/views/u2f/_authenticate.html.haml" + - "app/views/u2f/_register.html.haml" + - "app/views/users/_deletion_guidance.html.haml" + - "ee/app/views/admin/_namespace_plan_info.html.haml" + - "ee/app/views/admin/application_settings/_templates.html.haml" + - "ee/app/views/admin/audit_logs/index.html.haml" + - "ee/app/views/admin/emails/show.html.haml" + - "ee/app/views/admin/geo/projects/_registry_failed.html.haml" + - "ee/app/views/admin/geo/projects/_registry_never.html.haml" + - "ee/app/views/admin/licenses/_upload_trial_license.html.haml" + - "ee/app/views/admin/licenses/new.html.haml" + - "ee/app/views/admin/licenses/show.html.haml" + - "ee/app/views/admin/monitoring/ee/_nav.html.haml" + - "ee/app/views/admin/projects/_shared_runner_status.html.haml" + - "ee/app/views/admin/users/_auditor_access_level_radio.html.haml" + - "ee/app/views/admin/users/_auditor_user_badge.html.haml" + - "ee/app/views/admin/users/_limits.html.haml" + - "ee/app/views/admin/users/_user_detail_note.html.haml" + - "ee/app/views/dashboard/projects/_blank_state_ee_trial.html.haml" + - "ee/app/views/errors/kerberos_denied.html.haml" + - "ee/app/views/groups/ee/_settings_nav.html.haml" + - "ee/app/views/groups/group_members/_ldap_sync.html.haml" + - "ee/app/views/groups/group_members/_sync_button.html.haml" + - "ee/app/views/groups/hooks/edit.html.haml" + - "ee/app/views/groups/ldap_group_links/index.html.haml" + - "ee/app/views/jira_connect/subscriptions/index.html.haml" + - "ee/app/views/layouts/jira_connect.html.haml" + - "ee/app/views/layouts/nav/ee/admin/_new_monitoring_sidebar.html.haml" + - "ee/app/views/layouts/service_desk.html.haml" + - "ee/app/views/ldap_group_links/_form.html.haml" + - "ee/app/views/ldap_group_links/_ldap_group_link.html.haml" + - "ee/app/views/ldap_group_links/_ldap_group_links.html.haml" + - "ee/app/views/ldap_group_links/_ldap_group_links_show.html.haml" + - "ee/app/views/ldap_group_links/_ldap_group_links_synchronizations.html.haml" + - "ee/app/views/namespaces/_shared_runner_status.html.haml" + - "ee/app/views/namespaces/_shared_runners_minutes_setting.html.haml" + - "ee/app/views/namespaces/pipelines_quota/_extra_shared_runners_minutes_quota.html.haml" + - "ee/app/views/namespaces/pipelines_quota/_list.haml" + - "ee/app/views/notify/approved_merge_request_email.html.haml" + - "ee/app/views/notify/epic_status_changed_email.html.haml" + - "ee/app/views/notify/new_review_email.html.haml" + - "ee/app/views/notify/send_admin_notification.html.haml" + - "ee/app/views/notify/send_unsubscribed_notification.html.haml" + - "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" + - "ee/app/views/projects/protected_branches/_update_protected_branch.html.haml" + - "ee/app/views/projects/protected_branches/ee/_create_protected_branch.html.haml" + - "ee/app/views/projects/protected_branches/ee/_dropdown.html.haml" + - "ee/app/views/projects/protected_tags/_protected_tag_extra_create_access_levels.haml" + - "ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml" + - "ee/app/views/projects/push_rules/_index.html.haml" + - "ee/app/views/projects/services/gitlab_slack_application/_help.html.haml" + - "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" + - "ee/app/views/shared/issuable/_filter_weight.html.haml" + - "ee/app/views/shared/members/ee/_ldap_tag.html.haml" + - "ee/app/views/shared/members/ee/_override_member_buttons.html.haml" + - "ee/app/views/shared/members/ee/_sso_badge.html.haml" + - "ee/app/views/shared/milestones/_burndown.html.haml" + - "ee/app/views/shared/milestones/_weight.html.haml" + - "ee/app/views/shared/promotions/_promote_issue_weights.html.haml" + - "ee/app/views/shared/promotions/_promote_repository_features.html.haml" + - "ee/app/views/shared/promotions/_promote_servicedesk.html.haml" + - "ee/app/views/shared/push_rules/_form.html.haml" + - "ee/app/views/unsubscribes/show.html.haml" diff --git a/.markdownlint.json b/.markdownlint.json index ce319756c5..88e3d5f775 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -45,6 +45,8 @@ "DevOps", "Elasticsearch", "Facebook", + "GDK", + "Geo", "Git LFS", "git-annex", "Git", @@ -59,9 +61,11 @@ "GitLab Shell", "GitLab Workhorse", "GitLab", + "Gitleaks", "Gmail", "Google", "Grafana", + "Gzip", "Helm", "HipChat", "Ingress", @@ -99,6 +103,7 @@ "PostgreSQL", "Prometheus", "Puma", + "puma-worker-killer", "Python", "Rake", "Redis", @@ -113,8 +118,10 @@ "Shibboleth", "Slack", "SMTP", + "SpotBugs", "SSH", "Tiller", + "TOML", "Trello", "Trello Power-Ups", "TypeScript", @@ -123,7 +130,9 @@ "Ultra Auth", "Unicorn", "unicorn-worker-killer", + "URL", "WebdriverIO", + "YAML", "YouTrack" ], "code_blocks": false diff --git a/.rubocop.yml b/.rubocop.yml index c98d027cee..3d013a650e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -28,6 +28,12 @@ AllCops: - 'file_hooks/**/*' CacheRootDirectory: tmp +Cop/AvoidKeywordArgumentsInSidekiqWorkers: + Enabled: true + Include: + - 'app/workers/**/*' + - 'ee/app/workers/**/*' + Cop/StaticTranslationDefinition: Enabled: true Exclude: @@ -200,12 +206,26 @@ Gitlab/ConstGetInheritFalse: Exclude: - 'qa/bin/*' +Gitlab/ChangeTimezone: + Enabled: true + Exclude: + - config/initializers/time_zone.rb + Gitlab/HTTParty: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' +Gitlab/Json: + Enabled: true + Exclude: + - 'db/**/*' + - 'qa/**/*' + - 'scripts/**/*' + - 'lib/rspec_flaky/**/*' + - 'lib/quality/**/*' + GitlabSecurity/PublicSend: Enabled: true Exclude: @@ -221,10 +241,8 @@ GitlabSecurity/PublicSend: Gitlab/DuplicateSpecLocation: Exclude: - - ee/spec/helpers/auth_helper_spec.rb - ee/spec/lib/gitlab/gl_repository_spec.rb - ee/spec/services/merge_requests/refresh_service_spec.rb - - ee/spec/helpers/ee/auth_helper_spec.rb - ee/spec/services/ee/merge_requests/refresh_service_spec.rb Cop/InjectEnterpriseEditionModule: @@ -325,11 +343,45 @@ RSpec/AnyInstanceOf: RSpec/ImplicitSubject: Enabled: false +# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/211580 RSpec/LeakyConstantDeclaration: Enabled: true Exclude: - - 'spec/**/*.rb' - - 'qa/spec/**/*.rb' + - 'spec/db/schema_spec.rb' + - 'spec/lib/feature_spec.rb' + - 'spec/lib/gitlab/ci/build/credentials/factory_spec.rb' + - 'spec/lib/gitlab/ci/config/entry/retry_spec.rb' + - 'spec/lib/gitlab/cluster/mixins/puma_cluster_spec.rb' + - 'spec/lib/gitlab/cluster/mixins/unicorn_http_server_spec.rb' + - 'spec/lib/gitlab/config/entry/factory_spec.rb' + - 'spec/lib/gitlab/config/entry/simplifiable_spec.rb' + - 'spec/lib/gitlab/database/migration_helpers_spec.rb' + - 'spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb' + - 'spec/lib/gitlab/database/with_lock_retries_spec.rb' + - 'spec/lib/gitlab/git/diff_collection_spec.rb' + - 'spec/lib/gitlab/import_export/import_test_coverage_spec.rb' + - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb' + - 'spec/lib/gitlab/jira_import/issues_importer_spec.rb' + - 'spec/lib/gitlab/no_cache_headers_spec.rb' + - 'spec/lib/gitlab/path_regex_spec.rb' + - 'spec/lib/gitlab/quick_actions/dsl_spec.rb' + - 'spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb' + - 'spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb' + - 'spec/lib/marginalia_spec.rb' + - 'spec/mailers/notify_spec.rb' + - 'spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb' + - 'spec/models/concerns/batch_destroy_dependent_associations_spec.rb' + - 'spec/models/concerns/bulk_insert_safe_spec.rb' + - 'spec/models/concerns/bulk_insertable_associations_spec.rb' + - 'spec/models/concerns/triggerable_hooks_spec.rb' + - 'spec/models/repository_spec.rb' + - 'spec/requests/api/graphql/tasks/task_completion_status_spec.rb' + - 'spec/serializers/commit_entity_spec.rb' + - 'spec/services/clusters/applications/check_installation_progress_service_spec.rb' + - 'spec/services/clusters/applications/check_uninstall_progress_service_spec.rb' + - 'spec/support/shared_contexts/spam_constants.rb' + - 'spec/support/shared_examples/quick_actions/issuable/issuable_quick_actions_shared_examples.rb' + - 'spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb' RSpec/EmptyLineAfterHook: Enabled: false @@ -387,3 +439,17 @@ Performance/ChainArrayAllocation: - 'lib/gitlab/import_export/**/*' - 'ee/lib/gitlab/import_export/**/*' - 'ee/lib/ee/gitlab/import_export/**/*' + +Rails/TimeZone: + Enabled: true + EnforcedStyle: 'flexible' + Include: + - 'app/controllers/**/*' + - 'app/services/**/*' + - 'spec/controllers/**/*' + - 'spec/services/**/*' + - 'ee/app/controllers/**/*' + - 'ee/app/services/**/*' + - 'ee/spec/controllers/**/*' + - 'ee/spec/services/**/*' + diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 66a025a8fe..bd0f9184cd 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -475,7 +475,6 @@ Style/MixinUsage: Style/MultilineIfModifier: Exclude: - 'app/helpers/snippets_helper.rb' - - 'app/models/project_wiki.rb' - 'app/services/ci/process_pipeline_service.rb' - 'lib/api/commit_statuses.rb' @@ -614,29 +613,6 @@ Style/StringLiteralsInInterpolation: Style/SymbolProc: Enabled: false -# Offense count: 7 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, AllowSafeAssignment. -# SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex -Style/TernaryParentheses: - Exclude: - - 'app/finders/projects_finder.rb' - - 'app/helpers/namespaces_helper.rb' - - 'lib/gitlab/ci/build/artifacts/metadata/entry.rb' - - 'spec/requests/api/pipeline_schedules_spec.rb' - - 'spec/support/capybara.rb' - -# Offense count: 8 -# Cop supports --auto-correct. -Style/UnneededCondition: - Exclude: - - 'app/helpers/button_helper.rb' - - 'app/helpers/environment_helper.rb' - - 'app/models/project.rb' - - 'app/services/issuable/clone/base_service.rb' - - 'lib/gitlab/email/message/repository_push.rb' - - 'spec/lib/rspec_flaky/flaky_example_spec.rb' - # Offense count: 99 # Cop supports --auto-correct. Style/UnneededInterpolation: diff --git a/CHANGELOG-EE.md b/CHANGELOG-EE.md index 76ba4b82fe..b48dce6546 100644 --- a/CHANGELOG-EE.md +++ b/CHANGELOG-EE.md @@ -1,5 +1,16 @@ Please view this file on the master branch, on stable branches it's out of date. +## 12.10.5 (2020-05-13) + +### Fixed (1 change) + +- Remove check for user being an applicable code owner. !31809 + + +## 12.10.4 (2020-05-05) + +- No changes. + ## 12.10.2 (2020-04-30) ### Security (3 changes) @@ -59,6 +70,19 @@ Please view this file on the master branch, on stable branches it's out of date. - Add health status counts to usage data. !28964 +## 12.9.6 (2020-05-05) + +- No changes. + +## 12.9.5 (2020-04-30) + +### Security (3 changes) + +- Fix rendering failure of Audit Event generated by Releases API. +- Ensure that NuGet package versions are SemVer compliant. +- Ensure that NuGet package versions are validated before updating the stored file path. + + ## 12.9.4 (2020-04-16) - No changes. @@ -231,6 +255,15 @@ Please view this file on the master branch, on stable branches it's out of date. - Allow users to be marked as service users. !202680 +## 12.8.10 (2020-04-30) + +### Security (3 changes) + +- Fix rendering failure of Audit Event generated by Releases API. +- Ensure that NuGet package versions are SemVer compliant. +- Ensure that NuGet package versions are validated before updating the stored file path. + + ## 12.8.9 (2020-04-14) ### Security (1 change) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05828ccd0d..d192f143f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,587 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 12.10.3 (2020-05-04) +## 13.0.0 (2020-05-22) -### Fixed (6 changes) +### Removed (20 changes, 5 of them are from the community) +- Remove project routes that were deprecated before 12.1. !26808 +- Drop x-y-stable version pinning for Secure templates. !29603 +- Remove logs from the admin pages. !30485 +- Remove deprecated /admin/application_settings redirect. !30532 +- Drop support for License-Management CI template. !30645 +- Remove deprecated InfluxDB. !30786 +- Remove deprecated Release Evidence endpoints. !30975 +- Remove deprecated Release Evidence endpoints documentation. !30978 +- Drop support for `license_management` artifact. !31247 +- Remove deprecated container scanning report parser. !31294 +- Remove rake task `gitlab:track_deployment`. !31404 +- Remove token attribute from Runners API. !31448 +- Remove support for Ruby format variable interpolation (`%{variable}`) in custom dashboards. !31581 +- Remove JenkinsDeprecatedService. !31607 (tnwx) +- Remove ruby_memory_bytes metric, duplicate of ruby_process_resident_memory_bytes. !31705 +- Remove project_list_show_mr_count feature flag. !31789 (Gilang Gumilar) +- Remove project_list_show_issue_count feature flag. !31793 (Gilang Gumilar) +- Remove set_user_last_activity feature flag. !31795 (Gilang Gumilar) +- Remove registrations_recaptcha feature flag. !31797 (Gilang Gumilar) +- Remove deprecated Sidekiq rake tasks. + +### Fixed (171 changes, 54 of them are from the community) + +- Allow public access to pipeline schedules. !20806 (Lee Tickett) +- Add user last_activity logging in GraphQL. !23063 +- Render TestReport parsing errors back to pipeline test summary. !24188 +- Add user popovers to system notes. !24241 +- Fix missing RSS feed events. !28054 +- Resolve Text for future Release date grammatically incorrect. !28075 +- Fix number of approvals given calculation. !28293 (Steffen Köhler) +- Always display new subgroup button when permission is granted. !28309 (Mattias Michaux) +- Correct the permission according to docs. !28657 +- Fix duplicated activity and events on deletion of tag. !28861 (Sashi Kumar) +- Fix init.d script to correctly set web server PID. !29164 +- Honor per_page in Search API. !29197 +- fix: use the source project to generate commit links for un-persisted merge requests. !29243 (Chieh-Min Wang) +- Fix display of some overflowing merge request diffs. !29267 +- Move prepend to last line in helper files. !29327 (Rajendra Kadam) +- Prevent duplicate tooltips when hovering over status emoji in comments. !29356 +- Update Elastic Stack chart to 2.0.0 to support kubernetes 1.16. !29601 +- Fix minor spacing issue at Snippet blob viewer. !29625 (Karthick Venkatesan) +- Eliminate errors in wiki controller during edit. !29645 +- Fixed copy as GFM not copying upload links. !29683 +- Bump max search depth from 2 to 4 when looking for files SAST analyzers can handle. !29732 +- Move snippet raw_url attribute to base entity. !29776 +- Return content from repo in snippet raw endpoint. !29781 +- Return file name from repo in snippet endpoints. !29785 +- Propagation of service templates also covers services with separate data tables. !29805 +- Fix bug in personal snippets when somebody is mentioned. !29835 (Sashi Kumar) +- Embed metrics charts for both /metrics and /metrics_dashboard routes. !29838 +- Fix admin mode access on GraphiQL controller. !29845 (Diego Louzán) +- Exclude html entities from haml lint. !29847 (Lee Tickett) +- Fixed JS error for anonymous views of a snippet. !29854 +- Destroy Dropzone hidden input when form is destroyed. !29882 +- Move prepend to last line in lib/gitlab files. !29938 (Rajendra) +- Match Jira keys with trailing characters. !29953 +- Fixed Cancel action on Snippet edit for existing snippets. !29993 +- Warn user before losing wiki content. !30037 +- Move prepend to last line in lib/gitlab files. !30070 (Rajendra Kadam) +- Fix an issue where the Search dropdown results would not be clickable. !30087 (mbergeron) +- Capture all errors when updating repository storage. !30119 +- Move alert management behind a feature flag. !30133 +- Fix bug when services appear active even though they are not. !30160 +- Fix moving an issue when there is a group reference. !30185 +- Move prepend to last line in lib/gitlab files. !30194 (Rajendra Kadam) +- Move prepend to last line in lib/gitlab files. !30289 (Rajendra Kadam) +- Move prepend to last line in lib/gitlab files. !30291 (Rajendra Kadam) +- Set NULL `lock_version` values to 0 for CI objects. !30305 - Fix errors creating project with active Prometheus service template. !30340 +- Add Activity icons for Wiki updated and destroyed events. !30349 +- Gracefully handle orphaned member invites. !30355 - Fix incorrect commits number in commits list. !30412 - Fix second 500 error with NULL restricted visibility levels. !30414 +- Move prepend to last line in ee/services. !30425 (Rajendra Kadam) - Add LFS badge feature flag to RefsController#logs_tree. !30442 +- Fix mirror repos docs link. !30443 +- Added right margin to Clone Snippet button. !30471 +- Fix blob link for the code search. !30473 +- Use Jira import owner as the issue author when importing issues from Jira. !30504 +- Correctly count wiki pages in sidebar. !30508 +- Stretch heatmap metrics full column size. !30524 +- Upgrade Unicorn to v5.5.1. !30541 +- Avoid copying diffs as Markdown tables. !30572 +- Fixes overlapping tooltips when clicking copy buttons. !30622 +- Fix 500 error for non-existing snippet on graphql mutations. !30632 (Sashi Kumar) +- Change validation rules for profile email addresses. !30633 +- Set timeout for Google OAuth to prevent 503 error. !30653 +- Remove extra sleep when obtaining exclusive lease. !30654 +- Fix GitLab CI/CD Scala template. !30667 +- Fix checkmark position on dropdowns. !30685 +- Remove Visibility from terraform widget. !30737 +- Use migration bot user in snippet migration. !30762 +- Fix discard button not showing for new empty files in Web IDE. !30767 - Disable schema dumping after migrations in production. !30812 +- Fix mapping group membets as Jira issues authors/assignees. !30820 +- Align styling of snippet search results. !30837 +- Move daily create users statistics cronjob to CE. !30843 +- Fixed alignment of Snippet Clone copy buttons. !30897 +- Increase constrast ratio of text in some tables. !30903 +- Ignore .gitattributes if they contain invalid byte sequences. !30922 +- Fix bug in Snippet BlobViewer GraphQL definition. !30927 +- Fix layout in issue view, on large screen some buttons were misaligned. !30947 (Michele (macno) Azzolari) +- Fix error renaming files using web IDE. !30969 +- Handle Snippet file name errors in backfill. !30981 +- Correctly track the store that external MR diffs are placed on. !31005 +- Fix duplicate index removal on ci_pipelines.project_id. !31043 +- Update recursive-open-struct to 1.1.1 to make it compatible with ruby 2.7. !31047 +- Revert CODEOWNERS validation of Web requests in diff check. !31087 +- Wrap wiki blob search result in its own object. !31155 +- Allow multiple usage of EE extension/inclusion on last lines. !31183 (Rajendra Kadam) +- Fix 500 error loading environments index. !31184 +- Fix 500 on creating an invalid domains and verification. !31190 +- Fix redirect loop on .com when 2FA is required. !31229 +- Fix regression and allow SCIM to create SAML identity. !31238 +- Fix incorrect number of errors returned when querying sentry errors. !31252 +- Fix RST rendering hanging on large files. !31287 +- Trim whitespace in directory names in the Web IDE. !31305 +- Fix 'not enough data' in Value Stream Analytics when low median values are returned. !31315 +- Add tooltip to container registry tags last update column. !31317 +- Fix Istio broken Istio metrics installation. !31382 +- Link to subgroup milestones correctly from group milestones page. !31383 +- Remove kwargs from storage move worker. !31412 +- Make edit board text sentence case. !31418 +- Katex render and vscode output improvements for markdown. !31433 (Reinhold Gschweicher ) +- Fix overwrite check in GitLab import/export. !31439 +- Fix API requests for branch names ending in .txt. !31446 (Daniel Stone) +- Avoid repository size checkings in snippet migrations for migration bot. !31473 +- Use iso 8601 timestamp format in metrics dashboard annotations graphql resource to assure multi browser compatibility. !31474 +- In WebIDE get files with relative path instead of web_url. !31478 +- Fix snippet migration when user has invalid info. !31488 +- Add elipsis to container registry tag name. !31584 +- Add instance column to services table if it's missing. !31631 +- Fix issue with broken images in Web IDE markdown. !31638 +- Fixes bug where variables were not protected by default when using the correct CI/CD admin setting. !31655 +- Decode dashboard_path when creating annotations. !31665 +- Fix "how to checkout MR" help link. !31688 +- Fixed redirection when deleting a project snippet. !31709 +- Fix templates API endpoint when project name has dots. !31758 +- Remove detection of file in Dependency Scanning template. !31819 +- Move prepend to last line in app models. !31826 (Rajendra Kadam) +- Move prepend to last line in app models 2. !31827 (Rajendra Kadam) +- Move prepend to last line in app models 3. !31829 (Rajendra Kadam) +- Move include_if_ee to last line in ee/app 1. !31832 (Rajendra Kadam) +- Restore original sort order of the metrics dashboard select list. !31859 +- Fix Snippet update error bug losing changes. !31873 +- Replace the outdated link. !31874 (Renamoo) +- Replace let! with let_it_be in user api spec. !31901 (Rajendra Kadam) +- Replace let! with let_it_be in merge request spec. !31909 (Rajendra Kadam) +- angelog Replace let! with let_it_be in pipelines spec. !31916 (Rajendra Kadam) +- Fix public metrics dashboard visibility bug. !31925 +- Add nested file detection for Dependency Scanning. !31932 +- Add class stubs and fix leaky constant cop alert. !31938 (Rajendra Kadam) +- Add class stubs and fix leaky constant alert in content whitelist spec. !31946 (Rajendra Kadam) +- Fix broken heading of Vue 3 migration guide doc. !31951 (Gilang Gumilar) +- Add class stubs and fix leaky constant alert in query recorder spec. !31954 (Rajendra Kadam) +- Fix no scroll when overflow in IDE right pane. !31961 +- Fix leaky constant cop issue in clone dashboard service spec. !31962 (Rajendra Kadam) +- Stub class constant in resolve discussion spec. !31965 (Rajendra Kadam) +- Fix leaky constant issue in upgrade progress service check. !31969 (Rajendra Kadam) +- Clear merge request error on push to source branch. !32001 +- Allow only users with `adminNote` permission to edit the design note. !32035 +- Fix leaky constant issue in retry build service check. !32038 (Rajendra Kadam) +- Fix leaky constant issue in env assignment spec. !32040 (Rajendra Kadam) +- Fix leaky constant issue in statistics api spec. !32042 (Rajendra Kadam) +- Fix leaky constant issue in merge request policy spec. !32044 (Rajendra Kadam) +- Fix leaky constant issue in tree spec. !32045 (Rajendra Kadam) +- Fix leaky constant issue in mentionable spec. !32049 (Rajendra Kadam) +- Fix leaky constant issue in json serialization spec. !32051 (Rajendra Kadam) +- Fix leaky constant issue in cluster spec. !32053 (Rajendra Kadam) +- Fix bug in Groups API when statistics are requested in an unauthenticated API call. !32057 +- Fix leaky constant issue in nulls pt2 spec. !32058 (Rajendra Kadam) +- Fix leaky constant issue in application settings encrypt spec. !32066 (Rajendra Kadam) +- Fix leaky constant issue in system check spec. !32080 (Rajendra Kadam) +- Fix leaky constant issue in simple executor spec. !32082 (Rajendra Kadam) +- Fix leaky constant issue in jwt spec. !32093 (Rajendra Kadam) +- Update android template. !32096 +- Fix leaky constant issue in factory spec. !32099 (Rajendra Kadam) +- Fix leaky constant issue in sidekiq middleware spec. !32101 (Rajendra Kadam) +- Fix leaky constant issue connection, master check and attr config spec. !32144 (Rajendra Kadam) +- Fix updating of Markdown fields when Markdown cache version is incremented. !32219 +- Fix incorrect regex used in FileUploader#extract_dynamic_path. !32271 +- Improve responses in the snippet create/update API endpoints. !32282 +- Send Devise emails triggered from the 'Email' model asynchronously. !32286 +- Re-enable negative filters for Boards. !32348 +- Fix missing space character in alert header. !32395 +- Fix display of embedded snippets. !32411 (Jan Beckmann) +- Fixed redirection to project snippets. !32530 +- Rake task gitlab:cleanup:orphan_lfs_files should clear the cached value or repository size. !32541 +- Fixed enabled merge button incorrectly showing to users who can't merge. +- Fixed misaligned avatar in commit discussion form. +- Fixed cancel reply button not alerting the user. +- Fixes commit message emojis not rendering in Vue file list. +- Fix logging of username in /jwt/auth. - Fixes branch name not getting escaped correctly on frontend. -### Changed (1 change) +### Deprecated (2 changes) +- Deprecate /plugins directory. !29678 +- Implement external database checker in dashboard controller. !30389 + +### Changed (121 changes, 42 of them are from the community) + +- Support limits for offset based pagination. !28460 +- Redirect issues routes under /-/ scope. !28655 +- Add Fluentd into cluster apps page. !28847 +- Disallow developers to delete builds of protected branches. !28881 (Alexander Kutelev) +- Store status of repository storage moves. !29095 +- Update the example regex in the image expiration policy UI. !29348 +- Add WAF and Cilium Log column for Fluentd table. !29457 +- Update Fluentd model to support multiple logs. !29458 +- Add Cilium to Fluentd UI controls on the Cluster Application page. !29511 +- Use alerts instead of toasts in Image Repository details. !29685 +- Avoid commit when snippet file_name and content are not present. !29761 +- Recreate foreign key in project settings to use nullify instead of cascade. !29767 +- Surface alerts add sidebar link. !29775 +- Make setting alerts on the monitoring dashboard available to GitLab Core users. !29789 +- Keep latest artifact for each ref. !29802 +- Change placeholder in search input for Analytics features. !29858 (Gilang Gumilar) +- Test Jira connection before running import. !29926 +- Remove snippet file_name from snippet lists. !29937 +- Add new keep regex to expiration policy settings ui. !29940 +- Alert management can user enable. !30024 +- Expose the updated_at attribute in the todos API. !30035 +- Update GitLab-managed helm from 2.16.3 to 2.16.6, improving the reliability of GitLab's Kubernetes integration. !30067 +- Show correct label and count on Jira import form. !30072 +- Copy pipelines routing under - scope. !30159 +- Return validation errors for invalid pod name or container name when viewing pod logs. !30165 (Sashi Kumar) +- Move global autocomplete routes to /-/ scope. !30173 +- Update the cancel comment note text to a less ambiguous statement. !30189 +- Use stricter regex for broadcast target path. !30210 +- Change wording of merge request threads counter. !30217 +- Indicate topics are optional. !30264 (Ben Bodenmiller) +- Rename Client Side Evaluation to Live Preview. !30309 +- Decouple partial clone config from max input size. !30354 (Son Luong Ngoc) +- Update managed jupyter chart to 0.9.0 (stable). !30393 +- Hide broadcast messages until the end of the period. !30432 +- Add severity icons for alert management. !30472 +- Move to supported Elastic helm charts. !30528 +- Updated snippet view to show path instead of name for a blob. !30550 - Handle possible RSA key exceptions when generating CI_JOB_JWT. !30702 +- Update sidebar packages name. !30712 +- Update cron job schedule to have a random time generated on page load. !30729 +- Migrate Container-Scanning template to rules syntax. !30775 +- Migrate DAST CI template to rules syntax. !30776 +- Migrate License-Scanning CI template to rules syntax. !30784 +- Code review analytics: Change margin between title and description. !30834 +- Productivity Analytics: Remove separator and cleanup title margins. !30839 +- Move Auto DevOps Test.gitlab-ci.yml template to rules syntax instead of only/except. !30876 +- Change Var to Variable text. !30878 +- Move Build.gitlab-ci.yml to `rules` syntax. !30895 +- Move Code-Quality.gitlab-ci.yml to `rules` syntax. !30896 +- Migrate Dependency-Scanning CI template to rules syntax. !30907 +- Apply shared integrations view to project level. !30971 +- Exposes description, hosts, details, and timestamps for Alert Management Alert GraphQL. !31091 +- Update the example regex in the image expiration policy UI. !31104 +- Add clear explanation to the MR widget when no CI is available and Pipeline must succeed option is activated. !31112 +- Migrate SAST CI template to rules syntax. !31127 +- Update style of buttons on the Releases page. !31129 (Özgür Adem Işıklı @iozguradem) +- Changed test success calculation to exclude skipped tests. !31154 +- app:gitlab:check rake task now warns when projects are not in hashed storage. !31172 +- Moves embedded metrics for Prometheus alerts to Core. !31203 +- Move Deploy.gitlab-ci.yml to `rules` syntax. !31290 +- Modify Snippet git path errors to be more helpful. !31333 +- Move Browser-Perfomance-Testing.gitlab-ci.yml to `rules` syntax. !31413 +- Use gsub instead of the Liquid gem for variable substitution in the Prometheus proxy API. !31482 +- Changed terminology of security scanner status from configure to enable. !31503 +- Update auto-deploy-image to v0.14.0 with helm 2.16.6, --atomic deployments and improved kubernetes 1.16 support. !31505 +- Add ability to add or remove MR labels via API. !31522 (Lee Tickett) +- Disable Docker-in-Docker for Dependency Scanning by default. !31588 +- Disable Docker-in-Docker for SAST by default. !31589 +- Add migration to import changes to the system dashboard Prometheus queries into DB. !31618 +- Ensure links generated by the copy link feature contain variables. !31636 +- Migrate from Vue event hub to Mitt in issuables list. !31652 (Arun Kumar Mohan) +- URL params in the monitoring dashboard update variable values defined in yml file. !31662 +- Migrate from Vue event hub to Mitt. !31666 (Arun Kumar Mohan) +- Add prefix to template variables in URL in the monitoring dashboard. !31690 +- Add fields to GraphQL snippet blob type. !31710 +- Make protected_ci_variables setting enabled by default. !31715 +- Prepare group import feature to use ndjson. !31741 +- Prepare group export feature to use ndjson. !31742 +- Remove a lonely dot in Batch Comments. !31783 (Gilang Gumilar) +- Update auto-deploy-image to v0.15.0, with an upgraded PostgreSQL chart used by default for Auto DevOps deployments. !31799 +- Force hashed storage to always be enabled. !31801 +- Add alert counts by status to GraphQL API. !31818 +- Show warning message to user if raw text search is used when filtering pipelines. !31942 +- Update deprecated slot syntax in ./app/assets/javascripts/pages/milestones/shared/components/delete_milestone_modal.vue. !31990 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/confidential_merge_request/components/dropdown.vue. !31999 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/diffs/components/diff_discussions.vue. !32004 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/boards/components/board_form.vue. !32005 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/repository/components/breadcrumbs.vue. !32017 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/users/calendar_activities.html.haml. !32094 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/users/_deletion_guidance.html.haml. !32097 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_ref_dropdown.html.haml. !32102 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_recaptcha_form.html.haml. !32106 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_project_limit.html.haml. !32110 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_personal_access_tokens_table.html.haml. !32116 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_milestones_filter.html.haml. !32120 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_milestone_expired.html.haml. !32121 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_label_row.html.haml. !32124 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_group_tips.html.haml. !32127 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_group_form.html.haml. !32132 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_field.html.haml. !32136 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_delete_label_modal.html.haml. !32138 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/_commit_message_container.html.haml. !32139 (Gilang Gumilar) +- Externalize i18n aria-label strings from ./app/views/shared/*. !32142 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/milestones/_top.html.haml. !32148 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/milestones/_milestone.html.haml. !32154 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/milestones/_merge_requests_tab.haml. !32158 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/milestones/_labels_tab.html.haml. !32159 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/milestones/_issues_tab.html.haml. !32160 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/milestones/_issuable.html.haml. !32161 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/issuable/_sidebar.html.haml. !32164 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/issuable/_nav.html.haml. !32165 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/issuable/_label_*. !32167 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/issuable/_close_reopen_report_toggle.html.haml. !32168 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/issuable/_close_reopen_button.html.haml. !32172 (Gilang Gumilar) +- Externalize i18n strings from ./app/views/shared/issuable/_bulk_update_sidebar.html.haml. !32173 (Gilang Gumilar) +- Add files param to snippet create mutation. !32309 +- Cluster index refactor: Add missing pagination. !32338 +- Refactored render errors for blob to Vue. !32345 +- Format the alert payload into a table view. !32423 +- Add presence validation to content and title in snippet rest endpoints. !32522 +- Fix jump to definition linking to same file opening a new tab. + +### Performance (15 changes, 2 of them are from the community) + +- Speed up NOT Issue filters. !27639 +- Add indexes on ingress, enabled clusters and successful deployments. !28331 +- Add clusters index to improve usage data queries. !28626 +- Uses Kubernetes API conventions to create or update a resource leandrogs. !29010 (Leandro Silva) +- Cache TreeSummary response for logs_tree. !29828 +- Move release notification from model callbacks to service. !29853 (Ravishankar) +- Delete orphaned rows in application_settings table. !29981 +- Improve cacheability of monaco-editor code. !30032 +- Project import queries are now partially batched. !30057 +- Upgrade json gem to 2.3.0. !30852 +- Use process-wide cache for application settings and performance bar. !31135 +- Record usage ping finish time. !31222 +- Use NOT VALID to enforce a not null constraint on file store columns. !31261 +- Enable ref name caching for merge request diffs. !31530 +- Skip mergeability check when listing MRs in the API. !31890 + +### Added (146 changes, 13 of them are from the community) + +- Graphql query for issues can now be sorted by priority. !18901 +- Add test report API route. !24648 +- Add GraphQL support for querying a board's lists. !24812 +- Define remove_label quick action as alias of unlabel. !24962 (Jacopo Beschi @jacopo-beschi) +- Create Wiki activity events on pushes to Wiki git repository. !26624 +- Allow users to download a CSV of the recent daily code coverage values per job. !27094 +- Display x509 signed tags. !27211 (Roger Meier) +- Enabling git versioned snippets. !27705 +- Add option to hide the default "thumbs up" and "thumbs down" buttons on issues, merge requests, and snippets. !27734 (Steve Mokris) +- Add sorting issues by label priority to graphQL endpoint. !27936 +- Add certification revocation list download and certificate revoke. !28336 (Roger Meier) +- Add WebIDE Dark Theme Support. !28407 +- Add secure binaries template. !28566 +- LDAP authentication support for admin mode. !28572 (Diego Louzán) +- Add UI for exporting group data to the group settings. !28573 +- Allow to assign milestones to a release on the "Edit Release page". !28583 +- Add Previous and Next buttons for commit-by-commit navigation. !28596 +- Add the global var SECURE_ANALYZERS_PREFIX. !28617 +- Allow users to retry obtaining Let's Encrypt certificates for GitLab Pages. !28784 +- Add support for cluster applications CI artifact report. !28866 +- Add resource_state_events table. !28926 +- Migration to add partitioned_foreign_keys table that tracks foreign keys for partitioned tables. !29064 +- Collect object store config in usage data. !29149 +- Add freeze period model. !29162 +- Moved issue board focus mode to Core and available for for everyone. !29200 +- Add freeze periods via CI_DEPLOY_FREEZE variable. !29244 +- Add intermediate CAs capability to S/MIME email signature. !29352 (Diego Louzán) +- Add responding to ChatOps jobs triggered in Mattermost. !29366 (Brian Kintz) +- Expose Freeze Periods in REST API. !29382 +- Add read/write_package_registry to deploy_tokens. !29383 +- Add public API for feature flag user lists. !29415 +- Create cluster annotations API endpoint. !29502 +- Add ability to change metrics dashboard visibility. !29634 +- Add percentage of actors feature flag rollout. !29698 +- Add metric dashboard public visibility toggle. !29718 +- Route to feature flags based on internal id. !29740 +- Send email notification for unknown sign-ins. !29741 +- Add search by name to registry image repositories. !29763 +- Surface alerts add empty state. !29775 +- Enable uploadpack filters by default. !29787 +- Select the first option if there is only one metric option on alerts dropdown. !29857 (Gilang Gumilar) +- Add table for Alert Management alerts. !29864 +- Add policies for managing 'default_branch_protection' setting in groups. !29879 +- Add comment_detail column to services. !29891 +- Add option to add custom profile image guidelines. !29894 (Roger Meier) +- View a details of a panel in 'full screen mode'. !29902 +- Add database relation to preserve users starred metrics dashboard information. !29912 +- Add jira imports to usage data. !29925 +- Add issues_create_limit to settings api. !29960 +- Map labels from Jira to labels in GitLab. !29970 +- Add Deployment to ECS process to AutoDevOps. !29971 +- GraphQL issue queries can now be sorted by milestone due date. !29992 +- Add table for tracking issues published to status page. !29994 +- Create Sprints table and barebones model. !30125 +- When viewing a single panel, return to a full dashboard by pressing the Escape key. !30126 +- Flesh out Sprints relationships and constraints. !30127 +- Add GraphQL type for reading Alert Management Alerts. !30140 +- Add ability to query Projects using GraphQL API. !30146 +- Add `web_url` to branch API response. !30147 +- Fix Jira importer URLs. !30155 +- Add migrations for global CI variables. !30156 +- Add vue routes support to Static Site Editor. !30163 +- Integrate CI instance variables in the build process. !30186 +- Add raw_blob_request_limit to Application Settings API. !30211 +- Empty state for alerts list. !30215 +- Create operations_strategies_user_lists table. !30243 +- Adds URL parameter for confidential new issue creation. !30250 +- Update Jira comment to include more information. !30258 +- Add scheduled_at field to jira_imports table. !30284 +- Alerts list loading & error state. !30315 +- Deploy token authentication for API with Maven endpoints. !30332 +- Add metrics dashboard annotations feature, which enables marking interesting events over metrics dashboard charts. !30371 +- Add non_archived argument to issues API endpoint. !30381 +- Add admin controller actions for interacting with instance variables. !30385 +- Add mutation to create a new branch in GraphQL. !30388 +- Introduce API for fetching shared projects in a group. !30461 +- Display expanded dashboard from a panel's "Link to chart" URL. !30476 +- Resolve Design Comment: Edit Comment text. !30479 +- Map Jira issue assignee and author. !30498 +- Add email notification on group export complete. !30522 +- Add option to restrict emails that match a configured regular expression. !30548 +- In metrics dashboard use custom variables from URL in queries. !30560 +- Add mutation for AlertManagement's Alert status. !30576 +- Multiple metrics edit navigates to prom edit page. !30666 +- Update metrics dashboard url when a panel is expanded or contracted. !30704 +- Add migration bot user. !30738 +- Issues Analytics: Add title to page. !30836 +- Contribution Analytics: Add title to page. !30842 +- Insights Analytics: Add title to page. !30853 +- Repository Analytics: Add title to page. !30855 +- CI / CD Analytics: Add title to page. !30891 +- Enable Monaco for editing Snippets by default. !30892 +- Disabled Edit button for binary snippets. !30904 +- Monokai and Solarized Dark syntax highlighting theme for Web IDE. !30931 +- Updated deprecated buttons in release page. !30941 (Özgür Adem Işıklı @iozguradem) +- Add sorting to AlertManagement Alert Graphql. !30964 +- Web IDE: Introduce syntax highlighting for .vue files. !30986 +- Solarized light syntax highlighting theme for the Web IDE. !30989 +- Deploy tokens can be used in the API with Basic Auth Headers enabling NuGet and PyPI to be used with deploy tokens. !31035 +- Skip spam check for GitLab team members on gitlab.com. !31052 +- None syntax highlighting theme for Web IDE. !31056 +- Issues Analytics: Add title to group-level page. !31057 +- Display metrics dashboards starred by user at the top of dashboard select field. !31059 +- Add WYSIWYG editor to the Static Site Editor. !31099 +- Conan registry is accessible using deploy tokens. !31114 +- Add container registry settings to application_settings table. !31125 +- Added provider icon to cluster index display. !31134 +- Add a CI variable CI_KUBERNETES_ACTIVE as an alternative to only:kubernetes/except:kubernetes that works with the rules syntax. !31146 +- Enable Alert Management functionality. !31171 +- Allow monitoring dashboard users to open single panels in a new tab. !31206 +- Create dashboard annotations via Graphql. !31249 +- Enable deploy token authentication for the NPM registry. !31264 +- Add read and write package registry scopes to deploy tokens. !31267 +- Read only storage move API. !31285 +- Add Design Management (via Designs tab on Issues) to GitLab FOSS. !31309 +- Exposes issue IID in Alert Management Alert's GraphQL endpoint. !31313 +- New API endpoint for starring metrics dashboards. !31316 +- Add search bar to container registry image list. !31322 +- Highlight focused Design discussion in image markers. !31323 +- Allow showing merge request diffs compared to current version of target branch. !31325 +- Add alert on project issues page to show Jira import is in progress. !31329 +- Add API CRUD actions for instance-level CI/CD variables. !31342 +- Add alert on project issues page to show Jira import has finished. !31375 +- Filter pipelines by trigger author and branch name. !31386 +- Add incident_labeled_issues to usage ping. !31406 +- Refactored Snippet view to Vue. !31450 +- Make report-type artifacts available for download. !31513 +- Render dropdown and text elements based on variables defined in monitoring dashboard yml file. !31524 +- Add expunge deleted messages option to mailroom. !31531 (Diego Louzán) +- Log Cloudflare request headers. !31532 +- Allow Web IDE markdown to preview uncommitted images. !31540 +- Add Webex Teams project integration service. !31543 (Sebastian Leuser) +- Add Rubocop cop to flag keyword arguments usage in Sidekiq workers. !31551 (Arun Kumar Mohan) +- Allow users to star/unstar dashboards which will appear at the top of their dashboards options. !31597 +- Add ability to create merge request from vulnerability page. !31620 +- Add confidential status support for comment and replies. !31622 +- Add Web IDE pipelines usage counter. !31658 +- Ruby metrics now include USS and PSS memory readings. !31707 +- Add issues_created_gitlab_alerts to usage ping. !31802 +- Add Alert Detail view. !31877 +- New API endpoint for removing stars from metrics dashboards. !31892 +- View raw file of any zip artifacts. !31912 +- Add search to Alert Management Alerts GraphQL query. !32047 +- Add "Keep divergent refs" option for push mirrors. !32381 +- Add fields to Alert Details view. !32392 +- Update GitLab Pages to 1.18.0. + +### Other (70 changes, 25 of them are from the community) + +- Remove Admin -> Settings -> Geo navigation. !21005 (Lee Tickett) +- removes store logic from issue board models. !21400 (nuwe1) +- removes store logic from issue board models. !21408 (nuwe1) +- Moves updateIssue from issue model to board store. !21414 (nuwe1) +- Improve error handling of squash and rebase. !23740 +- Remove obsolete bot_type column. !27076 +- Remove obsolete columns from resource_milestone_events. !28536 +- Add index to issue_id and created_at of resource_weight_events. !28930 +- Clean up & Re-arrange the keyboard shortcuts modal. !28992 +- Remove ci_expose_arbitrary_artifacts_in_mr feature flag. !29363 (Lee Tickett) +- Remove git_archive_path feature flag. !29369 (Lee Tickett) +- Rename Snippet search results title. !29599 +- Update to Rails 6.0.2.2. !29743 +- Log server responses of API bad requests in api_json.log. !29839 +- Clean up refresh fix for cancel automatic merge. !29844 +- Add snippet repository backfilling migration. !29927 +- Remove the SIDEKIQ_REQUEST_STORE configuration. !29955 +- Increase label list label column width. !29963 +- Refactor count queries to single query on Projects::EnvironmentsController. !30073 (Sashi Kumar) +- Update text on self-managed sign in page. !30135 +- Remove namespaces.plan_id column. !30351 +- Migrate models and policies specs to consider admin mode. !30430 (Diego Louzán) +- Upgrade Nokogiri to v1.10.9. !30435 +- Add snippet migration rake tasks. !30489 +- Error tracking target blank empty state. !30525 +- Remove elasticsearch_experimental_indexer column. !30628 +- Update the template for Static Site Editor / Middleman. !30642 +- Remove unused cluster configuration workers. !30695 +- Remove deprecated Snippet `code` attribute from Project Snippets API. !30739 +- Update merge request widget question mark icons. !30759 +- Value Stream Analytics: Add title and remove separator. !30841 +- Remove mention of github-markup in Wiki clone help. !30962 +- Alert Management mobile styling. !31082 +- Allow Auto DevOps Test stage to start immediately. !31185 +- Enable async_merge_request_check_mergeability by default. !31196 +- Cleanup background migration for populating user_highest_roles table. !31218 +- Add docs for alert management list. !31225 +- Remove extra spaces from markdown toolbar items. !31288 +- Use cookies with metadata to prevent reuse as another cookie. !31311 +- Add inherit_from_id column to services table. !31320 +- Organize package models by package type. !31346 (Sashi Kumar) +- Apply active class on active link element in HAML pagination. !31396 +- Update GitLab Runner Helm Chart to 0.16.1. !31492 +- Log when container registry permissions are denied. !31536 +- Add epic_id to resource_state_events. !31587 +- Update doorkeeper to latest version 5.0.3. !31673 +- Add Foreign Key on projects.namespaces_id. !31675 +- Fix misalignment of author dropdown on the commits search page. !31686 +- Update css-loader ^1.0.0 -> ^2.1.1. !31743 (Pirate Praveen) +- Fix database schema inconsistency with not-null checks. !31930 +- Removes create_confidential_merge_request feature flag leandrogs. !31968 (Leandro Silva) +- Update deprecated slot syntax in ./app/assets/javascripts/issue_show/components/fields/description.vue. !31979 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/pages/milestones/shared/components/promote_milestone_modal.vue. !31980 (Gilang Gumilar) +- Update group and project export info messages. !31981 (briankabiro) +- Relocate Nuget presenter helpers to presenters module. !31985 (Sashi Kumar) +- Update deprecated slot syntax in ./app/assets/javascripts/pages/admin/users/components/delete_user_modal.vue. !31992 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/performance_bar/components/detailed_metric.vue. !32006 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/profile/account/components/delete_account_modal.vue. !32007 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/environments/components/stop_environment_modal.vue. !32012 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/serverless/components/area.vue. !32015 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/releases/components/app_edit.vue. !32018 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/releases/components/evidence_block.vue. !32019 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/ide/components/ide_review.vue. !32025 (Gilang Gumilar) +- Update deprecated slot syntax in ./app/assets/javascripts/ide/components/pipelines/list.vue. !32027 (Gilang Gumilar) +- Update alert management table background colour to correct gray. !32068 +- Validate package types in package metadatum models. !32091 (Sashi Kumar) +- Update error tracking table background colour to correct gray. !32133 +- Update GitLab Elasticsearch Indexer to v2.3.0. !32199 +- Update asciidoctor-plantuml gem to v0.0.12. !32376 +- Use visitUrl in Alert management. !32414 + + +## 12.10.5 (2020-05-13) + +### Added (1 change) + +- Consider project group and group ancestors when processing CODEOWNERS entries. !31804 + + +## 12.10.4 (2020-05-05) + +### Fixed (1 change) + +- Add a Project's group to list of groups when parsing for codeowner entries. !30934 ## 12.10.2 (2020-04-30) @@ -493,6 +1060,28 @@ entry. - Remove store_mentions! in Snippets::CreateService. !29581 (Sashi Kumar) +## 12.9.6 (2020-05-05) + +### Fixed (1 change) + +- Add a Project's group to list of groups when parsing for codeowner entries. !30934 + + +## 12.9.5 (2020-04-30) + +### Security (9 changes) + +- Ensure MR diff exists before codeowner check. +- Apply CODEOWNERS validations to web requests. +- Prevent unauthorized access to default branch. +- Do not return private project ID without permission. +- Fix doorkeeper CVE-2020-10187. +- Prevent ES credentials leak. +- Change GitHub service integration token input to password. +- Return only safe urls for mirrors. +- Validate workhorse 'rewritten_fields' and properly use them during multipart uploads. + + ## 12.9.4 (2020-04-16) - No changes. @@ -1011,6 +1600,19 @@ entry. - Improvement in token reference. +## 12.8.10 (2020-04-30) + +### Security (7 changes) + +- Ensure MR diff exists before codeowner check. +- Prevent unauthorized access to default branch. +- Do not return private project ID without permission. +- Fix doorkeeper CVE-2020-10187. +- Prevent ES credentials leak. +- Return only safe urls for mirrors. +- Validate workhorse 'rewritten_fields' and properly use them during multipart uploads. + + ## 12.8.9 (2020-04-14) ### Security (3 changes) diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 060a56a063..02161ca86e 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -12.10.3 +13.0.0 diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index ccbccc3dc6..276cbf9e28 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -2.2.0 +2.3.0 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 092afa15df..84cc529467 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -1.17.0 +1.18.0 diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 685332623b..67aee23940 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -12.2.0 +13.2.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index 57b9fc187c..2f70731b8a 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.30.1 +8.31.0 diff --git a/Gemfile b/Gemfile index d15628eb83..9c8c5e8b30 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -gem 'rails', '6.0.2' +gem 'rails', '~> 6.0.3' gem 'bootsnap', '~> 1.4.6' @@ -26,7 +26,7 @@ gem 'marginalia', '~> 1.8.0' # Authentication libraries gem 'devise', '~> 4.6' -gem 'doorkeeper', '~> 5.0.2' +gem 'doorkeeper', '~> 5.0.3' gem 'doorkeeper-openid_connect', '~> 1.6.3' gem 'omniauth', '~> 1.8' gem 'omniauth-auth0', '~> 2.0.0' @@ -138,7 +138,7 @@ gem 'faraday_middleware-aws-signers-v4' # Markdown and HTML processing gem 'html-pipeline', '~> 2.12' gem 'deckar01-task_list', '2.3.1' -gem 'gitlab-markup', '~> 1.7.0' +gem 'gitlab-markup', '~> 1.7.1' gem 'github-markup', '~> 1.7.0', require: 'github/markup' gem 'commonmarker', '~> 0.20' gem 'RedCloth', '~> 4.3.2' @@ -148,11 +148,11 @@ gem 'creole', '~> 0.5.0' gem 'wikicloth', '0.8.1' gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false -gem 'asciidoctor-plantuml', '0.0.10' -gem 'rouge', '~> 3.18.0' +gem 'asciidoctor-plantuml', '~> 0.0.12' +gem 'rouge', '~> 3.19.0' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' -gem 'nokogiri', '~> 1.10.5' +gem 'nokogiri', '~> 1.10.9' gem 'escape_utils', '~> 1.1' # Calendar rendering @@ -166,7 +166,7 @@ gem 'diff_match_patch', '~> 0.1.0' gem 'rack', '~> 2.0.9' group :unicorn do - gem 'unicorn', '~> 5.4.1' + gem 'unicorn', '~> 5.5' gem 'unicorn-worker-killer', '~> 0.4.4' end @@ -204,7 +204,7 @@ gem 'ruby-progressbar' gem 'settingslogic', '~> 2.0.9' # Linear-time regex library for untrusted regular expressions -gem 're2', '~> 1.1.1' +gem 're2', '~> 1.2.0' # Misc @@ -230,7 +230,7 @@ gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false gem 'hipchat', '~> 1.5.0' # Jira integration -gem 'jira-ruby', '~> 1.7' +gem 'jira-ruby', '~> 2.0.0' gem 'atlassian-jwt', '~> 0.2.0' # Flowdock integration @@ -287,13 +287,13 @@ gem 'addressable', '~> 2.7' gem 'font-awesome-rails', '~> 4.7' gem 'gemojione', '~> 3.3' gem 'gon', '~> 6.2' -gem 'request_store', '~> 1.3' +gem 'request_store', '~> 1.5' gem 'base32', '~> 0.3.0' gem "gitlab-license", "~> 1.0" # Protect against bruteforcing -gem 'rack-attack', '~> 6.2.0' +gem 'rack-attack', '~> 6.3.0' # Sentry integration gem 'sentry-raven', '~> 2.9' @@ -318,13 +318,9 @@ gem 'peek', '~> 1.1' # Snowplow events tracking gem 'snowplow-tracker', '~> 0.6.1' -# Memory benchmarks -gem 'derailed_benchmarks', require: false - # Metrics group :metrics do gem 'method_source', '~> 0.8', require: false - gem 'influxdb', '~> 0.2', require: false # Prometheus gem 'prometheus-client-mmap', '~> 0.10.0' @@ -355,7 +351,7 @@ group :development, :test do gem 'database_cleaner', '~> 1.7.0' gem 'factory_bot_rails', '~> 5.1.0' - gem 'rspec-rails', '~> 4.0.0.beta4' + gem 'rspec-rails', '~> 4.0.0' # Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826) gem 'minitest', '~> 5.11.0' @@ -414,12 +410,15 @@ group :test do gem 'test-prof', '~> 0.10.0' gem 'rspec_junit_formatter' gem 'guard-rspec' + + # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527 + gem 'derailed_benchmarks', require: false end gem 'octokit', '~> 4.15' # https://gitlab.com/gitlab-org/gitlab/issues/207207 -gem 'gitlab-mail_room', '~> 0.0.3', require: 'mail_room' +gem 'gitlab-mail_room', '~> 0.0.4', require: 'mail_room' gem 'email_reply_trimmer', '~> 0.1' gem 'html2text' @@ -445,7 +444,7 @@ gem 'sys-filesystem', '~> 1.1.6' gem 'net-ntp' # SSH host key support -gem 'net-ssh', '~> 5.2' +gem 'net-ssh', '~> 6.0' gem 'sshkey', '~> 2.0' # Required for ED25519 SSH host key support @@ -455,7 +454,7 @@ group :ed25519 do end # Gitaly GRPC protocol definitions -gem 'gitaly', '~> 12.9.0.pre.rc4' +gem 'gitaly', '~> 13.0.0.pre.rc1' gem 'grpc', '~> 1.24.0' @@ -481,8 +480,6 @@ gem 'countries', '~> 3.0' gem 'retriable', '~> 3.1.2' -gem 'liquid', '~> 4.0' - # LRU cache gem 'lru_redux' @@ -495,3 +492,9 @@ gem 'mail', '= 2.7.1' # File encryption gem 'lockbox', '~> 0.3.3' + +# Email validation +gem 'valid_email', '~> 0.1' + +# JSON +gem 'json', '~> 2.3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 64bf4ec44d..ffff576e8b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,64 +6,64 @@ GEM ace-rails-ap (4.1.2) acme-client (2.0.5) faraday (~> 0.9, >= 0.9.1) - actioncable (6.0.2) - actionpack (= 6.0.2) + actioncable (6.0.3) + actionpack (= 6.0.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.0.2) - actionpack (= 6.0.2) - activejob (= 6.0.2) - activerecord (= 6.0.2) - activestorage (= 6.0.2) - activesupport (= 6.0.2) + actionmailbox (6.0.3) + actionpack (= 6.0.3) + activejob (= 6.0.3) + activerecord (= 6.0.3) + activestorage (= 6.0.3) + activesupport (= 6.0.3) mail (>= 2.7.1) - actionmailer (6.0.2) - actionpack (= 6.0.2) - actionview (= 6.0.2) - activejob (= 6.0.2) + actionmailer (6.0.3) + actionpack (= 6.0.3) + actionview (= 6.0.3) + activejob (= 6.0.3) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.0.2) - actionview (= 6.0.2) - activesupport (= 6.0.2) - rack (~> 2.0) + actionpack (6.0.3) + actionview (= 6.0.3) + activesupport (= 6.0.3) + rack (~> 2.0, >= 2.0.8) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.0.2) - actionpack (= 6.0.2) - activerecord (= 6.0.2) - activestorage (= 6.0.2) - activesupport (= 6.0.2) + actiontext (6.0.3) + actionpack (= 6.0.3) + activerecord (= 6.0.3) + activestorage (= 6.0.3) + activesupport (= 6.0.3) nokogiri (>= 1.8.5) - actionview (6.0.2) - activesupport (= 6.0.2) + actionview (6.0.3) + activesupport (= 6.0.3) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.0.2) - activesupport (= 6.0.2) + activejob (6.0.3) + activesupport (= 6.0.3) globalid (>= 0.3.6) - activemodel (6.0.2) - activesupport (= 6.0.2) - activerecord (6.0.2) - activemodel (= 6.0.2) - activesupport (= 6.0.2) + activemodel (6.0.3) + activesupport (= 6.0.3) + activerecord (6.0.3) + activemodel (= 6.0.3) + activesupport (= 6.0.3) activerecord-explain-analyze (0.1.0) activerecord (>= 4) pg - activestorage (6.0.2) - actionpack (= 6.0.2) - activejob (= 6.0.2) - activerecord (= 6.0.2) + activestorage (6.0.3) + actionpack (= 6.0.3) + activejob (= 6.0.3) + activerecord (= 6.0.3) marcel (~> 0.3.1) - activesupport (6.0.2) + activesupport (6.0.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - zeitwerk (~> 2.2) + zeitwerk (~> 2.2, >= 2.2.2) acts-as-taggable-on (6.5.0) activerecord (>= 5.0, < 6.1) adamantium (0.2.0) @@ -84,7 +84,7 @@ GEM asciidoctor (2.0.10) asciidoctor-include-ext (0.3.1) asciidoctor (>= 1.5.6, < 3.0.0) - asciidoctor-plantuml (0.0.10) + asciidoctor-plantuml (0.0.12) asciidoctor (>= 1.5.6, < 3.0.0) ast (2.4.0) atlassian-jwt (0.2.0) @@ -153,7 +153,6 @@ GEM activemodel (>= 4.0.0) activesupport (>= 4.0.0) mime-types (>= 1.16) - cause (0.1) character_set (1.1.2) charlock_holmes (0.7.6) childprocess (3.0.0) @@ -245,7 +244,7 @@ GEM docile (1.3.2) domain_name (0.5.20180417) unf (>= 0.0.5, < 1.0.0) - doorkeeper (5.0.2) + doorkeeper (5.0.3) railties (>= 4.2) doorkeeper-openid_connect (1.6.3) doorkeeper (>= 5.0, < 5.2) @@ -378,7 +377,7 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) git (1.5.0) - gitaly (12.9.0.pre.rc4) + gitaly (13.0.0.pre.rc1) grpc (~> 1.0) github-markup (1.7.0) gitlab-chronic (0.10.5) @@ -391,8 +390,8 @@ GEM opentracing (~> 0.4) redis (> 3.0.0, < 5.0.0) gitlab-license (1.0.0) - gitlab-mail_room (0.0.3) - gitlab-markup (1.7.0) + gitlab-mail_room (0.0.4) + gitlab-markup (1.7.1) gitlab-net-dns (0.9.1) gitlab-puma (4.3.3.gitlab.2) nio4r (~> 2.0) @@ -535,9 +534,6 @@ GEM i18n_data (0.8.0) icalendar (2.4.1) ice_nine (0.11.2) - influxdb (0.2.3) - cause - json invisible_captcha (0.12.1) rails (>= 3.2.0) ipaddress (0.8.3) @@ -545,7 +541,7 @@ GEM opentracing (~> 0.3) thrift jaro_winkler (1.5.4) - jira-ruby (1.7.1) + jira-ruby (2.0.0) activesupport atlassian-jwt multipart-post @@ -555,7 +551,7 @@ GEM character_set (~> 1.1) regexp_parser (~> 1.1) regexp_property_values (~> 0.3) - json (1.8.6) + json (2.3.0) json-jwt (1.11.0) activesupport (>= 4.2) aes_key_wrap @@ -575,7 +571,7 @@ GEM activerecord kaminari-core (= 1.0.1) kaminari-core (1.0.1) - kgio (2.11.2) + kgio (2.11.3) knapsack (1.17.0) rake kramdown (2.1.0) @@ -602,7 +598,6 @@ GEM xml-simple licensee (8.9.2) rugged (~> 0.24) - liquid (4.0.3) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -614,7 +609,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.4.0) + loofah (2.5.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) lru_redux (1.1.0) @@ -634,7 +629,7 @@ GEM mime-types (3.2.2) mime-types-data (~> 3.2015) mime-types-data (3.2019.0331) - mimemagic (0.3.3) + mimemagic (0.3.5) mini_histogram (0.1.3) mini_magick (4.9.5) mini_mime (1.0.2) @@ -653,11 +648,11 @@ GEM nenv (0.3.0) net-ldap (0.16.2) net-ntp (2.1.3) - net-ssh (5.2.0) + net-ssh (6.0.0) netrc (0.11.0) nio4r (2.5.2) no_proxy_fix (0.1.2) - nokogiri (1.10.8) + nokogiri (1.10.9) mini_portile2 (~> 2.4.0) nokogumbo (1.5.0) nokogiri @@ -791,7 +786,7 @@ GEM rack (2.0.9) rack-accept (0.4.5) rack (>= 0.4) - rack-attack (6.2.0) + rack-attack (6.3.0) rack (>= 1.0, < 3) rack-cors (1.0.6) rack (>= 1.6.0) @@ -808,20 +803,20 @@ GEM rack-test (1.1.0) rack (>= 1.0, < 3) rack-timeout (0.5.1) - rails (6.0.2) - actioncable (= 6.0.2) - actionmailbox (= 6.0.2) - actionmailer (= 6.0.2) - actionpack (= 6.0.2) - actiontext (= 6.0.2) - actionview (= 6.0.2) - activejob (= 6.0.2) - activemodel (= 6.0.2) - activerecord (= 6.0.2) - activestorage (= 6.0.2) - activesupport (= 6.0.2) + rails (6.0.3) + actioncable (= 6.0.3) + actionmailbox (= 6.0.3) + actionmailer (= 6.0.3) + actionpack (= 6.0.3) + actiontext (= 6.0.3) + actionview (= 6.0.3) + activejob (= 6.0.3) + activemodel (= 6.0.3) + activerecord (= 6.0.3) + activestorage (= 6.0.3) + activesupport (= 6.0.3) bundler (>= 1.3.0) - railties (= 6.0.2) + railties (= 6.0.3) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.4) actionpack (>= 5.0.1.x) @@ -835,14 +830,14 @@ GEM rails-i18n (6.0.0) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 7) - railties (6.0.2) - actionpack (= 6.0.2) - activesupport (= 6.0.2) + railties (6.0.3) + actionpack (= 6.0.3) + activesupport (= 6.0.3) method_source rake (>= 0.8.7) thor (>= 0.20.3, < 2.0) rainbow (3.0.0) - raindrops (0.19.0) + raindrops (0.19.1) rake (12.3.3) rb-fsevent (0.10.2) rb-inotify (0.9.10) @@ -854,10 +849,10 @@ GEM msgpack (>= 0.4.3) optimist (>= 3.0.0) rdoc (6.1.2) - re2 (1.1.1) + re2 (1.2.0) recaptcha (4.13.1) json - recursive-open-struct (1.1.0) + recursive-open-struct (1.1.1) redis (4.1.3) redis-actionpack (5.2.0) actionpack (>= 5, < 7) @@ -883,7 +878,8 @@ GEM declarative (< 0.1.0) declarative-option (< 0.2.0) uber (< 0.2.0) - request_store (1.3.1) + request_store (1.5.0) + rack (>= 1.4) responders (3.0.0) actionpack (>= 5.0) railties (>= 5.0) @@ -894,7 +890,7 @@ GEM retriable (3.1.2) rinku (2.0.0) rotp (2.1.2) - rouge (3.18.0) + rouge (3.19.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -905,7 +901,7 @@ GEM rspec-mocks (~> 3.9.0) rspec-core (3.9.1) rspec-support (~> 3.9.1) - rspec-expectations (3.9.0) + rspec-expectations (3.9.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.9.0) rspec-mocks (3.9.1) @@ -917,7 +913,7 @@ GEM proc_to_ast rspec (>= 2.13, < 4) unparser - rspec-rails (4.0.0.beta4) + rspec-rails (4.0.0) actionpack (>= 4.2) activesupport (>= 4.2) railties (>= 4.2) @@ -1077,7 +1073,7 @@ GEM truncato (0.7.11) htmlentities (~> 4.3.1) nokogiri (>= 1.7.0, <= 2.0) - tzinfo (1.2.6) + tzinfo (1.2.7) thread_safe (~> 0.1) u2f (0.2.1) uber (0.1.0) @@ -1091,7 +1087,7 @@ GEM unicode_plot (0.0.4) enumerable-statistics (>= 2.0.1) unicode_utils (1.4.0) - unicorn (5.4.1) + unicorn (5.5.5) kgio (~> 2.6) raindrops (~> 0.7) unicorn-worker-killer (0.4.4) @@ -1108,6 +1104,9 @@ GEM equalizer (~> 0.0.9) parser (>= 2.6.5) procto (~> 0.0.2) + valid_email (0.1.3) + activemodel + mail (>= 2.6.1) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) @@ -1146,7 +1145,7 @@ GEM xml-simple (1.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.2.2) + zeitwerk (2.3.0) PLATFORMS ruby @@ -1163,7 +1162,7 @@ DEPENDENCIES asana (~> 0.9) asciidoctor (~> 2.0.10) asciidoctor-include-ext (~> 0.3.1) - asciidoctor-plantuml (= 0.0.10) + asciidoctor-plantuml (~> 0.0.12) atlassian-jwt (~> 0.2.0) attr_encrypted (~> 3.1.0) awesome_print @@ -1202,7 +1201,7 @@ DEPENDENCIES diff_match_patch (~> 0.1.0) diffy (~> 3.3) discordrb-webhooks-blackst0ne (~> 3.3) - doorkeeper (~> 5.0.2) + doorkeeper (~> 5.0.3) doorkeeper-openid_connect (~> 1.6.3) ed25519 (~> 1.2) elasticsearch-api (~> 6.8) @@ -1235,13 +1234,13 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly (~> 12.9.0.pre.rc4) + gitaly (~> 13.0.0.pre.rc1) github-markup (~> 1.7.0) gitlab-chronic (~> 0.10.5) gitlab-labkit (= 0.12.0) gitlab-license (~> 1.0) - gitlab-mail_room (~> 0.0.3) - gitlab-markup (~> 1.7.0) + gitlab-mail_room (~> 0.0.4) + gitlab-markup (~> 1.7.1) gitlab-net-dns (~> 0.9.1) gitlab-puma (~> 4.3.3.gitlab.2) gitlab-puma_worker_killer (~> 0.1.1.gitlab.1) @@ -1273,10 +1272,10 @@ DEPENDENCIES html2text httparty (~> 0.16.4) icalendar - influxdb (~> 0.2) invisible_captcha (~> 0.12.1) - jira-ruby (~> 1.7) + jira-ruby (~> 2.0.0) js_regex (~> 3.1) + json (~> 2.3.0) json-schema (~> 2.8.0) jwt (~> 2.1.0) kaminari (~> 1.0) @@ -1285,7 +1284,6 @@ DEPENDENCIES letter_opener_web (~> 1.3.4) license_finder (~> 5.4) licensee (~> 8.9) - liquid (~> 4.0) lockbox (~> 0.3.3) lograge (~> 0.5) loofah (~> 2.2) @@ -1300,8 +1298,8 @@ DEPENDENCIES nakayoshi_fork (~> 0.0.4) net-ldap net-ntp - net-ssh (~> 5.2) - nokogiri (~> 1.10.5) + net-ssh (~> 6.0) + nokogiri (~> 1.10.9) oauth2 (~> 1.4) octokit (~> 4.15) omniauth (~> 1.8) @@ -1332,12 +1330,12 @@ DEPENDENCIES pry-byebug (~> 3.5.1) pry-rails (~> 0.3.9) rack (~> 2.0.9) - rack-attack (~> 6.2.0) + rack-attack (~> 6.3.0) rack-cors (~> 1.0.6) rack-oauth2 (~> 1.9.3) rack-proxy (~> 0.6.0) rack-timeout - rails (= 6.0.2) + rails (~> 6.0.3) rails-controller-testing rails-i18n (~> 6.0) rainbow (~> 3.0) @@ -1345,18 +1343,18 @@ DEPENDENCIES rblineprof (~> 0.3.6) rbtrace (~> 0.4) rdoc (~> 6.1.2) - re2 (~> 1.1.1) + re2 (~> 1.2.0) recaptcha (~> 4.11) redis (~> 4.0) redis-namespace (~> 1.6.0) redis-rails (~> 5.0.2) - request_store (~> 1.3) + request_store (~> 1.5) responders (~> 3.0) retriable (~> 3.1.2) - rouge (~> 3.18.0) + rouge (~> 3.19.0) rqrcode-rails3 (~> 0.1.7) rspec-parameterized - rspec-rails (~> 4.0.0.beta4) + rspec-rails (~> 4.0.0) rspec-retry (~> 0.6.1) rspec_junit_formatter rspec_profiling (~> 0.0.5) @@ -1398,9 +1396,10 @@ DEPENDENCIES u2f (~> 0.2.1) uglifier (~> 2.7.2) unf (~> 0.1.4) - unicorn (~> 5.4.1) + unicorn (~> 5.5) unicorn-worker-killer (~> 0.4.4) unleash (~> 0.1.5) + valid_email (~> 0.1) validates_hostname (~> 1.0.6) version_sorter (~> 2.2.4) vmstat (~> 2.3.0) diff --git a/Guardfile b/Guardfile index 21ee2a9d61..baaa52bd20 100644 --- a/Guardfile +++ b/Guardfile @@ -2,28 +2,51 @@ # More info at https://github.com/guard/guard#readme +require "guard/rspec/dsl" + cmd = ENV['GUARD_CMD'] || (ENV['SPRING'] ? 'spring rspec' : 'bundle exec rspec') -guard :rspec, cmd: cmd do - require "guard/rspec/dsl" - dsl = Guard::RSpec::Dsl.new(self) +directories %w(app ee lib spec) - directories %w(app ee lib spec) +rspec_context_for = proc do |context_path| + OpenStruct.new(to_s: "spec").tap do |rspec| + rspec.spec_dir = "#{context_path}spec" + rspec.spec = ->(m) { Guard::RSpec::Dsl.detect_spec_file_for(rspec, m) } + rspec.spec_helper = "#{rspec.spec_dir}/spec_helper.rb" + rspec.spec_files = %r{^#{rspec.spec_dir}/.+_spec\.rb$} + rspec.spec_support = %r{^#{rspec.spec_dir}/support/(.+)\.rb$} + end +end +rails_context_for = proc do |context_path, exts| + OpenStruct.new.tap do |rails| + rails.app_files = %r{^#{context_path}app/(.+)\.rb$} + + rails.views = %r{^#{context_path}app/(views/.+/[^/]*\.(?:#{exts}))$} + rails.view_dirs = %r{^#{context_path}app/views/(.+)/[^/]*\.(?:#{exts})$} + rails.layouts = %r{^#{context_path}app/layouts/(.+)/[^/]*\.(?:#{exts})$} + + rails.controllers = %r{^#{context_path}app/controllers/(.+)_controller\.rb$} + rails.routes = "#{context_path}config/routes.rb" + rails.app_controller = "#{context_path}app/controllers/application_controller.rb" + rails.spec_helper = "#{context_path}spec/rails_helper.rb" + end +end + +guard_setup = proc do |context_path| # RSpec files - rspec = dsl.rspec + rspec = rspec_context_for.call(context_path) watch(rspec.spec_helper) { rspec.spec_dir } watch(rspec.spec_support) { rspec.spec_dir } watch(rspec.spec_files) # Ruby files - ruby = dsl.ruby - dsl.watch_spec_files_for(ruby.lib_files) + watch(%r{^#{context_path}(lib/.+)\.rb$}) { |m| rspec.spec.call(m[1]) } # Rails files - rails = dsl.rails(view_extensions: %w(erb haml slim)) - dsl.watch_spec_files_for(rails.app_files) - dsl.watch_spec_files_for(rails.views) + rails = rails_context_for.call(context_path, %w(erb haml slim)) + watch(rails.app_files) { |m| rspec.spec.call(m[1]) } + watch(rails.views) { |m| rspec.spec.call(m[1]) } watch(rails.controllers) do |m| [ @@ -41,3 +64,11 @@ guard :rspec, cmd: cmd do watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") } watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") } end + +context_paths = ['', 'ee/'] + +context_paths.each do |context_path| + guard :rspec, cmd: cmd, spec_paths: ["#{context_path}spec/"] do + guard_setup.call(context_path) + end +end diff --git a/README.md b/README.md index 1372e47d52..51a54c3bbf 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ GitLab is a Ruby on Rails application that runs on the following software: - Ruby (MRI) 2.6.5 - Git 2.8.4+ - Redis 2.8+ -- PostgreSQL 9.6+ +- PostgreSQL 11+ For more information please see the [architecture](https://docs.gitlab.com/ee/development/architecture.html) and [requirements](https://docs.gitlab.com/ee/install/requirements.html) documentation. diff --git a/VERSION b/VERSION index 060a56a063..02161ca86e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12.10.3 +13.0.0 diff --git a/app/assets/images/cluster_app_logos/fluentd.png b/app/assets/images/cluster_app_logos/fluentd.png new file mode 100644 index 0000000000000000000000000000000000000000..6d42578f2ce8b69d63341e68dea82f1df3318823 GIT binary patch literal 2480 zcmV;h2~YNkP)2Ak4#ybdLzWN8vTj+&dvCY1Pm&RiEXk4*i@`hN zk;dBHx8HC7-?1xkxW^lJkK2!a0R0NM#|iYiz&$R2{vg=z0>NCMplJ5EnQs>FPfktF zqm*(^J8!ymsr=NLo$sw`tE#*nY<#SL9#8@Kg)ij&biopICS4U^wg>oYR=)@$%GAgCL6mT|tpjFaYklfzZl-?Ol6y_v*J| z$t8jUn784;9|{VKmPZPJxdT&DZOzS!b6Zz^51K16ktKoxz{rt`wYw{<;2`f_33>}5 z-!#~h0=xhyrD)UYJ1_6qJWEr#?^IvAL~sBA=59E+so>E^mP88xn@49fqp7y`z_s_^ zoCm1w;et>qGqWeGg4uhkq!g%9Mv7x0(6=?2|000lguReR& zER)F;zGs1O6(E766ndi>ZS4l9uHxA1O((Z(1wcXpp%^l9Am@HuHi`nmLuNiX0Z&aUz;EB)2ZxjIve{^ATXwT- z^Pjpy=#>K4;PG>ozx3>)U+-i-98CZWMq^VO1VNCD?gC)80L|*ClnxZ!_3Fx9PuR5A zG+q$B2EYbRUHM7rv}r}NeRtmbK9n@*PXP?5Ac#;kwK4g-0T_%xTWctBF;E|d(;@N> zCpf7lvtBvAYD7c;0LULNIbZk4s9`xwrqOT#Nl}EN(`JWOs|O_G+rleL5-2IdQXqh?qNV5>@*Sd?-9Ynz)VW!)E_AeVPRh(rP2n9x$w2v=QwSjLM2ZEpO$ zbcV6H@^UB>gbjdAo;hXuQ{Vi>JI8XB3S_4xNiix?0FF)vT2-x}jg7rJL<=q#Y!<`5 zx^u;IdfM%Xvw*(|M!m7UWKiD3R}u+D-hdP+6XX0IhI~umo?-y+5}>MM0S};h17I=* z-9(qe0lUEfr&26wKE3hPpaZ&fh)4mRxnvJ+I-`nHrhJ1VQqsoo6a@w(CrZ_x_cRz3 z03m3oRYMd#uF4KiswThDp9mrx7BhIO4U`fff!o&j-;F;HV7wwDBO|W8z1`(eM^`+E z1^^6wc>37kFTZ`Aqm*Mgokel>mkb~yIT2||3DT921Vl=o?o!yd4p7xK!|7z}yWOZx z4{EbYeR;bbe5Vb9!vX434^WOAS5^Myhdty;E;~DW5P;5>mKKMn&mFf@Q2`*;2P;bV zDRXk4^9A4q!Csl+GLaxb#vwT|o>e&#B-Y=iHNa+N6`tpRA_d3p6`W3(Zd`Ns_0weW z@v8ds#koEC{NTZZQ+1h{PE=J1J)JY62H?J&ob)lv_jiC&&ew47dujJserLPqqY}Yr zh3N5hna4N2R;EqozxGQQ)BUBj$ajkX8rGuz?-+%5KPe=q=o%?eB1jV@a`SzLQV#rmN^a=kp%S|F+l0HBz%rNRmdd3Olj7(hE6aH+e_ zB0&L&4m->@tGWQ_Tg%2+nk)RC?R^vxlKiC&=xyN;q(1{-0Y#iY0K{sCt3~S$f}R#k z0lon2R`pVC_1=xqTywMmC_MnalnHo~6@0rM5Xc>AEf@gaY=X717KGSOHhuQDC!=Y6 z)DZ`W;^CdZeSszu)y)GENNwbru{Pmy_Ks+;)I9zbH=>T4E zSA1ar;4Nln-G#r8va8QGM{k{X&J;BTjD3AuY1)_vX0vLK*P9`j%%H5K^%&k;033x~ zb)qES&{7ugUO!SWQ2~&>aLvoZCeQegx_CIW9iT2jDtW^NKt!>%VgI@b7E6sTQUimH zj~KwXS2izFJ~*|6*PA%O*2!)}0MB728~~kq)$yC3u9)SitzxA=on zMN;~Yoa`hg8BW}i4-bILRCW3#)rAjBBetp+6Z9Uyz=3J`^Z&R~F(QAl;B>|_gW0!5 z%;+!y5PN(5j@m=pUIQA~nf+^Rp#YF6Gcz*=JvRTD0h7MJ2#JdODG_B%-t1yR=K1Yl z7yw*$ZT&~L$~G>8Uf*XwuL}qucfq@_CQf+hS8_#C9w?3L?%%xzAQB>4%~htFvuj%_ zKi(Vam!V&!BtlVu^!&8k2SzLMCg-M(`1W(0B4NBDD|ZM884QYKN~w$^lw+w*iU9%< zA&L$VXzl76H4(`1j>?Zun$=a6v0$_>(2xOqmAlZFbN2)2OZu_!?0yBr!Y=gX8u}H` um-J)d+5HNLgFX_j^v;PmE;H}83-q#QS0000 +import { GlDatepicker } from '@gitlab/ui'; + +export default { + name: 'ExpiresAtField', + components: { GlDatepicker }, +}; + + + diff --git a/app/assets/javascripts/access_tokens/index.js b/app/assets/javascripts/access_tokens/index.js new file mode 100644 index 0000000000..9bdb294095 --- /dev/null +++ b/app/assets/javascripts/access_tokens/index.js @@ -0,0 +1,12 @@ +import Vue from 'vue'; +import ExpiresAtField from './components/expires_at_field.vue'; + +const initExpiresAtField = () => { + // eslint-disable-next-line no-new + new Vue({ + el: document.querySelector('.js-access-tokens-expires-at'), + components: { ExpiresAtField }, + }); +}; + +export default initExpiresAtField; diff --git a/app/assets/javascripts/actioncable_consumer.js b/app/assets/javascripts/actioncable_consumer.js new file mode 100644 index 0000000000..5658ffc1a3 --- /dev/null +++ b/app/assets/javascripts/actioncable_consumer.js @@ -0,0 +1,3 @@ +import { createConsumer } from '@rails/actioncable'; + +export default createConsumer(); diff --git a/app/assets/javascripts/alert_management/components/alert_details.vue b/app/assets/javascripts/alert_management/components/alert_details.vue new file mode 100644 index 0000000000..89db7db77d --- /dev/null +++ b/app/assets/javascripts/alert_management/components/alert_details.vue @@ -0,0 +1,236 @@ + + diff --git a/app/assets/javascripts/alert_management/components/alert_management_list.vue b/app/assets/javascripts/alert_management/components/alert_management_list.vue new file mode 100644 index 0000000000..74fc19ff3d --- /dev/null +++ b/app/assets/javascripts/alert_management/components/alert_management_list.vue @@ -0,0 +1,303 @@ + + diff --git a/app/assets/javascripts/alert_management/constants.js b/app/assets/javascripts/alert_management/constants.js new file mode 100644 index 0000000000..9df01d9d0b --- /dev/null +++ b/app/assets/javascripts/alert_management/constants.js @@ -0,0 +1,46 @@ +import { s__ } from '~/locale'; + +export const ALERTS_SEVERITY_LABELS = { + CRITICAL: s__('AlertManagement|Critical'), + HIGH: s__('AlertManagement|High'), + MEDIUM: s__('AlertManagement|Medium'), + LOW: s__('AlertManagement|Low'), + INFO: s__('AlertManagement|Info'), + UNKNOWN: s__('AlertManagement|Unknown'), +}; + +export const ALERTS_STATUS = { + OPEN: 'OPEN', + TRIGGERED: 'TRIGGERED', + ACKNOWLEDGED: 'ACKNOWLEDGED', + RESOLVED: 'RESOLVED', + ALL: 'ALL', +}; + +export const ALERTS_STATUS_TABS = [ + { + title: s__('AlertManagement|Open'), + status: ALERTS_STATUS.OPEN, + filters: [ALERTS_STATUS.TRIGGERED, ALERTS_STATUS.ACKNOWLEDGED], + }, + { + title: s__('AlertManagement|Triggered'), + status: ALERTS_STATUS.TRIGGERED, + filters: [ALERTS_STATUS.TRIGGERED], + }, + { + title: s__('AlertManagement|Acknowledged'), + status: ALERTS_STATUS.ACKNOWLEDGED, + filters: [ALERTS_STATUS.ACKNOWLEDGED], + }, + { + title: s__('AlertManagement|Resolved'), + status: ALERTS_STATUS.RESOLVED, + filters: [ALERTS_STATUS.RESOLVED], + }, + { + title: s__('AlertManagement|All alerts'), + status: ALERTS_STATUS.ALL, + filters: [ALERTS_STATUS.TRIGGERED, ALERTS_STATUS.ACKNOWLEDGED, ALERTS_STATUS.RESOLVED], + }, +]; diff --git a/app/assets/javascripts/alert_management/details.js b/app/assets/javascripts/alert_management/details.js new file mode 100644 index 0000000000..d3523e0a29 --- /dev/null +++ b/app/assets/javascripts/alert_management/details.js @@ -0,0 +1,47 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import { defaultDataIdFromObject } from 'apollo-cache-inmemory'; +import AlertDetails from './components/alert_details.vue'; + +Vue.use(VueApollo); + +export default selector => { + const domEl = document.querySelector(selector); + const { alertId, projectPath, newIssuePath } = domEl.dataset; + + const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient( + {}, + { + cacheConfig: { + dataIdFromObject: object => { + // eslint-disable-next-line no-underscore-dangle + if (object.__typename === 'AlertManagementAlert') { + return object.iid; + } + return defaultDataIdFromObject(object); + }, + }, + }, + ), + }); + + // eslint-disable-next-line no-new + new Vue({ + el: selector, + apolloProvider, + components: { + AlertDetails, + }, + render(createElement) { + return createElement('alert-details', { + props: { + alertId, + projectPath, + newIssuePath, + }, + }); + }, + }); +}; diff --git a/app/assets/javascripts/alert_management/graphql/fragments/detailItem.fragment.graphql b/app/assets/javascripts/alert_management/graphql/fragments/detailItem.fragment.graphql new file mode 100644 index 0000000000..df802616e9 --- /dev/null +++ b/app/assets/javascripts/alert_management/graphql/fragments/detailItem.fragment.graphql @@ -0,0 +1,11 @@ +#import "./listItem.fragment.graphql" + +fragment AlertDetailItem on AlertManagementAlert { + ...AlertListItem + createdAt + monitoringTool + service + description + updatedAt + details +} diff --git a/app/assets/javascripts/alert_management/graphql/fragments/listItem.fragment.graphql b/app/assets/javascripts/alert_management/graphql/fragments/listItem.fragment.graphql new file mode 100644 index 0000000000..fffe07b0cf --- /dev/null +++ b/app/assets/javascripts/alert_management/graphql/fragments/listItem.fragment.graphql @@ -0,0 +1,9 @@ +fragment AlertListItem on AlertManagementAlert { + iid + title + severity + status + startedAt + endedAt + eventCount +} diff --git a/app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.graphql b/app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.graphql new file mode 100644 index 0000000000..009ae0b293 --- /dev/null +++ b/app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.graphql @@ -0,0 +1,9 @@ +mutation ($projectPath: ID!, $status: AlertManagementStatus!, $iid: String!) { + updateAlertStatus(input: { iid: $iid, status: $status, projectPath: $projectPath }) { + errors + alert { + iid, + status, + } + } +} diff --git a/app/assets/javascripts/alert_management/graphql/queries/details.query.graphql b/app/assets/javascripts/alert_management/graphql/queries/details.query.graphql new file mode 100644 index 0000000000..7c77715fad --- /dev/null +++ b/app/assets/javascripts/alert_management/graphql/queries/details.query.graphql @@ -0,0 +1,11 @@ +#import "../fragments/detailItem.fragment.graphql" + +query alertDetails($fullPath: ID!, $alertId: String) { + project(fullPath: $fullPath) { + alertManagementAlerts(iid: $alertId) { + nodes { + ...AlertDetailItem + } + } + } +} diff --git a/app/assets/javascripts/alert_management/graphql/queries/getAlerts.query.graphql b/app/assets/javascripts/alert_management/graphql/queries/getAlerts.query.graphql new file mode 100644 index 0000000000..54b66389d5 --- /dev/null +++ b/app/assets/javascripts/alert_management/graphql/queries/getAlerts.query.graphql @@ -0,0 +1,11 @@ +#import "../fragments/listItem.fragment.graphql" + +query getAlerts($projectPath: ID!, $statuses: [AlertManagementStatus!]) { + project(fullPath: $projectPath) { + alertManagementAlerts(statuses: $statuses) { + nodes { + ...AlertListItem + } + } + } +} diff --git a/app/assets/javascripts/alert_management/list.js b/app/assets/javascripts/alert_management/list.js new file mode 100644 index 0000000000..cae6a536b5 --- /dev/null +++ b/app/assets/javascripts/alert_management/list.js @@ -0,0 +1,55 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import { defaultDataIdFromObject } from 'apollo-cache-inmemory'; +import { parseBoolean } from '~/lib/utils/common_utils'; +import AlertManagementList from './components/alert_management_list.vue'; + +Vue.use(VueApollo); + +export default () => { + const selector = '#js-alert_management'; + + const domEl = document.querySelector(selector); + const { projectPath, enableAlertManagementPath, emptyAlertSvgPath } = domEl.dataset; + let { alertManagementEnabled, userCanEnableAlertManagement } = domEl.dataset; + + alertManagementEnabled = parseBoolean(alertManagementEnabled); + userCanEnableAlertManagement = parseBoolean(userCanEnableAlertManagement); + + const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient( + {}, + { + cacheConfig: { + dataIdFromObject: object => { + // eslint-disable-next-line no-underscore-dangle + if (object.__typename === 'AlertManagementAlert') { + return object.iid; + } + return defaultDataIdFromObject(object); + }, + }, + }, + ), + }); + + return new Vue({ + el: selector, + apolloProvider, + components: { + AlertManagementList, + }, + render(createElement) { + return createElement('alert-management-list', { + props: { + projectPath, + enableAlertManagementPath, + emptyAlertSvgPath, + alertManagementEnabled, + userCanEnableAlertManagement, + }, + }); + }, + }); +}; diff --git a/app/assets/javascripts/alert_management/services/index.js b/app/assets/javascripts/alert_management/services/index.js new file mode 100644 index 0000000000..787603d3e7 --- /dev/null +++ b/app/assets/javascripts/alert_management/services/index.js @@ -0,0 +1,7 @@ +import axios from '~/lib/utils/axios_utils'; + +export default { + getAlertManagementList({ endpoint }) { + return axios.get(endpoint); + }, +}; diff --git a/app/assets/javascripts/alerts_service_settings/components/alerts_service_form.vue b/app/assets/javascripts/alerts_service_settings/components/alerts_service_form.vue index 785598142f..410c5c00e8 100644 --- a/app/assets/javascripts/alerts_service_settings/components/alerts_service_form.vue +++ b/app/assets/javascripts/alerts_service_settings/components/alerts_service_form.vue @@ -6,7 +6,7 @@ import { GlModal, GlModalDirective, } from '@gitlab/ui'; -import { escape as esc } from 'lodash'; +import { escape } from 'lodash'; import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; import ToggleButton from '~/vue_shared/components/toggle_button.vue'; import axios from '~/lib/utils/axios_utils'; @@ -65,7 +65,7 @@ export default { 'AlertService|%{linkStart}Learn more%{linkEnd} about configuring this endpoint to receive alerts.', ), { - linkStart: ``, linkEnd: '', diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 6301f6a391..e527659a93 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -23,6 +23,8 @@ const Api = { projectMergeRequestVersionsPath: '/api/:version/projects/:id/merge_requests/:mrid/versions', projectRunnersPath: '/api/:version/projects/:id/runners', projectProtectedBranchesPath: '/api/:version/projects/:id/protected_branches', + projectSearchPath: '/api/:version/projects/:id/search', + projectMilestonesPath: '/api/:version/projects/:id/milestones', mergeRequestsPath: '/api/:version/merge_requests', groupLabelsPath: '/groups/:namespace_path/-/labels', issuableTemplatePath: '/:namespace_path/:project_path/templates/:type/:key', @@ -46,6 +48,7 @@ const Api = { mergeRequestsPipeline: '/api/:version/projects/:id/merge_requests/:merge_request_iid/pipelines', adminStatisticsPath: '/api/:version/application/statistics', pipelineSinglePath: '/api/:version/projects/:id/pipelines/:pipeline_id', + pipelinesPath: '/api/:version/projects/:id/pipelines/', environmentsPath: '/api/:version/projects/:id/environments', rawFilePath: '/api/:version/projects/:id/repository/files/:path/raw', @@ -74,13 +77,11 @@ const Api = { const url = Api.buildUrl(Api.groupsPath); return axios .get(url, { - params: Object.assign( - { - search: query, - per_page: DEFAULT_PER_PAGE, - }, - options, - ), + params: { + search: query, + per_page: DEFAULT_PER_PAGE, + ...options, + }, }) .then(({ data }) => { callback(data); @@ -247,6 +248,23 @@ const Api = { .then(({ data }) => data); }, + projectSearch(id, options = {}) { + const url = Api.buildUrl(Api.projectSearchPath).replace(':id', encodeURIComponent(id)); + + return axios.get(url, { + params: { + search: options.search, + scope: options.scope, + }, + }); + }, + + projectMilestones(id) { + const url = Api.buildUrl(Api.projectMilestonesPath).replace(':id', encodeURIComponent(id)); + + return axios.get(url); + }, + mergeRequests(params = {}) { const url = Api.buildUrl(Api.mergeRequestsPath); @@ -281,7 +299,7 @@ const Api = { }; return axios .get(url, { - params: Object.assign({}, defaults, options), + params: { ...defaults, ...options }, }) .then(({ data }) => callback(data)) .catch(() => flash(__('Something went wrong while fetching projects'))); @@ -364,13 +382,11 @@ const Api = { users(query, options) { const url = Api.buildUrl(this.usersPath); return axios.get(url, { - params: Object.assign( - { - search: query, - per_page: DEFAULT_PER_PAGE, - }, - options, - ), + params: { + search: query, + per_page: DEFAULT_PER_PAGE, + ...options, + }, }); }, @@ -401,7 +417,7 @@ const Api = { }; return axios .get(url, { - params: Object.assign({}, defaults, options), + params: { ...defaults, ...options }, }) .then(({ data }) => callback(data)) .catch(() => flash(__('Something went wrong while fetching projects'))); @@ -502,6 +518,15 @@ const Api = { return axios.get(url); }, + // Return all pipelines for a project or filter by query params + pipelines(id, options = {}) { + const url = Api.buildUrl(this.pipelinesPath).replace(':id', encodeURIComponent(id)); + + return axios.get(url, { + params: options, + }); + }, + environments(id) { const url = Api.buildUrl(this.environmentsPath).replace(':id', encodeURIComponent(id)); return axios.get(url); diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 07d79ea1c7..5f50fcc112 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -3,7 +3,7 @@ import AccessorUtilities from './lib/utils/accessor'; export default class Autosave { - constructor(field, key, fallbackKey) { + constructor(field, key, fallbackKey, lockVersion) { this.field = field; this.isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe(); @@ -12,6 +12,8 @@ export default class Autosave { } this.key = `autosave/${key}`; this.fallbackKey = fallbackKey; + this.lockVersionKey = `${this.key}/lockVersion`; + this.lockVersion = lockVersion; this.field.data('autosave', this); this.restore(); this.field.on('input', () => this.save()); @@ -40,6 +42,11 @@ export default class Autosave { } } + getSavedLockVersion() { + if (!this.isLocalStorageAvailable) return; + return window.localStorage.getItem(this.lockVersionKey); + } + save() { if (!this.field.length) return; @@ -49,6 +56,9 @@ export default class Autosave { if (this.fallbackKey) { window.localStorage.setItem(this.fallbackKey, text); } + if (this.lockVersion !== undefined) { + window.localStorage.setItem(this.lockVersionKey, this.lockVersion); + } return window.localStorage.setItem(this.key, text); } @@ -58,6 +68,7 @@ export default class Autosave { reset() { if (!this.isLocalStorageAvailable) return; + window.localStorage.removeItem(this.lockVersionKey); window.localStorage.removeItem(this.fallbackKey); return window.localStorage.removeItem(this.key); } diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 67164997bd..8381b05090 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -1,7 +1,7 @@ /* eslint-disable class-methods-use-this, @gitlab/require-i18n-strings */ import $ from 'jquery'; -import _ from 'underscore'; +import { uniq } from 'lodash'; import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils'; import Cookies from 'js-cookie'; import { __ } from './locale'; @@ -513,7 +513,7 @@ export class AwardsHandler { addEmojiToFrequentlyUsedList(emoji) { if (this.emoji.isEmojiNameValid(emoji)) { - this.frequentlyUsedEmojis = _.uniq(this.getFrequentlyUsedEmojis().concat(emoji)); + this.frequentlyUsedEmojis = uniq(this.getFrequentlyUsedEmojis().concat(emoji)); Cookies.set('frequently_used_emojis', this.frequentlyUsedEmojis.join(','), { expires: 365 }); } } @@ -522,9 +522,7 @@ export class AwardsHandler { return ( this.frequentlyUsedEmojis || (() => { - const frequentlyUsedEmojis = _.uniq( - (Cookies.get('frequently_used_emojis') || '').split(','), - ); + const frequentlyUsedEmojis = uniq((Cookies.get('frequently_used_emojis') || '').split(',')); this.frequentlyUsedEmojis = frequentlyUsedEmojis.filter(inputName => this.emoji.isEmojiNameValid(inputName), ); diff --git a/app/assets/javascripts/behaviors/copy_to_clipboard.js b/app/assets/javascripts/behaviors/copy_to_clipboard.js index c3541e6256..48bcba7bcc 100644 --- a/app/assets/javascripts/behaviors/copy_to_clipboard.js +++ b/app/assets/javascripts/behaviors/copy_to_clipboard.js @@ -17,10 +17,11 @@ function showTooltip(target, title) { } function genericSuccess(e) { - showTooltip(e.trigger, __('Copied')); // Clear the selection and blur the trigger so it loses its border e.clearSelection(); $(e.trigger).blur(); + + showTooltip(e.trigger, __('Copied')); } /** diff --git a/app/assets/javascripts/behaviors/markdown/marks/inline_html.js b/app/assets/javascripts/behaviors/markdown/marks/inline_html.js index 7e020139fe..f846511195 100644 --- a/app/assets/javascripts/behaviors/markdown/marks/inline_html.js +++ b/app/assets/javascripts/behaviors/markdown/marks/inline_html.js @@ -1,7 +1,7 @@ /* eslint-disable class-methods-use-this */ import { Mark } from 'tiptap'; -import { escape as esc } from 'lodash'; +import { escape } from 'lodash'; // Transforms generated HTML back to GFM for Banzai::Filter::MarkdownFilter export default class InlineHTML extends Mark { @@ -35,7 +35,7 @@ export default class InlineHTML extends Mark { mixable: true, open(state, mark) { return `<${mark.attrs.tag}${ - mark.attrs.title ? ` title="${state.esc(esc(mark.attrs.title))}"` : '' + mark.attrs.title ? ` title="${state.esc(escape(mark.attrs.title))}"` : '' }>`; }, close(state, mark) { diff --git a/app/assets/javascripts/behaviors/markdown/paste_markdown_table.js b/app/assets/javascripts/behaviors/markdown/paste_markdown_table.js index 665a721642..278dd857ab 100644 --- a/app/assets/javascripts/behaviors/markdown/paste_markdown_table.js +++ b/app/assets/javascripts/behaviors/markdown/paste_markdown_table.js @@ -47,7 +47,8 @@ export default class PasteMarkdownTable { const htmlData = this.data.getData('text/html'); this.doc = new DOMParser().parseFromString(htmlData, 'text/html'); - const tables = this.doc.querySelectorAll('table'); + // Avoid formatting lines that were copied from a diff + const tables = this.doc.querySelectorAll('table:not(.diff-wrap-lines)'); // We're only looking for exactly one table. If there happens to be // multiple tables, it's possible an application copied data into diff --git a/app/assets/javascripts/behaviors/markdown/render_gfm.js b/app/assets/javascripts/behaviors/markdown/render_gfm.js index 137cc7b466..01627b7206 100644 --- a/app/assets/javascripts/behaviors/markdown/render_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/render_gfm.js @@ -16,7 +16,7 @@ $.fn.renderGFM = function renderGFM() { renderMath(this.find('.js-render-math')); renderMermaid(this.find('.js-render-mermaid')); highlightCurrentUser(this.find('.gfm-project_member').get()); - initUserPopovers(this.find('.gfm-project_member').get()); + initUserPopovers(this.find('.js-user-link').get()); initMRPopovers(this.find('.gfm-merge_request').get()); renderMetrics(this.find('.js-render-metrics').get()); return this; diff --git a/app/assets/javascripts/behaviors/markdown/render_mermaid.js b/app/assets/javascripts/behaviors/markdown/render_mermaid.js index fe63ebd470..057cdb6cc4 100644 --- a/app/assets/javascripts/behaviors/markdown/render_mermaid.js +++ b/app/assets/javascripts/behaviors/markdown/render_mermaid.js @@ -24,13 +24,23 @@ let mermaidModule = {}; function importMermaidModule() { return import(/* webpackChunkName: 'mermaid' */ 'mermaid') .then(mermaid => { + let theme = 'neutral'; + + if ( + window.gon?.user_color_scheme === 'dark' && + // if on the Web IDE page + document.querySelector('.ide') + ) { + theme = 'dark'; + } + mermaid.initialize({ // mermaid core options mermaid: { startOnLoad: false, }, // mermaidAPI options - theme: 'neutral', + theme, flowchart: { useMaxWidth: true, htmlLabels: false, diff --git a/app/assets/javascripts/behaviors/markdown/render_metrics.js b/app/assets/javascripts/behaviors/markdown/render_metrics.js index 9260a89bd5..37cbce46b6 100644 --- a/app/assets/javascripts/behaviors/markdown/render_metrics.js +++ b/app/assets/javascripts/behaviors/markdown/render_metrics.js @@ -1,15 +1,12 @@ import Vue from 'vue'; -import EmbedGroup from '~/monitoring/components/embeds/embed_group.vue'; import { createStore } from '~/monitoring/stores/embed_group/'; // TODO: Handle copy-pasting - https://gitlab.com/gitlab-org/gitlab-foss/issues/64369. export default function renderMetrics(elements) { if (!elements.length) { - return; + return Promise.resolve(); } - const EmbedGroupComponent = Vue.extend(EmbedGroup); - const wrapperList = []; elements.forEach(element => { @@ -31,14 +28,20 @@ export default function renderMetrics(elements) { element.parentNode.removeChild(element); }); - wrapperList.forEach(wrapper => { - // eslint-disable-next-line no-new - new EmbedGroupComponent({ - el: wrapper, - store: createStore(), - propsData: { - urls: wrapper.urls, - }, + return import( + /* webpackChunkName: 'gfm_metrics' */ '~/monitoring/components/embeds/embed_group.vue' + ).then(({ default: EmbedGroup }) => { + const EmbedGroupComponent = Vue.extend(EmbedGroup); + + wrapperList.forEach(wrapper => { + // eslint-disable-next-line no-new + new EmbedGroupComponent({ + el: wrapper, + store: createStore(), + propsData: { + urls: wrapper.urls, + }, + }); }); }); } diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js index d5d8edd5ac..c35a073b29 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js @@ -22,7 +22,7 @@ function eventHasModifierKeys(event) { export default class ShortcutsBlob extends Shortcuts { constructor(opts) { - const options = Object.assign({}, defaults, opts); + const options = { ...defaults, ...opts }; super(options.skipResetBindings); this.options = options; diff --git a/app/assets/javascripts/blob/blob_fork_suggestion.js b/app/assets/javascripts/blob/blob_fork_suggestion.js index 476b9405a9..44dfbfcfe1 100644 --- a/app/assets/javascripts/blob/blob_fork_suggestion.js +++ b/app/assets/javascripts/blob/blob_fork_suggestion.js @@ -17,7 +17,7 @@ const defaults = { class BlobForkSuggestion { constructor(options) { - this.elementMap = Object.assign({}, defaults, options); + this.elementMap = { ...defaults, ...options }; this.onOpenButtonClick = this.onOpenButtonClick.bind(this); this.onCancelButtonClick = this.onCancelButtonClick.bind(this); } diff --git a/app/assets/javascripts/blob/components/blob_content.vue b/app/assets/javascripts/blob/components/blob_content.vue index 7d5d48cfc3..4f433bd8df 100644 --- a/app/assets/javascripts/blob/components/blob_content.vue +++ b/app/assets/javascripts/blob/components/blob_content.vue @@ -3,12 +3,19 @@ import { GlLoadingIcon } from '@gitlab/ui'; import { RichViewer, SimpleViewer } from '~/vue_shared/components/blob_viewers'; import BlobContentError from './blob_content_error.vue'; +import { BLOB_RENDER_EVENT_LOAD, BLOB_RENDER_EVENT_SHOW_SOURCE } from './constants'; + export default { components: { GlLoadingIcon, BlobContentError, }, props: { + blob: { + type: Object, + required: false, + default: () => ({}), + }, content: { type: String, default: '', @@ -37,6 +44,8 @@ export default { return this.activeViewer.renderError; }, }, + BLOB_RENDER_EVENT_LOAD, + BLOB_RENDER_EVENT_SHOW_SOURCE, };