From 45981217aa5b6776dc27a70145e33c1c9fd680b9 Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Sun, 7 Jul 2019 11:18:12 +0530 Subject: [PATCH] New upstream version 11.10.8+dfsg --- .eslintignore | 1 + .eslintrc.yml | 3 - .gitlab-ci.yml | 177 +- .gitlab/CODEOWNERS.disabled | 4 +- .gitlab/issue_templates/Database Reviewer.md | 32 + .gitlab/issue_templates/Doc Review.md | 20 + .gitlab/issue_templates/Documentation.md | 75 +- .gitlab/issue_templates/Feature proposal.md | 49 +- .../Security developer workflow.md | 1 + .gitlab/issue_templates/Test plan.md | 2 +- .../Change documentation location.md | 2 +- .../Database changes.md | 6 +- .../merge_request_templates/Documentation.md | 40 +- .../Security Release.md | 8 +- .prettierrc | 10 +- .rubocop.yml | 23 + .scss-lint.yml | 4 +- .stylelintrc | 111 + CHANGELOG.md | 721 +- CONTRIBUTING.md | 2 +- Dangerfile | 30 +- GITALY_SERVER_VERSION | 2 +- GITLAB_SHELL_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 50 +- Gemfile.lock | 144 +- PROCESS.md | 51 +- Pipfile | 12 + Pipfile.lock | 30 + VERSION | 2 +- app/assets/images/select2-spinner.gif | Bin 0 -> 1849 bytes app/assets/images/select2.png | Bin 0 -> 613 bytes app/assets/images/select2x2.png | Bin 0 -> 845 bytes app/assets/javascripts/api.js | 17 + .../{group_avatar.js => avatar_picker.js} | 9 +- app/assets/javascripts/awards_handler.js | 6 +- .../badges/components/badge_form.vue | 2 +- .../behaviors/markdown/copy_as_gfm.js | 10 +- .../behaviors/markdown/render_gfm.js | 2 + .../behaviors/shortcuts/shortcuts_issuable.js | 4 +- .../javascripts/blob_edit/blob_bundle.js | 2 +- .../javascripts/boards/components/board.js | 5 +- .../boards/components/issue_card_inner.vue | 6 +- .../boards/components/issue_due_date.vue | 2 +- .../boards/components/new_list_dropdown.js | 6 +- app/assets/javascripts/boards/index.js | 2 + app/assets/javascripts/boards/models/issue.js | 12 +- .../boards/services/board_service.js | 3 +- app/assets/javascripts/breakpoints.js | 3 + .../ci_variable_list/ci_variable_list.js | 34 +- .../javascripts/clusters/clusters_bundle.js | 44 +- .../clusters/components/application_row.vue | 23 +- .../clusters/components/applications.vue | 303 +- app/assets/javascripts/clusters/constants.js | 1 + .../clusters/services/clusters_service.js | 7 + .../clusters/stores/clusters_store.js | 12 +- app/assets/javascripts/commit/image_file.js | 44 +- app/assets/javascripts/commons/bootstrap.js | 60 + app/assets/javascripts/commons/jquery.js | 4 +- app/assets/javascripts/commons/polyfills.js | 1 + app/assets/javascripts/contextual_sidebar.js | 55 +- app/assets/javascripts/create_label.js | 9 +- .../javascripts/diffs/components/app.vue | 99 +- .../diffs/components/compare_versions.vue | 22 +- .../diffs/components/diff_content.vue | 32 +- .../diffs/components/diff_file.vue | 80 +- .../diffs/components/diff_file_header.vue | 167 +- .../diffs/components/diff_line_note_form.vue | 10 +- .../diffs/components/edit_button.vue | 27 +- .../diffs/components/inline_diff_view.vue | 9 + .../components/parallel_diff_table_row.vue | 4 +- .../diffs/components/parallel_diff_view.vue | 52 +- .../diffs/components/tree_list.vue | 64 +- app/assets/javascripts/diffs/constants.js | 14 + app/assets/javascripts/diffs/index.js | 2 + .../diffs/mixins/draft_comments.js | 7 + app/assets/javascripts/diffs/store/actions.js | 62 +- app/assets/javascripts/diffs/store/getters.js | 10 +- .../diffs/store/modules/diff_state.js | 8 +- .../javascripts/diffs/store/mutation_types.js | 5 + .../javascripts/diffs/store/mutations.js | 65 +- app/assets/javascripts/diffs/store/utils.js | 50 +- .../javascripts/diffs/workers/tree_worker.js | 5 + .../javascripts/emoji/no_emoji_validator.js | 63 + .../components/confirm_rollback_modal.vue | 108 + .../environments/components/container.vue | 20 +- .../components/environment_item.vue | 43 +- .../components/environment_rollback.vue | 43 +- .../components/environments_app.vue | 17 +- .../components/environments_table.vue | 79 +- .../folder/environments_folder_bundle.js | 3 + .../folder/environments_folder_view.vue | 11 +- app/assets/javascripts/environments/index.js | 3 + .../mixins/canary_callout_mixin.js | 5 + .../environments/mixins/container_mixin.js | 29 + .../mixins/environment_item_mixin.js | 13 + .../mixins/environments_app_mixin.js | 32 + .../mixins/environments_folder_view_mixin.js | 29 + .../environments/mixins/environments_mixin.js | 40 +- .../mixins/environments_table_mixin.js | 10 + .../environments/stores/environments_store.js | 25 + .../environments/stores/helpers.js | 8 + .../components/error_tracking_list.vue | 26 +- .../error_tracking/store/actions.js | 29 +- .../components/app.vue | 129 + .../components/error_tracking_form.vue | 91 + .../components/project_dropdown.vue | 82 + .../error_tracking_settings/index.js | 27 + .../error_tracking_settings/store/actions.js | 91 + .../error_tracking_settings/store/getters.js | 44 + .../error_tracking_settings/store/index.js | 16 + .../store/mutation_types.js | 11 + .../store/mutations.js | 61 + .../error_tracking_settings/store/state.js | 12 + .../error_tracking_settings/utils.js | 18 + .../add_extra_tokens_for_merge_requests.js | 28 + ...dmin_runners_filtered_search_token_keys.js | 8 + .../available_dropdown_mappings.js | 164 + .../filtered_search/dropdown_ajax_filter.js | 68 + .../filtered_search/dropdown_user.js | 83 +- .../filtered_search_dropdown_manager.js | 103 +- .../filtered_search_manager.js | 25 +- .../filtered_search_token_keys.js | 14 +- .../filtered_search_visual_tokens.js | 153 +- .../recent_searches_storage_keys.js | 4 + .../filtered_search/visual_token_value.js | 116 + .../components/frequent_items_list_item.vue | 67 +- app/assets/javascripts/gfm_auto_complete.js | 8 +- app/assets/javascripts/gl_dropdown.js | 28 +- app/assets/javascripts/gl_field_errors.js | 2 +- .../javascripts/groups/components/app.vue | 2 +- .../groups/components/group_item.vue | 2 +- .../javascripts/helpers/monitor_helper.js | 17 + .../ide/components/commit_sidebar/actions.vue | 35 +- .../commit_sidebar/editor_header.vue | 2 +- .../components/commit_sidebar/radio_group.vue | 7 +- .../ide/components/file_row_extra.vue | 5 +- .../ide/components/new_dropdown/index.vue | 25 +- .../ide/components/new_dropdown/modal.vue | 72 +- .../ide/components/pipelines/list.vue | 14 +- .../ide/components/repo_commit_section.vue | 2 +- app/assets/javascripts/ide/constants.js | 16 + app/assets/javascripts/ide/lib/files.js | 115 + app/assets/javascripts/ide/services/index.js | 3 + app/assets/javascripts/ide/stores/actions.js | 70 +- .../ide/stores/actions/merge_request.js | 33 + .../javascripts/ide/stores/actions/project.js | 34 +- .../javascripts/ide/stores/actions/tree.js | 46 +- app/assets/javascripts/ide/stores/getters.js | 5 +- .../ide/stores/modules/commit/actions.js | 34 +- .../ide/stores/modules/commit/constants.js | 10 +- .../ide/stores/modules/commit/getters.js | 16 +- .../stores/modules/commit/mutation_types.js | 1 + .../ide/stores/modules/commit/mutations.js | 12 +- .../ide/stores/modules/commit/state.js | 1 + .../ide/stores/modules/pipelines/mutations.js | 3 +- .../ide/stores/modules/pipelines/state.js | 1 + .../javascripts/ide/stores/mutations.js | 16 +- .../ide/stores/mutations/merge_request.js | 3 + .../javascripts/ide/stores/mutations/tree.js | 14 +- app/assets/javascripts/ide/stores/utils.js | 33 +- .../stores/workers/files_decorator_worker.js | 100 - .../components/import_projects_table.vue | 101 + .../components/import_status.vue | 47 + .../components/imported_project_table_row.vue | 55 + .../components/provider_repo_table_row.vue | 110 + .../javascripts/import_projects/constants.js | 48 + .../javascripts/import_projects/event_hub.js | 3 + .../javascripts/import_projects/index.js | 48 + .../import_projects/store/actions.js | 106 + .../import_projects/store/getters.js | 20 + .../import_projects/store/index.js | 16 + .../import_projects/store/mutation_types.js | 11 + .../import_projects/store/mutations.js | 55 + .../import_projects/store/state.js | 15 + .../javascripts/issuable_suggestions/index.js | 4 +- app/assets/javascripts/issue.js | 14 - .../issue_show/components/description.vue | 2 +- app/assets/javascripts/issue_show/index.js | 7 +- .../issue_show/utils/parse_data.js | 15 + .../jobs/components/commit_block.vue | 2 +- .../jobs/components/empty_state.vue | 2 +- .../javascripts/jobs/components/job_app.vue | 29 +- .../javascripts/jobs/components/sidebar.vue | 2 +- .../jobs/components/stages_dropdown.vue | 51 +- .../components/unmet_prerequisites_block.vue | 30 + app/assets/javascripts/jobs/index.js | 1 + app/assets/javascripts/jobs/store/getters.js | 14 + app/assets/javascripts/labels_select.js | 129 +- app/assets/javascripts/lib/graphql.js | 21 +- app/assets/javascripts/lib/utils/autosave.js | 32 + .../javascripts/lib/utils/chart_utils.js | 83 + .../javascripts/lib/utils/common_utils.js | 49 +- .../javascripts/lib/utils/datetime_utility.js | 10 +- app/assets/javascripts/lib/utils/highlight.js | 44 + .../javascripts/lib/utils/http_status.js | 1 + .../javascripts/lib/utils/number_utils.js | 19 + app/assets/javascripts/lib/utils/poll.js | 20 +- .../javascripts/lib/utils/simple_poll.js | 4 +- .../javascripts/lib/utils/text_utility.js | 32 + app/assets/javascripts/lib/utils/webpack.js | 6 + app/assets/javascripts/members.js | 27 +- .../components/parallel_conflict_lines.js | 2 +- app/assets/javascripts/mirrors/ssh_mirror.js | 8 + .../monitoring/components/charts/area.vue | 180 +- .../monitoring/components/dashboard.vue | 145 +- .../javascripts/monitoring/constants.js | 20 + .../monitoring/monitoring_bundle.js | 6 +- .../monitoring/services/monitoring_service.js | 6 +- .../monitoring/stores/monitoring_store.js | 38 +- app/assets/javascripts/monitoring/utils.js | 33 + app/assets/javascripts/mr_notes/index.js | 69 +- app/assets/javascripts/mr_notes/init_notes.js | 70 + .../mr_popover/components/mr_popover.vue | 110 + .../javascripts/mr_popover/constants.js | 10 + app/assets/javascripts/mr_popover/index.js | 67 + .../mr_popover/queries/merge_request.graphql | 14 + .../notebook/cells/output/index.vue | 29 +- app/assets/javascripts/notes.js | 4 +- .../notes/components/diff_with_note.vue | 24 +- .../notes/components/discussion_filter.vue | 26 +- .../components/discussion_filter_note.vue | 52 + .../discussion_resolve_with_issue_button.vue | 34 + .../notes/components/note_actions.vue | 20 +- .../components/note_actions/reply_button.vue | 14 +- .../notes/components/note_body.vue | 1 - .../notes/components/note_form.vue | 65 +- .../notes/components/note_header.vue | 48 +- .../notes/components/noteable_discussion.vue | 151 +- .../notes/components/noteable_note.vue | 23 +- .../notes/components/notes_app.vue | 28 +- app/assets/javascripts/notes/constants.js | 6 + .../javascripts/notes/discussion_filters.js | 13 +- app/assets/javascripts/notes/index.js | 7 +- .../notes/mixins/diff_line_note_form.js | 10 + .../javascripts/notes/mixins/resolvable.js | 4 + .../javascripts/notes/stores/actions.js | 59 +- .../javascripts/notes/stores/getters.js | 5 + .../javascripts/notes/stores/modules/index.js | 1 + .../notes/stores/mutation_types.js | 1 + .../javascripts/notes/stores/mutations.js | 15 +- .../javascripts/notifications_dropdown.js | 4 +- .../pages/admin/groups/edit/index.js | 4 +- .../pages/admin/groups/new/index.js | 4 +- .../pages/dashboard/merge_requests/index.js | 3 +- .../pages/groups/clusters/index/index.js | 3 +- .../javascripts/pages/groups/details/index.js | 5 + .../javascripts/pages/groups/edit/index.js | 4 +- .../pages/groups/group_members/index/index.js | 2 +- app/assets/javascripts/pages/groups/index.js | 3 +- .../javascripts/pages/groups/issues/index.js | 4 +- .../pages/groups/labels/edit/index.js | 2 +- .../pages/groups/labels/new/index.js | 2 +- .../pages/groups/merge_requests/index.js | 3 +- .../javascripts/pages/groups/new/index.js | 4 +- .../pages/groups/shared/group_details.js | 31 + .../groups/{show => shared}/group_tabs.js | 0 .../javascripts/pages/groups/show/index.js | 27 +- .../pages/import/gitea/status/index.js | 7 + .../pages/import/github/status/index.js | 7 + .../pages/projects/clusters/index/index.js | 3 +- .../javascripts/pages/projects/edit/index.js | 4 +- .../pages/projects/graphs/charts/index.js | 73 +- .../javascripts/pages/projects/index.js | 2 +- .../pages/projects/issues/edit/index.js | 2 +- .../javascripts/pages/projects/issues/form.js | 2 +- .../pages/projects/issues/index/index.js | 4 +- .../pages/projects/issues/new/index.js | 2 +- .../javascripts/pages/projects/issues/show.js | 2 + .../pages/projects/labels/edit/index.js | 2 +- .../pages/projects/labels/new/index.js | 2 +- .../projects/merge_requests/index/index.js | 3 +- .../merge_requests/init_merge_request.js | 2 +- .../shared/components/timezone_dropdown.js | 53 +- .../pipeline_schedules/shared/init_form.js | 8 +- .../pages/projects/pipelines/charts/index.js | 81 +- .../pages/projects/project_members/index.js | 2 +- .../settings/operations/show/index.js | 5 + .../javascripts/pages/sessions/new/index.js | 2 + .../pages/users/activity_calendar.js | 15 +- .../javascripts/pages/users/user_tabs.js | 3 +- .../components/performance_bar_app.vue | 7 + .../javascripts/persistent_user_callout.js | 8 + .../pipelines/components/graph/job_item.vue | 7 +- .../components/graph/job_name_component.vue | 5 +- .../graph/stage_column_component.vue | 5 +- .../components/pipeline_stop_modal.vue | 97 + .../pipelines/components/pipeline_url.vue | 8 +- .../components/pipelines_actions.vue | 16 +- .../components/pipelines_artifacts.vue | 23 +- .../pipelines/components/pipelines_table.vue | 40 +- .../components/pipelines_table_row.vue | 5 +- .../mixins/graph_pipeline_bundle_mixin.js | 16 + .../javascripts/pipelines/mixins/pipelines.js | 9 +- .../pipelines/mixins/stage_column_mixin.js | 7 + .../pipelines/pipeline_details_bundle.js | 18 +- .../pipelines/stores/pipeline_store.js | 1 - .../components/gke_zone_dropdown.vue | 2 +- .../javascripts/projects/project_new.js | 36 + .../components/related_merge_requests.vue | 121 + .../related_merge_requests/index.js | 24 + .../related_merge_requests/store/actions.js | 37 + .../related_merge_requests/store/index.js | 14 + .../store/mutation_types.js | 4 + .../related_merge_requests/store/mutations.js | 19 + .../related_merge_requests/store/state.js | 7 + .../javascripts/releases/store/actions.js | 4 +- .../reports/components/issue_status_icon.vue | 7 +- .../reports/components/report_item.vue | 7 +- .../serverless/components/area.vue | 146 + .../components/function_details.vue | 54 +- .../serverless/components/function_row.vue | 5 + .../serverless/components/functions.vue | 44 +- .../components/missing_prometheus.vue | 63 + .../javascripts/serverless/constants.js | 3 + .../serverless/serverless_bundle.js | 125 +- .../services/get_functions_service.js | 11 - .../javascripts/serverless/store/actions.js | 113 + .../javascripts/serverless/store/getters.js | 10 + .../javascripts/serverless/store/index.js | 18 + .../serverless/store/mutation_types.js | 9 + .../javascripts/serverless/store/mutations.js | 38 + .../javascripts/serverless/store/state.js | 13 + .../stores/serverless_details_store.js | 11 - .../serverless/stores/serverless_store.js | 29 - app/assets/javascripts/serverless/utils.js | 23 + .../sidebar/components/todo_toggle/todo.vue | 5 +- app/assets/javascripts/users_select.js | 25 +- .../components/deployment.vue | 14 +- .../components/mr_widget_alert_message.vue | 46 + .../components/mr_widget_header.vue | 62 +- .../components/mr_widget_pipeline.vue | 103 +- .../components/mr_widget_status_icon.vue | 2 +- .../states/commit_message_dropdown.vue | 1 - .../components/states/commits_header.vue | 18 +- .../states/mr_widget_failed_to_merge.vue | 2 +- .../components/states/ready_to_merge.vue | 87 +- .../vue_merge_request_widget/constants.js | 5 + .../mixins/mr_widget_pipeline.js | 15 + .../mr_widget_options.vue | 38 + .../stores/mr_widget_store.js | 5 + .../components/changed_file_icon.vue | 12 +- .../vue_shared/components/ci_icon.vue | 9 +- .../vue_shared/components/commit.vue | 70 +- .../viewers/markdown_viewer.vue | 4 +- .../components/diff_viewer/diff_viewer.vue | 16 +- .../viewers/image_diff/onion_skin_viewer.vue | 21 +- .../viewers/image_diff/swipe_viewer.vue | 20 +- .../diff_viewer/viewers/no_preview.vue | 5 + .../diff_viewer/viewers/not_diffable.vue | 5 + .../vue_shared/components/empty_component.js | 3 + .../vue_shared/components/file_row.vue | 13 +- .../issue/related_issuable_item.vue | 123 + .../components/lib/utils/diff_utils.js | 20 + .../vue_shared/components/loading_button.vue | 4 +- .../vue_shared/components/markdown/field.vue | 11 +- .../vue_shared/components/markdown/header.vue | 31 +- .../components/markdown/suggestion_diff.vue | 42 +- .../markdown/suggestion_diff_row.vue | 32 + .../components/markdown/suggestions.vue | 40 +- .../components/notes/placeholder_note.vue | 2 +- .../components/notes/system_note.vue | 6 +- .../vue_shared/components/panel_resizer.vue | 7 +- .../vue_shared/components/pikaday.vue | 3 +- .../components/project_avatar/default.vue | 10 +- .../project_selector/project_list_item.vue | 74 + .../project_selector/project_selector.vue | 103 + .../resizable_chart_container.vue | 40 + .../vue_shared/components/select2_select.vue | 35 + .../components/sidebar/date_picker.vue | 3 +- .../components/sidebar/labels_select/base.vue | 19 +- .../sidebar/labels_select/dropdown_button.vue | 12 + .../sidebar/labels_select/dropdown_value.vue | 55 +- .../dropdown_value_regular_label.vue | 35 + .../dropdown_value_scoped_label.vue | 47 + .../vue_shared/components/svg_gradient.vue | 6 + .../components/table_pagination.vue | 39 +- .../javascripts/vue_shared/mixins/is_ee.js | 10 + .../mixins/related_issuable_mixin.js | 217 + app/assets/stylesheets/application.scss | 49 +- .../stylesheets/bootstrap_migration.scss | 10 - .../components/dashboard_skeleton.scss | 80 + .../stylesheets/components/popover.scss | 7 + .../components/project_list_item.scss | 24 + .../components/related_items_list.scss | 16 +- app/assets/stylesheets/framework.scss | 3 + .../stylesheets/framework/animations.scss | 50 +- .../stylesheets/framework/asciidoctor.scss | 2 +- app/assets/stylesheets/framework/avatar.scss | 92 +- app/assets/stylesheets/framework/awards.scss | 24 +- app/assets/stylesheets/framework/blank.scss | 28 + app/assets/stylesheets/framework/blocks.scss | 6 +- app/assets/stylesheets/framework/buttons.scss | 9 +- app/assets/stylesheets/framework/callout.scss | 4 + .../framework/ci_variable_list.scss | 1 + app/assets/stylesheets/framework/common.scss | 73 +- .../framework/contextual_sidebar.scss | 133 +- app/assets/stylesheets/framework/emojis.scss | 2 +- app/assets/stylesheets/framework/files.scss | 10 +- app/assets/stylesheets/framework/filters.scss | 22 +- app/assets/stylesheets/framework/forms.scss | 15 +- app/assets/stylesheets/framework/gfm.scss | 2 +- app/assets/stylesheets/framework/header.scss | 27 +- app/assets/stylesheets/framework/icons.scss | 1 + app/assets/stylesheets/framework/lists.scss | 12 +- app/assets/stylesheets/framework/logo.scss | 35 +- .../stylesheets/framework/markdown_area.scss | 42 +- app/assets/stylesheets/framework/mixins.scss | 62 +- app/assets/stylesheets/framework/modal.scss | 13 +- .../stylesheets/framework/page_title.scss | 1 - app/assets/stylesheets/framework/panels.scss | 1 - .../secondary_navigation_elements.scss | 27 + app/assets/stylesheets/framework/selects.scss | 12 +- app/assets/stylesheets/framework/sidebar.scss | 52 + .../stylesheets/framework/sortable.scss | 92 + app/assets/stylesheets/framework/spinner.scss | 51 + .../framework/system_messages.scss | 111 + app/assets/stylesheets/framework/tables.scss | 1 - app/assets/stylesheets/framework/terms.scss | 1 - app/assets/stylesheets/framework/toggle.scss | 14 +- .../stylesheets/framework/typography.scss | 142 +- .../stylesheets/framework/variables.scss | 160 +- .../framework/variables_overrides.scss | 11 +- .../framework/vue_transitions.scss | 6 +- app/assets/stylesheets/framework/wells.scss | 4 + app/assets/stylesheets/highlight/common.scss | 18 + .../stylesheets/highlight/embedded.scss | 2 +- .../highlight/{ => themes}/dark.scss | 6 +- .../highlight/{ => themes}/monokai.scss | 6 +- .../highlight/{ => themes}/none.scss | 8 +- .../solarized-dark.scss} | 6 +- .../solarized-light.scss} | 12 +- .../stylesheets/highlight/themes/white.scss | 3 + app/assets/stylesheets/highlight/white.scss | 3 - .../stylesheets/highlight/white_base.scss | 80 +- .../mailers/highlighted_diff_email.scss | 67 +- app/assets/stylesheets/notify.scss | 2 +- app/assets/stylesheets/page_bundles/ide.scss | 27 +- .../stylesheets/page_bundles/xterm.scss | 6 +- app/assets/stylesheets/pages/boards.scss | 33 +- app/assets/stylesheets/pages/branches.scss | 13 +- app/assets/stylesheets/pages/builds.scss | 12 +- app/assets/stylesheets/pages/commits.scss | 4 +- .../stylesheets/pages/cycle_analytics.scss | 1 - app/assets/stylesheets/pages/detail_page.scss | 1 - app/assets/stylesheets/pages/diff.scss | 434 +- app/assets/stylesheets/pages/editor.scss | 3 +- .../stylesheets/pages/environments.scss | 6 +- app/assets/stylesheets/pages/graph.scss | 2 - app/assets/stylesheets/pages/groups.scss | 49 + app/assets/stylesheets/pages/help.scss | 10 +- app/assets/stylesheets/pages/import.scss | 49 +- app/assets/stylesheets/pages/issuable.scss | 43 +- app/assets/stylesheets/pages/issues.scss | 7 +- app/assets/stylesheets/pages/labels.scss | 63 +- app/assets/stylesheets/pages/login.scss | 3 +- app/assets/stylesheets/pages/members.scss | 50 +- .../stylesheets/pages/merge_conflicts.scss | 96 +- .../stylesheets/pages/merge_requests.scss | 73 +- app/assets/stylesheets/pages/milestone.scss | 5 +- app/assets/stylesheets/pages/monitor.scss | 5 + app/assets/stylesheets/pages/note_form.scss | 8 +- app/assets/stylesheets/pages/notes.scss | 85 +- app/assets/stylesheets/pages/pipelines.scss | 48 +- app/assets/stylesheets/pages/profile.scss | 65 +- app/assets/stylesheets/pages/projects.scss | 22 +- app/assets/stylesheets/pages/search.scss | 5 +- app/assets/stylesheets/pages/settings.scss | 61 +- app/assets/stylesheets/pages/stat_graph.scss | 2 + app/assets/stylesheets/pages/status.scss | 5 +- app/assets/stylesheets/pages/todos.scss | 18 +- app/assets/stylesheets/pages/tree.scss | 20 - app/assets/stylesheets/pages/ui_dev_kit.scss | 2 +- app/assets/stylesheets/pages/wiki.scss | 6 - app/assets/stylesheets/print.scss | 18 +- app/assets/stylesheets/utilities.scss | 17 + .../admin/appearances_controller.rb | 15 +- .../admin/application_settings_controller.rb | 12 +- .../admin/applications_controller.rb | 4 +- .../admin/broadcast_messages_controller.rb | 4 +- .../admin/deploy_keys_controller.rb | 2 +- app/controllers/admin/groups_controller.rb | 11 +- app/controllers/admin/hooks_controller.rb | 4 +- .../admin/identities_controller.rb | 8 +- .../admin/impersonation_tokens_controller.rb | 6 +- app/controllers/admin/keys_controller.rb | 4 +- app/controllers/admin/labels_controller.rb | 6 +- app/controllers/admin/projects_controller.rb | 4 +- app/controllers/admin/runners_controller.rb | 16 +- app/controllers/admin/spam_logs_controller.rb | 6 +- app/controllers/admin/users_controller.rb | 54 +- app/controllers/application_controller.rb | 25 +- app/controllers/autocomplete_controller.rb | 9 +- .../clusters/applications_controller.rb | 29 +- .../clusters/clusters_controller.rb | 25 +- .../concerns/authenticates_with_two_factor.rb | 6 +- app/controllers/concerns/boards_actions.rb | 38 + app/controllers/concerns/continue_params.rb | 2 +- app/controllers/concerns/creates_commit.rb | 25 +- app/controllers/concerns/issuable_actions.rb | 2 +- .../concerns/issuable_collections.rb | 4 +- .../concerns/issuable_collections_action.rb | 4 +- app/controllers/concerns/lfs_request.rb | 8 +- .../concerns/membership_actions.rb | 35 +- app/controllers/concerns/notes_actions.rb | 51 +- app/controllers/concerns/preview_markdown.rb | 2 +- .../concerns/project_unauthorized.rb | 19 +- app/controllers/concerns/renders_notes.rb | 2 +- app/controllers/concerns/spammable_actions.rb | 6 +- app/controllers/concerns/uploads_actions.rb | 4 +- .../dashboard/projects_controller.rb | 12 +- app/controllers/dashboard/todos_controller.rb | 4 +- app/controllers/dashboard_controller.rb | 5 +- .../explore/projects_controller.rb | 6 +- app/controllers/graphql_controller.rb | 14 +- app/controllers/groups/boards_controller.rb | 39 +- .../groups/group_members_controller.rb | 1 + app/controllers/groups/runners_controller.rb | 10 +- .../groups/settings/ci_cd_controller.rb | 20 +- .../groups/variables_controller.rb | 2 +- app/controllers/groups_controller.rb | 43 +- app/controllers/help_controller.rb | 7 +- .../import/bitbucket_controller.rb | 2 +- .../import/bitbucket_server_controller.rb | 12 +- app/controllers/import/fogbugz_controller.rb | 6 +- app/controllers/import/gitea_controller.rb | 22 +- app/controllers/import/github_controller.rb | 81 +- app/controllers/import/gitlab_controller.rb | 2 +- .../import/gitlab_projects_controller.rb | 4 +- .../import/google_code_controller.rb | 12 +- .../omniauth_callbacks_controller.rb | 4 +- .../profiles/accounts_controller.rb | 2 +- .../profiles/preferences_controller.rb | 10 +- .../profiles/two_factor_auths_controller.rb | 25 +- app/controllers/profiles_controller.rb | 1 - .../projects/application_controller.rb | 13 +- app/controllers/projects/blob_controller.rb | 65 +- app/controllers/projects/boards_controller.rb | 39 +- .../projects/branches_controller.rb | 7 +- .../projects/commits_controller.rb | 1 + .../projects/deploy_keys_controller.rb | 2 +- .../environments/prometheus_api_controller.rb | 37 + .../projects/environments_controller.rb | 14 +- .../projects/git_http_client_controller.rb | 12 +- .../projects/git_http_controller.rb | 18 +- app/controllers/projects/graphs_controller.rb | 5 +- .../projects/group_links_controller.rb | 2 +- app/controllers/projects/hooks_controller.rb | 2 +- .../projects/imports_controller.rb | 4 +- app/controllers/projects/issues_controller.rb | 4 +- app/controllers/projects/jobs_controller.rb | 4 +- app/controllers/projects/labels_controller.rb | 2 +- .../projects/lfs_api_controller.rb | 4 +- .../merge_requests/conflicts_controller.rb | 8 +- .../merge_requests/creations_controller.rb | 6 +- .../merge_requests/diffs_controller.rb | 5 +- .../projects/merge_requests_controller.rb | 34 +- .../projects/mirrors_controller.rb | 4 +- app/controllers/projects/pages_controller.rb | 3 +- .../projects/pages_domains_controller.rb | 2 +- .../projects/pipeline_schedules_controller.rb | 8 +- .../projects/pipelines_controller.rb | 14 +- app/controllers/projects/refs_controller.rb | 2 + .../projects/runners_controller.rb | 10 +- .../serverless/functions_controller.rb | 23 +- .../projects/services_controller.rb | 10 +- .../projects/settings/ci_cd_controller.rb | 8 +- .../settings/operations_controller.rb | 47 +- .../projects/templates_controller.rb | 17 +- app/controllers/projects/tree_controller.rb | 18 +- .../projects/triggers_controller.rb | 14 +- .../projects/variables_controller.rb | 2 +- app/controllers/projects/wikis_controller.rb | 17 +- app/controllers/projects_controller.rb | 5 +- app/controllers/search_controller.rb | 9 +- app/controllers/snippets/notes_controller.rb | 12 +- app/controllers/snippets_controller.rb | 2 +- app/controllers/uploads_controller.rb | 25 +- app/finders/admin/runners_finder.rb | 11 +- .../acts_as_taggable_on/tags_finder.rb | 44 + app/finders/concerns/finder_methods.rb | 4 +- app/finders/group_descendants_finder.rb | 2 +- app/finders/groups_finder.rb | 8 + app/finders/issuable_finder.rb | 92 +- app/finders/issues_finder.rb | 15 +- app/finders/merge_requests_finder.rb | 15 +- .../projects/daily_statistics_finder.rb | 21 + .../projects/serverless/functions_finder.rb | 28 +- app/finders/projects_finder.rb | 8 +- app/finders/snippets_finder.rb | 2 + app/graphql/gitlab_schema.rb | 30 + app/graphql/mutations/merge_requests/base.rb | 3 +- app/graphql/resolvers/base_resolver.rb | 7 + app/graphql/resolvers/issues_resolver.rb | 30 +- ...resolver.rb => merge_requests_resolver.rb} | 21 +- app/graphql/resolvers/metadata_resolver.rb | 11 + app/graphql/types/base_field.rb | 9 + app/graphql/types/ci/detailed_status_type.rb | 17 + app/graphql/types/ci/pipeline_type.rb | 10 +- app/graphql/types/issuable_state_enum.rb | 12 + app/graphql/types/issue_state_enum.rb | 8 + app/graphql/types/issue_type.rb | 16 +- app/graphql/types/label_type.rb | 2 + app/graphql/types/merge_request_state_enum.rb | 10 + app/graphql/types/merge_request_type.rb | 13 +- app/graphql/types/metadata_type.rb | 12 + app/graphql/types/milestone_type.rb | 2 + app/graphql/types/project_type.rb | 22 +- app/graphql/types/query_type.rb | 11 +- app/graphql/types/user_type.rb | 2 + app/helpers/appearances_helper.rb | 36 +- app/helpers/application_helper.rb | 17 +- app/helpers/application_settings_helper.rb | 46 + app/helpers/auth_helper.rb | 8 +- app/helpers/auto_devops_helper.rb | 13 + app/helpers/blob_helper.rb | 23 +- app/helpers/builds_helper.rb | 6 +- app/helpers/button_helper.rb | 2 +- app/helpers/ci_status_helper.rb | 17 - app/helpers/ci_variables_helper.rb | 8 + app/helpers/clusters_helper.rb | 11 + app/helpers/count_helper.rb | 2 +- app/helpers/emails_helper.rb | 38 + app/helpers/form_helper.rb | 5 +- app/helpers/groups_helper.rb | 6 +- app/helpers/import_helper.rb | 36 +- app/helpers/issuables_helper.rb | 6 +- app/helpers/labels_helper.rb | 63 +- app/helpers/markup_helper.rb | 7 +- app/helpers/merge_requests_helper.rb | 6 +- app/helpers/namespaces_helper.rb | 13 +- app/helpers/notes_helper.rb | 2 +- app/helpers/preferences_helper.rb | 7 +- app/helpers/projects_helper.rb | 32 +- app/helpers/search_helper.rb | 71 +- app/helpers/snippets_helper.rb | 10 + app/helpers/tree_helper.rb | 10 +- app/helpers/user_callouts_helper.rb | 3 + app/helpers/visibility_level_helper.rb | 16 +- app/helpers/wiki_helper.rb | 20 + app/mailers/abuse_report_mailer.rb | 4 + app/mailers/email_rejection_mailer.rb | 4 + app/mailers/emails/pipelines.rb | 2 +- app/mailers/repository_check_mailer.rb | 4 + app/models/abuse_report.rb | 2 +- app/models/appearance.rb | 18 +- app/models/application_record.rb | 8 + app/models/application_setting.rb | 321 +- app/models/application_setting/term.rb | 2 +- app/models/audit_event.rb | 2 +- app/models/award_emoji.rb | 2 +- app/models/badge.rb | 2 +- app/models/board.rb | 2 +- app/models/board_group_recent_visit.rb | 11 +- app/models/board_project_recent_visit.rb | 11 +- app/models/broadcast_message.rb | 4 +- app/models/chat_name.rb | 2 +- app/models/chat_team.rb | 2 +- app/models/ci/bridge.rb | 9 +- app/models/ci/build.rb | 258 +- app/models/ci/build_metadata.rb | 2 +- app/models/ci/build_runner_session.rb | 20 +- app/models/ci/build_trace_chunk.rb | 6 +- app/models/ci/build_trace_section.rb | 2 +- app/models/ci/build_trace_section_name.rb | 2 +- app/models/ci/group_variable.rb | 3 +- app/models/ci/job_artifact.rb | 9 +- app/models/ci/pipeline.rb | 163 +- app/models/ci/pipeline_chat_data.rb | 13 + app/models/ci/pipeline_enums.rb | 3 +- app/models/ci/pipeline_schedule.rb | 2 +- app/models/ci/pipeline_schedule_variable.rb | 2 +- app/models/ci/pipeline_variable.rb | 2 +- app/models/ci/runner.rb | 5 +- app/models/ci/runner_namespace.rb | 2 +- app/models/ci/runner_project.rb | 2 +- app/models/ci/stage.rb | 9 +- app/models/ci/trigger.rb | 2 +- app/models/ci/trigger_request.rb | 2 +- app/models/ci/variable.rb | 3 +- .../clusters/applications/cert_manager.rb | 2 +- app/models/clusters/applications/helm.rb | 2 +- app/models/clusters/applications/ingress.rb | 3 +- app/models/clusters/applications/jupyter.rb | 17 +- app/models/clusters/applications/knative.rb | 3 +- .../clusters/applications/prometheus.rb | 7 +- app/models/clusters/applications/runner.rb | 19 +- app/models/clusters/cluster.rb | 22 +- .../clusters/concerns/application_core.rb | 6 + .../clusters/concerns/application_status.rb | 14 +- app/models/clusters/group.rb | 2 +- app/models/clusters/kubernetes_namespace.rb | 4 +- app/models/clusters/platforms/kubernetes.rb | 11 +- app/models/clusters/project.rb | 2 +- app/models/clusters/providers/gcp.rb | 2 +- app/models/commit_collection.rb | 39 +- app/models/commit_range.rb | 8 +- app/models/commit_status.rb | 23 +- app/models/commit_status_enums.rb | 3 +- app/models/concerns/artifact_migratable.rb | 14 +- app/models/concerns/atomic_internal_id.rb | 2 +- .../blob_language_from_git_attributes.rb | 2 +- app/models/concerns/cache_markdown_field.rb | 24 +- app/models/concerns/ci/contextable.rb | 108 + app/models/concerns/ci/pipeline_delegator.rb | 21 + app/models/concerns/ci/processable.rb | 4 + app/models/concerns/closed_at_filterable.rb | 14 + app/models/concerns/fast_destroy_all.rb | 2 +- app/models/concerns/feature_gate.rb | 2 +- app/models/concerns/has_ref.rb | 16 +- app/models/concerns/has_status.rb | 17 +- app/models/concerns/has_variable.rb | 6 +- app/models/concerns/ignorable_column.rb | 2 +- app/models/concerns/iid_routes.rb | 2 +- app/models/concerns/issuable.rb | 25 +- app/models/concerns/issuable_states.rb | 25 + app/models/concerns/maskable.rb | 22 + app/models/concerns/mirror_authentication.rb | 2 +- app/models/concerns/participable.rb | 2 +- app/models/concerns/prometheus_adapter.rb | 4 +- app/models/concerns/reactive_caching.rb | 45 +- app/models/concerns/sha_attribute.rb | 10 + app/models/concerns/sortable.rb | 28 +- app/models/concerns/strip_attribute.rb | 2 +- app/models/concerns/token_authenticatable.rb | 19 +- .../token_authenticatable_strategies/base.rb | 16 - .../encrypted.rb | 52 +- app/models/concerns/with_uploads.rb | 34 +- app/models/container_repository.rb | 2 +- .../metric.rb | 2 +- app/models/deploy_keys_project.rb | 2 +- app/models/deploy_token.rb | 2 +- app/models/deployment.rb | 10 +- app/models/diff_note.rb | 14 +- app/models/discussion.rb | 2 - app/models/email.rb | 4 +- app/models/environment.rb | 16 +- app/models/epic.rb | 2 +- .../project_error_tracking_setting.rb | 62 +- app/models/event.rb | 2 +- app/models/fork_network.rb | 2 +- app/models/fork_network_member.rb | 2 +- app/models/global_label.rb | 2 +- app/models/gpg_key.rb | 2 +- app/models/gpg_key_subkey.rb | 2 +- app/models/group.rb | 13 +- app/models/group_custom_attribute.rb | 2 +- app/models/hooks/web_hook.rb | 2 +- app/models/hooks/web_hook_log.rb | 2 +- app/models/identity.rb | 2 +- app/models/identity/uniqueness_scopes.rb | 2 +- app/models/import_export_upload.rb | 2 +- app/models/individual_note_discussion.rb | 10 +- app/models/internal_id.rb | 2 +- app/models/issue.rb | 18 +- app/models/issue/metrics.rb | 2 +- app/models/issue_assignee.rb | 2 +- app/models/key.rb | 2 +- app/models/label.rb | 9 +- app/models/label_link.rb | 2 +- app/models/label_note.rb | 2 +- app/models/label_priority.rb | 2 +- app/models/legacy_diff_note.rb | 2 +- app/models/lfs_file_lock.rb | 2 +- app/models/lfs_object.rb | 2 +- app/models/lfs_objects_project.rb | 2 +- app/models/list.rb | 2 +- app/models/member.rb | 8 +- app/models/members/group_member.rb | 2 + app/models/merge_request.rb | 174 +- app/models/merge_request/metrics.rb | 2 +- app/models/merge_request_assignee.rb | 6 + app/models/merge_request_diff.rb | 185 +- app/models/merge_request_diff_commit.rb | 2 +- app/models/merge_request_diff_file.rb | 4 +- app/models/merge_requests_closing_issues.rb | 37 +- app/models/milestone.rb | 7 +- app/models/namespace.rb | 19 +- app/models/network/graph.rb | 9 +- app/models/note.rb | 10 +- app/models/note_diff_file.rb | 2 +- app/models/notification_recipient.rb | 6 +- app/models/notification_setting.rb | 2 +- app/models/pages_domain.rb | 2 +- app/models/personal_access_token.rb | 5 +- app/models/pool_repository.rb | 7 +- app/models/postgresql/replication_slot.rb | 2 +- app/models/programming_language.rb | 2 +- app/models/project.rb | 137 +- app/models/project_authorization.rb | 2 +- app/models/project_auto_devops.rb | 2 +- app/models/project_ci_cd_setting.rb | 2 +- app/models/project_custom_attribute.rb | 2 +- app/models/project_daily_statistic.rb | 10 + app/models/project_deploy_token.rb | 2 +- app/models/project_feature.rb | 2 +- app/models/project_group_link.rb | 2 +- app/models/project_import_data.rb | 2 +- app/models/project_import_state.rb | 2 +- app/models/project_repository.rb | 2 +- .../project_services/campfire_service.rb | 2 +- .../project_services/deployment_service.rb | 2 +- app/models/project_services/irker_service.rb | 2 +- app/models/project_services/jira_service.rb | 15 +- .../project_services/kubernetes_service.rb | 6 +- .../slack_slash_commands_service.rb | 4 + .../project_services/youtrack_service.rb | 40 + app/models/project_statistics.rb | 2 +- app/models/project_wiki.rb | 22 +- app/models/prometheus_metric.rb | 2 +- app/models/protected_branch.rb | 16 +- .../protected_branch/merge_access_level.rb | 2 +- .../protected_branch/push_access_level.rb | 2 +- app/models/protected_tag.rb | 2 +- .../protected_tag/create_access_level.rb | 2 +- app/models/push_event_payload.rb | 2 +- app/models/redirect_route.rb | 2 +- app/models/release.rb | 2 +- app/models/releases/link.rb | 4 +- app/models/remote_mirror.rb | 2 +- app/models/repository.rb | 46 +- app/models/repository_language.rb | 2 +- app/models/resource_label_event.rb | 2 +- app/models/route.rb | 2 +- app/models/sent_notification.rb | 2 +- app/models/serverless/function.rb | 26 + app/models/service.rb | 3 +- app/models/shard.rb | 2 +- app/models/snippet.rb | 2 +- app/models/spam_log.rb | 2 +- app/models/ssh_host_key.rb | 2 +- app/models/subscription.rb | 2 +- app/models/suggestion.rb | 51 +- app/models/system_note_metadata.rb | 2 +- app/models/term_agreement.rb | 2 +- app/models/timelog.rb | 2 +- app/models/todo.rb | 11 +- app/models/trending_project.rb | 2 +- app/models/u2f_registration.rb | 2 +- app/models/upload.rb | 2 +- app/models/user.rb | 68 +- app/models/user_agent_detail.rb | 2 +- app/models/user_callout.rb | 2 +- app/models/user_custom_attribute.rb | 2 +- app/models/user_interacted_project.rb | 20 +- app/models/user_preference.rb | 2 +- app/models/user_status.rb | 2 +- app/models/user_synced_attributes_metadata.rb | 2 +- app/models/users_star_project.rb | 2 +- app/models/wiki_page.rb | 21 +- app/policies/base_policy.rb | 9 +- app/policies/global_policy.rb | 4 + app/policies/group_policy.rb | 11 + app/policies/identity_provider_policy.rb | 15 + app/policies/issuable_policy.rb | 1 + app/policies/merge_request_policy.rb | 3 + app/policies/project_policy.rb | 35 +- app/policies/repository_policy.rb | 5 + app/presenters/blobs/unfold_presenter.rb | 75 + app/presenters/ci/bridge_presenter.rb | 9 + app/presenters/ci/build_runner_presenter.rb | 48 + app/presenters/ci/pipeline_presenter.rb | 45 + app/presenters/clusterable_presenter.rb | 4 + app/presenters/clusters/cluster_presenter.rb | 4 + app/presenters/commit_status_presenter.rb | 3 +- app/presenters/group_clusterable_presenter.rb | 5 + app/presenters/merge_request_presenter.rb | 32 + .../project_clusterable_presenter.rb | 5 + app/presenters/project_presenter.rb | 17 +- .../acts_as_taggable_on/tag_entity.rb | 6 + .../acts_as_taggable_on/tag_serializer.rb | 5 + app/serializers/build_details_entity.rb | 2 + app/serializers/cluster_application_entity.rb | 1 + .../concerns/user_status_tooltip.rb | 4 +- app/serializers/detailed_status_entity.rb | 16 +- app/serializers/diff_file_base_entity.rb | 23 +- app/serializers/diff_file_entity.rb | 12 +- app/serializers/diff_viewer_entity.rb | 8 +- app/serializers/environment_entity.rb | 3 +- app/serializers/group_variable_entity.rb | 1 + app/serializers/issue_entity.rb | 2 +- .../merge_request_for_pipeline_entity.rb | 17 + .../merge_request_widget_entity.rb | 7 +- app/serializers/namespace_basic_entity.rb | 6 + app/serializers/namespace_serializer.rb | 5 + app/serializers/pipeline_entity.rb | 17 +- app/serializers/pipeline_serializer.rb | 1 + app/serializers/project_import_entity.rb | 13 + app/serializers/project_serializer.rb | 12 +- .../projects/serverless/service_entity.rb | 7 + app/serializers/provider_repo_entity.rb | 25 + app/serializers/provider_repo_serializer.rb | 5 + app/serializers/suggestion_entity.rb | 2 + app/serializers/suggestion_serializer.rb | 9 + app/serializers/tree_entity.rb | 15 - app/serializers/tree_root_entity.rb | 27 - app/serializers/tree_serializer.rb | 5 - app/serializers/variable_entity.rb | 1 + app/services/after_branch_delete_service.rb | 5 +- .../application_settings/update_service.rb | 10 +- app/services/applications/create_service.rb | 8 +- ...ntainer_registry_authentication_service.rb | 2 +- app/services/boards/visits/latest_service.rb | 14 +- app/services/ci/create_pipeline_service.rb | 11 +- app/services/ci/destroy_pipeline_service.rb | 2 + app/services/ci/pipeline_trigger_service.rb | 4 +- app/services/ci/prepare_build_service.rb | 27 + app/services/ci/stop_environments_service.rb | 16 +- .../applications/base_helm_service.rb | 16 +- .../clusters/applications/base_service.rb | 92 + .../check_ingress_ip_address_service.rb | 16 +- .../clusters/applications/create_service.rb | 75 +- .../clusters/applications/install_service.rb | 22 +- .../clusters/applications/patch_service.rb | 24 + .../schedule_installation_service.rb | 31 - .../clusters/applications/update_service.rb | 17 + app/services/clusters/refresh_service.rb | 6 +- app/services/commits/create_service.rb | 13 +- .../concerns/exclusive_lease_guard.rb | 2 +- app/services/concerns/suggestible.rb | 37 + .../concerns/users/participable_service.rb | 33 +- .../validates_classification_label.rb | 27 + app/services/create_branch_service.rb | 4 +- app/services/emails/base_service.rb | 5 +- app/services/emails/create_service.rb | 9 +- .../error_tracking/list_issues_service.rb | 19 +- .../error_tracking/list_projects_service.rb | 8 +- app/services/files/multi_service.rb | 3 +- app/services/git/branch_push_service.rb | 248 + app/services/git/tag_push_service.rb | 60 + app/services/git_push_service.rb | 234 - app/services/git_tag_push_service.rb | 62 - app/services/groups/auto_devops_service.rb | 17 + app/services/groups/base_service.rb | 6 + app/services/groups/create_service.rb | 4 +- app/services/groups/nested_create_service.rb | 2 +- app/services/groups/transfer_service.rb | 10 + app/services/groups/update_service.rb | 3 +- app/services/issuable_base_service.rb | 13 +- app/services/issues/build_service.rb | 8 +- app/services/lfs/file_transformer.rb | 9 +- .../add_todo_when_build_fails_service.rb | 4 +- app/services/merge_requests/base_service.rb | 58 +- app/services/merge_requests/close_service.rb | 1 + app/services/merge_requests/create_service.rb | 2 +- .../delete_non_latest_diffs_service.rb | 4 +- .../merge_requests/merge_base_service.rb | 63 + app/services/merge_requests/merge_service.rb | 62 +- .../merge_requests/merge_to_ref_service.rb | 71 + .../migrate_external_diffs_service.rb | 23 + .../merge_requests/post_merge_service.rb | 1 + .../push_options_handler_service.rb | 162 + .../merge_requests/refresh_service.rb | 19 +- app/services/merge_requests/reopen_service.rb | 2 +- app/services/merge_requests/update_service.rb | 2 +- app/services/milestones/promote_service.rb | 4 +- app/services/notes/create_service.rb | 13 +- app/services/notes/quick_actions_service.rb | 33 +- .../notification_recipient_service.rb | 7 +- app/services/preview_markdown_service.rb | 28 +- app/services/projects/create_service.rb | 4 + .../detect_repository_languages_service.rb | 10 +- app/services/projects/download_service.rb | 2 +- .../fetch_statistics_increment_service.rb | 32 + app/services/projects/fork_service.rb | 12 +- .../hashed_storage/base_attachment_service.rb | 51 + .../hashed_storage/base_repository_service.rb | 22 +- .../migrate_attachments_service.rb | 51 +- .../migrate_repository_service.rb | 16 +- .../rollback_attachments_service.rb | 34 + .../rollback_repository_service.rb | 40 + .../hashed_storage/rollback_service.rb | 37 + app/services/projects/housekeeping_service.rb | 5 +- .../lfs_download_link_list_service.rb | 16 +- .../lfs_pointers/lfs_download_service.rb | 18 +- .../projects/operations/update_service.rb | 23 +- .../projects/propagate_service_template.rb | 2 +- .../projects/repository_languages_service.rb | 24 + app/services/projects/update_service.rb | 3 + app/services/prometheus/adapter_service.rb | 2 +- app/services/prometheus/proxy_service.rb | 116 + .../protected_branches/api_service.rb | 17 +- .../legacy_api_update_service.rb | 19 +- app/services/push_event_payload_service.rb | 2 +- .../quick_actions/interpret_service.rb | 641 +- app/services/releases/destroy_service.rb | 1 - app/services/search/global_service.rb | 3 +- app/services/search/group_service.rb | 6 + app/services/search/project_service.rb | 7 +- app/services/suggestions/apply_service.rb | 14 +- app/services/suggestions/create_service.rb | 42 +- app/services/suggestions/outdate_service.rb | 19 + app/services/system_note_service.rb | 2 +- app/services/task_list_toggle_service.rb | 2 +- app/services/update_deployment_service.rb | 2 + app/services/upload_service.rb | 2 +- app/services/users/activity_service.rb | 7 +- app/services/users/build_service.rb | 6 +- app/services/validate_new_branch_service.rb | 4 +- app/uploaders/file_mover.rb | 84 +- app/uploaders/legacy_artifact_uploader.rb | 3 + app/uploaders/object_storage.rb | 6 +- app/uploaders/records_uploads.rb | 4 + app/validators/cluster_name_validator.rb | 8 +- app/validators/color_validator.rb | 2 +- app/validators/devise_email_validator.rb | 36 + app/validators/email_validator.rb | 7 - app/validators/url_validator.rb | 6 + .../x509_certificate_credentials_validator.rb | 86 + app/views/admin/appearances/_form.html.haml | 1 + .../_system_header_footer_form.html.haml | 33 + .../_account_and_limit.html.haml | 29 +- .../application_settings/_ci_cd.html.haml | 29 +- .../application_settings/_email.html.haml | 16 +- ...ernal_authorization_service_form.html.haml | 51 + .../application_settings/_help_page.html.haml | 12 +- .../_repository_mirrors_form.html.haml | 10 +- .../_visibility_and_access.html.haml | 18 +- .../admin/application_settings/show.html.haml | 2 +- app/views/admin/dashboard/index.html.haml | 7 +- app/views/admin/deploy_keys/edit.html.haml | 8 +- app/views/admin/deploy_keys/index.html.haml | 20 +- app/views/admin/groups/_form.html.haml | 2 +- app/views/admin/groups/_group.html.haml | 2 +- app/views/admin/groups/show.html.haml | 2 +- app/views/admin/projects/_projects.html.haml | 2 +- app/views/admin/runners/_runner.html.haml | 6 +- app/views/admin/runners/index.html.haml | 19 + app/views/admin/users/show.html.haml | 5 + .../ci/status/_dropdown_graph_badge.html.haml | 8 +- app/views/ci/status/_icon.html.haml | 16 + app/views/ci/variables/_content.html.haml | 2 +- app/views/ci/variables/_header.html.haml | 2 +- .../ci/variables/_variable_row.html.haml | 20 +- .../clusters/_advanced_settings.html.haml | 2 +- app/views/clusters/clusters/_form.html.haml | 10 +- .../clusters/clusters/_sidebar.html.haml | 2 + .../clusters/clusters/gcp/_form.html.haml | 49 +- app/views/clusters/clusters/show.html.haml | 11 +- .../clusters/clusters/user/_form.html.haml | 60 +- .../platforms/kubernetes/_form.html.haml | 89 +- app/views/dashboard/_snippets_head.html.haml | 4 +- app/views/dashboard/activity.html.haml | 2 +- app/views/dashboard/groups/_groups.html.haml | 4 +- app/views/dashboard/groups/index.html.haml | 2 +- app/views/dashboard/issues.html.haml | 2 +- app/views/dashboard/merge_requests.html.haml | 2 +- .../projects/_starred_empty_state.html.haml | 9 + app/views/dashboard/projects/index.html.haml | 2 +- .../dashboard/projects/starred.html.haml | 11 +- app/views/dashboard/snippets/index.html.haml | 12 +- app/views/dashboard/todos/index.html.haml | 2 +- app/views/devise/shared/_signup_box.html.haml | 6 +- .../discussions/_diff_with_notes.html.haml | 4 +- .../doorkeeper/applications/index.html.haml | 2 +- app/views/explore/groups/_groups.html.haml | 4 +- app/views/explore/groups/index.html.haml | 2 +- app/views/explore/projects/index.html.haml | 2 +- app/views/explore/projects/starred.html.haml | 2 +- app/views/explore/projects/trending.html.haml | 2 +- app/views/explore/snippets/index.html.haml | 2 +- app/views/groups/_archived_projects.html.haml | 4 +- .../groups/_group_admin_settings.html.haml | 4 + app/views/groups/_home_panel.html.haml | 6 +- app/views/groups/_shared_projects.html.haml | 4 +- .../groups/_subgroups_and_projects.html.haml | 4 +- app/views/groups/edit.html.haml | 2 + app/views/groups/new.html.haml | 2 +- app/views/groups/settings/_general.html.haml | 6 +- .../groups/settings/_permissions.html.haml | 1 + .../_project_creation_level.html.haml | 3 + .../ci_cd/_auto_devops_form.html.haml | 15 + .../groups/settings/ci_cd/show.html.haml | 14 + app/views/help/_shortcuts.html.haml | 12 + app/views/help/index.html.haml | 2 +- .../help/instance_configuration.html.haml | 2 +- app/views/help/show.html.haml | 2 +- app/views/help/ui.html.haml | 2 +- app/views/import/_githubish_status.html.haml | 59 +- app/views/import/github/new.html.haml | 2 +- app/views/import/github/status.html.haml | 4 +- app/views/import/manifest/status.html.haml | 2 +- app/views/layouts/_head.html.haml | 2 + app/views/layouts/_mailer.html.haml | 6 +- app/views/layouts/_page.html.haml | 1 + app/views/layouts/application.html.haml | 4 +- app/views/layouts/devise.html.haml | 2 + app/views/layouts/devise_empty.html.haml | 2 + app/views/layouts/empty_mailer.html.haml | 5 + app/views/layouts/empty_mailer.text.erb | 5 + app/views/layouts/header/_empty.html.haml | 4 +- app/views/layouts/header/_new_dropdown.haml | 2 +- app/views/layouts/mailer.text.erb | 4 + .../_classification_level_banner.html.haml | 5 + app/views/layouts/nav/_dashboard.html.haml | 6 +- .../layouts/nav/sidebar/_admin.html.haml | 2 +- .../layouts/nav/sidebar/_group.html.haml | 15 +- .../layouts/nav/sidebar/_project.html.haml | 8 +- app/views/layouts/notify.html.haml | 2 + app/views/layouts/notify.text.erb | 4 + app/views/layouts/snippets.html.haml | 5 +- app/views/notify/_note_email.text.erb | 4 + app/views/profiles/_email_settings.html.haml | 16 + .../profiles/accounts/_providers.html.haml | 21 + app/views/profiles/accounts/show.html.haml | 19 +- .../notifications/_email_settings.html.haml | 6 + .../profiles/notifications/show.html.haml | 4 +- app/views/profiles/passwords/new.html.haml | 13 +- app/views/profiles/preferences/show.html.haml | 6 + app/views/profiles/show.html.haml | 20 +- .../_classification_policy_settings.html.haml | 8 + app/views/projects/_flash_messages.html.haml | 3 +- app/views/projects/_home_panel.html.haml | 24 +- app/views/projects/_md_preview.html.haml | 8 +- ...ge_request_merge_method_settings.html.haml | 47 +- .../_merge_request_merge_settings.html.haml | 17 +- .../projects/_new_project_fields.html.haml | 14 +- app/views/projects/_wiki.html.haml | 5 +- app/views/projects/artifacts/browse.html.haml | 2 +- .../projects/blob/_header_content.html.haml | 2 +- .../projects/blob/_markdown_buttons.html.haml | 20 +- app/views/projects/blob/diff.html.haml | 6 +- app/views/projects/blob/preview.html.haml | 41 +- .../projects/blob/viewers/_loading.html.haml | 2 +- .../projects/blob/viewers/_markup.html.haml | 2 +- .../blob/viewers/_route_map.html.haml | 2 +- .../blob/viewers/_route_map_loading.html.haml | 2 +- app/views/projects/branches/_branch.html.haml | 31 +- .../projects/commit/_ajax_signature.html.haml | 2 +- app/views/projects/commit/_ci_menu.html.haml | 4 +- .../projects/commit/_commit_box.html.haml | 17 +- .../commit/_limit_exceeded_message.html.haml | 4 +- .../_other_user_signature_badge.html.haml | 4 +- ..._different_email_signature_badge.html.haml | 5 +- .../commit/_signature_badge.html.haml | 4 +- .../_unverified_signature_badge.html.haml | 4 +- .../_verified_signature_badge.html.haml | 5 +- app/views/projects/commit/pipelines.html.haml | 2 +- app/views/projects/commit/show.html.haml | 4 +- app/views/projects/commits/_commit.html.haml | 9 +- .../projects/cycle_analytics/show.html.haml | 2 +- app/views/projects/deployments/_actions.haml | 2 +- .../_confirm_rollback_modal.html.haml | 23 + app/views/projects/deployments/_rollback.haml | 3 +- app/views/projects/diffs/_line.html.haml | 2 +- .../projects/diffs/_parallel_view.html.haml | 8 +- .../diffs/_replaced_image_diff.html.haml | 6 +- .../diffs/_single_image_diff.html.haml | 2 +- app/views/projects/edit.html.haml | 77 +- app/views/projects/empty.html.haml | 133 +- .../projects/forks/_fork_button.html.haml | 4 +- app/views/projects/graphs/charts.html.haml | 12 +- .../projects/issues/_closed_by_box.html.haml | 4 - .../projects/issues/_discussion.html.haml | 2 +- app/views/projects/issues/_import_export.svg | 1 - app/views/projects/issues/_issue.html.haml | 2 +- .../projects/issues/_merge_requests.html.haml | 36 - .../issues/_related_branches.html.haml | 2 +- .../issues/import_csv/_modal.html.haml | 4 +- app/views/projects/issues/show.html.haml | 19 +- app/views/projects/jobs/show.html.haml | 1 + .../merge_requests/_merge_request.html.haml | 4 +- .../merge_requests/_merge_requests.html.haml | 2 +- .../projects/merge_requests/_mr_box.html.haml | 2 +- .../merge_requests/_mr_title.html.haml | 6 +- .../_inline_conflict_lines.html.haml | 2 +- .../merge_requests/conflicts/show.html.haml | 4 +- .../projects/merge_requests/show.html.haml | 3 +- app/views/projects/milestones/show.html.haml | 5 +- .../mirrors/_authentication_method.html.haml | 1 + .../projects/mirrors/_mirror_repos.html.haml | 2 +- app/views/projects/pages/_destroy.haml | 2 +- .../projects/pages/_https_only.html.haml | 2 +- app/views/projects/pipelines/_info.html.haml | 16 +- .../projects/pipelines/_with_tabs.html.haml | 30 +- app/views/projects/pipelines/charts.html.haml | 6 +- .../pipelines/charts/_pipeline_times.haml | 6 +- .../projects/pipelines/charts/_pipelines.haml | 9 +- app/views/projects/pipelines/index.html.haml | 4 +- app/views/projects/pipelines/new.html.haml | 12 +- app/views/projects/pipelines/show.html.haml | 10 +- .../project_members/_groups.html.haml | 2 +- .../projects/project_members/_team.html.haml | 2 +- .../projects/project_members/index.html.haml | 2 +- .../serverless/functions/index.html.haml | 5 +- .../serverless/functions/show.html.haml | 11 +- .../settings/ci_cd/_autodevops_form.html.haml | 17 +- .../projects/settings/ci_cd/_form.html.haml | 9 +- .../projects/settings/ci_cd/show.html.haml | 2 +- .../operations/_error_tracking.html.haml | 28 +- .../settings/operations/show.html.haml | 4 +- app/views/projects/snippets/index.html.haml | 18 +- app/views/projects/snippets/new.html.haml | 4 +- app/views/projects/tags/_tag.html.haml | 5 +- app/views/projects/tags/show.html.haml | 7 +- app/views/projects/wikis/edit.html.haml | 3 - app/views/projects/wikis/pages.html.haml | 13 + app/views/projects/wikis/show.html.haml | 2 +- app/views/search/_category.html.haml | 10 + app/views/search/_results.html.haml | 5 +- app/views/search/results/_blob.html.haml | 2 +- .../search/results/_snippet_blob.html.haml | 2 +- app/views/search/results/_user.html.haml | 10 + app/views/search/results/_wiki_blob.html.haml | 2 +- ...devops_implicitly_enabled_banner.html.haml | 2 +- .../shared/_choose_avatar_button.html.haml | 4 + .../_choose_group_avatar_button.html.haml | 4 - .../shared/_delete_label_modal.html.haml | 2 +- app/views/shared/_file_highlight.html.haml | 2 +- .../shared/_issuable_meta_data.html.haml | 4 +- app/views/shared/_label_row.html.haml | 2 +- .../components/sidebar/_labels.html.haml | 10 +- app/views/shared/deploy_keys/_form.html.haml | 9 +- .../shared/empty_states/_snippets.html.haml | 20 + .../form_elements/_description.html.haml | 2 +- app/views/shared/groups/_group.html.haml | 2 +- .../_board_create_list_dropdown.html.haml | 2 +- .../shared/issuable/_label_dropdown.html.haml | 2 +- .../issuable/_label_page_create.html.haml | 8 + .../shared/issuable/_search_bar.html.haml | 14 + app/views/shared/issuable/_sidebar.html.haml | 10 +- .../shared/issuable/_sort_dropdown.html.haml | 2 +- app/views/shared/labels/_form.html.haml | 4 +- .../shared/milestones/_issuable.html.haml | 3 +- .../shared/milestones/_labels_tab.html.haml | 3 +- .../shared/milestones/_milestone.html.haml | 2 +- app/views/shared/milestones/_top.html.haml | 5 +- app/views/shared/notes/_form.html.haml | 2 +- app/views/shared/notes/_note.html.haml | 15 +- app/views/shared/projects/_project.html.haml | 10 +- app/views/shared/snippets/_form.html.haml | 6 +- app/views/shared/snippets/_header.html.haml | 10 +- app/views/shared/snippets/_list.html.haml | 12 + app/views/snippets/index.html.haml | 2 +- app/views/users/_groups.html.haml | 2 +- app/workers/all_queues.yml | 10 +- app/workers/build_finished_worker.rb | 1 + app/workers/chat_notification_worker.rb | 33 + app/workers/ci/build_prepare_worker.rb | 16 + app/workers/cluster_configure_worker.rb | 4 +- app/workers/cluster_patch_app_worker.rb | 13 + app/workers/concerns/waitable_worker.rb | 8 +- app/workers/create_gpg_signature_worker.rb | 12 +- app/workers/emails_on_push_worker.rb | 32 +- app/workers/expire_pipeline_cache_worker.rb | 6 +- app/workers/hashed_storage/base_worker.rb | 21 + .../hashed_storage/project_migrate_worker.rb | 26 + .../hashed_storage/project_rollback_worker.rb | 26 + .../hashed_storage/rollbacker_worker.rb | 16 + app/workers/migrate_external_diffs_worker.rb | 12 + .../object_storage/migrate_uploads_worker.rb | 8 +- app/workers/pipeline_metrics_worker.rb | 2 +- app/workers/pipeline_schedule_worker.rb | 15 +- app/workers/post_receive.rb | 33 +- app/workers/project_cache_worker.rb | 1 + .../project_daily_statistics_worker.rb | 13 + .../project_migrate_hashed_storage_worker.rb | 43 - app/workers/reactive_caching_worker.rb | 9 +- app/workers/remove_expired_members_worker.rb | 8 +- .../schedule_migrate_external_diffs_worker.rb | 14 + .babelrc.js => babel.config.js | 10 +- bin/background_jobs | 9 +- bin/secpick | 8 +- changelogs/README.md | 10 + config.ru | 4 - config/application.rb | 6 +- config/gitlab.yml.example | 77 +- config/helpers/is_ee_env.js | 9 + config/initializers/1_settings.rb | 27 +- config/initializers/console_message.rb | 2 +- config/initializers/fog_core_patch.rb | 52 + config/initializers/graphql.rb | 7 + config/initializers/hipchat_client_patch.rb | 1 + config/initializers/jira.rb | 11 + config/initializers/lograge.rb | 10 +- config/initializers/peek.rb | 1 + config/initializers/premailer.rb | 3 +- config/initializers/rspec_profiling.rb | 50 +- config/initializers/sentry.rb | 15 + config/initializers/sidekiq.rb | 9 +- config/initializers/trusted_proxies.rb | 6 +- config/initializers/zz_metrics.rb | 3 +- config/karma.config.js | 68 +- config/locales/en.yml | 4 + config/routes.rb | 2 + config/routes/admin.rb | 4 + config/routes/group.rb | 4 +- config/routes/import.rb | 4 +- config/routes/project.rb | 16 +- config/routes/uploads.rb | 4 +- config/sidekiq_queues.yml | 4 + config/webpack.config.js | 68 +- danger/changelog/Dangerfile | 6 +- danger/commit_messages/Dangerfile | 235 +- danger/documentation/Dangerfile | 41 +- danger/gitlab_ui_wg/Dangerfile | 55 + danger/plugins/helper.rb | 37 +- danger/roulette/Dangerfile | 85 + danger/single_codebase/Dangerfile | 56 + .../development/02_application_settings.rb | 10 + .../{04_project.rb => 03_project.rb} | 2 +- db/fixtures/development/03_settings.rb | 8 - db/fixtures/development/04_labels.rb | 49 + db/fixtures/development/08_settings.rb | 7 - db/fixtures/development/09_issues.rb | 6 +- db/fixtures/development/10_merge_requests.rb | 6 +- .../development/22_labeled_issues_seed.rb | 103 - .../25_api_personal_access_token.rb | 15 + .../production/001_application_settings.rb | 2 + ...ect_foreign_keys_with_cascading_deletes.rb | 9 +- ...ization_settings_to_appliction_settings.rb | 29 + ...ervice_classification_label_to_projects.rb | 11 + .../20180209115333_create_chatops_tables.rb | 26 + ...service_timeout_to_application_settings.rb | 18 + ...and_footer_banners_to_appearances_table.rb | 18 + ...h_mutual_tls_fields_to_project_settings.rb | 16 + ...d_first_day_of_week_to_user_preferences.rb | 2 +- ...rst_day_of_week_to_application_settings.rb | 2 +- ...5171941_create_project_daily_statistics.rb | 18 + .../20190107151020_add_services_type_index.rb | 20 + .../20190206193120_add_index_to_tags.rb | 18 + ...0190211131150_add_state_id_to_issuables.rb | 17 + ...rge_pipelines_enabled_to_ci_cd_settings.rb | 11 + ...190218134158_add_masked_to_ci_variables.rb | 21 + ...134209_add_masked_to_ci_group_variables.rb | 21 + ...ooter_enabled_flag_to_appearances_table.rb | 17 + ...20150130_add_extra_shas_to_ci_pipelines.rb | 12 + ...d_indexes_for_merge_request_diffs_query.rb | 42 + ..._add_auto_dev_ops_enabled_to_namespaces.rb | 9 + ...0225160300_steal_encrypt_runners_tokens.rb | 19 + ...0190225160301_add_runner_tokens_indexes.rb | 24 + ...add_multi_line_attributes_to_suggestion.rb | 19 + ...xternal_hostname_to_ingress_and_knative.rb | 10 + ...lt_project_creation_application_setting.rb | 22 + ...dd_project_creation_level_to_namespaces.rb | 22 + ...tected_repository_languages_to_projects.rb | 12 + ...39_create_merge_request_assignees_table.rb | 22 + .../20190325080727_truncate_user_fullname.rb | 21 + .../20190325165127_add_managed_to_cluster.rb | 17 + ...326164045_import_common_metrics_knative.rb | 17 + db/migrate/limits_to_mysql.rb | 13 - .../20181101091005_steal_digest_column.rb | 17 + ...emove_token_from_personal_access_tokens.rb | 11 + ...112022_schedule_sync_issuables_state_id.rb | 56 + ...1_migrate_project_migrate_sidekiq_queue.rb | 17 + ...ean_up_noteable_id_for_notes_on_commits.rb | 33 + ..._populate_merge_request_assignees_table.rb | 23 + ...0190325111602_rename_v2_root_namespaces.rb | 27 + db/schema.rb | 62 +- doc/README.md | 5 +- doc/administration/auth/authentiq.md | 3 +- doc/administration/auth/google_secure_ldap.md | 207 + .../how_to_configure_ldap_gitlab_ce/index.md | 4 +- .../img/google_secure_ldap_add_step_1.png | Bin 0 -> 28849 bytes .../img/google_secure_ldap_add_step_2.png | Bin 0 -> 82115 bytes .../google_secure_ldap_client_settings.png | Bin 0 -> 63959 bytes doc/administration/auth/ldap.md | 70 +- doc/administration/auth/okta.md | 12 +- doc/administration/build_artifacts.md | 4 + doc/administration/compliance.md | 10 +- doc/administration/container_registry.md | 34 +- doc/administration/custom_hooks.md | 20 +- doc/administration/git_protocol.md | 13 +- doc/administration/gitaly/index.md | 107 +- .../high_availability/gitlab.md | 16 +- .../high_availability/load_balancer.md | 54 +- doc/administration/high_availability/nfs.md | 14 +- doc/administration/high_availability/redis.md | 12 +- .../high_availability/redis_source.md | 4 +- .../img/custom_hooks_error_msg.png | Bin 44892 -> 80442 bytes doc/administration/incoming_email.md | 399 +- doc/administration/index.md | 31 +- doc/administration/integration/plantuml.md | 1 - doc/administration/integration/terminal.md | 5 +- doc/administration/job_artifacts.md | 4 +- doc/administration/job_traces.md | 8 +- doc/administration/logs.md | 14 +- doc/administration/merge_request_diffs.md | 44 + doc/administration/monitoring/index.md | 2 +- .../performance/grafana_configuration.md | 2 +- .../img/request_profiling_token.png | Bin 17425 -> 17396 bytes .../monitoring/performance/introduction.md | 4 + .../monitoring/performance/performance_bar.md | 6 +- .../monitoring/performance/prometheus.md | 4 + .../monitoring/prometheus/gitlab_metrics.md | 5 +- .../monitoring/prometheus/index.md | 3 +- doc/administration/operations.md | 4 + .../operations/cleaning_up_redis_sessions.md | 1 - doc/administration/operations/index.md | 24 +- .../operations/sidekiq_memory_killer.md | 5 + doc/administration/operations/speed_up_ssh.md | 4 + doc/administration/pages/index.md | 40 +- doc/administration/pages/source.md | 15 +- doc/administration/polling.md | 18 +- doc/administration/raketasks/maintenance.md | 1 + doc/administration/raketasks/storage.md | 48 +- .../raketasks/uploads/migrate.md | 2 +- doc/administration/repository_checks.md | 2 +- .../repository_storage_paths.md | 2 + .../repository_storage_types.md | 114 +- doc/administration/repository_storages.md | 4 + doc/administration/restart_gitlab.md | 4 +- doc/administration/uploads.md | 7 +- doc/administration/user_settings.md | 35 + doc/api/README.md | 200 +- doc/api/award_emoji.md | 11 +- doc/api/boards.md | 6 +- doc/api/branches.md | 8 +- doc/api/broadcast_messages.md | 101 +- doc/api/build_triggers.md | 6 +- doc/api/builds.md | 4 + doc/api/commits.md | 76 +- doc/api/container_registry.md | 1 - doc/api/discussions.md | 1 - doc/api/features.md | 3 +- doc/api/group_labels.md | 22 +- doc/api/group_milestones.md | 4 +- doc/api/import.md | 2 - doc/api/issues.md | 23 +- doc/api/jobs.md | 71 +- doc/api/labels.md | 33 +- doc/api/lint.md | 2 +- doc/api/merge_requests.md | 40 +- doc/api/milestones.md | 17 + doc/api/namespaces.md | 12 +- doc/api/oauth2.md | 1 - doc/api/pages_domains.md | 12 +- doc/api/pipeline_schedules.md | 8 +- doc/api/project_clusters.md | 7 +- doc/api/project_import_export.md | 27 +- doc/api/project_snippets.md | 2 - doc/api/project_statistics.md | 49 + doc/api/project_templates.md | 1 - doc/api/projects.md | 2 + doc/api/protected_branches.md | 1 + doc/api/releases/index.md | 16 +- doc/api/releases/links.md | 11 +- doc/api/repositories.md | 6 +- doc/api/repository_files.md | 1 + doc/api/runners.md | 77 +- doc/api/search.md | 71 +- doc/api/services.md | 52 +- doc/api/settings.md | 2 +- doc/api/sidekiq_metrics.md | 1 - doc/api/snippets.md | 216 +- doc/api/suggestions.md | 2 - doc/api/tags.md | 1 - doc/api/templates/gitignores.md | 12 +- doc/api/users.md | 4 +- doc/api/wikis.md | 1 - doc/articles/artifactory_and_gitlab/index.md | 4 + .../how_to_configure_ldap_gitlab_ce/index.md | 4 + doc/articles/how_to_install_git/index.md | 4 + doc/articles/index.md | 4 +- .../laravel_with_gitlab_and_envoy/index.md | 4 + .../index.md | 4 + doc/articles/openshift_and_gitlab/index.md | 1 - doc/articles/runner_autoscale_aws/index.md | 4 + doc/ci/README.md | 179 +- doc/ci/autodeploy/index.md | 4 + doc/ci/autodeploy/quick_start_guide.md | 4 + doc/ci/build_artifacts/README.md | 4 + doc/ci/caching/index.md | 7 +- doc/ci/chatops/README.md | 61 + .../chatops/img/gitlab-chatops-icon-small.png | Bin 0 -> 2922 bytes doc/ci/chatops/img/gitlab-chatops-icon.png | Bin 0 -> 12308 bytes doc/ci/docker/README.md | 8 +- doc/ci/docker/using_docker_build.md | 3 +- doc/ci/docker/using_docker_images.md | 4 +- doc/ci/environments.md | 681 +- doc/ci/environments/protected_environments.md | 48 + doc/ci/examples/README.md | 177 +- .../examples/artifactory_and_gitlab/index.md | 10 +- doc/ci/examples/container_scanning.md | 4 +- .../index.md | 6 +- .../deployment/composer-npm-deploy.md | 1 - .../index.md | 25 +- .../img/deployed_dependency_update.png | Bin 0 -> 67788 bytes .../end_to_end_testing_webdriverio/index.md | 251 + .../img/variables_page.png | Bin 11836 -> 11827 bytes .../laravel_with_gitlab_and_envoy/index.md | 18 +- doc/ci/examples/sast_docker.md | 6 +- ...and-deploy-python-application-to-heroku.md | 4 +- ...t-and-deploy-ruby-application-to-heroku.md | 6 +- doc/ci/examples/test-scala-application.md | 11 +- .../index.md | 8 +- doc/ci/img/cicd_pipeline_infograph.png | Bin 32493 -> 0 bytes doc/ci/img/pipelines-goal.png | Bin 15284 -> 0 bytes doc/ci/img/types-of-pipelines.png | Bin 12268 -> 0 bytes .../img/gitlab_workflow_example_11_9.png | Bin 0 -> 71292 bytes doc/ci/introduction/img/job_running.png | Bin 0 -> 237781 bytes doc/ci/introduction/img/pipeline_status.png | Bin 0 -> 54243 bytes doc/ci/introduction/img/rollback.png | Bin 0 -> 41693 bytes doc/ci/introduction/index.md | 193 + doc/ci/junit_test_reports.md | 6 +- doc/ci/large_repositories/index.md | 235 + .../img/merge_request.png | Bin 18834 -> 14044 bytes .../img/merge_request_pipeline.png | Bin 0 -> 10152 bytes .../img/merge_request_pipeline_config.png | Bin 0 -> 10889 bytes .../img/pipeline_detail.png | Bin 15561 -> 15556 bytes doc/ci/merge_request_pipelines/index.md | 133 +- doc/ci/permissions/README.md | 6 +- doc/ci/pipelines.md | 496 +- doc/ci/quick_start/README.md | 2 +- doc/ci/review_apps/index.md | 12 +- doc/ci/runners/README.md | 67 +- doc/ci/services/README.md | 2 +- doc/ci/services/postgres.md | 2 +- doc/ci/ssh_keys/README.md | 2 +- doc/ci/triggers/README.md | 13 +- doc/ci/triggers/img/trigger_variables.png | Bin 10853 -> 10841 bytes doc/ci/variables/README.md | 853 +- doc/ci/variables/deprecated_variables.md | 27 + .../img/ci_job_stage_output_example.png | Bin 0 -> 68964 bytes .../variables/img/custom_variable_output.png | Bin 0 -> 70552 bytes .../img/new_custom_variable_example.png | Bin 0 -> 44164 bytes ...rride_value_via_manual_pipeline_output.png | Bin 0 -> 72420 bytes .../img/override_variable_manual_pipeline.png | Bin 0 -> 29090 bytes doc/ci/variables/predefined_variables.md | 113 + .../variables/where_variables_can_be_used.md | 32 +- doc/ci/yaml/README.md | 773 +- doc/container_registry/README.md | 4 + doc/container_registry/troubleshooting.md | 4 + doc/customization/help_message.md | 13 + doc/customization/help_message/help_text.png | Bin 0 -> 86118 bytes .../help_message/help_text_on_help_page.png | Bin 0 -> 24355 bytes doc/customization/index.md | 18 + doc/customization/libravatar.md | 4 - .../system_header_and_footer_messages.md | 22 + .../appearance.png | Bin 0 -> 124214 bytes .../custom_header_footer.png | Bin 0 -> 116778 bytes .../sign_up_custom_header_and_footer.png | Bin 0 -> 78678 bytes doc/customization/welcome_message.md | 15 +- doc/development/README.md | 2 + doc/development/api_graphql_styleguide.md | 130 +- doc/development/architecture.md | 39 +- doc/development/automatic_ce_ee_merge.md | 20 +- doc/development/changelog.md | 24 +- doc/development/code_review.md | 29 +- doc/development/contributing/index.md | 10 +- .../contributing/issue_workflow.md | 18 +- .../contributing/merge_request_workflow.md | 319 +- doc/development/contributing/style_guides.md | 1 + doc/development/database_debugging.md | 3 - doc/development/diffs.md | 5 - doc/development/distributed_tracing.md | 182 + .../documentation/feature-change-workflow.md | 189 +- .../documentation/improvement-workflow.md | 38 +- doc/development/documentation/index.md | 14 +- .../site_architecture/global_nav.md | 5 +- .../documentation/site_architecture/index.md | 2 +- doc/development/documentation/structure.md | 4 +- doc/development/documentation/styleguide.md | 31 +- doc/development/documentation/workflow.md | 6 +- doc/development/ee_features.md | 122 +- doc/development/fe_guide/accessibility.md | 1 - doc/development/fe_guide/architecture.md | 7 +- doc/development/fe_guide/design_patterns.md | 1 - .../fe_guide/development_process.md | 8 +- doc/development/fe_guide/droplab/droplab.md | 1 - .../fe_guide/droplab/plugins/filter.md | 2 +- .../fe_guide/droplab/plugins/input_setter.md | 3 +- doc/development/fe_guide/event_tracking.md | 91 + doc/development/fe_guide/graphql.md | 40 +- doc/development/fe_guide/index.md | 50 +- doc/development/fe_guide/performance.md | 12 +- doc/development/fe_guide/principles.md | 15 + doc/development/fe_guide/security.md | 1 - doc/development/fe_guide/style_guide_js.md | 22 +- doc/development/fe_guide/style_guide_scss.md | 17 + doc/development/fe_guide/testing.md | 6 +- doc/development/fe_guide/vue.md | 13 +- doc/development/fe_guide/vuex.md | 4 +- doc/development/feature_flags.md | 6 +- doc/development/file_storage.md | 1 - doc/development/git_object_deduplication.md | 261 + doc/development/gitaly.md | 90 +- doc/development/go_guide/index.md | 35 +- doc/development/i18n/merging_translations.md | 3 +- doc/development/i18n/proofreader.md | 6 +- doc/development/i18n_guide.md | 6 +- .../img/distributed_tracing_jaeger_ui.png | Bin 0 -> 1032713 bytes .../distributed_tracing_performance_bar.png | Bin 0 -> 108809 bytes doc/development/import_export.md | 25 +- doc/development/kubernetes.md | 126 + doc/development/logging.md | 30 +- doc/development/migration_style_guide.md | 1 - .../new_fe_guide/development/accessibility.md | 3 +- .../development/design_patterns.md | 3 - .../new_fe_guide/development/index.md | 12 - .../development/network_requests.md | 3 - .../new_fe_guide/development/security.md | 14 - .../new_fe_guide/development/testing.md | 1 - doc/development/new_fe_guide/index.md | 9 +- doc/development/new_fe_guide/initiatives.md | 3 - doc/development/new_fe_guide/principles.md | 35 - doc/development/new_fe_guide/style/html.md | 32 +- .../new_fe_guide/style/javascript.md | 308 +- doc/development/new_fe_guide/tips.md | 16 + doc/development/ordering_table_columns.md | 2 +- doc/development/performance.md | 17 +- doc/development/policies.md | 47 +- doc/development/polling.md | 1 + doc/development/profiling.md | 20 +- doc/development/python_guide/index.md | 79 + doc/development/rake_tasks.md | 2 +- ...rolling_out_changes_using_feature_flags.md | 37 + doc/development/shell_commands.md | 5 +- doc/development/sql.md | 15 + doc/development/testing.md | 6 +- .../testing_guide/best_practices.md | 39 +- doc/development/testing_guide/ci.md | 6 +- .../testing_guide/end_to_end_tests.md | 95 +- .../testing_guide/frontend_testing.md | 108 +- ...qa_on_merge_requests_cicd_architecture.png | Bin 0 -> 64862 bytes doc/development/testing_guide/index.md | 2 +- doc/development/testing_guide/review_apps.md | 40 +- doc/development/testing_guide/smoke.md | 14 +- .../testing_guide/testing_levels.md | 10 +- doc/development/ux_guide/users.md | 4 +- doc/gitlab-basics/add-merge-request.md | 2 +- doc/gitlab-basics/create-group.md | 3 + doc/gitlab-basics/create-issue.md | 3 + doc/gitlab-basics/create-project.md | 8 +- doc/gitlab-basics/create-your-ssh-keys.md | 43 +- doc/gitlab-basics/img/profile_settings.png | Bin 2842 -> 0 bytes .../img/profile_settings_ssh_keys.png | Bin 16531 -> 0 bytes .../profile_settings_ssh_keys_paste_pub.png | Bin 13436 -> 0 bytes .../img/profile_settings_ssh_keys_title.png | Bin 1867 -> 0 bytes doc/hooks/custom_hooks.md | 4 + doc/img/devops-stages.png | Bin 10666 -> 10654 bytes doc/incoming_email/README.md | 4 + doc/incoming_email/postfix.md | 4 + doc/install/README.md | 6 +- doc/install/aws/index.md | 17 +- doc/install/azure/index.md | 227 +- doc/install/docker.md | 2 +- doc/install/installation.md | 8 +- doc/install/kubernetes/gitlab_chart.md | 159 +- doc/install/kubernetes/gitlab_omnibus.md | 249 +- doc/install/kubernetes/gitlab_runner_chart.md | 271 +- doc/install/kubernetes/index.md | 19 +- doc/install/kubernetes/preparation/connect.md | 30 +- doc/install/kubernetes/preparation/eks.md | 47 +- .../kubernetes/preparation/networking.md | 41 +- doc/install/kubernetes/preparation/rbac.md | 23 +- doc/install/kubernetes/preparation/tiller.md | 104 +- .../preparation/tools_installation.md | 22 +- doc/install/openshift_and_gitlab/index.md | 2 +- doc/install/requirements.md | 5 + doc/integration/README.md | 3 +- doc/integration/akismet.md | 1 - doc/integration/auth0.md | 14 +- doc/integration/cas.md | 2 - doc/integration/chat_commands.md | 4 + doc/integration/crowd.md | 4 + doc/integration/external-issue-tracker.md | 18 +- doc/integration/facebook.md | 2 +- doc/integration/github.md | 5 +- doc/integration/img/github_app_entry.png | Bin 26765 -> 26749 bytes doc/integration/img/github_register_app.png | Bin 40228 -> 40225 bytes doc/integration/jira.md | 4 + doc/integration/ldap.md | 4 + doc/integration/omniauth.md | 5 +- doc/integration/saml.md | 1 - doc/integration/slack.md | 4 + doc/integration/slash_commands.md | 4 +- doc/intro/README.md | 4 +- doc/logs/logs.md | 4 + doc/markdown/markdown.md | 6 +- doc/monitoring/health_check.md | 4 + .../performance/gitlab_configuration.md | 4 + .../performance/grafana_configuration.md | 4 + .../performance/influxdb_configuration.md | 4 + doc/monitoring/performance/influxdb_schema.md | 4 + doc/monitoring/performance/introduction.md | 4 + doc/operations/README.md | 4 + doc/operations/cleaning_up_redis_sessions.md | 6 +- doc/operations/moving_repositories.md | 6 +- doc/operations/sidekiq_memory_killer.md | 6 +- doc/operations/unicorn.md | 6 +- doc/pages/README.md | 6 +- doc/pages/administration.md | 6 +- doc/pages/getting_started_part_one.md | 4 + doc/pages/getting_started_part_three.md | 4 + doc/pages/getting_started_part_two.md | 4 + doc/permissions/permissions.md | 4 + doc/profile/README.md | 4 + doc/profile/preferences.md | 4 + doc/profile/two_factor_authentication.md | 4 + doc/project_services/bamboo.md | 4 + doc/project_services/bugzilla.md | 4 + doc/project_services/emails_on_push.md | 4 + doc/project_services/irker.md | 4 + doc/project_services/jira.md | 4 + doc/project_services/kubernetes.md | 4 + doc/project_services/mattermost.md | 4 + .../mattermost_slash_commands.md | 4 + doc/project_services/project_services.md | 4 + doc/project_services/redmine.md | 4 + doc/project_services/services_templates.md | 4 + doc/project_services/slack.md | 4 + doc/project_services/slack_slash_commands.md | 4 + doc/public_access/public_access.md | 2 +- doc/raketasks/backup_restore.md | 58 +- doc/raketasks/check.md | 6 +- doc/raketasks/maintenance.md | 6 +- doc/raketasks/user_management.md | 2 - doc/security/README.md | 1 + .../img/ssh_keys_restricted_key_icon.png | Bin 0 -> 4887 bytes doc/security/ssh_keys_restrictions.md | 8 + doc/ssh/README.md | 11 + doc/system_hooks/system_hooks.md | 8 +- doc/topics/authentication/index.md | 4 +- doc/topics/autodevops/index.md | 179 +- doc/topics/autodevops/quick_start_guide.md | 14 +- .../index.md | 8 +- doc/university/README.md | 7 +- doc/university/glossary/README.md | 1 - .../high-availability/aws/README.md | 15 +- .../aws/img/reference-arch2.png | Bin 53523 -> 53510 bytes doc/university/support/README.md | 1 - doc/university/training/end-user/README.md | 5 +- doc/university/training/topics/git_log.md | 1 - .../training/topics/rollback_commits.md | 1 - doc/university/training/topics/stash.md | 2 +- doc/update/10.0-to-10.1.md | 359 +- doc/update/10.1-to-10.2.md | 359 +- doc/update/10.2-to-10.3.md | 358 +- doc/update/10.3-to-10.4.md | 360 +- doc/update/10.4-to-10.5.md | 360 +- doc/update/10.5-to-10.6.md | 360 +- doc/update/10.6-to-10.7.md | 360 +- doc/update/10.7-to-10.8.md | 361 +- doc/update/10.8-to-11.0.md | 360 +- doc/update/11.0-to-11.1.md | 377 +- doc/update/11.1-to-11.2.md | 377 +- doc/update/11.2-to-11.3.md | 377 +- doc/update/11.3-to-11.4.md | 377 +- doc/update/11.4-to-11.5.md | 389 +- doc/update/11.5-to-11.6.md | 389 +- doc/update/11.6-to-11.7.md | 389 +- doc/update/11.7-to-11.8.md | 393 +- doc/update/2.6-to-3.0.md | 69 +- doc/update/2.9-to-3.0.md | 45 +- doc/update/3.0-to-3.1.md | 105 +- doc/update/3.1-to-4.0.md | 98 +- doc/update/4.0-to-4.1.md | 64 +- doc/update/4.1-to-4.2.md | 47 +- doc/update/4.2-to-5.0.md | 223 +- doc/update/5.0-to-5.1.md | 104 +- doc/update/5.1-to-5.2.md | 123 +- doc/update/5.1-to-5.4.md | 119 +- doc/update/5.1-to-6.0.md | 235 +- doc/update/5.2-to-5.3.md | 105 +- doc/update/5.3-to-5.4.md | 109 +- doc/update/5.4-to-6.0.md | 168 +- doc/update/6.0-to-6.1.md | 126 +- doc/update/6.1-to-6.2.md | 140 +- doc/update/6.2-to-6.3.md | 126 +- doc/update/6.3-to-6.4.md | 108 +- doc/update/6.4-to-6.5.md | 114 +- doc/update/6.5-to-6.6.md | 116 +- doc/update/6.6-to-6.7.md | 122 +- doc/update/6.7-to-6.8.md | 125 +- doc/update/6.8-to-6.9.md | 106 +- doc/update/6.9-to-7.0.md | 144 +- doc/update/6.x-or-7.x-to-7.14.md | 316 +- doc/update/7.0-to-7.1.md | 143 +- doc/update/7.1-to-7.2.md | 142 +- doc/update/7.10-to-7.11.md | 108 +- doc/update/7.11-to-7.12.md | 134 +- doc/update/7.12-to-7.13.md | 134 +- doc/update/7.13-to-7.14.md | 134 +- doc/update/7.14-to-8.0.md | 234 +- doc/update/7.2-to-7.3.md | 150 +- doc/update/7.3-to-7.4.md | 199 +- doc/update/7.4-to-7.5.md | 115 +- doc/update/7.5-to-7.6.md | 122 +- doc/update/7.6-to-7.7.md | 127 +- doc/update/7.7-to-7.8.md | 128 +- doc/update/7.8-to-7.9.md | 130 +- doc/update/7.9-to-7.10.md | 126 +- doc/update/8.0-to-8.1.md | 180 +- doc/update/8.1-to-8.2.md | 197 +- doc/update/8.10-to-8.11.md | 204 +- doc/update/8.11-to-8.12.md | 212 +- doc/update/8.12-to-8.13.md | 212 +- doc/update/8.13-to-8.14.md | 212 +- doc/update/8.14-to-8.15.md | 242 +- doc/update/8.15-to-8.16.md | 244 +- doc/update/8.16-to-8.17.md | 271 +- doc/update/8.17-to-9.0.md | 357 +- doc/update/8.2-to-8.3.md | 226 +- doc/update/8.3-to-8.4.md | 142 +- doc/update/8.4-to-8.5.md | 163 +- doc/update/8.5-to-8.6.md | 182 +- doc/update/8.6-to-8.7.md | 171 +- doc/update/8.7-to-8.8.md | 171 +- doc/update/8.8-to-8.9.md | 200 +- doc/update/8.9-to-8.10.md | 200 +- doc/update/9.0-to-9.1.md | 406 +- doc/update/9.1-to-9.2.md | 329 +- doc/update/9.2-to-9.3.md | 347 +- doc/update/9.3-to-9.4.md | 360 +- doc/update/9.4-to-9.5.md | 359 +- doc/update/9.5-to-10.0.md | 359 +- doc/update/README.md | 45 +- doc/update/mysql_to_postgresql.md | 335 +- doc/update/restore_after_failure.md | 3 +- doc/update/upgrading_from_ce_to_ee.md | 132 + doc/update/upgrading_from_source.md | 390 + .../upgrading_postgresql_using_slony.md | 1 - doc/user/abuse_reports.md | 1 - doc/user/account/security.md | 4 + doc/user/account/two_factor_authentication.md | 4 + doc/user/admin_area/broadcast_messages.md | 2 + doc/user/admin_area/index.md | 29 + .../admin_area/monitoring/health_check.md | 25 +- .../settings/continuous_integration.md | 10 +- .../settings/external_authorization.md | 112 + .../classification_label_on_project_page.png | Bin 0 -> 19568 bytes ...xternal_authorization_service_settings.png | Bin 0 -> 74753 bytes .../admin_area/settings/third_party_offers.md | 5 +- .../img/multi-line-suggestion-preview.png | Bin 0 -> 61692 bytes .../img/multi-line-suggestion-syntax.png | Bin 0 -> 29753 bytes doc/user/discussions/img/reply_to_comment.gif | Bin 0 -> 508115 bytes .../img/reply_to_comment_button.png | Bin 0 -> 17224 bytes doc/user/discussions/index.md | 110 +- doc/user/gitlab_com/index.md | 12 +- doc/user/group/clusters/index.md | 31 +- doc/user/group/img/create_new_group_info.png | Bin 51072 -> 27101 bytes doc/user/group/index.md | 52 +- doc/user/group/subgroups/index.md | 12 +- .../img/color_inline_colorchip_render_gfm.png | Bin 4724 -> 4684 bytes doc/user/img/task_list_ordered_render_gfm.png | Bin 2860 -> 2855 bytes .../img/unordered_check_list_render_gfm.png | Bin 2789 -> 2781 bytes doc/user/index.md | 64 +- doc/user/instance_statistics/convdev.md | 23 +- doc/user/markdown.md | 33 +- doc/user/permissions.md | 21 +- doc/user/profile/account/index.md | 3 + .../account/two_factor_authentication.md | 24 +- .../profile/img/personal_access_tokens.png | Bin 18553 -> 0 bytes doc/user/profile/index.md | 7 +- doc/user/profile/personal_access_tokens.md | 25 +- doc/user/profile/preferences.md | 19 +- doc/user/project/badges.md | 6 + doc/user/project/builds/artifacts.md | 4 + doc/user/project/bulk_editing.md | 1 + .../project/clusters/eks_and_gitlab/index.md | 2 +- doc/user/project/clusters/index.md | 293 +- .../runbooks/img/authorize-jupyter.png | Bin 35652 -> 35627 bytes .../runbooks/img/gitlab-variables.png | Bin 54167 -> 54154 bytes .../clusters/runbooks/img/helm-install.png | Bin 71741 -> 71705 bytes .../clusters/runbooks/img/ingress-install.png | Bin 44380 -> 44363 bytes .../runbooks/img/jupyterhub-install.png | Bin 41655 -> 41588 bytes .../clusters/runbooks/img/postgres-query.png | Bin 63480 -> 63416 bytes .../clusters/runbooks/img/sample-runbook.png | Bin 40947 -> 40941 bytes doc/user/project/clusters/runbooks/index.md | 8 +- .../clusters/serverless/img/app-domain.png | Bin 209263 -> 0 bytes .../clusters/serverless/img/dns-entry.png | Bin 19583 -> 66116 bytes .../img/function-details-loaded.png | Bin 0 -> 93515 bytes .../serverless/img/install-knative.png | Bin 13003 -> 86225 bytes .../serverless/img/serverless-page.png | Bin 62369 -> 191568 bytes doc/user/project/clusters/serverless/index.md | 241 +- doc/user/project/container_registry.md | 7 +- doc/user/project/cycle_analytics.md | 42 +- doc/user/project/description_templates.md | 1 - doc/user/project/gpg_signed_commits/index.md | 4 + .../img/cycle_analytics_landing_page.png | Bin 42114 -> 184131 bytes .../project/img/issue_boards_multiple.png | Bin 22623 -> 68373 bytes doc/user/project/img/labels_default.png | Bin 22975 -> 35620 bytes doc/user/project/img/labels_list.png | Bin 71323 -> 75215 bytes doc/user/project/import/bitbucket_server.md | 12 +- doc/user/project/import/fogbugz.md | 2 +- doc/user/project/import/github.md | 2 +- doc/user/project/import/svn.md | 2 +- doc/user/project/index.md | 54 +- doc/user/project/integrations/bamboo.md | 1 - .../integrations/img/issue_configuration.png | Bin 11882 -> 0 bytes .../integrations/img/jira_api_token_menu.png | Bin 25059 -> 25056 bytes .../integrations/img/jira_service_page.png | Bin 30398 -> 30395 bytes doc/user/project/integrations/irker.md | 8 +- doc/user/project/integrations/jira.md | 2 + doc/user/project/integrations/kubernetes.md | 4 + .../integrations/mattermost_slash_commands.md | 2 +- .../project/integrations/project_services.md | 1 + doc/user/project/integrations/prometheus.md | 6 +- .../prometheus_library/metrics.md | 4 + .../prometheus_library/nginx_ingress.md | 2 +- .../prometheus_library/nginx_ingress_vts.md | 2 +- doc/user/project/integrations/redmine.md | 10 +- doc/user/project/integrations/webhooks.md | 83 +- doc/user/project/integrations/youtrack.md | 38 + doc/user/project/issue_board.md | 30 +- .../project/issues/automatic_issue_closing.md | 1 + .../project/issues/confidential_issues.md | 7 +- doc/user/project/issues/create_new_issue.md | 4 +- .../project/issues/crosslinking_issues.md | 9 +- doc/user/project/issues/due_dates.md | 8 +- .../project/issues/img/similar_issues.png | Bin 25407 -> 25390 bytes doc/user/project/issues/index.md | 229 +- .../project/issues/issues_functionalities.md | 90 +- doc/user/project/merge_requests.md | 4 + .../img/comment-on-any-diff-line.png | Bin 55614 -> 55593 bytes .../img/filter_wip_merge_requests.png | Bin 6285 -> 28572 bytes ...ine_succeeds_only_if_succeeds_settings.png | Bin 6491 -> 19986 bytes .../img/wip_blocked_accept_button.png | Bin 4152 -> 7141 bytes .../merge_requests/img/wip_mark_as_wip.png | Bin 7961 -> 0 bytes .../merge_requests/img/wip_unmark_as_wip.png | Bin 8424 -> 0 bytes doc/user/project/merge_requests/index.md | 62 +- .../merge_requests/maintainer_access.md | 4 + .../merge_request_discussion_resolution.md | 4 + .../merge_when_build_succeeds.md | 8 +- .../merge_when_pipeline_succeeds.md | 10 +- doc/user/project/merge_requests/versions.md | 1 + .../work_in_progress_merge_requests.md | 47 +- doc/user/project/milestones/index.md | 7 +- .../project/new_ci_build_permissions_model.md | 6 +- doc/user/project/operations/error_tracking.md | 10 +- .../pages/getting_started_part_four.md | 30 +- .../project/pages/getting_started_part_one.md | 44 +- .../pages/getting_started_part_three.md | 36 +- .../project/pages/getting_started_part_two.md | 127 +- doc/user/project/pages/img/icons/click.png | Bin 4863 -> 4683 bytes doc/user/project/pages/img/icons/fork.png | Bin 4562 -> 4380 bytes doc/user/project/pages/img/icons/free.png | Bin 3681 -> 3563 bytes doc/user/project/pages/img/icons/lock.png | Bin 3426 -> 3404 bytes doc/user/project/pages/img/icons/monitor.png | Bin 2025 -> 1982 bytes doc/user/project/pages/img/icons/terminal.png | Bin 1983 -> 1961 bytes .../img/pages_project_templates_11-8.png | Bin 0 -> 69702 bytes doc/user/project/pages/index.md | 69 +- doc/user/project/pages/introduction.md | 17 +- doc/user/project/pipelines/job_artifacts.md | 13 +- doc/user/project/pipelines/schedules.md | 126 +- doc/user/project/pipelines/settings.md | 3 +- doc/user/project/protected_branches.md | 23 + doc/user/project/protected_tags.md | 3 - doc/user/project/quick_actions.md | 3 +- doc/user/project/releases.md | 4 + .../branches/img/branch_filter_search_box.png | Bin 23539 -> 23522 bytes doc/user/project/repository/branches/index.md | 2 +- .../repository/gpg_signed_commits/index.md | 5 +- .../repository/img/repository_cleanup.png | Bin 8117 -> 8114 bytes doc/user/project/repository/index.md | 18 +- doc/user/project/repository/web_editor.md | 5 +- doc/user/project/settings/index.md | 2 +- doc/user/project/slash_commands.md | 4 + doc/user/project/web_ide/index.md | 34 +- doc/user/project/wiki/index.md | 15 +- doc/user/reserved_names.md | 4 +- doc/user/search/index.md | 2 +- doc/user/snippets.md | 9 +- doc/web_hooks/web_hooks.md | 4 + doc/workflow/add-user/add-user.md | 4 + .../authorization_for_merge_requests.md | 4 + doc/workflow/award_emoji.md | 4 + doc/workflow/cherry_pick_changes.md | 6 +- doc/workflow/forking_workflow.md | 1 - doc/workflow/gitlab_flow.md | 442 +- doc/workflow/groups.md | 3 + doc/workflow/importing/README.md | 4 + .../import_projects_from_bitbucket.md | 4 + .../importing/import_projects_from_fogbugz.md | 4 + .../importing/import_projects_from_gitea.md | 4 + .../importing/import_projects_from_github.md | 4 + .../import_projects_from_gitlab_com.md | 4 + doc/workflow/importing/migrating_from_svn.md | 4 + doc/workflow/labels.md | 4 + doc/workflow/lfs/lfs_administration.md | 12 + doc/workflow/merge_requests.md | 4 + doc/workflow/merge_when_build_succeeds.md | 4 + doc/workflow/milestones.md | 4 + doc/workflow/project_features.md | 4 + doc/workflow/protected_branches.md | 4 + doc/workflow/repository_mirroring.md | 8 + doc/workflow/revert_changes.md | 4 + .../share_projects_with_other_groups.md | 4 + doc/workflow/share_with_group.md | 4 + doc/workflow/shortcuts.md | 2 + doc/workflow/time_tracking.md | 12 +- doc/workflow/web_editor.md | 4 + doc/workflow/wip_merge_requests.md | 4 + jest.config.js | 23 +- lib/api/api.rb | 1 + lib/api/branches.rb | 4 +- lib/api/commits.rb | 17 + lib/api/discussions.rb | 4 +- lib/api/entities.rb | 130 +- lib/api/features.rb | 1 + lib/api/groups.rb | 36 +- lib/api/helpers.rb | 29 +- lib/api/helpers/custom_validators.rb | 13 + lib/api/helpers/discussions_helpers.rb | 13 + lib/api/helpers/graphql_helpers.rb | 22 + lib/api/helpers/internal_helpers.rb | 46 +- lib/api/helpers/issues_helpers.rb | 23 + lib/api/helpers/notes_helpers.rb | 6 + lib/api/helpers/pagination.rb | 77 +- lib/api/helpers/projects_helpers.rb | 40 + lib/api/helpers/related_resources_helpers.rb | 4 + .../helpers/resource_label_events_helpers.rb | 13 + lib/api/helpers/search_helpers.rb | 22 + lib/api/helpers/services_helpers.rb | 761 + lib/api/internal.rb | 51 +- lib/api/issues.rb | 60 +- lib/api/job_artifacts.rb | 16 + lib/api/merge_requests.rb | 50 +- lib/api/milestone_responses.rb | 2 + lib/api/notes.rb | 6 +- lib/api/project_clusters.rb | 2 + lib/api/project_milestones.rb | 15 + lib/api/project_statistics.rb | 23 + lib/api/project_templates.rb | 5 +- lib/api/projects.rb | 57 +- lib/api/protected_branches.rb | 24 + lib/api/repositories.rb | 18 +- lib/api/resource_label_events.rb | 4 +- lib/api/runners.rb | 6 + lib/api/search.rb | 38 +- lib/api/services.rb | 715 +- lib/api/settings.rb | 50 +- lib/api/snippets.rb | 25 +- lib/api/todos.rb | 32 +- lib/api/triggers.rb | 2 +- lib/api/users.rb | 13 +- lib/api/validations/types/labels_list.rb | 24 + lib/api/variables.rb | 18 + lib/api/version.rb | 18 +- lib/api/wikis.rb | 13 +- lib/backup/database.rb | 3 +- lib/backup/files.rb | 4 +- lib/backup/helper.rb | 8 + lib/backup/manager.rb | 6 +- lib/backup/uploads.rb | 2 +- .../filter/abstract_reference_filter.rb | 23 +- lib/banzai/filter/blockquote_fence_filter.rb | 4 +- lib/banzai/filter/label_reference_filter.rb | 6 +- .../filter/merge_request_reference_filter.rb | 12 +- lib/banzai/filter/output_safety.rb | 11 + lib/banzai/filter/reference_filter.rb | 5 +- lib/banzai/filter/relative_link_filter.rb | 7 +- lib/banzai/filter/suggestion_filter.rb | 6 + lib/banzai/filter/syntax_highlight_filter.rb | 21 +- lib/banzai/pipeline/markup_pipeline.rb | 3 +- lib/banzai/suggestions_parser.rb | 14 - lib/bitbucket_server/collection.rb | 4 +- lib/bitbucket_server/connection.rb | 1 + lib/declarative_policy/rule.rb | 6 +- lib/event_filter.rb | 2 +- lib/feature.rb | 10 +- lib/gitlab.rb | 2 +- lib/gitlab/access.rb | 35 + lib/gitlab/action_view_output/context.rb | 41 + lib/gitlab/auth/ldap/config.rb | 59 +- lib/gitlab/auth/ldap/person.rb | 4 +- lib/gitlab/auth/o_auth/user.rb | 17 +- .../auth/omniauth_identity_linker_base.rb | 6 +- lib/gitlab/auth/saml/auth_hash.rb | 4 +- lib/gitlab/authorized_keys.rb | 149 + .../archive_legacy_traces.rb | 9 +- .../background_migration/encrypt_columns.rb | 3 +- .../migrate_events_to_push_event_payloads.rb | 2 +- .../normalize_ldap_extern_uids_range.rb | 12 +- .../populate_merge_request_assignees_table.rb | 36 + .../populate_untracked_uploads.rb | 14 +- ...populate_untracked_uploads_dependencies.rb | 2 +- .../sync_issues_state_id.rb | 21 + .../sync_merge_requests_state_id.rb | 23 + lib/gitlab/badge/pipeline/template.rb | 1 + lib/gitlab/bare_repository_import/importer.rb | 2 +- lib/gitlab/bitbucket_import/importer.rb | 130 +- .../bitbucket_server_import/importer.rb | 40 +- lib/gitlab/chat.rb | 10 + lib/gitlab/chat/command.rb | 94 + lib/gitlab/chat/output.rb | 93 + lib/gitlab/chat/responder.rb | 22 + lib/gitlab/chat/responder/base.rb | 40 + lib/gitlab/chat/responder/slack.rb | 80 + lib/gitlab/checks/branch_check.rb | 38 +- lib/gitlab/checks/lfs_check.rb | 1 + lib/gitlab/ci/ansi2html.rb | 2 +- lib/gitlab/ci/build/artifacts/metadata.rb | 4 +- .../ci/build/artifacts/metadata/entry.rb | 2 +- lib/gitlab/ci/build/image.rb | 10 +- lib/gitlab/ci/build/policy/changes.rb | 2 +- lib/gitlab/ci/build/policy/refs.rb | 10 +- lib/gitlab/ci/build/port.rb | 32 + lib/gitlab/ci/build/prerequisite/base.rb | 27 + lib/gitlab/ci/build/prerequisite/factory.rb | 33 + .../prerequisite/kubernetes_namespace.rb | 42 + lib/gitlab/ci/config.rb | 6 +- lib/gitlab/ci/config/entry/global.rb | 3 + lib/gitlab/ci/config/entry/image.rb | 22 +- lib/gitlab/ci/config/entry/include.rb | 23 + lib/gitlab/ci/config/entry/includes.rb | 32 + lib/gitlab/ci/config/entry/policy.rb | 4 +- lib/gitlab/ci/config/entry/port.rb | 46 + lib/gitlab/ci/config/entry/ports.rb | 46 + lib/gitlab/ci/config/entry/reports.rb | 3 +- lib/gitlab/ci/config/entry/service.rb | 4 +- lib/gitlab/ci/config/entry/services.rb | 2 + lib/gitlab/ci/config/external/file/base.rb | 30 +- lib/gitlab/ci/config/external/file/local.rb | 7 + lib/gitlab/ci/config/external/file/project.rb | 7 + lib/gitlab/ci/config/external/mapper.rb | 36 +- lib/gitlab/ci/config/external/processor.rb | 6 +- lib/gitlab/ci/model.rb | 2 +- lib/gitlab/ci/pipeline/chain/build.rb | 2 + lib/gitlab/ci/pipeline/chain/command.rb | 12 +- .../chain/remove_unwanted_chat_jobs.rb | 8 +- lib/gitlab/ci/pipeline/chain/skip.rb | 4 +- .../ci/pipeline/chain/validate/abilities.rb | 2 + .../ci/pipeline/chain/validate/repository.rb | 2 +- lib/gitlab/ci/status/build/factory.rb | 4 +- lib/gitlab/ci/status/build/failed.rb | 3 +- .../build/failed_unmet_prerequisites.rb | 24 + lib/gitlab/ci/status/build/preparing.rb | 28 + lib/gitlab/ci/status/preparing.rb | 33 + .../templates/Android-Fastlane.gitlab-ci.yml | 1 - .../ci/templates/Auto-DevOps.gitlab-ci.yml | 912 +- lib/gitlab/ci/templates/Bash.gitlab-ci.yml | 14 +- lib/gitlab/ci/templates/C++.gitlab-ci.yml | 6 +- lib/gitlab/ci/templates/Chef.gitlab-ci.yml | 2 +- lib/gitlab/ci/templates/Clojure.gitlab-ci.yml | 8 +- .../ci/templates/Code-Quality.gitlab-ci.yml | 17 + lib/gitlab/ci/templates/Django.gitlab-ci.yml | 2 +- lib/gitlab/ci/templates/Gradle.gitlab-ci.yml | 2 - lib/gitlab/ci/templates/Grails.gitlab-ci.yml | 10 +- .../Browser-Performance-Testing.gitlab-ci.yml | 38 + .../ci/templates/Jobs/Build.gitlab-ci.yml | 18 + .../templates/Jobs/Code-Quality.gitlab-ci.yml | 27 + .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 575 + .../ci/templates/Jobs/Test.gitlab-ci.yml | 23 + lib/gitlab/ci/templates/Julia.gitlab-ci.yml | 2 +- lib/gitlab/ci/templates/Laravel.gitlab-ci.yml | 15 +- lib/gitlab/ci/templates/Maven.gitlab-ci.yml | 2 - lib/gitlab/ci/templates/Mono.gitlab-ci.yml | 4 +- .../ci/templates/Pages/Brunch.gitlab-ci.yml | 1 - .../ci/templates/Pages/Harp.gitlab-ci.yml | 1 - .../ci/templates/Pages/Hugo.gitlab-ci.yml | 2 +- .../ci/templates/Pages/JBake.gitlab-ci.yml | 3 +- .../ci/templates/Pages/Jigsaw.gitlab-ci.yml | 13 +- .../templates/Pages/Metalsmith.gitlab-ci.yml | 1 - lib/gitlab/ci/templates/Python.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Ruby.gitlab-ci.yml | 2 +- .../Security/Container-Scanning.gitlab-ci.yml | 60 + .../ci/templates/Security/DAST.gitlab-ci.yml | 63 + .../Dependency-Scanning.gitlab-ci.yml | 47 + .../Security/License-Management.gitlab-ci.yml | 27 + .../ci/templates/Security/SAST.gitlab-ci.yml | 49 + .../ci/templates/Serverless.gitlab-ci.yml | 44 + lib/gitlab/ci/templates/dotNET.gitlab-ci.yml | 2 - .../ci/templates/iOS-Fastlane.gitlab-ci.yml | 28 + lib/gitlab/ci/variables/collection.rb | 2 + lib/gitlab/ci/variables/collection/item.rb | 4 +- lib/gitlab/config/entry/configurable.rb | 10 +- lib/gitlab/config/entry/factory.rb | 2 +- lib/gitlab/config/entry/node.rb | 20 + lib/gitlab/config/entry/simplifiable.rb | 5 +- lib/gitlab/config/entry/validators.rb | 126 +- lib/gitlab/config/loader/yaml.rb | 34 +- lib/gitlab/contributions_calendar.rb | 1 + lib/gitlab/current_settings.rb | 2 +- .../cycle_analytics/plan_event_fetcher.rb | 4 +- lib/gitlab/danger/helper.rb | 157 + lib/gitlab/danger/teammate.rb | 42 + lib/gitlab/data_builder/pipeline.rb | 4 +- lib/gitlab/data_builder/push.rb | 9 +- lib/gitlab/database.rb | 10 +- .../count/reltuples_count_strategy.rb | 18 +- .../count/tablesample_count_strategy.rb | 13 +- lib/gitlab/database/migration_helpers.rb | 25 +- .../database/multi_threaded_migration.rb | 10 +- lib/gitlab/database/sha_attribute.rb | 2 +- lib/gitlab/diff/file.rb | 47 +- lib/gitlab/diff/suggestion.rb | 52 + lib/gitlab/diff/suggestion_diff.rb | 37 + lib/gitlab/diff/suggestions_parser.rb | 51 + lib/gitlab/email/reply_parser.rb | 2 +- lib/gitlab/encoding_helper.rb | 7 +- lib/gitlab/etag_caching/router.rb | 27 +- lib/gitlab/external_authorization.rb | 40 + lib/gitlab/external_authorization/access.rb | 55 + lib/gitlab/external_authorization/cache.rb | 62 + lib/gitlab/external_authorization/client.rb | 63 + lib/gitlab/external_authorization/config.rb | 47 + lib/gitlab/external_authorization/logger.rb | 21 + lib/gitlab/external_authorization/response.rb | 38 + lib/gitlab/fake_application_settings.rb | 19 +- lib/gitlab/favicon.rb | 8 +- lib/gitlab/fogbugz_import/importer.rb | 2 +- lib/gitlab/git/commit.rb | 19 +- lib/gitlab/git/object_pool.rb | 2 +- lib/gitlab/git/pre_receive_error.rb | 31 +- lib/gitlab/git/repository.rb | 33 +- lib/gitlab/git/rugged_impl/tree.rb | 2 + lib/gitlab/git/tree.rb | 2 +- lib/gitlab/git/wiki.rb | 10 +- lib/gitlab/git_access.rb | 6 +- lib/gitlab/git_access_result/success.rb | 5 + lib/gitlab/git_post_receive.rb | 2 +- lib/gitlab/gitaly_client.rb | 97 +- lib/gitlab/gitaly_client/blob_service.rb | 2 +- lib/gitlab/gitaly_client/blobs_stitcher.rb | 18 +- lib/gitlab/gitaly_client/commit_service.rb | 13 +- lib/gitlab/gitaly_client/conflicts_service.rb | 2 +- .../gitaly_client/object_pool_service.rb | 10 - lib/gitlab/gitaly_client/operation_service.rb | 39 +- lib/gitlab/gitaly_client/ref_service.rb | 11 +- lib/gitlab/gitaly_client/remote_service.rb | 2 +- .../gitaly_client/repository_service.rb | 26 +- lib/gitlab/gitaly_client/wiki_service.rb | 13 +- .../importer/milestones_importer.rb | 1 + .../importer/pull_request_importer.rb | 2 +- .../importer/repository_importer.rb | 21 +- lib/gitlab/gl_repository.rb | 39 +- lib/gitlab/gl_repository/repo_type.rb | 42 + lib/gitlab/gon_helper.rb | 1 + .../grape_logging/loggers/perf_logger.rb | 5 +- lib/gitlab/graphql/authorize.rb | 17 +- .../authorize/authorize_field_service.rb | 119 + .../graphql/authorize/authorize_resource.rb | 17 +- .../graphql/authorize/instrumentation.rb | 36 +- .../graphql/connections/keyset_connection.rb | 16 +- .../query_analyzers/log_query_complexity.rb | 18 + lib/gitlab/graphql/tracing.rb | 43 + lib/gitlab/group_search_results.rb | 36 + lib/gitlab/hashed_storage/migrator.rb | 54 +- lib/gitlab/hashed_storage/rake_helper.rb | 12 +- lib/gitlab/highlight.rb | 2 +- lib/gitlab/hook_data/issue_builder.rb | 2 +- lib/gitlab/hook_data/merge_request_builder.rb | 2 +- lib/gitlab/i18n/metadata_entry.rb | 2 +- lib/gitlab/import/merge_request_helpers.rb | 18 +- .../web_upload_strategy.rb | 5 +- lib/gitlab/import_export/import_export.yml | 5 +- lib/gitlab/import_export/json_hash_builder.rb | 2 +- lib/gitlab/import_export/relation_factory.rb | 2 +- lib/gitlab/incoming_email.rb | 2 +- lib/gitlab/issuable_metadata.rb | 4 +- lib/gitlab/json_cache.rb | 31 +- lib/gitlab/kubernetes.rb | 24 + lib/gitlab/kubernetes/helm.rb | 4 +- lib/gitlab/kubernetes/helm/install_command.rb | 3 +- lib/gitlab/legacy_github_import/client.rb | 2 +- lib/gitlab/legacy_github_import/importer.rb | 56 +- .../legacy_github_import/user_formatter.rb | 4 +- lib/gitlab/lfs_token.rb | 13 +- lib/gitlab/metrics/influx_db.rb | 6 +- lib/gitlab/metrics/instrumentation.rb | 4 +- lib/gitlab/metrics/method_call.rb | 2 +- lib/gitlab/metrics/methods.rb | 6 +- .../metrics/requests_rack_middleware.rb | 6 +- lib/gitlab/metrics/samplers/influx_sampler.rb | 4 +- lib/gitlab/metrics/samplers/ruby_sampler.rb | 10 +- .../metrics/samplers/unicorn_sampler.rb | 4 +- .../metrics/sidekiq_metrics_exporter.rb | 2 +- lib/gitlab/metrics/subscribers/rails_cache.rb | 4 +- lib/gitlab/metrics/transaction.rb | 17 +- lib/gitlab/middleware/rails_queue_duration.rb | 3 + lib/gitlab/object_hierarchy.rb | 60 +- .../patch/sprockets_base_file_digest_key.rb | 2 +- lib/gitlab/path_regex.rb | 1 + lib/gitlab/project_search_results.rb | 10 + lib/gitlab/project_template.rb | 11 +- .../additional_metrics_environment_query.rb | 8 +- .../queries/knative_invocation_query.rb | 39 + lib/gitlab/prometheus_client.rb | 85 +- lib/gitlab/push_options.rb | 70 + .../quick_actions/command_definition.rb | 17 +- lib/gitlab/quick_actions/commit_actions.rb | 31 + lib/gitlab/quick_actions/common_actions.rb | 17 + lib/gitlab/quick_actions/dsl.rb | 23 +- lib/gitlab/quick_actions/issuable_actions.rb | 221 + lib/gitlab/quick_actions/issue_actions.rb | 136 + .../issue_and_merge_request_actions.rb | 225 + .../quick_actions/merge_request_actions.rb | 59 + lib/gitlab/recaptcha.rb | 4 +- lib/gitlab/repo_path.rb | 26 +- lib/gitlab/sanitizers/exif.rb | 12 +- lib/gitlab/search_results.rb | 94 +- lib/gitlab/shell.rb | 146 +- lib/gitlab/sidekiq_config.rb | 4 +- .../sidekiq_middleware/memory_killer.rb | 82 + lib/gitlab/sidekiq_middleware/shutdown.rb | 135 - lib/gitlab/sidekiq_signals.rb | 45 + lib/gitlab/slash_commands/application_help.rb | 25 + lib/gitlab/slash_commands/command.rb | 3 +- lib/gitlab/slash_commands/presenters/error.rb | 17 + lib/gitlab/slash_commands/presenters/run.rb | 33 + lib/gitlab/slash_commands/run.rb | 44 + lib/gitlab/sql/pattern.rb | 8 +- lib/gitlab/sql/recursive_cte.rb | 2 +- lib/gitlab/template/gitlab_ci_yml_template.rb | 5 - lib/gitlab/tracing.rb | 20 + lib/gitlab/tracing/jaeger_factory.rb | 2 +- lib/gitlab/tree_summary.rb | 2 +- lib/gitlab/untrusted_regexp.rb | 13 + lib/gitlab/untrusted_regexp/ruby_syntax.rb | 39 +- lib/gitlab/url_helpers.rb | 16 + lib/gitlab/usage_data.rb | 15 +- lib/gitlab/user_access.rb | 4 +- lib/gitlab/user_extractor.rb | 5 +- lib/gitlab/utils.rb | 6 + lib/gitlab/utils/deep_size.rb | 79 + lib/gitlab/wiki_file_finder.rb | 4 +- lib/gitlab/workhorse.rb | 18 +- lib/google_api/cloud_platform/client.rb | 7 + lib/peek/views/tracing.rb | 13 + lib/sentry/client.rb | 64 +- .../app/git_user_default_ssh_config_check.rb | 2 +- lib/system_check/app/ruby_version_check.rb | 2 +- lib/tasks/dev.rake | 1 + lib/tasks/gitlab/artifacts/migrate.rake | 13 +- lib/tasks/gitlab/backup.rake | 2 +- lib/tasks/gitlab/cleanup.rake | 2 +- lib/tasks/gitlab/db.rake | 5 +- lib/tasks/gitlab/info.rake | 37 +- lib/tasks/gitlab/lfs/migrate.rake | 11 +- lib/tasks/gitlab/setup.rake | 25 + lib/tasks/gitlab/shell.rake | 15 +- lib/tasks/gitlab/storage.rake | 63 +- lib/tasks/gitlab/traces.rake | 11 +- lib/tasks/karma.rake | 7 +- lib/tasks/lint.rake | 8 +- lib/tasks/migrate/migrate_iids.rake | 42 +- lib/tasks/tokens.rake | 2 +- lib/unfold_form.rb | 14 - locale/ar_SA/gitlab.po | 2775 ++- locale/bg/gitlab.po | 2731 ++- locale/bn_BD/gitlab.po | 13998 ++++++++++++++++ locale/bn_IN/gitlab.po | 13998 ++++++++++++++++ locale/ca_ES/gitlab.po | 2737 ++- locale/cs_CZ/gitlab.po | 2747 ++- locale/cy_GB/gitlab.po | 2775 ++- locale/da_DK/gitlab.po | 2719 ++- locale/de/gitlab.po | 2807 +++- locale/el_GR/gitlab.po | 2719 ++- locale/en/gitlab.po | 3 - locale/eo/gitlab.po | 2731 ++- locale/es/gitlab.po | 3973 ++++- locale/et_EE/gitlab.po | 2719 ++- locale/fil_PH/gitlab.po | 2719 ++- locale/fr/gitlab.po | 2873 +++- locale/gitlab.pot | 1584 +- locale/gl_ES/gitlab.po | 2733 ++- locale/he_IL/gitlab.po | 2747 ++- locale/hi_IN/gitlab.po | 2719 ++- locale/hr_HR/gitlab.po | 2733 ++- locale/hu_HU/gitlab.po | 2719 ++- locale/id_ID/gitlab.po | 2705 ++- locale/it/gitlab.po | 2739 ++- locale/ja/gitlab.po | 3905 ++++- locale/ka_GE/gitlab.po | 13998 ++++++++++++++++ locale/ko/gitlab.po | 2885 +++- locale/mn_MN/gitlab.po | 2719 ++- locale/nb_NO/gitlab.po | 2719 ++- locale/nl_NL/gitlab.po | 2721 ++- locale/pa_IN/gitlab.po | 2719 ++- locale/pl_PL/gitlab.po | 2757 ++- locale/pt_BR/gitlab.po | 3603 +++- locale/pt_PT/gitlab.po | 2719 ++- locale/ro_RO/gitlab.po | 2733 ++- locale/ru/gitlab.po | 3005 +++- locale/sk_SK/gitlab.po | 2747 ++- locale/sq_AL/gitlab.po | 2719 ++- locale/sr_CS/gitlab.po | 2733 ++- locale/sr_SP/gitlab.po | 2733 ++- locale/sv_SE/gitlab.po | 2719 ++- locale/sw_KE/gitlab.po | 2719 ++- locale/tr_TR/gitlab.po | 5395 ++++-- locale/uk/gitlab.po | 4093 +++-- locale/zh_CN/gitlab.po | 4207 +++-- locale/zh_HK/gitlab.po | 2717 ++- locale/zh_TW/gitlab.po | 2839 +++- package.json | 83 +- qa/.gitignore | 1 + qa/Gemfile | 1 + qa/Gemfile.lock | 3 + qa/README.md | 49 +- qa/Rakefile | 28 + qa/STYLE_GUIDE.md | 46 + qa/load/artillery.yml | 25 + qa/qa.rb | 24 + qa/qa/ce/strategy.rb | 5 +- qa/qa/git/repository.rb | 5 + qa/qa/page/alert/auto_devops_alert.rb | 13 + qa/qa/page/base.rb | 41 +- qa/qa/page/component/clone_panel.rb | 5 - qa/qa/page/component/legacy_clone_panel.rb | 5 - qa/qa/page/component/select2.rb | 2 +- qa/qa/page/dashboard/groups.rb | 6 +- qa/qa/page/dashboard/projects.rb | 2 - qa/qa/page/dashboard/snippet/index.rb | 21 + qa/qa/page/dashboard/snippet/new.rb | 53 + qa/qa/page/dashboard/snippet/show.rb | 63 + qa/qa/page/file/show.rb | 2 +- qa/qa/page/group/show.rb | 18 +- qa/qa/page/label/index.rb | 2 +- qa/qa/page/label/new.rb | 2 +- qa/qa/page/main/login.rb | 6 + qa/qa/page/main/menu.rb | 11 +- qa/qa/page/main/sign_up.rb | 2 +- qa/qa/page/merge_request/show.rb | 22 +- qa/qa/page/profile/personal_access_tokens.rb | 2 +- qa/qa/page/project/activity.rb | 2 +- qa/qa/page/project/import/github.rb | 30 +- qa/qa/page/project/issue/index.rb | 2 +- qa/qa/page/project/issue/show.rb | 29 +- qa/qa/page/project/job/show.rb | 31 +- qa/qa/page/project/menu.rb | 2 +- qa/qa/page/project/milestone/new.rb | 2 +- qa/qa/page/project/new.rb | 18 +- .../project/operations/environments/index.rb | 2 +- .../operations/kubernetes/add_existing.rb | 2 +- .../project/operations/kubernetes/show.rb | 17 +- qa/qa/page/project/pipeline/index.rb | 2 +- qa/qa/page/project/pipeline/show.rb | 16 +- qa/qa/page/project/settings/deploy_keys.rb | 4 +- .../settings/mirroring_repositories.rb | 2 +- .../project/settings/protected_branches.rb | 10 +- qa/qa/page/project/show.rb | 14 +- qa/qa/page/project/sub_menus/operations.rb | 4 +- qa/qa/page/project/sub_menus/repository.rb | 2 +- qa/qa/page/project/sub_menus/settings.rb | 8 +- qa/qa/page/project/web_ide/edit.rb | 10 +- qa/qa/page/project/wiki/edit.rb | 10 +- qa/qa/page/project/wiki/new.rb | 2 +- qa/qa/page/project/wiki/show.rb | 2 +- qa/qa/resource/api_fabricator.rb | 3 - qa/qa/resource/base.rb | 4 + qa/qa/resource/branch.rb | 2 +- qa/qa/resource/ci_variable.rb | 2 +- qa/qa/resource/deploy_key.rb | 2 +- qa/qa/resource/deploy_token.rb | 2 +- qa/qa/resource/events/base.rb | 37 + qa/qa/resource/events/project.rb | 25 + qa/qa/resource/fork.rb | 10 +- qa/qa/resource/group.rb | 4 +- qa/qa/resource/kubernetes_cluster.rb | 12 +- qa/qa/resource/label.rb | 4 +- qa/qa/resource/merge_request.rb | 5 +- qa/qa/resource/personal_access_token.rb | 4 +- qa/qa/resource/project.rb | 2 + .../resource/project_imported_from_github.rb | 6 +- qa/qa/resource/project_milestone.rb | 2 +- qa/qa/resource/repository/project_push.rb | 4 + qa/qa/resource/repository/wiki_push.rb | 2 +- qa/qa/resource/runner.rb | 2 +- qa/qa/resource/sandbox.rb | 4 +- qa/qa/resource/settings/hashed_storage.rb | 2 +- qa/qa/resource/snippet.rb | 30 + qa/qa/resource/ssh_key.rb | 2 +- qa/qa/resource/wiki.rb | 2 +- qa/qa/runtime/address.rb | 7 + qa/qa/runtime/api/client.rb | 2 +- qa/qa/runtime/browser.rb | 2 + qa/qa/runtime/env.rb | 2 +- qa/qa/runtime/feature.rb | 36 + qa/qa/scenario/bootable.rb | 10 +- qa/qa/scenario/shared_attributes.rb | 12 + qa/qa/scenario/template.rb | 31 +- qa/qa/scenario/test/instance/all.rb | 1 + qa/qa/scenario/test/instance/smoke.rb | 1 + qa/qa/scenario/test/integration/mattermost.rb | 9 +- qa/qa/service/kubernetes_cluster.rb | 2 +- .../project/add_project_member_spec.rb | 4 +- .../1_manage/project/create_project_spec.rb | 3 +- .../project/import_github_repo_spec.rb | 29 +- .../project/view_project_activity_spec.rb | 7 +- .../2_plan/issue/create_issue_spec.rb | 18 +- .../2_plan/issue/issue_suggestions_spec.rb | 3 +- .../create_merge_request_spec.rb | 59 +- .../merge_merge_request_from_fork_spec.rb | 3 +- .../rebase_merge_request_spec.rb | 2 +- .../squash_merge_request_spec.rb | 9 +- .../view_merge_request_diff_patch_spec.rb | 34 + .../add_list_delete_branches_spec.rb | 6 +- .../3_create/repository/add_ssh_key_spec.rb | 2 +- .../3_create/repository/clone_spec.rb | 18 +- .../repository/protocol_v2_push_http_spec.rb | 6 +- .../repository/protocol_v2_push_ssh_spec.rb | 8 +- .../push_http_private_token_spec.rb | 3 +- .../push_mirroring_over_http_spec.rb | 4 +- .../push_over_http_file_size_spec.rb | 12 +- .../repository/push_over_http_spec.rb | 3 +- .../repository/push_protected_branch_spec.rb | 8 +- .../3_create/repository/use_ssh_key_spec.rb | 7 +- ...b => user_views_commit_diff_patch_spec.rb} | 2 +- .../3_create/snippet/create_snippet_spec.rb | 32 + .../web_ide/add_file_template_spec.rb | 3 +- .../wiki/create_edit_clone_push_wiki_spec.rb | 2 +- .../ci_variable/add_ci_variable_spec.rb | 8 +- .../create_and_process_pipeline_spec.rb | 8 +- .../deploy_key/clone_using_deploy_key_spec.rb | 13 +- .../deploy_token/add_deploy_token_spec.rb | 4 +- .../create_project_with_auto_devops_spec.rb | 254 +- .../create_group_with_mattermost_team_spec.rb | 2 +- qa/qa/specs/helpers/quarantine.rb | 68 + qa/qa/support/api.rb | 13 + qa/qa/support/page/logging.rb | 25 +- qa/qa/support/retrier.rb | 28 + qa/qa/support/waiter.rb | 31 + qa/qa/tools/delete_subgroups.rb | 6 +- qa/qa/tools/generate_perf_testdata.rb | 194 + .../revoke_all_personal_access_tokens.rb | 2 +- qa/spec/git/repository_spec.rb | 6 +- qa/spec/{support => helpers}/stub_env.rb | 2 +- qa/spec/page/base_spec.rb | 30 + qa/spec/page/logging_spec.rb | 28 +- qa/spec/resource/base_spec.rb | 2 +- qa/spec/resource/events/base_spec.rb | 29 + qa/spec/resource/events/project_spec.rb | 69 + qa/spec/runtime/api/client_spec.rb | 2 +- qa/spec/runtime/env_spec.rb | 8 +- qa/spec/runtime/feature_spec.rb | 41 + qa/spec/runtime/scenario_spec.rb | 8 + qa/spec/scenario/bootable_spec.rb | 9 +- qa/spec/scenario/template_spec.rb | 28 + .../scenario/test/integration/github_spec.rb | 2 +- .../test/integration/mattermost_spec.rb | 11 +- .../scenario_shared_examples.rb | 73 + qa/spec/spec_helper.rb | 65 +- qa/spec/spec_helper_spec.rb | 355 - qa/spec/specs/helpers/quarantine_spec.rb | 271 + .../scenario_shared_examples.rb | 49 - qa/spec/support/waiter_spec.rb | 37 + rubocop/cop/include_action_view_context.rb | 31 + .../cop/migration/update_column_in_batches.rb | 2 +- rubocop/rubocop.rb | 1 + scripts/build_assets_image | 23 +- scripts/frontend/postinstall.js | 2 +- scripts/frontend/prettier.js | 4 +- .../stylelint-duplicate-selectors.js | 23 + .../stylelint/stylelint-utility-classes.js | 24 + .../stylelint/stylelint-utility-map.js | 54 + scripts/frontend/stylelint/stylelint-utils.js | 77 + .../frontend/stylelint/utility-classes-map.js | 216 + scripts/gitaly_test.rb | 14 +- scripts/insert-rspec-profiling-data | 47 + scripts/lint-changelog-yaml | 2 +- scripts/lint-doc.sh | 2 +- scripts/merge-simplecov | 8 +- scripts/review_apps/review-apps.sh | 294 +- scripts/security-harness | 2 +- scripts/static-analysis | 1 + scripts/trigger-build | 2 +- spec/config/application_spec.rb | 34 + spec/config/object_store_settings_spec.rb | 2 +- .../admin/appearances_controller_spec.rb | 91 + .../application_settings_controller_spec.rb | 29 + .../admin/groups_controller_spec.rb | 6 + .../admin/projects_controller_spec.rb | 10 + .../admin/runners_controller_spec.rb | 19 +- .../admin/users_controller_spec.rb | 25 + .../application_controller_spec.rb | 8 + .../autocomplete_controller_spec.rb | 31 + .../boards/issues_controller_spec.rb | 26 + .../concerns/issuable_collections_spec.rb | 106 +- .../concerns/project_unauthorized_spec.rb | 51 + .../concerns/send_file_upload_spec.rb | 2 +- .../dashboard/groups_controller_spec.rb | 54 +- .../dashboard/labels_controller_spec.rb | 6 +- .../dashboard/milestones_controller_spec.rb | 8 +- .../dashboard/projects_controller_spec.rb | 50 +- .../dashboard/todos_controller_spec.rb | 6 + spec/controllers/dashboard_controller_spec.rb | 33 + .../explore/projects_controller_spec.rb | 30 + spec/controllers/graphql_controller_spec.rb | 119 +- .../groups/avatars_controller_spec.rb | 10 + .../groups/boards_controller_spec.rb | 30 +- .../groups/children_controller_spec.rb | 12 + .../clusters/applications_controller_spec.rb | 100 +- .../groups/clusters_controller_spec.rb | 2 +- .../groups/group_members_controller_spec.rb | 86 + .../groups/labels_controller_spec.rb | 6 + .../groups/milestones_controller_spec.rb | 6 + .../groups/settings/ci_cd_controller_spec.rb | 88 + .../groups/variables_controller_spec.rb | 34 + spec/controllers/groups_controller_spec.rb | 160 +- spec/controllers/help_controller_spec.rb | 40 + .../import/gitea_controller_spec.rb | 8 + .../import/github_controller_spec.rb | 4 + .../omniauth_callbacks_controller_spec.rb | 31 +- .../profiles/preferences_controller_spec.rb | 3 +- .../autocomplete_sources_controller_spec.rb | 34 +- .../projects/blob_controller_spec.rb | 64 +- .../projects/boards_controller_spec.rb | 26 +- .../projects/ci/lints_controller_spec.rb | 16 +- .../clusters/applications_controller_spec.rb | 97 +- .../projects/commits_controller_spec.rb | 4 +- .../prometheus_api_controller_spec.rb | 152 + .../projects/environments_controller_spec.rb | 57 +- .../projects/git_http_controller_spec.rb | 15 + .../projects/graphs_controller_spec.rb | 17 + .../projects/issues_controller_spec.rb | 11 + .../projects/jobs_controller_spec.rb | 2 +- .../merge_requests/diffs_controller_spec.rb | 13 +- .../merge_requests_controller_spec.rb | 6 + .../projects/mirrors_controller_spec.rb | 4 +- .../projects/notes_controller_spec.rb | 103 +- .../projects/pages_controller_spec.rb | 12 + .../projects/pages_domains_controller_spec.rb | 17 +- .../projects/pipelines_controller_spec.rb | 4 + .../project_members_controller_spec.rb | 2 +- .../projects/refs_controller_spec.rb | 4 + .../serverless/functions_controller_spec.rb | 9 + .../projects/services_controller_spec.rb | 6 +- .../settings/ci_cd_controller_spec.rb | 9 + .../settings/operations_controller_spec.rb | 59 +- .../projects/templates_controller_spec.rb | 112 +- .../projects/tree_controller_spec.rb | 2 + spec/controllers/projects_controller_spec.rb | 46 + .../registrations_controller_spec.rb | 6 +- spec/controllers/search_controller_spec.rb | 63 + .../snippets/notes_controller_spec.rb | 113 + spec/controllers/snippets_controller_spec.rb | 4 +- spec/controllers/uploads_controller_spec.rb | 219 +- .../user_callouts_controller_spec.rb | 8 +- spec/controllers/users_controller_spec.rb | 46 +- spec/db/schema_spec.rb | 4 +- spec/factories/ci/builds.rb | 9 + spec/factories/ci/group_variables.rb | 1 + spec/factories/ci/pipelines.rb | 8 + spec/factories/ci/variables.rb | 1 + spec/factories/clusters/clusters.rb | 9 +- spec/factories/clusters/providers/gcp.rb | 4 + spec/factories/commit_statuses.rb | 4 + spec/factories/groups.rb | 9 + .../{import_state.rb => import_states.rb} | 0 spec/factories/merge_requests.rb | 57 + spec/factories/personal_access_tokens.rb | 5 +- spec/factories/project_daily_statistics.rb | 8 + spec/factories/projects.rb | 23 + spec/factories/services.rb | 6 + spec/factories/suggestions.rb | 6 + spec/factories/users.rb | 11 +- spec/features/admin/admin_appearance_spec.rb | 32 + spec/features/admin/admin_runners_spec.rb | 50 + spec/features/boards/boards_spec.rb | 2 +- spec/features/boards/sidebar_spec.rb | 18 + .../clusters/cluster_detail_page_spec.rb | 86 +- .../commits/user_uses_quick_actions_spec.rb | 23 +- spec/features/cycle_analytics_spec.rb | 19 - spec/features/dashboard/activity_spec.rb | 17 +- ...ith_external_authorization_service_spec.rb | 38 + .../features/dashboard/merge_requests_spec.rb | 25 + spec/features/dashboard/projects_spec.rb | 11 +- spec/features/dashboard/shortcuts_spec.rb | 2 +- spec/features/dashboard/snippets_spec.rb | 15 + spec/features/dashboard/todos/todos_spec.rb | 28 +- ...splay_system_header_and_footer_bar_spec.rb | 137 + spec/features/expand_collapse_diffs_spec.rb | 4 +- spec/features/explore/groups_list_spec.rb | 6 +- spec/features/group_variables_spec.rb | 2 +- spec/features/groups/clusters/user_spec.rb | 2 +- ...ith_external_authorization_service_spec.rb | 58 + spec/features/groups/group_settings_spec.rb | 8 + spec/features/groups/labels/create_spec.rb | 23 + spec/features/groups/labels/index_spec.rb | 14 +- spec/features/groups/settings/ci_cd_spec.rb | 45 +- spec/features/groups_spec.rb | 2 +- spec/features/help_pages_spec.rb | 6 +- .../ide/user_opens_merge_request_spec.rb | 21 + spec/features/issuables/issuable_list_spec.rb | 24 + .../internal_references_spec.rb | 2 +- .../filtered_search/dropdown_assignee_spec.rb | 6 +- .../filtered_search/dropdown_author_spec.rb | 6 +- .../filtered_search/dropdown_emoji_spec.rb | 6 +- .../filtered_search/dropdown_hint_spec.rb | 11 +- .../dropdown_milestone_spec.rb | 6 +- .../issues/filtered_search/search_bar_spec.rb | 4 +- .../filtered_search/visual_tokens_spec.rb | 21 - spec/features/issues/form_spec.rb | 2 +- spec/features/issues/gfm_autocomplete_spec.rb | 84 +- spec/features/issues/issue_detail_spec.rb | 2 +- .../issues/user_creates_issue_spec.rb | 18 + .../issues/user_uses_quick_actions_spec.rb | 190 +- spec/features/issues_spec.rb | 11 + spec/features/labels_hierarchy_spec.rb | 2 +- spec/features/markdown/copy_as_gfm_spec.rb | 11 - .../maintainer_edits_fork_spec.rb | 4 +- ...ommits_from_memebers_who_can_merge_spec.rb | 2 +- .../user_creates_image_diff_notes_spec.rb | 5 + .../user_creates_merge_request_spec.rb | 2 + .../user_posts_diff_notes_spec.rb | 2 +- .../merge_request/user_posts_notes_spec.rb | 14 +- .../user_scrolls_to_note_on_load_spec.rb | 38 +- .../user_sees_merge_request_pipelines_spec.rb | 86 +- .../user_sees_merge_widget_spec.rb | 115 +- .../merge_request/user_sees_versions_spec.rb | 2 +- .../user_suggests_changes_on_diff_spec.rb | 111 +- .../user_uses_quick_actions_spec.rb | 234 +- .../merge_request/user_views_diffs_spec.rb | 10 + .../user_views_open_merge_request_spec.rb | 2 +- .../user_filters_by_target_branch_spec.rb | 45 + spec/features/milestone_spec.rb | 28 + ...er_visits_profile_preferences_page_spec.rb | 24 + spec/features/project_variables_spec.rb | 2 +- .../artifacts/user_browses_artifacts_spec.rb | 6 + .../projects/badges/pipeline_badge_spec.rb | 19 + .../features/projects/blobs/blob_show_spec.rb | 2 +- spec/features/projects/blobs/edit_spec.rb | 15 +- .../branches/user_views_branches_spec.rb | 2 + spec/features/projects/branches_spec.rb | 32 + ...ssification_label_on_project_pages_spec.rb | 22 + .../projects/clusters/applications_spec.rb | 96 +- spec/features/projects/clusters/gcp_spec.rb | 2 +- spec/features/projects/clusters/user_spec.rb | 2 +- .../commit/mini_pipeline_graph_spec.rb | 2 +- .../projects/environments/environment_spec.rb | 10 +- .../environments/environments_spec.rb | 35 +- .../projects/files/user_creates_files_spec.rb | 2 + .../projects/files/user_edits_files_spec.rb | 2 + .../features/projects/forks/fork_list_spec.rb | 35 + spec/features/projects/graph_spec.rb | 2 + ...ith_external_authorization_enabled_spec.rb | 128 + spec/features/projects/jobs_spec.rb | 109 + .../projects/members/invite_group_spec.rb | 2 +- spec/features/projects/new_project_spec.rb | 19 + spec/features/projects/pages_spec.rb | 105 +- .../projects/pipeline_schedules_spec.rb | 6 +- .../projects/pipelines/pipeline_spec.rb | 224 +- .../projects/pipelines/pipelines_spec.rb | 147 +- .../projects/serverless/functions_spec.rb | 2 +- .../services/user_activates_hipchat_spec.rb | 2 + .../user_activates_issue_tracker_spec.rb | 35 +- .../services/user_activates_youtrack_spec.rb | 89 + ...nal_authorization_service_settings_spec.rb | 21 + .../settings/forked_project_settings_spec.rb | 1 + .../settings/operations_settings_spec.rb | 77 + .../settings/pipelines_settings_spec.rb | 31 + .../settings/project_settings_spec.rb | 43 + ...er_manages_merge_requests_settings_spec.rb | 4 +- .../show/user_sees_git_instructions_spec.rb | 2 +- .../user_sees_setup_shortcut_buttons_spec.rb | 58 +- .../snippets/user_comments_on_snippet_spec.rb | 4 +- .../projects/user_creates_project_spec.rb | 27 + .../projects/user_sees_sidebar_spec.rb | 102 + .../projects/wiki/markdown_preview_spec.rb | 7 +- .../wiki/user_creates_wiki_page_spec.rb | 10 +- .../wiki/user_updates_wiki_page_spec.rb | 7 +- .../wiki/user_views_wiki_page_spec.rb | 7 +- .../wiki/user_views_wiki_pages_spec.rb | 89 + spec/features/projects_spec.rb | 4 + spec/features/raven_js_spec.rb | 4 +- .../search/user_searches_for_users_spec.rb | 83 + .../security/group/private_access_spec.rb | 6 +- .../notes_on_personal_snippets_spec.rb | 4 +- .../snippets/user_creates_snippet_spec.rb | 4 +- spec/features/tags/master_deletes_tag_spec.rb | 2 +- spec/features/task_lists_spec.rb | 8 +- spec/features/user_opens_link_to_comment.rb | 33 + spec/features/user_sees_revert_modal_spec.rb | 6 +- spec/features/users/login_spec.rb | 25 +- spec/features/users/overview_spec.rb | 6 +- spec/features/users/show_spec.rb | 22 + spec/features/users/signup_spec.rb | 28 + spec/finders/admin/runners_finder_spec.rb | 8 + .../acts_as_taggable_on/tags_finder_spec.rb | 66 + spec/finders/concerns/finder_methods_spec.rb | 22 +- spec/finders/group_projects_finder_spec.rb | 39 +- spec/finders/issues_finder_spec.rb | 234 +- spec/finders/labels_finder_spec.rb | 13 + spec/finders/merge_requests_finder_spec.rb | 156 +- spec/finders/milestones_finder_spec.rb | 2 +- .../serverless/functions_finder_spec.rb | 32 +- spec/finders/snippets_finder_spec.rb | 335 +- spec/finders/todos_finder_spec.rb | 7 + spec/finders/users_finder_spec.rb | 31 +- .../api/graphql/introspection.graphql | 92 + spec/fixtures/api/schemas/board.json | 3 +- spec/fixtures/api/schemas/cluster_status.json | 1 + .../api/schemas/entities/diff_viewer.json | 11 + spec/fixtures/api/schemas/entities/issue.json | 3 +- .../api/schemas/entities/issue_boards.json | 3 +- .../entities/merge_request_sidebar.json | 3 +- .../entities/merge_request_widget.json | 7 +- spec/fixtures/api/schemas/environment.json | 1 + spec/fixtures/api/schemas/issue.json | 5 +- spec/fixtures/api/schemas/issues.json | 3 +- .../schemas/public_api/v4/group_labels.json | 1 + .../schemas/public_api/v4/merge_request.json | 130 + .../schemas/public_api/v4/merge_requests.json | 122 +- .../schemas/public_api/v4/pipeline/basic.json | 3 +- .../public_api/v4/pipeline/detail.json | 32 + spec/fixtures/api/schemas/variable.json | 2 + spec/fixtures/blockquote_fence_after.md | 16 + spec/fixtures/clusters/sample_cert.pem | 2 +- spec/fixtures/passphrase_x509_certificate.crt | 27 + .../passphrase_x509_certificate_pk.key | 54 + .../master/gl-container-scanning-report.json | 23 +- .../gl-dependency-scanning-report.json | 104 + .../remediations/remediation.patch | 180 + .../security-reports/remediations/yarn.lock | 104 + spec/fixtures/trace/sample_trace | 18 +- spec/fixtures/valid.po | 3 - spec/fixtures/x509_certificate.crt | 27 + spec/fixtures/x509_certificate_pk.key | 51 + spec/frontend/.eslintrc.yml | 9 +- spec/frontend/__mocks__/file_mock.js | 1 + .../behaviors/secret_values_spec.js | 0 .../blob/blob_fork_suggestion_spec.js | 0 .../boards/modal_store_spec.js | 0 .../clusters/clusters_bundle_spec.js | 166 +- .../components/application_row_spec.js | 22 +- .../clusters/components/applications_spec.js | 197 +- .../clusters/services/mock_data.js | 14 +- .../clusters/stores/clusters_store_spec.js | 3 + .../limit_warning_component_spec.js | 0 .../diffs/components/diff_stats_spec.js | 0 .../diffs/components/edit_button_spec.js | 61 + .../components/hidden_files_warning_spec.js | 48 + .../diffs/components/no_changes_spec.js | 0 spec/frontend/environment.js | 52 + .../components/error_tracking_list_spec.js | 22 +- .../error_tracking/store/mutation_spec.js | 0 .../filtered_search_token_keys_spec.js | 0 .../recent_searches_service_error_spec.js | 0 .../stores/recent_searches_store_spec.js | 0 .../frequent_items/store/getters_spec.js | 0 .../gfm_auto_complete_spec.js | 182 +- spec/frontend/helpers/class_spec_helper.js | 9 + spec/frontend/helpers/fixtures.js | 36 + spec/frontend/helpers/locale_helper.js | 11 + spec/frontend/helpers/monitor_helper_spec.js | 45 + .../helpers/scroll_into_view_promise.js | 28 + .../helpers/set_timeout_promise_helper.js | 4 + spec/frontend/helpers/timeout.js | 24 + .../frontend/helpers/user_mock_data_helper.js | 14 + spec/frontend/helpers/vue_component_helper.js | 18 + .../helpers/vue_mount_component_helper.js | 38 + spec/frontend/helpers/vue_resource_helper.js | 11 + .../frontend/helpers/vue_test_utils_helper.js | 19 + spec/frontend/helpers/vuex_action_helper.js | 104 + .../helpers/wait_for_attribute_change.js | 16 + spec/frontend/helpers/wait_for_promises.js | 1 + .../ide/lib/common/disposable_spec.js | 0 .../ide/lib/diff/diff_spec.js | 0 .../ide/lib/editor_options_spec.js | 0 spec/frontend/ide/lib/files_spec.js | 78 + .../stores/modules/commit/mutations_spec.js | 18 +- .../modules/file_templates/getters_spec.js | 0 .../modules/file_templates/mutations_spec.js | 0 .../ide/stores/modules/pane/getters_spec.js | 0 .../ide/stores/modules/pane/mutations_spec.js | 0 .../stores/modules/pipelines/getters_spec.js | 0 .../ide/stores/mutations/branch_spec.js | 0 .../stores/mutations/merge_request_spec.js | 18 + .../image_diff/view_types_spec.js | 0 .../import_projects/store/getters_spec.js | 83 + .../import_projects/store/mutations_spec.js | 34 + .../components/app_spec.js | 0 .../components/item_spec.js | 0 .../issuable_suggestions/mock_data.js | 0 .../jobs/components/empty_state_spec.js | 0 .../jobs/components/erased_block_spec.js | 0 .../components/sidebar_detail_row_spec.js | 0 .../jobs/components/stuck_block_spec.js | 0 .../jobs/store/getters_spec.js | 55 + .../jobs/store/mutations_spec.js | 0 spec/frontend/labels_select_spec.js | 116 + .../lib/utils/ajax_cache_spec.js | 91 +- spec/frontend/lib/utils/autosave_spec.js | 64 + .../lib/utils/cache_spec.js | 0 .../lib/utils/grammar_spec.js | 0 .../lib/utils/image_utility_spec.js | 0 .../lib/utils/number_utility_spec.js | 11 + .../lib/utils/text_utility_spec.js | 27 + .../locale/ensure_single_line_spec.js | 0 .../locale/sprintf_spec.js | 0 .../__snapshots__/mr_popover_spec.js.snap | 93 + spec/frontend/mr_popover/index_spec.js | 46 + spec/frontend/mr_popover/mr_popover_spec.js | 61 + .../notebook/lib/highlight_spec.js | 0 ...iscussion_jump_to_next_button_spec.js.snap | 20 + .../discussion_jump_to_next_button_spec.js | 30 + .../discussion_reply_placeholder_spec.js | 0 .../discussion_resolve_button_spec.js | 0 .../notes/components/note_attachment_spec.js | 0 .../notes/components/note_edited_text_spec.js | 0 .../admin/abuse_reports/abuse_reports_spec.js | 6 +- .../services/performance_bar_service_spec.js | 0 .../pipelines/blank_state_spec.js | 0 .../pipelines/empty_state_spec.js | 0 .../pipelines/pipeline_store_spec.js | 0 .../pipelines/pipelines_store_spec.js | 0 .../registry/getters_spec.js | 0 .../reports/components/report_link_spec.js | 0 .../reports/components/report_section_spec.js | 2 +- .../reports/store/utils_spec.js | 0 .../serverless/components/area_spec.js | 122 + .../components/environment_row_spec.js | 41 +- .../components/function_details_spec.js | 117 + .../components/function_row_spec.js | 14 +- .../serverless/components/functions_spec.js | 106 + .../components/missing_prometheus_spec.js | 38 + .../serverless/components/pod_box_spec.js | 23 + .../serverless/components/url_spec.js | 21 +- .../serverless/mock_data.js | 57 + .../frontend/serverless/store/actions_spec.js | 90 + .../frontend/serverless/store/getters_spec.js | 43 + .../serverless/store/mutations_spec.js | 86 + spec/frontend/serverless/utils.js | 20 + .../sidebar/confidential_edit_buttons_spec.js | 0 .../confidential_edit_form_buttons_spec.js | 0 .../sidebar/lock/edit_form_spec.js | 0 spec/frontend/test_setup.js | 65 +- .../u2f/util_spec.js | 0 .../components/mr_widget_container_spec.js | 0 .../components/mr_widget_icon_spec.js | 0 .../components/states/commit_edit_spec.js | 0 .../mr_widget_commit_message_dropdown_spec.js | 0 .../states/mr_widget_commits_header_spec.js | 26 + .../stores/get_state_key_spec.js | 0 .../resizable_chart_container_spec.js.snap | 21 + .../vue_shared/components/callout_spec.js | 0 .../vue_shared/components/code_block_spec.js | 0 .../diff_viewer/viewers/mode_changed_spec.js | 0 .../vue_shared/components/identicon_spec.js | 0 .../components/lib/utils/dom_utils_spec.js | 0 .../markdown/suggestion_diff_row_spec.js | 98 + .../components/pagination_links_spec.js | 0 .../resizable_chart_container_spec.js | 64 + .../components/time_ago_tooltip_spec.js | 0 .../modules/modal/mutations_spec.js | 0 spec/graphql/features/authorization_spec.rb | 335 + spec/graphql/gitlab_schema_spec.rb | 44 +- spec/graphql/resolvers/base_resolver_spec.rb | 31 + .../graphql/resolvers/issues_resolver_spec.rb | 71 +- ...pec.rb => merge_requests_resolver_spec.rb} | 34 +- .../resolvers/metadata_resolver_spec.rb | 11 + spec/graphql/types/base_field_spec.rb | 19 + .../types/ci/detailed_status_type_spec.rb | 11 + .../graphql/types/issuable_state_enum_spec.rb | 9 + spec/graphql/types/issue_state_enum_spec.rb | 9 + spec/graphql/types/issue_type_spec.rb | 2 + spec/graphql/types/label_type_spec.rb | 6 + .../types/merge_request_state_enum_spec.rb | 13 + spec/graphql/types/merge_request_type_spec.rb | 11 +- spec/graphql/types/metadata_type_spec.rb | 6 + spec/graphql/types/milestone_type_spec.rb | 9 + .../types/permission_types/issue_spec.rb | 4 +- .../types/permission_types/project_spec.rb | 4 +- spec/graphql/types/project_type_spec.rb | 10 +- spec/graphql/types/query_type_spec.rb | 11 +- spec/graphql/types/user_type_spec.rb | 9 + spec/helpers/appearances_helper_spec.rb | 74 + spec/helpers/auth_helper_spec.rb | 40 +- spec/helpers/auto_devops_helper_spec.rb | 138 +- spec/helpers/blob_helper_spec.rb | 21 + spec/helpers/clusters_helper_spec.rb | 33 + spec/helpers/emails_helper_spec.rb | 54 + spec/helpers/groups_helper_spec.rb | 35 + spec/helpers/icons_helper_spec.rb | 6 +- spec/helpers/import_helper_spec.rb | 57 +- spec/helpers/issuables_helper_spec.rb | 6 +- spec/helpers/labels_helper_spec.rb | 33 + spec/helpers/merge_requests_helper_spec.rb | 2 + spec/helpers/namespaces_helper_spec.rb | 72 +- spec/helpers/preferences_helper_spec.rb | 23 +- spec/helpers/projects_helper_spec.rb | 52 + spec/helpers/search_helper_spec.rb | 2 +- spec/helpers/version_check_helper_spec.rb | 8 +- spec/helpers/wiki_helper_spec.rb | 52 + spec/javascripts/activities_spec.js | 2 +- spec/javascripts/ajax_loading_spinner_spec.js | 2 +- spec/javascripts/api_spec.js | 34 + spec/javascripts/awards_handler_spec.js | 4 +- .../badges/components/badge_list_spec.js | 2 +- .../badges/components/badge_spec.js | 2 +- spec/javascripts/badges/store/actions_spec.js | 4 +- .../javascripts/behaviors/copy_as_gfm_spec.js | 4 +- .../behaviors/quick_submit_spec.js | 4 +- .../behaviors/requires_input_spec.js | 4 +- .../shortcuts/shortcuts_issuable_spec.js | 2 +- .../balsamiq_viewer_integration_spec.js | 4 +- .../blob/blob_file_dropzone_spec.js | 4 +- spec/javascripts/blob/notebook/index_spec.js | 4 +- spec/javascripts/blob/pdf/index_spec.js | 4 +- spec/javascripts/blob/sketch/index_spec.js | 4 +- spec/javascripts/blob/viewer/index_spec.js | 4 +- spec/javascripts/boards/board_list_spec.js | 2 +- .../boards/components/board_spec.js | 16 +- .../boards/components/issue_due_date_spec.js | 4 +- spec/javascripts/boards/issue_spec.js | 2 + .../javascripts/bootstrap_linked_tabs_spec.js | 4 +- spec/javascripts/breakpoints_spec.js | 14 + .../ajax_variable_list_spec.js | 8 +- .../ci_variable_list/ci_variable_list_spec.js | 35 +- .../native_form_variable_list_spec.js | 4 +- .../collapsed_sidebar_todo_spec.js | 2 +- .../commit/pipelines/pipelines_spec.js | 2 +- spec/javascripts/create_item_dropdown_spec.js | 4 +- spec/javascripts/diffs/components/app_spec.js | 417 +- .../components/changed_files_dropdown_spec.js | 1 - .../compare_versions_dropdown_spec.js | 157 +- .../diffs/components/compare_versions_spec.js | 20 + .../diffs/components/diff_content_spec.js | 28 +- .../diffs/components/diff_file_header_spec.js | 242 +- .../diffs/components/diff_file_spec.js | 70 +- .../diffs/components/edit_button_spec.js | 1 - .../components/hidden_files_warning_spec.js | 1 - .../diffs/components/inline_diff_view_spec.js | 2 +- .../components/parallel_diff_view_spec.js | 6 +- .../diffs/components/tree_list_spec.js | 12 +- .../diffs/mock_data/diff_discussions.js | 11 +- spec/javascripts/diffs/mock_data/diff_file.js | 2 + spec/javascripts/diffs/store/actions_spec.js | 190 +- spec/javascripts/diffs/store/getters_spec.js | 24 +- .../javascripts/diffs/store/mutations_spec.js | 90 +- spec/javascripts/diffs/store/utils_spec.js | 81 +- .../dirty_submit/dirty_submit_form_spec.js | 2 + .../confirm_rollback_modal_spec.js | 70 + .../environments/environment_item_spec.js | 20 +- .../environments/environment_rollback_spec.js | 32 +- .../environments/environment_table_spec.js | 234 + .../environments/environments_app_spec.js | 7 +- .../environments/environments_store_spec.js | 70 +- .../folder/environments_folder_view_spec.js | 16 +- .../components/app_spec.js | 63 + .../components/error_tracking_form_spec.js | 91 + .../components/project_dropdown_spec.js | 109 + .../error_tracking_settings/mock.js | 92 + .../store/actions_spec.js | 191 + .../store/getters_spec.js | 93 + .../store/mutation_spec.js | 82 + .../error_tracking_settings/utils_spec.js | 29 + .../filtered_search/dropdown_user_spec.js | 2 +- .../filtered_search/dropdown_utils_spec.js | 2 +- .../filtered_search_visual_tokens_spec.js | 339 +- .../visual_token_value_spec.js | 383 + spec/javascripts/fixtures/.gitignore | 1 + spec/javascripts/fixtures/abuse_reports.rb | 2 +- spec/javascripts/fixtures/admin_users.rb | 2 +- .../fixtures/ajax_loading_spinner.html.haml | 2 - .../fixtures/application_settings.rb | 2 +- .../fixtures/autocomplete_sources.rb | 40 + .../fixtures/balsamiq_viewer.html.haml | 1 - spec/javascripts/fixtures/blob.rb | 3 +- spec/javascripts/fixtures/boards.rb | 2 +- spec/javascripts/fixtures/branches.rb | 2 +- spec/javascripts/fixtures/clusters.rb | 2 +- spec/javascripts/fixtures/commit.rb | 3 +- .../fixtures/create_item_dropdown.html.haml | 13 - spec/javascripts/fixtures/deploy_keys.rb | 2 +- .../fixtures/event_filter.html.haml | 25 - .../fixtures/gl_dropdown.html.haml | 17 - .../fixtures/gl_field_errors.html.haml | 15 - spec/javascripts/fixtures/groups.rb | 6 +- .../fixtures/issuable_filter.html.haml | 8 - .../fixtures/issue_sidebar_label.html.haml | 16 - spec/javascripts/fixtures/issues.rb | 70 +- spec/javascripts/fixtures/jobs.rb | 2 +- .../fixtures/line_highlighter.html.haml | 11 - .../fixtures/linked_tabs.html.haml | 13 - spec/javascripts/fixtures/merge_requests.rb | 17 +- .../fixtures/merge_requests_show.html.haml | 13 - .../fixtures/mini_dropdown_graph.html.haml | 10 - .../fixtures/notebook_viewer.html.haml | 1 - .../fixtures/oauth_remember_me.html.haml | 6 - .../javascripts/fixtures/pdf_viewer.html.haml | 1 - .../fixtures/pipeline_graph.html.haml | 14 - .../fixtures/pipeline_schedules.rb | 4 +- spec/javascripts/fixtures/pipelines.html.haml | 12 - .../project_select_combo_button.html.haml | 6 - spec/javascripts/fixtures/projects.rb | 22 +- .../fixtures/prometheus_service.rb | 2 +- spec/javascripts/fixtures/search.rb | 2 +- .../fixtures/search_autocomplete.html.haml | 9 - spec/javascripts/fixtures/services.rb | 2 +- spec/javascripts/fixtures/sessions.rb | 2 +- .../fixtures/signin_tabs.html.haml | 5 - .../fixtures/sketch_viewer.html.haml | 2 - spec/javascripts/fixtures/snippet.rb | 6 +- spec/javascripts/fixtures/static/README.md | 3 + .../fixtures/static/ajax_loading_spinner.html | 3 + .../fixtures/static/balsamiq_viewer.html | 1 + .../fixtures/static/create_item_dropdown.html | 11 + .../fixtures/static/event_filter.html | 44 + .../fixtures/static/gl_dropdown.html | 26 + .../fixtures/static/gl_field_errors.html | 22 + .../fixtures/static/issuable_filter.html | 9 + .../fixtures/static/issue_sidebar_label.html | 26 + .../fixtures/static/line_highlighter.html | 107 + .../fixtures/static/linked_tabs.html | 20 + .../fixtures/static/merge_requests_show.html | 15 + .../fixtures/static/mini_dropdown_graph.html | 13 + .../fixtures/static/notebook_viewer.html | 1 + .../fixtures/static/oauth_remember_me.html | 6 + .../fixtures/static/pdf_viewer.html | 1 + .../fixtures/static/pipeline_graph.html | 24 + .../fixtures/static/pipelines.html | 3 + .../static/project_select_combo_button.html | 9 + .../fixtures/static/search_autocomplete.html | 15 + .../fixtures/static/signin_tabs.html | 8 + .../fixtures/static/sketch_viewer.html | 3 + spec/javascripts/fixtures/static_fixtures.rb | 22 +- spec/javascripts/fixtures/todos.rb | 2 +- spec/javascripts/fixtures/u2f.rb | 7 +- .../frequent_items/components/app_spec.js | 2 +- .../frequent_items_list_item_spec.js | 62 +- .../frequent_items_search_input_spec.js | 25 +- spec/javascripts/gl_dropdown_spec.js | 4 +- spec/javascripts/gl_field_errors_spec.js | 4 +- .../javascripts/groups/components/app_spec.js | 2 +- spec/javascripts/header_spec.js | 2 +- .../helpers/filtered_search_spec_helper.js | 2 +- .../javascripts/helpers/vuex_action_helper.js | 5 +- .../components/commit_sidebar/actions_spec.js | 84 +- .../commit_sidebar/radio_group_spec.js | 7 + .../ide/components/error_message_spec.js | 2 +- .../ide/components/file_row_extra_spec.js | 2 +- .../ide/components/new_dropdown/index_spec.js | 4 +- .../ide/components/new_dropdown/modal_spec.js | 76 +- .../ide/components/pipelines/list_spec.js | 31 +- .../ide/stores/actions/file_spec.js | 78 +- .../ide/stores/actions/merge_request_spec.js | 142 +- .../ide/stores/actions/project_spec.js | 18 + .../ide/stores/actions/tree_spec.js | 40 +- spec/javascripts/ide/stores/actions_spec.js | 28 +- .../ide/stores/modules/commit/actions_spec.js | 22 +- .../ide/stores/modules/commit/getters_spec.js | 70 +- .../modules/pipelines/mutations_spec.js | 106 +- .../ide/stores/mutations/tree_spec.js | 61 +- spec/javascripts/ide/stores/mutations_spec.js | 14 +- spec/javascripts/ide/stores/utils_spec.js | 125 + .../components/import_projects_table_spec.js | 188 + .../imported_project_table_row_spec.js | 51 + .../provider_repo_table_row_spec.js | 96 + .../import_projects/store/actions_spec.js | 284 + .../integration_settings_form_spec.js | 2 +- .../issue_show/components/app_spec.js | 4 +- .../issue_show/components/description_spec.js | 4 +- spec/javascripts/issue_spec.js | 10 +- .../jobs/components/commit_block_spec.js | 3 +- .../jobs/components/job_app_spec.js | 36 + .../jobs/components/stages_dropdown_spec.js | 188 +- .../unmet_prerequisites_block_spec.js | 37 + spec/javascripts/labels_issue_sidebar_spec.js | 4 +- spec/javascripts/labels_select_spec.js | 52 - spec/javascripts/lazy_loader_spec.js | 6 +- .../lib/utils/common_utils_spec.js | 41 +- spec/javascripts/lib/utils/higlight_spec.js | 43 + spec/javascripts/lib/utils/poll_spec.js | 32 + spec/javascripts/line_highlighter_spec.js | 4 +- spec/javascripts/merge_request_spec.js | 8 +- spec/javascripts/merge_request_tabs_spec.js | 6 +- .../mini_pipeline_graph_dropdown_spec.js | 4 +- .../monitoring/charts/area_spec.js | 81 +- spec/javascripts/monitoring/dashboard_spec.js | 139 +- spec/javascripts/monitoring/mock_data.js | 5 + .../monitoring/monitoring_store_spec.js | 24 + spec/javascripts/monitoring/utils_spec.js | 29 + spec/javascripts/new_branch_spec.js | 4 +- .../components/discussion_filter_note_spec.js | 93 + .../components/discussion_filter_spec.js | 22 +- .../discussion_jump_to_next_button_spec.js | 33 - ...scussion_resolve_with_issue_button_spec.js | 31 + .../note_actions/reply_button_spec.js | 22 +- .../notes/components/note_actions_spec.js | 104 +- .../notes/components/note_app_spec.js | 29 +- .../notes/components/note_form_spec.js | 247 +- .../components/noteable_discussion_spec.js | 53 +- .../notes/components/noteable_note_spec.js | 118 +- spec/javascripts/notes/mock_data.js | 6 +- spec/javascripts/notes/stores/actions_spec.js | 152 + spec/javascripts/notes/stores/getters_spec.js | 8 + .../javascripts/notes/stores/mutation_spec.js | 38 +- spec/javascripts/notes_spec.js | 2 +- spec/javascripts/oauth_remember_me_spec.js | 4 +- .../account_and_limits_spec.js | 2 +- .../pages/admin/users/new/index_spec.js | 2 +- .../components/timezone_dropdown_spec.js | 167 + .../new/preserve_url_fragment_spec.js | 4 +- .../persistent_user_callout_spec.js | 88 + .../pipelines/graph/action_component_spec.js | 17 +- .../graph/stage_column_component_spec.js | 4 +- .../pipelines/pipeline_url_spec.js | 12 +- spec/javascripts/pipelines/pipelines_spec.js | 2 +- .../pipelines/pipelines_table_row_spec.js | 4 +- spec/javascripts/pipelines/stage_spec.js | 16 +- spec/javascripts/pipelines_spec.js | 4 +- .../project_select_combo_button_spec.js | 2 +- .../gke_project_id_dropdown_spec.js | 44 +- .../prometheus_metrics_spec.js | 2 +- spec/javascripts/read_more_spec.js | 2 +- .../registry/components/app_spec.js | 2 +- .../components/related_merge_requests_spec.js | 89 + .../store/actions_spec.js | 110 + .../store/mutations_spec.js | 49 + .../grouped_test_reports_app_spec.js | 10 +- spec/javascripts/right_sidebar_spec.js | 2 +- spec/javascripts/search_autocomplete_spec.js | 4 +- spec/javascripts/search_spec.js | 2 +- .../serverless/components/functions_spec.js | 68 - .../stores/serverless_store_spec.js | 36 - spec/javascripts/settings_panels_spec.js | 4 +- spec/javascripts/shortcuts_spec.js | 2 +- spec/javascripts/sidebar/assignees_spec.js | 13 + .../sidebar/sidebar_assignees_spec.js | 4 +- spec/javascripts/sidebar/todo_spec.js | 6 +- spec/javascripts/signin_tabs_memoizer_spec.js | 2 +- spec/javascripts/test_bundle.js | 73 +- spec/javascripts/todos_spec.js | 4 +- spec/javascripts/u2f/authenticate_spec.js | 4 +- spec/javascripts/u2f/register_spec.js | 4 +- spec/javascripts/user_popovers_spec.js | 2 +- .../components/deployment_spec.js | 81 +- .../mr_widget_alert_message_spec.js | 77 + .../components/mr_widget_header_spec.js | 32 +- .../components/mr_widget_pipeline_spec.js | 83 +- .../components/mr_widget_status_icon_spec.js | 2 +- .../mr_widget_auto_merge_failed_spec.js | 2 +- .../states/mr_widget_checking_spec.js | 2 +- .../states/mr_widget_failed_to_merge_spec.js | 2 +- .../states/mr_widget_ready_to_merge_spec.js | 163 +- spec/javascripts/vue_mr_widget/mock_data.js | 12 + .../vue_mr_widget/mr_widget_options_spec.js | 81 + .../components/changed_file_icon_spec.js | 21 +- .../vue_shared/components/commit_spec.js | 90 +- .../diff_viewer/diff_viewer_spec.js | 4 + .../vue_shared/components/file_icon_spec.js | 7 +- .../vue_shared/components/file_row_spec.js | 60 + .../components/header_ci_component_spec.js | 2 +- .../issue/related_issuable_item_spec.js | 194 + .../issue/related_issuable_mock_data.js | 111 + .../components/markdown/field_spec.js | 8 +- .../components/markdown/header_spec.js | 2 +- .../markdown/suggestion_diff_spec.js | 66 +- .../components/markdown/suggestions_spec.js | 109 +- .../components/notes/system_note_spec.js | 6 + .../components/panel_resizer_spec.js | 9 +- .../project_list_item_spec.js | 110 + .../project_selector/project_selector_spec.js | 132 + .../labels_select/dropdown_button_spec.js | 15 +- .../dropdown_value_collapsed_spec.js | 20 +- .../labels_select/dropdown_value_spec.js | 40 +- .../sidebar/labels_select/mock_data.js | 7 + .../components/table_pagination_spec.js | 194 +- .../user_avatar/user_avatar_link_spec.js | 18 +- .../user_popover/user_popover_spec.js | 2 +- spec/javascripts/zen_mode_spec.js | 2 +- .../api/entities/job_request/image_spec.rb | 31 + .../lib/api/entities/job_request/port_spec.rb | 22 + .../lib/api/helpers/custom_validators_spec.rb | 27 +- spec/lib/api/helpers/pagination_spec.rb | 161 +- .../helpers/related_resources_helpers_spec.rb | 34 + spec/lib/backup/uploads_spec.rb | 18 + .../filter/blockquote_fence_filter_spec.rb | 2 +- .../external_issue_reference_filter_spec.rb | 36 + .../merge_request_reference_filter_spec.rb | 25 +- spec/lib/banzai/filter/output_safety_spec.rb | 29 + .../lib/banzai/filter/plantuml_filter_spec.rb | 6 +- .../filter/relative_link_filter_spec.rb | 5 + .../banzai/filter/suggestion_filter_spec.rb | 14 +- .../filter/syntax_highlight_filter_spec.rb | 32 +- spec/lib/banzai/suggestions_parser_spec.rb | 32 - spec/lib/bitbucket_server/client_spec.rb | 4 +- spec/lib/event_filter_spec.rb | 8 +- spec/lib/feature_spec.rb | 5 +- spec/lib/forever_spec.rb | 4 +- spec/lib/gitlab/auth/ldap/config_spec.rb | 153 +- spec/lib/gitlab/auth/o_auth/user_spec.rb | 11 +- spec/lib/gitlab/authorized_keys_spec.rb | 194 + ...ze_merge_request_diffs_and_commits_spec.rb | 6 +- .../digest_column_spec.rb | 4 +- ...cluster_kubernetes_namespace_table_spec.rb | 8 +- .../populate_fork_networks_range_spec.rb | 2 +- ...late_merge_request_assignees_table_spec.rb | 56 + .../gitlab/badge/pipeline/template_spec.rb | 10 + spec/lib/gitlab/chat/command_spec.rb | 77 + spec/lib/gitlab/chat/output_spec.rb | 101 + spec/lib/gitlab/chat/responder/base_spec.rb | 48 + spec/lib/gitlab/chat/responder/slack_spec.rb | 77 + spec/lib/gitlab/chat/responder_spec.rb | 32 + spec/lib/gitlab/chat_spec.rb | 23 + spec/lib/gitlab/checks/branch_check_spec.rb | 146 +- spec/lib/gitlab/checks/lfs_check_spec.rb | 12 + spec/lib/gitlab/ci/build/image_spec.rb | 25 +- .../gitlab/ci/build/policy/changes_spec.rb | 56 +- spec/lib/gitlab/ci/build/policy/refs_spec.rb | 40 + .../gitlab/ci/build/policy/variables_spec.rb | 21 + spec/lib/gitlab/ci/build/port_spec.rb | 27 + .../ci/build/prerequisite/factory_spec.rb | 34 + .../prerequisite/kubernetes_namespace_spec.rb | 91 + .../lib/gitlab/ci/config/entry/global_spec.rb | 6 +- spec/lib/gitlab/ci/config/entry/image_spec.rb | 46 +- .../lib/gitlab/ci/config/entry/policy_spec.rb | 67 + spec/lib/gitlab/ci/config/entry/port_spec.rb | 173 + spec/lib/gitlab/ci/config/entry/ports_spec.rb | 70 + .../gitlab/ci/config/entry/service_spec.rb | 70 +- .../gitlab/ci/config/entry/services_spec.rb | 87 + .../ci/config/external/file/base_spec.rb | 22 +- .../ci/config/external/file/local_spec.rb | 54 +- .../ci/config/external/file/project_spec.rb | 69 +- .../ci/config/external/file/remote_spec.rb | 42 +- .../ci/config/external/file/template_spec.rb | 47 +- .../gitlab/ci/config/external/mapper_spec.rb | 35 +- .../ci/config/external/processor_spec.rb | 27 +- spec/lib/gitlab/ci/config_spec.rb | 84 +- .../gitlab/ci/pipeline/chain/build_spec.rb | 11 +- .../gitlab/ci/pipeline/chain/command_spec.rb | 66 + .../chain/remove_unwanted_chat_jobs_spec.rb | 33 + .../lib/gitlab/ci/pipeline/chain/skip_spec.rb | 6 +- .../pipeline/chain/validate/abilities_spec.rb | 47 +- .../ci/pipeline/chain/validate/config_spec.rb | 2 +- .../chain/validate/repository_spec.rb | 19 + .../gitlab/ci/status/build/factory_spec.rb | 29 + .../build/failed_unmet_prerequisites_spec.rb | 37 + .../gitlab/ci/status/build/preparing_spec.rb | 33 + spec/lib/gitlab/ci/status/preparing_spec.rb | 29 + .../lib/gitlab/ci/templates/templates_spec.rb | 43 +- .../ci/variables/collection/item_spec.rb | 6 +- .../gitlab/ci/variables/collection_spec.rb | 12 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 91 +- spec/lib/gitlab/config/loader/yaml_spec.rb | 72 +- .../lib/gitlab/contributions_calendar_spec.rb | 4 +- spec/lib/gitlab/current_settings_spec.rb | 17 +- spec/lib/gitlab/danger/helper_spec.rb | 303 + spec/lib/gitlab/danger/teammate_spec.rb | 39 + spec/lib/gitlab/data_builder/pipeline_spec.rb | 9 + .../count/reltuples_count_strategy_spec.rb | 19 +- .../count/tablesample_count_strategy_spec.rb | 16 +- .../v1/rename_base_spec.rb | 2 +- .../v1_spec.rb | 4 +- spec/lib/gitlab/database_spec.rb | 52 + .../dependency_linker/parser/gemfile_spec.rb | 2 + .../merge_request_diff_spec.rb | 2 +- spec/lib/gitlab/diff/file_spec.rb | 208 +- spec/lib/gitlab/diff/suggestion_diff_spec.rb | 55 + spec/lib/gitlab/diff/suggestion_spec.rb | 153 + .../gitlab/diff/suggestions_parser_spec.rb | 134 + spec/lib/gitlab/encoding_helper_spec.rb | 13 +- spec/lib/gitlab/etag_caching/router_spec.rb | 18 + .../external_authorization/access_spec.rb | 142 + .../external_authorization/cache_spec.rb | 48 + .../external_authorization/client_spec.rb | 97 + .../external_authorization/logger_spec.rb | 45 + .../external_authorization/response_spec.rb | 52 + .../lib/gitlab/external_authorization_spec.rb | 54 + .../gitlab/fake_application_settings_spec.rb | 31 +- spec/lib/gitlab/git/commit_spec.rb | 26 +- spec/lib/gitlab/git/diff_spec.rb | 8 +- spec/lib/gitlab/git/gitmodules_parser_spec.rb | 2 +- spec/lib/gitlab/git/pre_receive_error_spec.rb | 16 +- .../lib/gitlab/git/repository_cleaner_spec.rb | 12 +- spec/lib/gitlab/git/repository_spec.rb | 181 +- spec/lib/gitlab/git/tree_spec.rb | 4 +- .../gitaly_client/commit_service_spec.rb | 15 + .../gitaly_client/operation_service_spec.rb | 10 +- .../gitlab/gitaly_client/ref_service_spec.rb | 10 + .../gitaly_client/repository_service_spec.rb | 11 + spec/lib/gitlab/gitaly_client_spec.rb | 38 +- .../importer/milestones_importer_spec.rb | 24 + .../importer/pull_request_importer_spec.rb | 75 +- .../importer/repository_importer_spec.rb | 16 + .../gitlab/gl_repository/repo_type_spec.rb | 64 + spec/lib/gitlab/gl_repository_spec.rb | 4 +- .../authorize/authorize_field_service_spec.rb | 132 + .../authorize/authorize_resource_spec.rb | 18 + spec/lib/gitlab/graphql/authorize_spec.rb | 20 - .../connections/keyset_connection_spec.rb | 5 + spec/lib/gitlab/graphql/tracing_spec.rb | 33 + spec/lib/gitlab/group_search_results_spec.rb | 69 + .../gitlab/hashed_storage/migrator_spec.rb | 166 +- .../import/merge_request_helpers_spec.rb | 73 + spec/lib/gitlab/import_export/all_models.yml | 8 +- spec/lib/gitlab/import_export/project.json | 20 + .../import_export/project_tree_saver_spec.rb | 8 + .../import_export/safe_model_attributes.yml | 16 + spec/lib/gitlab/issuable_metadata_spec.rb | 16 +- spec/lib/gitlab/json_cache_spec.rb | 82 +- .../kubernetes/cluster_role_binding_spec.rb | 2 +- spec/lib/gitlab/kubernetes/config_map_spec.rb | 2 +- .../kubernetes/helm/base_command_spec.rb | 2 +- .../kubernetes/helm/certificate_spec.rb | 6 +- spec/lib/gitlab/kubernetes/helm/pod_spec.rb | 22 +- .../gitlab/kubernetes/role_binding_spec.rb | 2 +- .../gitlab/kubernetes/service_account_spec.rb | 2 +- .../kubernetes/service_account_token_spec.rb | 2 +- spec/lib/gitlab/kubernetes_spec.rb | 34 +- spec/lib/gitlab/lfs_token_spec.rb | 36 +- spec/lib/gitlab/metrics/transaction_spec.rb | 229 + spec/lib/gitlab/object_hierarchy_spec.rb | 40 + spec/lib/gitlab/path_regex_spec.rb | 2 +- spec/lib/gitlab/profiler_spec.rb | 8 +- .../lib/gitlab/project_search_results_spec.rb | 32 + spec/lib/gitlab/project_template_spec.rb | 11 +- ...ditional_metrics_environment_query_spec.rb | 30 +- .../queries/knative_invocation_query_spec.rb | 26 + .../queries/matched_metric_query_spec.rb | 4 +- spec/lib/gitlab/prometheus_client_spec.rb | 107 +- spec/lib/gitlab/push_options_spec.rb | 103 + .../quick_actions/command_definition_spec.rb | 37 +- spec/lib/gitlab/quick_actions/dsl_spec.rb | 26 +- spec/lib/gitlab/reference_extractor_spec.rb | 2 + spec/lib/gitlab/repo_path_spec.rb | 22 +- spec/lib/gitlab/request_context_spec.rb | 2 +- spec/lib/gitlab/search_results_spec.rb | 20 +- spec/lib/gitlab/serializer/pagination_spec.rb | 10 +- spec/lib/gitlab/shell_spec.rb | 607 +- .../sidekiq_middleware/memory_killer_spec.rb | 74 + .../sidekiq_middleware/shutdown_spec.rb | 88 - spec/lib/gitlab/sidekiq_signals_spec.rb | 69 + .../slash_commands/application_help_spec.rb | 19 + .../slash_commands/presenters/error_spec.rb | 15 + .../slash_commands/presenters/run_spec.rb | 79 + spec/lib/gitlab/slash_commands/run_spec.rb | 123 + spec/lib/gitlab/sql/recursive_cte_spec.rb | 9 + .../rails/action_view_subscriber_spec.rb | 6 +- .../rails/active_record_subscriber_spec.rb | 6 +- spec/lib/gitlab/tracing_spec.rb | 69 + .../untrusted_regexp/ruby_syntax_spec.rb | 70 +- spec/lib/gitlab/url_sanitizer_spec.rb | 2 +- spec/lib/gitlab/usage_data_spec.rb | 6 + spec/lib/gitlab/user_extractor_spec.rb | 20 + spec/lib/gitlab/utils/deep_size_spec.rb | 43 + spec/lib/gitlab/utils_spec.rb | 18 + spec/lib/gitlab/workhorse_spec.rb | 20 +- spec/lib/gitlab_spec.rb | 2 +- .../google_api/cloud_platform/client_spec.rb | 12 + spec/lib/object_storage/direct_upload_spec.rb | 2 +- spec/lib/sentry/client_spec.rb | 135 +- spec/mailers/abuse_report_mailer_spec.rb | 27 +- spec/mailers/email_rejection_mailer_spec.rb | 16 + spec/mailers/emails/auto_devops_spec.rb | 3 + spec/mailers/emails/issues_spec.rb | 9 + spec/mailers/notify_spec.rb | 119 + spec/mailers/repository_check_mailer_spec.rb | 7 + .../add_foreign_keys_to_todos_spec.rb | 2 +- ...ad_pipeline_for_each_merge_request_spec.rb | 24 +- ...lculate_conv_dev_index_percentages_spec.rb | 22 +- ...p_noteable_id_for_notes_on_commits_spec.rb | 34 + ..._namespace_pending_delete_projects_spec.rb | 19 +- ...e_inconsistent_internal_id_records_spec.rb | 83 +- .../issues_moved_to_id_foreign_key_spec.rb | 15 +- ...o_dev_ops_domain_to_cluster_domain_spec.rb | 6 +- ...ter_configure_worker_sidekiq_queue_spec.rb | 26 +- ...reate_trace_artifact_sidekiq_queue_spec.rb | 24 +- ...bject_storage_upload_sidekiq_queue_spec.rb | 12 +- spec/migrations/migrate_old_artifacts_spec.rb | 28 +- .../migrate_pipeline_sidekiq_queues_spec.rb | 20 +- ...ate_storage_migrator_sidekiq_queue_spec.rb | 12 +- ...ne_for_merge_request_sidekiq_queue_spec.rb | 22 +- ...tivities_to_users_last_activity_on_spec.rb | 6 +- .../migrate_user_project_view_spec.rb | 6 +- .../move_personal_snippets_files_spec.rb | 35 +- ...late_merge_request_assignees_table_spec.rb | 47 + .../schedule_runners_token_encryption_spec.rb | 2 +- .../schedule_sync_issuables_state_id_spec.rb | 81 + .../migrations/truncate_user_fullname_spec.rb | 21 + spec/models/ability_spec.rb | 2 + spec/models/abuse_report_spec.rb | 2 + spec/models/active_session_spec.rb | 2 + spec/models/appearance_spec.rb | 35 + spec/models/application_setting/term_spec.rb | 2 + spec/models/application_setting_spec.rb | 291 +- spec/models/award_emoji_spec.rb | 2 + spec/models/badge_spec.rb | 4 +- spec/models/badges/group_badge_spec.rb | 2 + spec/models/badges/project_badge_spec.rb | 4 +- spec/models/blob_spec.rb | 2 + spec/models/blob_viewer/base_spec.rb | 2 + spec/models/blob_viewer/changelog_spec.rb | 2 + spec/models/blob_viewer/composer_json_spec.rb | 2 + spec/models/blob_viewer/gemspec_spec.rb | 2 + spec/models/blob_viewer/gitlab_ci_yml_spec.rb | 2 + spec/models/blob_viewer/license_spec.rb | 2 + spec/models/blob_viewer/package_json_spec.rb | 2 + spec/models/blob_viewer/podspec_json_spec.rb | 2 + spec/models/blob_viewer/podspec_spec.rb | 2 + spec/models/blob_viewer/readme_spec.rb | 2 + spec/models/blob_viewer/route_map_spec.rb | 2 + spec/models/blob_viewer/server_side_spec.rb | 2 + spec/models/board_group_recent_visit_spec.rb | 22 +- .../models/board_project_recent_visit_spec.rb | 22 +- spec/models/board_spec.rb | 2 + spec/models/broadcast_message_spec.rb | 8 + spec/models/chat_name_spec.rb | 2 + spec/models/chat_team_spec.rb | 2 + spec/models/ci/artifact_blob_spec.rb | 2 + spec/models/ci/bridge_spec.rb | 19 + spec/models/ci/build_metadata_spec.rb | 2 + spec/models/ci/build_runner_session_spec.rb | 18 +- spec/models/ci/build_spec.rb | 471 +- spec/models/ci/build_trace_chunk_spec.rb | 4 +- .../ci/build_trace_chunks/database_spec.rb | 2 + spec/models/ci/build_trace_chunks/fog_spec.rb | 2 + .../ci/build_trace_chunks/redis_spec.rb | 2 + .../ci/build_trace_section_name_spec.rb | 2 + spec/models/ci/build_trace_section_spec.rb | 2 + spec/models/ci/group_spec.rb | 2 + spec/models/ci/group_variable_spec.rb | 3 + spec/models/ci/job_artifact_spec.rb | 2 + spec/models/ci/legacy_stage_spec.rb | 2 + spec/models/ci/pipeline_schedule_spec.rb | 2 + .../ci/pipeline_schedule_variable_spec.rb | 2 + spec/models/ci/pipeline_spec.rb | 641 +- spec/models/ci/pipeline_variable_spec.rb | 2 + spec/models/ci/runner_spec.rb | 4 +- spec/models/ci/stage_spec.rb | 2 + spec/models/ci/trigger_request_spec.rb | 2 + spec/models/ci/trigger_spec.rb | 2 + spec/models/ci/variable_spec.rb | 3 + .../applications/cert_manager_spec.rb | 37 +- .../models/clusters/applications/helm_spec.rb | 13 +- .../clusters/applications/ingress_spec.rb | 28 +- .../clusters/applications/jupyter_spec.rb | 20 +- .../clusters/applications/knative_spec.rb | 57 +- .../clusters/applications/prometheus_spec.rb | 91 +- .../clusters/applications/runner_spec.rb | 69 +- spec/models/clusters/cluster_spec.rb | 25 +- .../clusters/kubernetes_namespace_spec.rb | 10 +- .../clusters/platforms/kubernetes_spec.rb | 56 +- spec/models/clusters/project_spec.rb | 2 + spec/models/clusters/providers/gcp_spec.rb | 2 + spec/models/commit_collection_spec.rb | 102 +- spec/models/commit_range_spec.rb | 2 + spec/models/commit_spec.rb | 2 + spec/models/commit_status_spec.rb | 25 + spec/models/compare_spec.rb | 2 + .../concerns/access_requestable_spec.rb | 2 + spec/models/concerns/avatarable_spec.rb | 2 + spec/models/concerns/awardable_spec.rb | 2 + ...tch_destroy_dependent_associations_spec.rb | 2 + .../blocks_json_serialization_spec.rb | 2 + .../concerns/cache_markdown_field_spec.rb | 16 +- .../concerns/cacheable_attributes_spec.rb | 2 + spec/models/concerns/case_sensitivity_spec.rb | 2 + .../chronic_duration_attribute_spec.rb | 2 + spec/models/concerns/deployable_spec.rb | 2 + .../concerns/deployment_platform_spec.rb | 2 + .../concerns/discussion_on_diff_spec.rb | 2 + spec/models/concerns/each_batch_spec.rb | 2 + spec/models/concerns/editable_spec.rb | 2 + spec/models/concerns/expirable_spec.rb | 2 + .../models/concerns/faster_cache_keys_spec.rb | 2 + spec/models/concerns/feature_gate_spec.rb | 2 + spec/models/concerns/group_descendant_spec.rb | 2 + spec/models/concerns/has_ref_spec.rb | 20 + spec/models/concerns/has_status_spec.rb | 24 +- spec/models/concerns/has_variable_spec.rb | 4 +- spec/models/concerns/ignorable_column_spec.rb | 2 + spec/models/concerns/issuable_spec.rb | 6 +- spec/models/concerns/issuable_states_spec.rb | 30 + .../concerns/loaded_in_group_list_spec.rb | 2 + .../manual_inverse_association_spec.rb | 2 + spec/models/concerns/maskable_spec.rb | 76 + spec/models/concerns/mentionable_spec.rb | 2 + spec/models/concerns/milestoneish_spec.rb | 2 + spec/models/concerns/noteable_spec.rb | 2 + spec/models/concerns/participable_spec.rb | 2 + spec/models/concerns/presentable_spec.rb | 2 + .../project_features_compatibility_spec.rb | 2 + .../concerns/prometheus_adapter_spec.rb | 55 +- .../concerns/protected_ref_access_spec.rb | 14 + spec/models/concerns/reactive_caching_spec.rb | 58 +- spec/models/concerns/redactable_spec.rb | 2 + spec/models/concerns/redis_cacheable_spec.rb | 2 + .../concerns/relative_positioning_spec.rb | 2 + .../concerns/resolvable_discussion_spec.rb | 2 + spec/models/concerns/resolvable_note_spec.rb | 2 + spec/models/concerns/routable_spec.rb | 2 + spec/models/concerns/sha_attribute_spec.rb | 2 + spec/models/concerns/sortable_spec.rb | 4 +- spec/models/concerns/spammable_spec.rb | 6 +- spec/models/concerns/strip_attribute_spec.rb | 2 + spec/models/concerns/subscribable_spec.rb | 2 + .../concerns/token_authenticatable_spec.rb | 237 +- .../base_spec.rb | 34 +- .../encrypted_spec.rb | 30 +- .../models/concerns/triggerable_hooks_spec.rb | 2 + spec/models/concerns/uniquify_spec.rb | 2 + spec/models/container_repository_spec.rb | 2 + .../metric_spec.rb | 2 + spec/models/cycle_analytics/code_spec.rb | 2 + spec/models/cycle_analytics/issue_spec.rb | 2 + spec/models/cycle_analytics/plan_spec.rb | 2 + .../models/cycle_analytics/production_spec.rb | 2 + 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/cycle_analytics_spec.rb | 2 + spec/models/deploy_key_spec.rb | 2 + spec/models/deploy_keys_project_spec.rb | 2 + spec/models/deploy_token_spec.rb | 34 +- spec/models/deployment_spec.rb | 36 + spec/models/diff_discussion_spec.rb | 2 + spec/models/diff_note_spec.rb | 12 + spec/models/diff_viewer/base_spec.rb | 2 + spec/models/diff_viewer/server_side_spec.rb | 2 + spec/models/discussion_spec.rb | 2 + spec/models/email_spec.rb | 2 + spec/models/environment_spec.rb | 51 +- spec/models/environment_status_spec.rb | 6 +- .../project_error_tracking_setting_spec.rb | 77 +- spec/models/event_collection_spec.rb | 2 + spec/models/event_spec.rb | 2 + spec/models/external_issue_spec.rb | 2 + spec/models/fork_network_member_spec.rb | 2 + spec/models/fork_network_spec.rb | 2 + spec/models/generic_commit_status_spec.rb | 2 + spec/models/global_milestone_spec.rb | 2 + spec/models/gpg_key_spec.rb | 2 + spec/models/gpg_key_subkey_spec.rb | 2 + spec/models/gpg_signature_spec.rb | 2 + spec/models/group_custom_attribute_spec.rb | 2 + spec/models/group_label_spec.rb | 2 + spec/models/group_milestone_spec.rb | 2 + spec/models/group_spec.rb | 161 +- spec/models/guest_spec.rb | 2 + spec/models/hooks/active_hook_filter_spec.rb | 2 + spec/models/hooks/project_hook_spec.rb | 2 + spec/models/hooks/service_hook_spec.rb | 2 + spec/models/hooks/system_hook_spec.rb | 2 + spec/models/hooks/web_hook_log_spec.rb | 2 + spec/models/hooks/web_hook_spec.rb | 2 + spec/models/identity_spec.rb | 2 + spec/models/import_export_upload_spec.rb | 2 + spec/models/instance_configuration_spec.rb | 6 +- spec/models/internal_id_spec.rb | 2 + spec/models/issue/metrics_spec.rb | 2 + spec/models/issue_collection_spec.rb | 2 + spec/models/issue_spec.rb | 56 + spec/models/key_spec.rb | 2 + spec/models/label_link_spec.rb | 2 + spec/models/label_priority_spec.rb | 2 + spec/models/label_spec.rb | 2 + spec/models/legacy_diff_discussion_spec.rb | 2 + spec/models/lfs_download_object_spec.rb | 2 + spec/models/lfs_file_lock_spec.rb | 2 + spec/models/lfs_object_spec.rb | 2 + spec/models/lfs_objects_project_spec.rb | 2 + spec/models/license_template_spec.rb | 15 +- spec/models/list_spec.rb | 2 + spec/models/member_spec.rb | 12 + spec/models/members/group_member_spec.rb | 18 + spec/models/members/project_member_spec.rb | 2 + spec/models/merge_request/metrics_spec.rb | 2 + spec/models/merge_request_diff_commit_spec.rb | 2 + spec/models/merge_request_diff_file_spec.rb | 2 + spec/models/merge_request_diff_spec.rb | 149 +- spec/models/merge_request_spec.rb | 320 +- spec/models/milestone_spec.rb | 17 + spec/models/namespace_spec.rb | 34 +- spec/models/network/graph_spec.rb | 4 +- spec/models/note_diff_file_spec.rb | 2 + spec/models/note_spec.rb | 20 + spec/models/notification_recipient_spec.rb | 2 + spec/models/notification_setting_spec.rb | 2 + spec/models/pages_domain_spec.rb | 2 + spec/models/personal_access_token_spec.rb | 2 + spec/models/pool_repository_spec.rb | 6 +- spec/models/programming_language_spec.rb | 2 + spec/models/project_authorization_spec.rb | 2 + spec/models/project_auto_devops_spec.rb | 18 +- spec/models/project_custom_attribute_spec.rb | 2 + spec/models/project_daily_statistic_spec.rb | 7 + spec/models/project_deploy_token_spec.rb | 2 + spec/models/project_feature_spec.rb | 2 + spec/models/project_group_link_spec.rb | 2 + spec/models/project_import_state_spec.rb | 2 + spec/models/project_label_spec.rb | 2 + .../project_services/asana_service_spec.rb | 2 + .../project_services/assembla_service_spec.rb | 2 + .../project_services/bamboo_service_spec.rb | 2 + .../project_services/bugzilla_service_spec.rb | 2 + .../buildkite_service_spec.rb | 2 + .../project_services/campfire_service_spec.rb | 2 + .../chat_message/issue_message_spec.rb | 2 + .../chat_message/merge_message_spec.rb | 2 + .../chat_message/note_message_spec.rb | 2 + .../chat_message/pipeline_message_spec.rb | 2 + .../chat_message/push_message_spec.rb | 2 + .../chat_message/wiki_page_message_spec.rb | 2 + .../chat_notification_service_spec.rb | 2 + .../custom_issue_tracker_service_spec.rb | 2 + .../project_services/drone_ci_service_spec.rb | 2 + .../emails_on_push_service_spec.rb | 2 + .../external_wiki_service_spec.rb | 2 + .../project_services/flowdock_service_spec.rb | 2 + .../gitlab_issue_tracker_service_spec.rb | 2 + .../project_services/hipchat_service_spec.rb | 4 +- .../project_services/irker_service_spec.rb | 2 + .../issue_tracker_service_spec.rb | 2 + .../project_services/jira_service_spec.rb | 5 +- .../kubernetes_service_spec.rb | 40 +- .../mattermost_service_spec.rb | 2 + .../mattermost_slash_commands_service_spec.rb | 2 + .../microsoft_teams_service_spec.rb | 2 + .../packagist_service_spec.rb | 2 + .../pipelines_email_service_spec.rb | 2 + .../pivotaltracker_service_spec.rb | 8 +- .../project_services/pushover_service_spec.rb | 2 + .../project_services/redmine_service_spec.rb | 2 + .../project_services/slack_service_spec.rb | 2 + .../slack_slash_commands_service_spec.rb | 9 + .../project_services/teamcity_service_spec.rb | 2 + .../project_services/youtrack_service_spec.rb | 40 + spec/models/project_snippet_spec.rb | 2 + spec/models/project_spec.rb | 480 +- spec/models/project_statistics_spec.rb | 2 + spec/models/project_team_spec.rb | 26 + spec/models/project_wiki_spec.rb | 11 +- spec/models/prometheus_metric_spec.rb | 13 +- spec/models/protectable_dropdown_spec.rb | 2 + .../merge_access_level_spec.rb | 2 + .../push_access_level_spec.rb | 2 + spec/models/protected_branch_spec.rb | 30 + spec/models/protected_tag_spec.rb | 2 + spec/models/push_event_payload_spec.rb | 2 + spec/models/push_event_spec.rb | 2 + spec/models/redirect_route_spec.rb | 2 + spec/models/release_spec.rb | 2 + spec/models/releases/link_spec.rb | 24 + spec/models/remote_mirror_spec.rb | 6 +- spec/models/repository_language_spec.rb | 2 + spec/models/repository_spec.rb | 135 +- spec/models/route_spec.rb | 2 + spec/models/sent_notification_spec.rb | 2 + spec/models/serverless/function_spec.rb | 21 + spec/models/service_spec.rb | 6 +- spec/models/snippet_blob_spec.rb | 2 + spec/models/snippet_spec.rb | 2 + spec/models/spam_log_spec.rb | 2 + spec/models/ssh_host_key_spec.rb | 2 + spec/models/subscription_spec.rb | 2 + spec/models/suggestion_spec.rb | 16 + spec/models/system_note_metadata_spec.rb | 2 + spec/models/term_agreement_spec.rb | 2 + spec/models/timelog_spec.rb | 2 + spec/models/todo_spec.rb | 2 + spec/models/tree_spec.rb | 2 + spec/models/trending_project_spec.rb | 2 + spec/models/upload_spec.rb | 2 + spec/models/user_agent_detail_spec.rb | 2 + spec/models/user_callout_spec.rb | 2 + spec/models/user_custom_attribute_spec.rb | 2 + spec/models/user_interacted_project_spec.rb | 2 + spec/models/user_spec.rb | 98 +- spec/models/wiki_directory_spec.rb | 2 + spec/models/wiki_page_spec.rb | 55 +- spec/policies/base_policy_spec.rb | 23 + spec/policies/board_policy_spec.rb | 8 - spec/policies/commit_policy_spec.rb | 2 + spec/policies/global_policy_spec.rb | 12 + spec/policies/group_member_policy_spec.rb | 105 + spec/policies/group_policy_spec.rb | 193 +- .../policies/identity_provider_policy_spec.rb | 30 + spec/policies/issuable_policy_spec.rb | 6 +- spec/policies/issue_policy_spec.rb | 19 + spec/policies/merge_request_policy_spec.rb | 69 + spec/policies/namespace_policy_spec.rb | 2 +- spec/policies/project_policy_spec.rb | 291 +- spec/policies/project_snippet_policy_spec.rb | 113 +- .../presenters/blobs/unfold_presenter_spec.rb | 159 + spec/presenters/ci/bridge_presenter_spec.rb | 15 + spec/presenters/ci/build_presenter_spec.rb | 12 +- .../ci/build_runner_presenter_spec.rb | 90 + spec/presenters/ci/pipeline_presenter_spec.rb | 134 + .../clusters/cluster_presenter_spec.rb | 16 + .../group_clusterable_presenter_spec.rb | 8 + .../merge_request_presenter_spec.rb | 139 +- .../project_clusterable_presenter_spec.rb | 8 + spec/rack_servers/puma_spec.rb | 8 +- spec/requests/api/branches_spec.rb | 26 +- spec/requests/api/commits_spec.rb | 40 +- spec/requests/api/features_spec.rb | 34 + .../api/graphql/gitlab_schema_spec.rb | 26 + .../api/graphql/metadata_query_spec.rb | 32 + .../api/graphql/project/issues_spec.rb | 62 +- .../api/graphql/project/merge_request_spec.rb | 4 +- spec/requests/api/graphql_spec.rb | 86 + spec/requests/api/group_variables_spec.rb | 4 +- spec/requests/api/internal_spec.rb | 189 +- spec/requests/api/issues_spec.rb | 416 +- spec/requests/api/jobs_spec.rb | 43 + spec/requests/api/keys_spec.rb | 2 +- spec/requests/api/labels_spec.rb | 10 +- spec/requests/api/members_spec.rb | 2 +- spec/requests/api/merge_request_diffs_spec.rb | 4 +- spec/requests/api/merge_requests_spec.rb | 809 +- spec/requests/api/namespaces_spec.rb | 2 +- spec/requests/api/pipelines_spec.rb | 15 +- spec/requests/api/project_clusters_spec.rb | 71 +- spec/requests/api/project_milestones_spec.rb | 74 +- spec/requests/api/project_statistics_spec.rb | 62 + spec/requests/api/project_templates_spec.rb | 28 + spec/requests/api/projects_spec.rb | 158 +- spec/requests/api/runner_spec.rb | 159 +- spec/requests/api/runners_spec.rb | 45 +- spec/requests/api/search_spec.rb | 83 +- spec/requests/api/settings_spec.rb | 37 +- spec/requests/api/snippets_spec.rb | 76 +- spec/requests/api/suggestions_spec.rb | 3 +- spec/requests/api/todos_spec.rb | 52 +- spec/requests/api/users_spec.rb | 48 +- spec/requests/api/variables_spec.rb | 4 +- spec/requests/api/version_spec.rb | 18 +- spec/requests/api/wikis_spec.rb | 40 +- spec/routing/api_routing_spec.rb | 14 +- spec/routing/group_routing_spec.rb | 4 + spec/routing/import_routing_spec.rb | 15 +- spec/routing/project_routing_spec.rb | 20 + spec/routing/uploads_routing_spec.rb | 31 + .../cop/include_action_view_context_spec.rb | 45 + .../update_column_in_batches_spec.rb | 18 + .../analytics_stage_serializer_spec.rb | 2 +- .../analytics_summary_serializer_spec.rb | 2 +- spec/serializers/build_details_entity_spec.rb | 10 + spec/serializers/diff_file_entity_spec.rb | 8 +- spec/serializers/environment_entity_spec.rb | 4 +- .../environment_serializer_spec.rb | 9 +- spec/serializers/group_child_entity_spec.rb | 19 + spec/serializers/job_entity_spec.rb | 18 +- .../merge_request_for_pipeline_entity_spec.rb | 29 + .../merge_request_widget_entity_spec.rb | 21 +- .../namespace_basic_entity_spec.rb | 18 + spec/serializers/namespace_serializer_spec.rb | 9 + spec/serializers/pipeline_entity_spec.rb | 72 + spec/serializers/pipeline_serializer_spec.rb | 54 +- .../serializers/project_import_entity_spec.rb | 22 + spec/serializers/project_serializer_spec.rb | 44 + spec/serializers/provider_repo_entity_spec.rb | 24 + .../provider_repo_serializer_spec.rb | 9 + spec/serializers/suggestion_entity_spec.rb | 3 +- .../update_service_spec.rb | 35 + ...er_registry_authentication_service_spec.rb | 93 + .../boards/visits/latest_service_spec.rb | 12 + .../ci/create_pipeline_service_spec.rb | 91 +- .../ci/destroy_pipeline_service_spec.rb | 15 +- .../services/ci/prepare_build_service_spec.rb | 68 + spec/services/ci/retry_build_service_spec.rb | 2 +- .../ci/stop_environments_service_spec.rb | 76 + .../check_ingress_ip_address_service_spec.rb | 10 +- ...heck_installation_progress_service_spec.rb | 22 +- .../applications/create_service_spec.rb | 232 +- .../applications/install_service_spec.rb | 72 +- .../applications/patch_service_spec.rb | 82 + .../schedule_installation_service_spec.rb | 77 - .../applications/update_service_spec.rb | 72 + .../applications/upgrade_service_spec.rb | 70 +- ..._or_update_service_account_service_spec.rb | 2 +- .../services/clusters/refresh_service_spec.rb | 26 +- .../deploy_tokens/create_service_spec.rb | 10 +- spec/services/emails/create_service_spec.rb | 2 + spec/services/emails/destroy_service_spec.rb | 2 + .../list_issues_service_spec.rb | 48 +- .../list_projects_service_spec.rb | 30 +- spec/services/files/multi_service_spec.rb | 16 + .../branch_push_service_spec.rb} | 2 +- .../tag_push_service_spec.rb} | 16 +- .../groups/auto_devops_service_spec.rb | 62 + spec/services/groups/destroy_service_spec.rb | 38 - spec/services/groups/transfer_service_spec.rb | 111 +- spec/services/issues/build_service_spec.rb | 4 +- spec/services/issues/create_service_spec.rb | 14 + spec/services/issues/update_service_spec.rb | 10 + spec/services/lfs/file_transformer_spec.rb | 19 + .../add_todo_when_build_fails_service_spec.rb | 32 + .../merge_requests/close_service_spec.rb | 8 + .../merge_requests/create_service_spec.rb | 61 +- .../merge_requests/ff_merge_service_spec.rb | 2 +- .../merge_requests/merge_service_spec.rb | 14 +- .../merge_to_ref_service_spec.rb | 197 + ...rge_when_pipeline_succeeds_service_spec.rb | 17 +- .../migrate_external_diffs_service_spec.rb | 43 + .../merge_requests/post_merge_service_spec.rb | 8 + .../push_options_handler_service_spec.rb | 404 + .../merge_requests/refresh_service_spec.rb | 128 +- spec/services/notes/build_service_spec.rb | 36 +- spec/services/notes/create_service_spec.rb | 47 +- .../notes/quick_actions_service_spec.rb | 25 +- spec/services/notification_service_spec.rb | 43 +- .../services/preview_markdown_service_spec.rb | 73 +- .../auto_devops/disable_service_spec.rb | 10 +- spec/services/projects/create_service_spec.rb | 38 + .../services/projects/destroy_service_spec.rb | 6 +- ...etect_repository_languages_service_spec.rb | 10 + ...fetch_statistics_increment_service_spec.rb | 36 + .../migrate_attachments_service_spec.rb | 12 +- .../migrate_repository_service_spec.rb | 18 +- .../rollback_attachments_service_spec.rb | 106 + .../rollback_repository_service_spec.rb | 117 + .../hashed_storage/rollback_service_spec.rb | 57 + .../projects/housekeeping_service_spec.rb | 13 + .../operations/update_service_spec.rb | 50 +- .../projects/participants_service_spec.rb | 57 +- .../propagate_service_template_spec.rb | 2 +- .../repository_languages_service_spec.rb | 48 + .../projects/transfer_service_spec.rb | 1 + spec/services/projects/update_service_spec.rb | 41 + .../prometheus/adapter_service_spec.rb | 10 +- .../services/prometheus/proxy_service_spec.rb | 195 + .../quick_actions/interpret_service_spec.rb | 52 + .../services/releases/destroy_service_spec.rb | 8 +- .../suggestions/apply_service_spec.rb | 166 +- .../suggestions/create_service_spec.rb | 98 +- .../suggestions/outdate_service_spec.rb | 102 + spec/services/system_note_service_spec.rb | 9 +- spec/services/tags/create_service_spec.rb | 2 +- spec/services/tags/destroy_service_spec.rb | 16 + .../services/task_list_toggle_service_spec.rb | 21 + .../update_deployment_service_spec.rb | 37 +- spec/services/users/activity_service_spec.rb | 12 + .../verify_pages_domain_service_spec.rb | 156 +- spec/services/web_hook_service_spec.rb | 2 +- spec/spec_helper.rb | 8 + .../support/api/milestones_shared_examples.rb | 9 + spec/support/api/schema_matcher.rb | 24 +- .../api/time_tracking_shared_examples.rb | 2 + ...ubish_import_controller_shared_examples.rb | 103 +- spec/support/database_cleaner.rb | 56 + spec/support/db_cleaner.rb | 52 +- .../external_authorization_service_helpers.rb | 33 + .../discussion_comments_shared_example.rb | 4 +- .../issuable_quick_actions_shared_examples.rb | 389 - .../reportable_note_shared_examples.rb | 2 +- .../features/variable_list_shared_examples.rb | 155 +- .../helpers/cycle_analytics_helpers.rb | 2 +- spec/support/helpers/graphql_helpers.rb | 51 +- .../helpers/javascript_fixtures_helpers.rb | 23 +- spec/support/helpers/kubernetes_helpers.rb | 31 +- spec/support/helpers/license_helper.rb | 8 + spec/support/helpers/login_helpers.rb | 13 +- spec/support/helpers/policy_helpers.rb | 11 + spec/support/helpers/prometheus_helpers.rb | 14 +- .../helpers/reactive_caching_helpers.rb | 2 +- spec/support/helpers/stub_configuration.rb | 4 + spec/support/helpers/stub_feature_flags.rb | 27 +- spec/support/helpers/stub_object_storage.rb | 12 +- spec/support/helpers/stub_worker.rb | 9 + spec/support/helpers/test_env.rb | 25 +- .../import_export/export_file_helper.rb | 2 +- spec/support/matchers/access_matchers.rb | 35 +- spec/support/matchers/graphql_matchers.rb | 4 +- spec/support/matchers/issuable_matchers.rb | 2 +- spec/support/matchers/not_changed_matcher.rb | 3 + spec/support/redis/redis_shared_examples.rb | 2 +- .../policies/project_policy_shared_context.rb | 89 + .../group_projects_finder_shared_contexts.rb | 24 + .../finders/issues_finder_shared_contexts.rb | 44 + .../merge_requests_finder_shared_contexts.rb | 65 + .../finders/users_finder_shared_contexts.rb | 8 + .../policies/group_policy_shared_context.rb | 47 + .../services_shared_context.rb | 10 +- .../application_setting_examples.rb | 252 + ...l_authorization_service_shared_examples.rb | 40 + ...er_from_user_preference_shared_examples.rb | 2 +- ...der_with_external_authorization_enabled.rb | 30 + .../graphql/issuable_state_shared_examples.rb | 5 + .../shared_examples/helm_generated_script.rb | 2 +- ...issuables_list_metadata_shared_examples.rb | 35 +- .../cluster_application_helm_cert_examples.rb | 4 +- ...ster_application_status_shared_examples.rb | 43 +- .../models/member_shared_examples.rb | 2 +- .../models/with_uploads_shared_examples.rb | 20 - .../shared_examples/notify_shared_examples.rb | 28 + .../project_policy_shared_examples.rb | 231 + .../tag_quick_action_shared_examples.rb | 28 + .../assign_quick_action_shared_examples.rb | 110 + .../award_quick_action_shared_examples.rb | 63 + .../close_quick_action_shared_examples.rb | 89 + ...y_metadata_quick_action_shared_examples.rb | 88 + .../done_quick_action_shared_examples.rb | 103 + .../estimate_quick_action_shared_examples.rb | 81 + .../label_quick_action_shared_examples.rb | 83 + .../lock_quick_action_shared_examples.rb | 84 + .../milestone_quick_action_shared_examples.rb | 83 + .../relabel_quick_action_shared_examples.rb | 95 + ...e_estimate_quick_action_shared_examples.rb | 82 + ..._milestone_quick_action_shared_examples.rb | 86 + ...time_spent_quick_action_shared_examples.rb | 82 + .../reopen_quick_action_shared_examples.rb | 86 + .../shrug_quick_action_shared_examples.rb | 60 + .../spend_quick_action_shared_examples.rb | 81 + .../subscribe_quick_action_shared_examples.rb | 84 + .../tableflip_quick_action_shared_examples.rb | 60 + ..._tracking_quick_action_shared_examples.rb} | 15 +- .../title_quick_action_shared_examples.rb | 85 + .../todo_quick_action_shared_examples.rb | 92 + .../unassign_quick_action_shared_examples.rb | 120 + .../unlabel_quick_action_shared_examples.rb | 102 + .../unlock_quick_action_shared_examples.rb | 87 + ...nsubscribe_quick_action_shared_examples.rb | 86 + ...board_move_quick_action_shared_examples.rb | 4 + ...nfidential_quick_action_shared_examples.rb | 35 + ...ge_request_quick_action_shared_examples.rb | 4 + .../issue/due_quick_action_shared_examples.rb | 25 + .../duplicate_quick_action_shared_examples.rb | 38 + .../move_quick_action_shared_examples.rb | 4 + ...e_due_date_quick_action_shared_examples.rb | 35 + .../merge_quick_action_shared_examples.rb | 51 + ...get_branch_quick_action_shared_examples.rb | 81 + .../wip_quick_action_shared_examples.rb | 47 + .../merge_requests_count_shared_examples.rb | 37 + .../requests/api/merge_requests_list.rb | 303 - .../shared_examples/requests/api/notes.rb | 42 +- .../serializers/diff_file_entity_examples.rb | 8 +- .../base_helm_service_shared_examples.rb | 32 + .../services/boards/issues_move_service.rb | 16 + ...ress_ip_address_service_shared_examples.rb | 8 + .../shared_examples/snippet_visibility.rb | 322 - .../snippet_visibility_shared_examples.rb | 306 + .../shared_examples/views/nav_sidebar.rb | 11 + spec/support/webmock.rb | 10 +- spec/tasks/gitlab/backup_rake_spec.rb | 4 +- spec/tasks/gitlab/shell_rake_spec.rb | 2 +- spec/tasks/gitlab/storage_rake_spec.rb | 118 +- spec/uploaders/file_mover_spec.rb | 151 +- spec/uploaders/object_storage_spec.rb | 2 +- spec/uploaders/records_uploads_spec.rb | 13 +- spec/validators/color_validator_spec.rb | 43 + .../validators/devise_email_validator_spec.rb | 94 + spec/validators/sha_validator_spec.rb | 2 + ..._certificate_credentials_validator_spec.rb | 87 + spec/views/ci/status/_icon.html.haml_spec.rb | 89 + .../groups/_home_panel.html.haml_spec.rb | 15 + spec/views/groups/edit.html.haml_spec.rb | 2 +- spec/views/layouts/_head.html.haml_spec.rb | 8 + .../nav/sidebar/_admin.html.haml_spec.rb | 2 + .../nav/sidebar/_group.html.haml_spec.rb | 13 + .../_instance_statistics.html.haml_spec.rb | 7 + .../nav/sidebar/_profile.html.haml_spec.rb | 13 + .../nav/sidebar/_project.html.haml_spec.rb | 54 + .../projects/_home_panel.html.haml_spec.rb | 4 +- .../commits/_commit.html.haml_spec.rb | 59 +- .../_confirm_rollback_modal_spec.html.rb | 63 + .../projects/issues/show.html.haml_spec.rb | 35 +- .../ci_cd/_autodevops_form.html.haml_spec.rb | 11 + .../operations/show.html.haml_spec.rb | 2 +- .../shared/milestones/_issuables.html.haml.rb | 6 +- .../projects/_project.html.haml_spec.rb | 4 +- spec/workers/admin_email_worker_spec.rb | 2 + spec/workers/archive_trace_worker_spec.rb | 2 + .../authorized_projects_worker_spec.rb | 2 + .../background_migration_worker_spec.rb | 2 + spec/workers/build_coverage_worker_spec.rb | 2 + spec/workers/build_finished_worker_spec.rb | 21 + spec/workers/build_hooks_worker_spec.rb | 2 + spec/workers/build_success_worker_spec.rb | 2 + .../build_trace_sections_worker_spec.rb | 2 + spec/workers/chat_notification_worker_spec.rb | 91 + .../ci/archive_traces_cron_worker_spec.rb | 2 + spec/workers/ci/build_prepare_worker_spec.rb | 30 + spec/workers/ci/build_schedule_worker_spec.rb | 2 + spec/workers/cluster_configure_worker_spec.rb | 63 +- .../cluster_project_configure_worker_spec.rb | 14 + spec/workers/cluster_provision_worker_spec.rb | 2 + ...wait_for_ingress_ip_address_worker_spec.rb | 2 + .../concerns/application_worker_spec.rb | 2 + spec/workers/concerns/cluster_queue_spec.rb | 2 + spec/workers/concerns/cronjob_queue_spec.rb | 2 + .../github_import/notify_upon_death_spec.rb | 2 + .../github_import/object_importer_spec.rb | 2 + .../gitlab/github_import/queue_spec.rb | 2 + .../rescheduling_methods_spec.rb | 2 + .../github_import/stage_methods_spec.rb | 2 + .../pipeline_background_queue_spec.rb | 2 + spec/workers/concerns/pipeline_queue_spec.rb | 2 + .../concerns/project_import_options_spec.rb | 2 + .../concerns/repository_check_queue_spec.rb | 2 + spec/workers/concerns/waitable_worker_spec.rb | 2 + .../create_gpg_signature_worker_spec.rb | 2 + .../create_note_diff_file_worker_spec.rb | 2 + spec/workers/create_pipeline_worker_spec.rb | 2 + spec/workers/delete_diff_files_worker_spec.rb | 2 + .../delete_merged_branches_worker_spec.rb | 2 + spec/workers/delete_user_worker_spec.rb | 2 + .../deployments/success_worker_spec.rb | 2 + ...detect_repository_languages_worker_spec.rb | 2 + spec/workers/email_receiver_worker_spec.rb | 2 + spec/workers/emails_on_push_worker_spec.rb | 2 + spec/workers/every_sidekiq_worker_spec.rb | 2 + .../expire_build_artifacts_worker_spec.rb | 2 + ...re_build_instance_artifacts_worker_spec.rb | 2 + spec/workers/expire_job_cache_worker_spec.rb | 2 + .../expire_pipeline_cache_worker_spec.rb | 2 + .../git_garbage_collect_worker_spec.rb | 2 + .../advance_stage_worker_spec.rb | 2 + .../import_diff_note_worker_spec.rb | 2 + .../github_import/import_issue_worker_spec.rb | 2 + .../github_import/import_note_worker_spec.rb | 2 + .../import_pull_request_worker_spec.rb | 2 + .../refresh_import_jid_worker_spec.rb | 2 + .../stage/finish_import_worker_spec.rb | 2 + .../stage/import_base_data_worker_spec.rb | 2 + ...mport_issues_and_diff_notes_worker_spec.rb | 2 + .../stage/import_lfs_objects_worker_spec.rb | 2 + .../stage/import_notes_worker_spec.rb | 2 + .../stage/import_pull_requests_worker_spec.rb | 2 + .../stage/import_repository_worker_spec.rb | 2 + spec/workers/gitlab_shell_worker_spec.rb | 2 + spec/workers/gitlab_usage_ping_worker_spec.rb | 2 + spec/workers/group_destroy_worker_spec.rb | 2 + .../hashed_storage/migrator_worker_spec.rb | 2 + .../project_migrate_worker_spec.rb} | 4 +- .../project_rollback_worker_spec.rb | 50 + .../hashed_storage/rollbacker_worker_spec.rb | 27 + ...nvalid_gpg_signature_update_worker_spec.rb | 2 + .../issue_due_scheduler_worker_spec.rb | 2 + .../mail_scheduler/issue_due_worker_spec.rb | 2 + .../notification_service_worker_spec.rb | 2 + spec/workers/merge_worker_spec.rb | 2 + .../migrate_external_diffs_worker_spec.rb | 25 + ...mespaceless_project_destroy_worker_spec.rb | 2 + spec/workers/new_issue_worker_spec.rb | 2 + spec/workers/new_merge_request_worker_spec.rb | 2 + spec/workers/new_note_worker_spec.rb | 2 + ...es_domain_verification_cron_worker_spec.rb | 2 + .../pages_domain_verification_worker_spec.rb | 2 + spec/workers/pipeline_hooks_worker_spec.rb | 2 + spec/workers/pipeline_metrics_worker_spec.rb | 2 + .../pipeline_notification_worker_spec.rb | 2 + spec/workers/pipeline_process_worker_spec.rb | 2 + spec/workers/pipeline_schedule_worker_spec.rb | 14 + spec/workers/pipeline_success_worker_spec.rb | 2 + spec/workers/pipeline_update_worker_spec.rb | 2 + spec/workers/plugin_worker_spec.rb | 2 + spec/workers/post_receive_spec.rb | 71 +- spec/workers/process_commit_worker_spec.rb | 2 + spec/workers/project_cache_worker_spec.rb | 2 + .../project_daily_statistics_worker_spec.rb | 35 + spec/workers/project_destroy_worker_spec.rb | 2 + spec/workers/project_export_worker_spec.rb | 2 + .../propagate_service_template_worker_spec.rb | 2 + spec/workers/prune_old_events_worker_spec.rb | 2 + .../prune_web_hook_logs_worker_spec.rb | 2 + spec/workers/reactive_caching_worker_spec.rb | 2 + spec/workers/rebase_worker_spec.rb | 2 + .../remote_mirror_notification_worker_spec.rb | 2 + .../remove_expired_group_links_worker_spec.rb | 2 + .../remove_expired_members_worker_spec.rb | 2 + ...ve_unreferenced_lfs_objects_worker_spec.rb | 2 + .../repository_check/batch_worker_spec.rb | 2 + .../repository_check/clear_worker_spec.rb | 2 + .../repository_check/dispatch_worker_spec.rb | 2 + .../single_repository_worker_spec.rb | 2 + .../workers/repository_cleanup_worker_spec.rb | 2 + spec/workers/repository_fork_worker_spec.rb | 2 + spec/workers/repository_import_worker_spec.rb | 2 + .../repository_remove_remote_worker_spec.rb | 2 + ...sitory_update_remote_mirror_worker_spec.rb | 2 + .../run_pipeline_schedule_worker_spec.rb | 2 + ...dule_migrate_external_diffs_worker_spec.rb | 25 + spec/workers/stage_update_worker_spec.rb | 2 + spec/workers/stuck_ci_jobs_worker_spec.rb | 2 + spec/workers/stuck_import_jobs_worker_spec.rb | 2 + spec/workers/stuck_merge_jobs_worker_spec.rb | 2 + spec/workers/system_hook_push_worker_spec.rb | 2 + .../confidential_issue_worker_spec.rb | 2 + .../entity_leave_worker_spec.rb | 2 + .../group_private_worker_spec.rb | 2 + .../private_features_worker_spec.rb | 2 + .../project_private_worker_spec.rb | 2 + spec/workers/trending_projects_worker_spec.rb | 2 + ..._pipeline_for_merge_request_worker_spec.rb | 4 +- .../update_merge_requests_worker_spec.rb | 2 + spec/workers/upload_checksum_worker_spec.rb | 2 + .../wait_for_cluster_creation_worker_spec.rb | 2 + vendor/assets/javascripts/jquery.atwho.js | 1202 -- vendor/assets/javascripts/jquery.caret.js | 436 - vendor/licenses.csv | 1 - vendor/project_templates/android.tar.gz | Bin 0 -> 132592 bytes vendor/project_templates/dotnetcore.tar.gz | Bin 0 -> 7027 bytes vendor/project_templates/express.tar.gz | Bin 4894 -> 16098 bytes vendor/project_templates/gitbook.tar.gz | Bin 13808 -> 13068 bytes vendor/project_templates/gomicro.tar.gz | Bin 0 -> 5388 bytes vendor/project_templates/hexo.tar.gz | Bin 548020 -> 547220 bytes vendor/project_templates/hugo.tar.gz | Bin 1048753 -> 1047952 bytes vendor/project_templates/iosswift.tar.gz | Bin 0 -> 2422200 bytes vendor/project_templates/jekyll.tar.gz | Bin 60703 -> 60086 bytes vendor/project_templates/nfgitbook.tar.gz | Bin 0 -> 122562 bytes vendor/project_templates/nfhexo.tar.gz | Bin 0 -> 655028 bytes vendor/project_templates/nfhugo.tar.gz | Bin 0 -> 1159251 bytes vendor/project_templates/nfjekyll.tar.gz | Bin 0 -> 132262 bytes vendor/project_templates/nfplainhtml.tar.gz | Bin 0 -> 122392 bytes vendor/project_templates/plainhtml.tar.gz | Bin 12079 -> 11389 bytes vendor/project_templates/rails.tar.gz | Bin 25182 -> 25490 bytes vendor/project_templates/spring.tar.gz | Bin 49476 -> 49518 bytes yarn.lock | 3301 ++-- 4184 files changed, 239491 insertions(+), 64058 deletions(-) create mode 100644 .gitlab/issue_templates/Database Reviewer.md create mode 100644 .gitlab/issue_templates/Doc Review.md create mode 100644 .stylelintrc create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 app/assets/images/select2-spinner.gif create mode 100644 app/assets/images/select2.png create mode 100644 app/assets/images/select2x2.png rename app/assets/javascripts/{group_avatar.js => avatar_picker.js} (54%) create mode 100644 app/assets/javascripts/diffs/mixins/draft_comments.js create mode 100644 app/assets/javascripts/emoji/no_emoji_validator.js create mode 100644 app/assets/javascripts/environments/components/confirm_rollback_modal.vue create mode 100644 app/assets/javascripts/environments/mixins/canary_callout_mixin.js create mode 100644 app/assets/javascripts/environments/mixins/container_mixin.js create mode 100644 app/assets/javascripts/environments/mixins/environment_item_mixin.js create mode 100644 app/assets/javascripts/environments/mixins/environments_app_mixin.js create mode 100644 app/assets/javascripts/environments/mixins/environments_folder_view_mixin.js create mode 100644 app/assets/javascripts/environments/mixins/environments_table_mixin.js create mode 100644 app/assets/javascripts/environments/stores/helpers.js create mode 100644 app/assets/javascripts/error_tracking_settings/components/app.vue create mode 100644 app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue create mode 100644 app/assets/javascripts/error_tracking_settings/components/project_dropdown.vue create mode 100644 app/assets/javascripts/error_tracking_settings/index.js create mode 100644 app/assets/javascripts/error_tracking_settings/store/actions.js create mode 100644 app/assets/javascripts/error_tracking_settings/store/getters.js create mode 100644 app/assets/javascripts/error_tracking_settings/store/index.js create mode 100644 app/assets/javascripts/error_tracking_settings/store/mutation_types.js create mode 100644 app/assets/javascripts/error_tracking_settings/store/mutations.js create mode 100644 app/assets/javascripts/error_tracking_settings/store/state.js create mode 100644 app/assets/javascripts/error_tracking_settings/utils.js create mode 100644 app/assets/javascripts/filtered_search/add_extra_tokens_for_merge_requests.js create mode 100644 app/assets/javascripts/filtered_search/available_dropdown_mappings.js create mode 100644 app/assets/javascripts/filtered_search/dropdown_ajax_filter.js create mode 100644 app/assets/javascripts/filtered_search/recent_searches_storage_keys.js create mode 100644 app/assets/javascripts/filtered_search/visual_token_value.js create mode 100644 app/assets/javascripts/helpers/monitor_helper.js create mode 100644 app/assets/javascripts/ide/lib/files.js delete mode 100644 app/assets/javascripts/ide/stores/workers/files_decorator_worker.js create mode 100644 app/assets/javascripts/import_projects/components/import_projects_table.vue create mode 100644 app/assets/javascripts/import_projects/components/import_status.vue create mode 100644 app/assets/javascripts/import_projects/components/imported_project_table_row.vue create mode 100644 app/assets/javascripts/import_projects/components/provider_repo_table_row.vue create mode 100644 app/assets/javascripts/import_projects/constants.js create mode 100644 app/assets/javascripts/import_projects/event_hub.js create mode 100644 app/assets/javascripts/import_projects/index.js create mode 100644 app/assets/javascripts/import_projects/store/actions.js create mode 100644 app/assets/javascripts/import_projects/store/getters.js create mode 100644 app/assets/javascripts/import_projects/store/index.js create mode 100644 app/assets/javascripts/import_projects/store/mutation_types.js create mode 100644 app/assets/javascripts/import_projects/store/mutations.js create mode 100644 app/assets/javascripts/import_projects/store/state.js create mode 100644 app/assets/javascripts/issue_show/utils/parse_data.js create mode 100644 app/assets/javascripts/jobs/components/unmet_prerequisites_block.vue create mode 100644 app/assets/javascripts/lib/utils/autosave.js create mode 100644 app/assets/javascripts/lib/utils/chart_utils.js create mode 100644 app/assets/javascripts/lib/utils/highlight.js create mode 100644 app/assets/javascripts/monitoring/constants.js create mode 100644 app/assets/javascripts/monitoring/utils.js create mode 100644 app/assets/javascripts/mr_notes/init_notes.js create mode 100644 app/assets/javascripts/mr_popover/components/mr_popover.vue create mode 100644 app/assets/javascripts/mr_popover/constants.js create mode 100644 app/assets/javascripts/mr_popover/index.js create mode 100644 app/assets/javascripts/mr_popover/queries/merge_request.graphql create mode 100644 app/assets/javascripts/notes/components/discussion_filter_note.vue create mode 100644 app/assets/javascripts/notes/components/discussion_resolve_with_issue_button.vue create mode 100644 app/assets/javascripts/notes/mixins/diff_line_note_form.js create mode 100644 app/assets/javascripts/pages/groups/details/index.js create mode 100644 app/assets/javascripts/pages/groups/shared/group_details.js rename app/assets/javascripts/pages/groups/{show => shared}/group_tabs.js (100%) create mode 100644 app/assets/javascripts/pages/import/gitea/status/index.js create mode 100644 app/assets/javascripts/pages/import/github/status/index.js create mode 100644 app/assets/javascripts/pages/projects/settings/operations/show/index.js create mode 100644 app/assets/javascripts/pipelines/components/pipeline_stop_modal.vue create mode 100644 app/assets/javascripts/pipelines/mixins/graph_pipeline_bundle_mixin.js create mode 100644 app/assets/javascripts/pipelines/mixins/stage_column_mixin.js create mode 100644 app/assets/javascripts/related_merge_requests/components/related_merge_requests.vue create mode 100644 app/assets/javascripts/related_merge_requests/index.js create mode 100644 app/assets/javascripts/related_merge_requests/store/actions.js create mode 100644 app/assets/javascripts/related_merge_requests/store/index.js create mode 100644 app/assets/javascripts/related_merge_requests/store/mutation_types.js create mode 100644 app/assets/javascripts/related_merge_requests/store/mutations.js create mode 100644 app/assets/javascripts/related_merge_requests/store/state.js create mode 100644 app/assets/javascripts/serverless/components/area.vue create mode 100644 app/assets/javascripts/serverless/components/missing_prometheus.vue create mode 100644 app/assets/javascripts/serverless/constants.js delete mode 100644 app/assets/javascripts/serverless/services/get_functions_service.js create mode 100644 app/assets/javascripts/serverless/store/actions.js create mode 100644 app/assets/javascripts/serverless/store/getters.js create mode 100644 app/assets/javascripts/serverless/store/index.js create mode 100644 app/assets/javascripts/serverless/store/mutation_types.js create mode 100644 app/assets/javascripts/serverless/store/mutations.js create mode 100644 app/assets/javascripts/serverless/store/state.js delete mode 100644 app/assets/javascripts/serverless/stores/serverless_details_store.js delete mode 100644 app/assets/javascripts/serverless/stores/serverless_store.js create mode 100644 app/assets/javascripts/serverless/utils.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/mr_widget_alert_message.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/constants.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/mixins/mr_widget_pipeline.js create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/no_preview.vue create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/not_diffable.vue create mode 100644 app/assets/javascripts/vue_shared/components/empty_component.js create mode 100644 app/assets/javascripts/vue_shared/components/issue/related_issuable_item.vue create mode 100644 app/assets/javascripts/vue_shared/components/lib/utils/diff_utils.js create mode 100644 app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_row.vue create mode 100644 app/assets/javascripts/vue_shared/components/project_selector/project_list_item.vue create mode 100644 app/assets/javascripts/vue_shared/components/project_selector/project_selector.vue create mode 100644 app/assets/javascripts/vue_shared/components/resizable_chart/resizable_chart_container.vue create mode 100644 app/assets/javascripts/vue_shared/components/select2_select.vue create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/labels_select/dropdown_value_regular_label.vue create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/labels_select/dropdown_value_scoped_label.vue create mode 100644 app/assets/javascripts/vue_shared/mixins/is_ee.js create mode 100644 app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js create mode 100644 app/assets/stylesheets/components/dashboard_skeleton.scss create mode 100644 app/assets/stylesheets/components/project_list_item.scss create mode 100644 app/assets/stylesheets/framework/sortable.scss create mode 100644 app/assets/stylesheets/framework/spinner.scss create mode 100644 app/assets/stylesheets/framework/system_messages.scss create mode 100644 app/assets/stylesheets/highlight/common.scss rename app/assets/stylesheets/highlight/{ => themes}/dark.scss (97%) rename app/assets/stylesheets/highlight/{ => themes}/monokai.scss (98%) rename app/assets/stylesheets/highlight/{ => themes}/none.scss (98%) rename app/assets/stylesheets/highlight/{solarized_dark.scss => themes/solarized-dark.scss} (98%) rename app/assets/stylesheets/highlight/{solarized_light.scss => themes/solarized-light.scss} (97%) create mode 100644 app/assets/stylesheets/highlight/themes/white.scss delete mode 100644 app/assets/stylesheets/highlight/white.scss create mode 100644 app/assets/stylesheets/pages/monitor.scss create mode 100644 app/assets/stylesheets/utilities.scss create mode 100644 app/controllers/concerns/boards_actions.rb create mode 100644 app/controllers/projects/environments/prometheus_api_controller.rb create mode 100644 app/finders/autocomplete/acts_as_taggable_on/tags_finder.rb create mode 100644 app/finders/projects/daily_statistics_finder.rb rename app/graphql/resolvers/{merge_request_resolver.rb => merge_requests_resolver.rb} (50%) create mode 100644 app/graphql/resolvers/metadata_resolver.rb create mode 100644 app/graphql/types/ci/detailed_status_type.rb create mode 100644 app/graphql/types/issuable_state_enum.rb create mode 100644 app/graphql/types/issue_state_enum.rb create mode 100644 app/graphql/types/merge_request_state_enum.rb create mode 100644 app/graphql/types/metadata_type.rb create mode 100644 app/models/ci/pipeline_chat_data.rb create mode 100644 app/models/concerns/ci/contextable.rb create mode 100644 app/models/concerns/ci/pipeline_delegator.rb create mode 100644 app/models/concerns/closed_at_filterable.rb create mode 100644 app/models/concerns/issuable_states.rb create mode 100644 app/models/concerns/maskable.rb create mode 100644 app/models/merge_request_assignee.rb create mode 100644 app/models/project_daily_statistic.rb create mode 100644 app/models/project_services/youtrack_service.rb create mode 100644 app/models/serverless/function.rb create mode 100644 app/policies/identity_provider_policy.rb create mode 100644 app/policies/repository_policy.rb create mode 100644 app/presenters/blobs/unfold_presenter.rb create mode 100644 app/presenters/ci/bridge_presenter.rb create mode 100644 app/serializers/acts_as_taggable_on/tag_entity.rb create mode 100644 app/serializers/acts_as_taggable_on/tag_serializer.rb create mode 100644 app/serializers/merge_request_for_pipeline_entity.rb create mode 100644 app/serializers/namespace_basic_entity.rb create mode 100644 app/serializers/namespace_serializer.rb create mode 100644 app/serializers/project_import_entity.rb create mode 100644 app/serializers/provider_repo_entity.rb create mode 100644 app/serializers/provider_repo_serializer.rb create mode 100644 app/serializers/suggestion_serializer.rb delete mode 100644 app/serializers/tree_entity.rb delete mode 100644 app/serializers/tree_root_entity.rb delete mode 100644 app/serializers/tree_serializer.rb create mode 100644 app/services/ci/prepare_build_service.rb create mode 100644 app/services/clusters/applications/base_service.rb create mode 100644 app/services/clusters/applications/patch_service.rb delete mode 100644 app/services/clusters/applications/schedule_installation_service.rb create mode 100644 app/services/clusters/applications/update_service.rb create mode 100644 app/services/concerns/suggestible.rb create mode 100644 app/services/concerns/validates_classification_label.rb create mode 100644 app/services/git/branch_push_service.rb create mode 100644 app/services/git/tag_push_service.rb delete mode 100644 app/services/git_push_service.rb delete mode 100644 app/services/git_tag_push_service.rb create mode 100644 app/services/groups/auto_devops_service.rb create mode 100644 app/services/merge_requests/merge_base_service.rb create mode 100644 app/services/merge_requests/merge_to_ref_service.rb create mode 100644 app/services/merge_requests/migrate_external_diffs_service.rb create mode 100644 app/services/merge_requests/push_options_handler_service.rb create mode 100644 app/services/projects/fetch_statistics_increment_service.rb create mode 100644 app/services/projects/hashed_storage/base_attachment_service.rb create mode 100644 app/services/projects/hashed_storage/rollback_attachments_service.rb create mode 100644 app/services/projects/hashed_storage/rollback_repository_service.rb create mode 100644 app/services/projects/hashed_storage/rollback_service.rb create mode 100644 app/services/projects/repository_languages_service.rb create mode 100644 app/services/prometheus/proxy_service.rb create mode 100644 app/services/suggestions/outdate_service.rb create mode 100644 app/validators/devise_email_validator.rb delete mode 100644 app/validators/email_validator.rb create mode 100644 app/validators/x509_certificate_credentials_validator.rb create mode 100644 app/views/admin/appearances/_system_header_footer_form.html.haml create mode 100644 app/views/admin/application_settings/_external_authorization_service_form.html.haml create mode 100644 app/views/ci/status/_icon.html.haml create mode 100644 app/views/dashboard/projects/_starred_empty_state.html.haml create mode 100644 app/views/groups/settings/_project_creation_level.html.haml create mode 100644 app/views/groups/settings/ci_cd/_auto_devops_form.html.haml create mode 100644 app/views/layouts/empty_mailer.html.haml create mode 100644 app/views/layouts/empty_mailer.text.erb create mode 100644 app/views/layouts/nav/_classification_level_banner.html.haml create mode 100644 app/views/profiles/_email_settings.html.haml create mode 100644 app/views/profiles/accounts/_providers.html.haml create mode 100644 app/views/profiles/notifications/_email_settings.html.haml create mode 100644 app/views/projects/_classification_policy_settings.html.haml create mode 100644 app/views/projects/deployments/_confirm_rollback_modal.html.haml delete mode 100644 app/views/projects/issues/_closed_by_box.html.haml delete mode 100644 app/views/projects/issues/_import_export.svg delete mode 100644 app/views/projects/issues/_merge_requests.html.haml create mode 100644 app/views/search/results/_user.html.haml create mode 100644 app/views/shared/_choose_avatar_button.html.haml delete mode 100644 app/views/shared/_choose_group_avatar_button.html.haml create mode 100644 app/views/shared/empty_states/_snippets.html.haml create mode 100644 app/views/shared/snippets/_list.html.haml create mode 100644 app/workers/chat_notification_worker.rb create mode 100644 app/workers/ci/build_prepare_worker.rb create mode 100644 app/workers/cluster_patch_app_worker.rb create mode 100644 app/workers/hashed_storage/base_worker.rb create mode 100644 app/workers/hashed_storage/project_migrate_worker.rb create mode 100644 app/workers/hashed_storage/project_rollback_worker.rb create mode 100644 app/workers/hashed_storage/rollbacker_worker.rb create mode 100644 app/workers/migrate_external_diffs_worker.rb create mode 100644 app/workers/project_daily_statistics_worker.rb delete mode 100644 app/workers/project_migrate_hashed_storage_worker.rb create mode 100644 app/workers/schedule_migrate_external_diffs_worker.rb rename .babelrc.js => babel.config.js (75%) create mode 100644 changelogs/README.md create mode 100644 config/helpers/is_ee_env.js create mode 100644 config/initializers/fog_core_patch.rb create mode 100644 config/initializers/graphql.rb create mode 100644 config/initializers/jira.rb create mode 100644 danger/gitlab_ui_wg/Dangerfile create mode 100644 danger/roulette/Dangerfile create mode 100644 danger/single_codebase/Dangerfile create mode 100644 db/fixtures/development/02_application_settings.rb rename db/fixtures/development/{04_project.rb => 03_project.rb} (99%) delete mode 100644 db/fixtures/development/03_settings.rb create mode 100644 db/fixtures/development/04_labels.rb delete mode 100644 db/fixtures/development/08_settings.rb delete mode 100644 db/fixtures/development/22_labeled_issues_seed.rb create mode 100644 db/fixtures/development/25_api_personal_access_token.rb create mode 100644 db/migrate/20171211131502_add_external_classification_authorization_settings_to_appliction_settings.rb create mode 100644 db/migrate/20171218140451_add_external_authorization_service_classification_label_to_projects.rb create mode 100644 db/migrate/20180209115333_create_chatops_tables.rb create mode 100644 db/migrate/20180314100728_add_external_authorization_service_timeout_to_application_settings.rb create mode 100644 db/migrate/20180314145917_add_header_and_footer_banners_to_appearances_table.rb create mode 100644 db/migrate/20180315160435_add_external_auth_mutual_tls_fields_to_project_settings.rb create mode 100644 db/migrate/20181205171941_create_project_daily_statistics.rb create mode 100644 db/migrate/20190107151020_add_services_type_index.rb create mode 100644 db/migrate/20190206193120_add_index_to_tags.rb create mode 100644 db/migrate/20190211131150_add_state_id_to_issuables.rb create mode 100644 db/migrate/20190215154930_add_merge_pipelines_enabled_to_ci_cd_settings.rb create mode 100644 db/migrate/20190218134158_add_masked_to_ci_variables.rb create mode 100644 db/migrate/20190218134209_add_masked_to_ci_group_variables.rb create mode 100644 db/migrate/20190220142344_add_email_header_and_footer_enabled_flag_to_appearances_table.rb create mode 100644 db/migrate/20190220150130_add_extra_shas_to_ci_pipelines.rb create mode 100644 db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb create mode 100644 db/migrate/20190225152525_add_auto_dev_ops_enabled_to_namespaces.rb create mode 100644 db/migrate/20190225160300_steal_encrypt_runners_tokens.rb create mode 100644 db/migrate/20190225160301_add_runner_tokens_indexes.rb create mode 100644 db/migrate/20190228192410_add_multi_line_attributes_to_suggestion.rb create mode 100644 db/migrate/20190301182457_add_external_hostname_to_ingress_and_knative.rb create mode 100644 db/migrate/20190311132500_add_default_project_creation_application_setting.rb create mode 100644 db/migrate/20190311132527_add_project_creation_level_to_namespaces.rb create mode 100644 db/migrate/20190312071108_add_detected_repository_languages_to_projects.rb create mode 100644 db/migrate/20190315191339_create_merge_request_assignees_table.rb create mode 100644 db/migrate/20190325080727_truncate_user_fullname.rb create mode 100644 db/migrate/20190325165127_add_managed_to_cluster.rb create mode 100644 db/migrate/20190326164045_import_common_metrics_knative.rb create mode 100644 db/post_migrate/20181101091005_steal_digest_column.rb create mode 100644 db/post_migrate/20181101091124_remove_token_from_personal_access_tokens.rb create mode 100644 db/post_migrate/20190214112022_schedule_sync_issuables_state_id.rb create mode 100644 db/post_migrate/20190301081611_migrate_project_migrate_sidekiq_queue.rb create mode 100644 db/post_migrate/20190313092516_clean_up_noteable_id_for_notes_on_commits.rb create mode 100644 db/post_migrate/20190322132835_schedule_populate_merge_request_assignees_table.rb create mode 100644 db/post_migrate/20190325111602_rename_v2_root_namespaces.rb create mode 100644 doc/administration/auth/google_secure_ldap.md create mode 100644 doc/administration/auth/img/google_secure_ldap_add_step_1.png create mode 100644 doc/administration/auth/img/google_secure_ldap_add_step_2.png create mode 100644 doc/administration/auth/img/google_secure_ldap_client_settings.png create mode 100644 doc/administration/user_settings.md create mode 100644 doc/api/project_statistics.md create mode 100644 doc/ci/chatops/README.md create mode 100644 doc/ci/chatops/img/gitlab-chatops-icon-small.png create mode 100644 doc/ci/chatops/img/gitlab-chatops-icon.png create mode 100644 doc/ci/environments/protected_environments.md create mode 100644 doc/ci/examples/end_to_end_testing_webdriverio/img/deployed_dependency_update.png create mode 100644 doc/ci/examples/end_to_end_testing_webdriverio/index.md delete mode 100644 doc/ci/img/cicd_pipeline_infograph.png delete mode 100644 doc/ci/img/pipelines-goal.png delete mode 100644 doc/ci/img/types-of-pipelines.png create mode 100644 doc/ci/introduction/img/gitlab_workflow_example_11_9.png create mode 100755 doc/ci/introduction/img/job_running.png create mode 100755 doc/ci/introduction/img/pipeline_status.png create mode 100755 doc/ci/introduction/img/rollback.png create mode 100644 doc/ci/introduction/index.md create mode 100644 doc/ci/large_repositories/index.md create mode 100644 doc/ci/merge_request_pipelines/img/merge_request_pipeline.png create mode 100644 doc/ci/merge_request_pipelines/img/merge_request_pipeline_config.png create mode 100644 doc/ci/variables/deprecated_variables.md create mode 100755 doc/ci/variables/img/ci_job_stage_output_example.png create mode 100755 doc/ci/variables/img/custom_variable_output.png create mode 100755 doc/ci/variables/img/new_custom_variable_example.png create mode 100755 doc/ci/variables/img/override_value_via_manual_pipeline_output.png create mode 100755 doc/ci/variables/img/override_variable_manual_pipeline.png create mode 100644 doc/ci/variables/predefined_variables.md create mode 100644 doc/customization/help_message.md create mode 100644 doc/customization/help_message/help_text.png create mode 100644 doc/customization/help_message/help_text_on_help_page.png create mode 100644 doc/customization/index.md create mode 100644 doc/customization/system_header_and_footer_messages.md create mode 100644 doc/customization/system_header_and_footer_messages/appearance.png create mode 100644 doc/customization/system_header_and_footer_messages/custom_header_footer.png create mode 100644 doc/customization/system_header_and_footer_messages/sign_up_custom_header_and_footer.png create mode 100644 doc/development/distributed_tracing.md create mode 100644 doc/development/fe_guide/event_tracking.md create mode 100644 doc/development/fe_guide/principles.md create mode 100644 doc/development/git_object_deduplication.md create mode 100644 doc/development/img/distributed_tracing_jaeger_ui.png create mode 100644 doc/development/img/distributed_tracing_performance_bar.png create mode 100644 doc/development/kubernetes.md delete mode 100644 doc/development/new_fe_guide/development/design_patterns.md delete mode 100644 doc/development/new_fe_guide/development/network_requests.md delete mode 100644 doc/development/new_fe_guide/development/security.md delete mode 100644 doc/development/new_fe_guide/initiatives.md delete mode 100644 doc/development/new_fe_guide/principles.md create mode 100644 doc/development/python_guide/index.md create mode 100644 doc/development/testing_guide/img/qa_on_merge_requests_cicd_architecture.png delete mode 100644 doc/gitlab-basics/img/profile_settings.png delete mode 100644 doc/gitlab-basics/img/profile_settings_ssh_keys.png delete mode 100644 doc/gitlab-basics/img/profile_settings_ssh_keys_paste_pub.png delete mode 100644 doc/gitlab-basics/img/profile_settings_ssh_keys_title.png create mode 100644 doc/security/img/ssh_keys_restricted_key_icon.png create mode 100644 doc/update/upgrading_from_ce_to_ee.md create mode 100644 doc/update/upgrading_from_source.md create mode 100644 doc/user/admin_area/index.md create mode 100644 doc/user/admin_area/settings/external_authorization.md create mode 100644 doc/user/admin_area/settings/img/classification_label_on_project_page.png create mode 100644 doc/user/admin_area/settings/img/external_authorization_service_settings.png create mode 100644 doc/user/discussions/img/multi-line-suggestion-preview.png create mode 100644 doc/user/discussions/img/multi-line-suggestion-syntax.png create mode 100644 doc/user/discussions/img/reply_to_comment.gif create mode 100644 doc/user/discussions/img/reply_to_comment_button.png delete mode 100644 doc/user/profile/img/personal_access_tokens.png delete mode 100644 doc/user/project/clusters/serverless/img/app-domain.png create mode 100644 doc/user/project/clusters/serverless/img/function-details-loaded.png delete mode 100644 doc/user/project/integrations/img/issue_configuration.png create mode 100644 doc/user/project/integrations/youtrack.md delete mode 100644 doc/user/project/merge_requests/img/wip_mark_as_wip.png delete mode 100644 doc/user/project/merge_requests/img/wip_unmark_as_wip.png create mode 100644 doc/user/project/pages/img/pages_project_templates_11-8.png create mode 100644 lib/api/helpers/discussions_helpers.rb create mode 100644 lib/api/helpers/graphql_helpers.rb create mode 100644 lib/api/helpers/issues_helpers.rb create mode 100644 lib/api/helpers/resource_label_events_helpers.rb create mode 100644 lib/api/helpers/search_helpers.rb create mode 100644 lib/api/helpers/services_helpers.rb create mode 100644 lib/api/project_statistics.rb create mode 100644 lib/api/validations/types/labels_list.rb create mode 100644 lib/banzai/filter/output_safety.rb delete mode 100644 lib/banzai/suggestions_parser.rb create mode 100644 lib/gitlab/action_view_output/context.rb create mode 100644 lib/gitlab/authorized_keys.rb create mode 100644 lib/gitlab/background_migration/populate_merge_request_assignees_table.rb create mode 100644 lib/gitlab/background_migration/sync_issues_state_id.rb create mode 100644 lib/gitlab/background_migration/sync_merge_requests_state_id.rb create mode 100644 lib/gitlab/chat.rb create mode 100644 lib/gitlab/chat/command.rb create mode 100644 lib/gitlab/chat/output.rb create mode 100644 lib/gitlab/chat/responder.rb create mode 100644 lib/gitlab/chat/responder/base.rb create mode 100644 lib/gitlab/chat/responder/slack.rb create mode 100644 lib/gitlab/ci/build/port.rb create mode 100644 lib/gitlab/ci/build/prerequisite/base.rb create mode 100644 lib/gitlab/ci/build/prerequisite/factory.rb create mode 100644 lib/gitlab/ci/build/prerequisite/kubernetes_namespace.rb create mode 100644 lib/gitlab/ci/config/entry/include.rb create mode 100644 lib/gitlab/ci/config/entry/includes.rb create mode 100644 lib/gitlab/ci/config/entry/port.rb create mode 100644 lib/gitlab/ci/config/entry/ports.rb create mode 100644 lib/gitlab/ci/status/build/failed_unmet_prerequisites.rb create mode 100644 lib/gitlab/ci/status/build/preparing.rb create mode 100644 lib/gitlab/ci/status/preparing.rb create mode 100644 lib/gitlab/ci/templates/Code-Quality.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Jobs/Test.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/License-Management.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/Serverless.gitlab-ci.yml create mode 100644 lib/gitlab/ci/templates/iOS-Fastlane.gitlab-ci.yml create mode 100644 lib/gitlab/danger/helper.rb create mode 100644 lib/gitlab/danger/teammate.rb create mode 100644 lib/gitlab/diff/suggestion.rb create mode 100644 lib/gitlab/diff/suggestion_diff.rb create mode 100644 lib/gitlab/diff/suggestions_parser.rb create mode 100644 lib/gitlab/external_authorization.rb create mode 100644 lib/gitlab/external_authorization/access.rb create mode 100644 lib/gitlab/external_authorization/cache.rb create mode 100644 lib/gitlab/external_authorization/client.rb create mode 100644 lib/gitlab/external_authorization/config.rb create mode 100644 lib/gitlab/external_authorization/logger.rb create mode 100644 lib/gitlab/external_authorization/response.rb create mode 100644 lib/gitlab/gl_repository/repo_type.rb create mode 100644 lib/gitlab/graphql/authorize/authorize_field_service.rb create mode 100644 lib/gitlab/graphql/query_analyzers/log_query_complexity.rb create mode 100644 lib/gitlab/graphql/tracing.rb create mode 100644 lib/gitlab/group_search_results.rb create mode 100644 lib/gitlab/prometheus/queries/knative_invocation_query.rb create mode 100644 lib/gitlab/push_options.rb create mode 100644 lib/gitlab/quick_actions/commit_actions.rb create mode 100644 lib/gitlab/quick_actions/common_actions.rb create mode 100644 lib/gitlab/quick_actions/issuable_actions.rb create mode 100644 lib/gitlab/quick_actions/issue_actions.rb create mode 100644 lib/gitlab/quick_actions/issue_and_merge_request_actions.rb create mode 100644 lib/gitlab/quick_actions/merge_request_actions.rb create mode 100644 lib/gitlab/sidekiq_middleware/memory_killer.rb delete mode 100644 lib/gitlab/sidekiq_middleware/shutdown.rb create mode 100644 lib/gitlab/sidekiq_signals.rb create mode 100644 lib/gitlab/slash_commands/application_help.rb create mode 100644 lib/gitlab/slash_commands/presenters/error.rb create mode 100644 lib/gitlab/slash_commands/presenters/run.rb create mode 100644 lib/gitlab/slash_commands/run.rb create mode 100644 lib/gitlab/url_helpers.rb create mode 100644 lib/gitlab/utils/deep_size.rb create mode 100644 lib/peek/views/tracing.rb delete mode 100644 lib/unfold_form.rb create mode 100644 locale/bn_BD/gitlab.po create mode 100644 locale/bn_IN/gitlab.po create mode 100644 locale/ka_GE/gitlab.po create mode 100644 qa/STYLE_GUIDE.md create mode 100644 qa/load/artillery.yml create mode 100644 qa/qa/page/alert/auto_devops_alert.rb create mode 100644 qa/qa/page/dashboard/snippet/index.rb create mode 100644 qa/qa/page/dashboard/snippet/new.rb create mode 100644 qa/qa/page/dashboard/snippet/show.rb create mode 100644 qa/qa/resource/events/base.rb create mode 100644 qa/qa/resource/events/project.rb create mode 100644 qa/qa/resource/snippet.rb create mode 100644 qa/qa/runtime/feature.rb create mode 100644 qa/qa/scenario/shared_attributes.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb rename qa/qa/specs/features/browser_ui/3_create/repository/{user_views_raw_diff_patch_requests_spec.rb => user_views_commit_diff_patch_spec.rb} (97%) create mode 100644 qa/qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb create mode 100644 qa/qa/specs/helpers/quarantine.rb create mode 100644 qa/qa/support/retrier.rb create mode 100644 qa/qa/support/waiter.rb create mode 100644 qa/qa/tools/generate_perf_testdata.rb rename qa/spec/{support => helpers}/stub_env.rb (98%) create mode 100644 qa/spec/resource/events/base_spec.rb create mode 100644 qa/spec/resource/events/project_spec.rb create mode 100644 qa/spec/runtime/feature_spec.rb create mode 100644 qa/spec/scenario/template_spec.rb create mode 100644 qa/spec/shared_examples/scenario_shared_examples.rb delete mode 100644 qa/spec/spec_helper_spec.rb create mode 100644 qa/spec/specs/helpers/quarantine_spec.rb delete mode 100644 qa/spec/support/shared_examples/scenario_shared_examples.rb create mode 100644 qa/spec/support/waiter_spec.rb create mode 100644 rubocop/cop/include_action_view_context.rb create mode 100644 scripts/frontend/stylelint/stylelint-duplicate-selectors.js create mode 100644 scripts/frontend/stylelint/stylelint-utility-classes.js create mode 100644 scripts/frontend/stylelint/stylelint-utility-map.js create mode 100644 scripts/frontend/stylelint/stylelint-utils.js create mode 100644 scripts/frontend/stylelint/utility-classes-map.js create mode 100755 scripts/insert-rspec-profiling-data create mode 100644 spec/config/application_spec.rb create mode 100644 spec/controllers/admin/appearances_controller_spec.rb create mode 100644 spec/controllers/concerns/project_unauthorized_spec.rb create mode 100644 spec/controllers/projects/environments/prometheus_api_controller_spec.rb create mode 100644 spec/controllers/projects/git_http_controller_spec.rb rename spec/factories/{import_state.rb => import_states.rb} (100%) create mode 100644 spec/factories/project_daily_statistics.rb create mode 100644 spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb create mode 100644 spec/features/display_system_header_and_footer_bar_spec.rb create mode 100644 spec/features/groups/group_page_with_external_authorization_service_spec.rb create mode 100644 spec/features/groups/labels/create_spec.rb create mode 100644 spec/features/ide/user_opens_merge_request_spec.rb create mode 100644 spec/features/merge_requests/user_filters_by_target_branch_spec.rb create mode 100644 spec/features/projects/classification_label_on_project_pages_spec.rb create mode 100644 spec/features/projects/forks/fork_list_spec.rb create mode 100644 spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb create mode 100644 spec/features/projects/services/user_activates_youtrack_spec.rb create mode 100644 spec/features/projects/settings/external_authorization_service_settings_spec.rb create mode 100644 spec/features/projects/settings/project_settings_spec.rb create mode 100644 spec/features/projects/wiki/user_views_wiki_pages_spec.rb create mode 100644 spec/features/search/user_searches_for_users_spec.rb create mode 100644 spec/features/user_opens_link_to_comment.rb create mode 100644 spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb create mode 100644 spec/fixtures/api/graphql/introspection.graphql create mode 100644 spec/fixtures/api/schemas/public_api/v4/merge_request.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/pipeline/detail.json create mode 100644 spec/fixtures/passphrase_x509_certificate.crt create mode 100644 spec/fixtures/passphrase_x509_certificate_pk.key create mode 100644 spec/fixtures/security-reports/remediations/gl-dependency-scanning-report.json create mode 100644 spec/fixtures/security-reports/remediations/remediation.patch create mode 100644 spec/fixtures/security-reports/remediations/yarn.lock create mode 100644 spec/fixtures/x509_certificate.crt create mode 100644 spec/fixtures/x509_certificate_pk.key create mode 100644 spec/frontend/__mocks__/file_mock.js rename spec/{javascripts => frontend}/behaviors/secret_values_spec.js (100%) rename spec/{javascripts => frontend}/blob/blob_fork_suggestion_spec.js (100%) rename spec/{javascripts => frontend}/boards/modal_store_spec.js (100%) rename spec/{javascripts => frontend}/clusters/clusters_bundle_spec.js (63%) rename spec/{javascripts => frontend}/clusters/components/application_row_spec.js (95%) rename spec/{javascripts => frontend}/clusters/components/applications_spec.js (63%) rename spec/{javascripts => frontend}/clusters/services/mock_data.js (85%) rename spec/{javascripts => frontend}/clusters/stores/clusters_store_spec.js (97%) rename spec/{javascripts => frontend}/cycle_analytics/limit_warning_component_spec.js (100%) rename spec/{javascripts => frontend}/diffs/components/diff_stats_spec.js (100%) create mode 100644 spec/frontend/diffs/components/edit_button_spec.js create mode 100644 spec/frontend/diffs/components/hidden_files_warning_spec.js rename spec/{javascripts => frontend}/diffs/components/no_changes_spec.js (100%) create mode 100644 spec/frontend/environment.js rename spec/{javascripts => frontend}/error_tracking/components/error_tracking_list_spec.js (79%) rename spec/{javascripts => frontend}/error_tracking/store/mutation_spec.js (100%) rename spec/{javascripts => frontend}/filtered_search/filtered_search_token_keys_spec.js (100%) rename spec/{javascripts => frontend}/filtered_search/services/recent_searches_service_error_spec.js (100%) rename spec/{javascripts => frontend}/filtered_search/stores/recent_searches_store_spec.js (100%) rename spec/{javascripts => frontend}/frequent_items/store/getters_spec.js (100%) rename spec/{javascripts => frontend}/gfm_auto_complete_spec.js (54%) create mode 100644 spec/frontend/helpers/class_spec_helper.js create mode 100644 spec/frontend/helpers/fixtures.js create mode 100644 spec/frontend/helpers/locale_helper.js create mode 100644 spec/frontend/helpers/monitor_helper_spec.js create mode 100644 spec/frontend/helpers/scroll_into_view_promise.js create mode 100644 spec/frontend/helpers/set_timeout_promise_helper.js create mode 100644 spec/frontend/helpers/timeout.js create mode 100644 spec/frontend/helpers/user_mock_data_helper.js create mode 100644 spec/frontend/helpers/vue_component_helper.js create mode 100644 spec/frontend/helpers/vue_mount_component_helper.js create mode 100644 spec/frontend/helpers/vue_resource_helper.js create mode 100644 spec/frontend/helpers/vue_test_utils_helper.js create mode 100644 spec/frontend/helpers/vuex_action_helper.js create mode 100644 spec/frontend/helpers/wait_for_attribute_change.js create mode 100644 spec/frontend/helpers/wait_for_promises.js rename spec/{javascripts => frontend}/ide/lib/common/disposable_spec.js (100%) rename spec/{javascripts => frontend}/ide/lib/diff/diff_spec.js (100%) rename spec/{javascripts => frontend}/ide/lib/editor_options_spec.js (100%) create mode 100644 spec/frontend/ide/lib/files_spec.js rename spec/{javascripts => frontend}/ide/stores/modules/commit/mutations_spec.js (64%) rename spec/{javascripts => frontend}/ide/stores/modules/file_templates/getters_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/modules/file_templates/mutations_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/modules/pane/getters_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/modules/pane/mutations_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/modules/pipelines/getters_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/mutations/branch_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/mutations/merge_request_spec.js (78%) rename spec/{javascripts => frontend}/image_diff/view_types_spec.js (100%) create mode 100644 spec/frontend/import_projects/store/getters_spec.js create mode 100644 spec/frontend/import_projects/store/mutations_spec.js rename spec/{javascripts => frontend}/issuable_suggestions/components/app_spec.js (100%) rename spec/{javascripts => frontend}/issuable_suggestions/components/item_spec.js (100%) rename spec/{javascripts => frontend}/issuable_suggestions/mock_data.js (100%) rename spec/{javascripts => frontend}/jobs/components/empty_state_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/erased_block_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/sidebar_detail_row_spec.js (100%) rename spec/{javascripts => frontend}/jobs/components/stuck_block_spec.js (100%) rename spec/{javascripts => frontend}/jobs/store/getters_spec.js (77%) rename spec/{javascripts => frontend}/jobs/store/mutations_spec.js (100%) create mode 100644 spec/frontend/labels_select_spec.js rename spec/{javascripts => frontend}/lib/utils/ajax_cache_spec.js (66%) create mode 100644 spec/frontend/lib/utils/autosave_spec.js rename spec/{javascripts => frontend}/lib/utils/cache_spec.js (100%) rename spec/{javascripts => frontend}/lib/utils/grammar_spec.js (100%) rename spec/{javascripts => frontend}/lib/utils/image_utility_spec.js (100%) rename spec/{javascripts => frontend}/lib/utils/number_utility_spec.js (91%) rename spec/{javascripts => frontend}/lib/utils/text_utility_spec.js (82%) rename spec/{javascripts => frontend}/locale/ensure_single_line_spec.js (100%) rename spec/{javascripts => frontend}/locale/sprintf_spec.js (100%) create mode 100644 spec/frontend/mr_popover/__snapshots__/mr_popover_spec.js.snap create mode 100644 spec/frontend/mr_popover/index_spec.js create mode 100644 spec/frontend/mr_popover/mr_popover_spec.js rename spec/{javascripts => frontend}/notebook/lib/highlight_spec.js (100%) create mode 100644 spec/frontend/notes/components/__snapshots__/discussion_jump_to_next_button_spec.js.snap create mode 100644 spec/frontend/notes/components/discussion_jump_to_next_button_spec.js rename spec/{javascripts => frontend}/notes/components/discussion_reply_placeholder_spec.js (100%) rename spec/{javascripts => frontend}/notes/components/discussion_resolve_button_spec.js (100%) rename spec/{javascripts => frontend}/notes/components/note_attachment_spec.js (100%) rename spec/{javascripts => frontend}/notes/components/note_edited_text_spec.js (100%) rename spec/{javascripts => frontend}/pages/admin/abuse_reports/abuse_reports_spec.js (90%) rename spec/{javascripts => frontend}/performance_bar/services/performance_bar_service_spec.js (100%) rename spec/{javascripts => frontend}/pipelines/blank_state_spec.js (100%) rename spec/{javascripts => frontend}/pipelines/empty_state_spec.js (100%) rename spec/{javascripts => frontend}/pipelines/pipeline_store_spec.js (100%) rename spec/{javascripts => frontend}/pipelines/pipelines_store_spec.js (100%) rename spec/{javascripts => frontend}/registry/getters_spec.js (100%) rename spec/{javascripts => frontend}/reports/components/report_link_spec.js (100%) rename spec/{javascripts => frontend}/reports/components/report_section_spec.js (98%) rename spec/{javascripts => frontend}/reports/store/utils_spec.js (100%) create mode 100644 spec/frontend/serverless/components/area_spec.js rename spec/{javascripts => frontend}/serverless/components/environment_row_spec.js (57%) create mode 100644 spec/frontend/serverless/components/function_details_spec.js rename spec/{javascripts => frontend}/serverless/components/function_row_spec.js (54%) create mode 100644 spec/frontend/serverless/components/functions_spec.js create mode 100644 spec/frontend/serverless/components/missing_prometheus_spec.js create mode 100644 spec/frontend/serverless/components/pod_box_spec.js rename spec/{javascripts => frontend}/serverless/components/url_spec.js (58%) rename spec/{javascripts => frontend}/serverless/mock_data.js (62%) create mode 100644 spec/frontend/serverless/store/actions_spec.js create mode 100644 spec/frontend/serverless/store/getters_spec.js create mode 100644 spec/frontend/serverless/store/mutations_spec.js create mode 100644 spec/frontend/serverless/utils.js rename spec/{javascripts => frontend}/sidebar/confidential_edit_buttons_spec.js (100%) rename spec/{javascripts => frontend}/sidebar/confidential_edit_form_buttons_spec.js (100%) rename spec/{javascripts => frontend}/sidebar/lock/edit_form_spec.js (100%) rename spec/{javascripts => frontend}/u2f/util_spec.js (100%) rename spec/{javascripts => frontend}/vue_mr_widget/components/mr_widget_container_spec.js (100%) rename spec/{javascripts => frontend}/vue_mr_widget/components/mr_widget_icon_spec.js (100%) rename spec/{javascripts => frontend}/vue_mr_widget/components/states/commit_edit_spec.js (100%) rename spec/{javascripts => frontend}/vue_mr_widget/components/states/mr_widget_commit_message_dropdown_spec.js (100%) rename spec/{javascripts => frontend}/vue_mr_widget/components/states/mr_widget_commits_header_spec.js (80%) rename spec/{javascripts => frontend}/vue_mr_widget/stores/get_state_key_spec.js (100%) create mode 100644 spec/frontend/vue_shared/components/__snapshots__/resizable_chart_container_spec.js.snap rename spec/{javascripts => frontend}/vue_shared/components/callout_spec.js (100%) rename spec/{javascripts => frontend}/vue_shared/components/code_block_spec.js (100%) rename spec/{javascripts => frontend}/vue_shared/components/diff_viewer/viewers/mode_changed_spec.js (100%) rename spec/{javascripts => frontend}/vue_shared/components/identicon_spec.js (100%) rename spec/{javascripts => frontend}/vue_shared/components/lib/utils/dom_utils_spec.js (100%) create mode 100644 spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js rename spec/{javascripts => frontend}/vue_shared/components/pagination_links_spec.js (100%) create mode 100644 spec/frontend/vue_shared/components/resizable_chart_container_spec.js rename spec/{javascripts => frontend}/vue_shared/components/time_ago_tooltip_spec.js (100%) rename spec/{javascripts => frontend}/vuex_shared/modules/modal/mutations_spec.js (100%) create mode 100644 spec/graphql/features/authorization_spec.rb create mode 100644 spec/graphql/resolvers/base_resolver_spec.rb rename spec/graphql/resolvers/{merge_request_resolver_spec.rb => merge_requests_resolver_spec.rb} (52%) create mode 100644 spec/graphql/resolvers/metadata_resolver_spec.rb create mode 100644 spec/graphql/types/base_field_spec.rb create mode 100644 spec/graphql/types/ci/detailed_status_type_spec.rb create mode 100644 spec/graphql/types/issuable_state_enum_spec.rb create mode 100644 spec/graphql/types/issue_state_enum_spec.rb create mode 100644 spec/graphql/types/label_type_spec.rb create mode 100644 spec/graphql/types/merge_request_state_enum_spec.rb create mode 100644 spec/graphql/types/metadata_type_spec.rb create mode 100644 spec/graphql/types/milestone_type_spec.rb create mode 100644 spec/graphql/types/user_type_spec.rb create mode 100644 spec/helpers/appearances_helper_spec.rb create mode 100644 spec/helpers/clusters_helper_spec.rb delete mode 100644 spec/javascripts/diffs/components/changed_files_dropdown_spec.js delete mode 100644 spec/javascripts/diffs/components/edit_button_spec.js delete mode 100644 spec/javascripts/diffs/components/hidden_files_warning_spec.js create mode 100644 spec/javascripts/environments/confirm_rollback_modal_spec.js create mode 100644 spec/javascripts/error_tracking_settings/components/app_spec.js create mode 100644 spec/javascripts/error_tracking_settings/components/error_tracking_form_spec.js create mode 100644 spec/javascripts/error_tracking_settings/components/project_dropdown_spec.js create mode 100644 spec/javascripts/error_tracking_settings/mock.js create mode 100644 spec/javascripts/error_tracking_settings/store/actions_spec.js create mode 100644 spec/javascripts/error_tracking_settings/store/getters_spec.js create mode 100644 spec/javascripts/error_tracking_settings/store/mutation_spec.js create mode 100644 spec/javascripts/error_tracking_settings/utils_spec.js create mode 100644 spec/javascripts/filtered_search/visual_token_value_spec.js delete mode 100644 spec/javascripts/fixtures/ajax_loading_spinner.html.haml create mode 100644 spec/javascripts/fixtures/autocomplete_sources.rb delete mode 100644 spec/javascripts/fixtures/balsamiq_viewer.html.haml delete mode 100644 spec/javascripts/fixtures/create_item_dropdown.html.haml delete mode 100644 spec/javascripts/fixtures/event_filter.html.haml delete mode 100644 spec/javascripts/fixtures/gl_dropdown.html.haml delete mode 100644 spec/javascripts/fixtures/gl_field_errors.html.haml delete mode 100644 spec/javascripts/fixtures/issuable_filter.html.haml delete mode 100644 spec/javascripts/fixtures/issue_sidebar_label.html.haml delete mode 100644 spec/javascripts/fixtures/line_highlighter.html.haml delete mode 100644 spec/javascripts/fixtures/linked_tabs.html.haml delete mode 100644 spec/javascripts/fixtures/merge_requests_show.html.haml delete mode 100644 spec/javascripts/fixtures/mini_dropdown_graph.html.haml delete mode 100644 spec/javascripts/fixtures/notebook_viewer.html.haml delete mode 100644 spec/javascripts/fixtures/oauth_remember_me.html.haml delete mode 100644 spec/javascripts/fixtures/pdf_viewer.html.haml delete mode 100644 spec/javascripts/fixtures/pipeline_graph.html.haml delete mode 100644 spec/javascripts/fixtures/pipelines.html.haml delete mode 100644 spec/javascripts/fixtures/project_select_combo_button.html.haml delete mode 100644 spec/javascripts/fixtures/search_autocomplete.html.haml delete mode 100644 spec/javascripts/fixtures/signin_tabs.html.haml delete mode 100644 spec/javascripts/fixtures/sketch_viewer.html.haml create mode 100644 spec/javascripts/fixtures/static/README.md create mode 100644 spec/javascripts/fixtures/static/ajax_loading_spinner.html create mode 100644 spec/javascripts/fixtures/static/balsamiq_viewer.html create mode 100644 spec/javascripts/fixtures/static/create_item_dropdown.html create mode 100644 spec/javascripts/fixtures/static/event_filter.html create mode 100644 spec/javascripts/fixtures/static/gl_dropdown.html create mode 100644 spec/javascripts/fixtures/static/gl_field_errors.html create mode 100644 spec/javascripts/fixtures/static/issuable_filter.html create mode 100644 spec/javascripts/fixtures/static/issue_sidebar_label.html create mode 100644 spec/javascripts/fixtures/static/line_highlighter.html create mode 100644 spec/javascripts/fixtures/static/linked_tabs.html create mode 100644 spec/javascripts/fixtures/static/merge_requests_show.html create mode 100644 spec/javascripts/fixtures/static/mini_dropdown_graph.html create mode 100644 spec/javascripts/fixtures/static/notebook_viewer.html create mode 100644 spec/javascripts/fixtures/static/oauth_remember_me.html create mode 100644 spec/javascripts/fixtures/static/pdf_viewer.html create mode 100644 spec/javascripts/fixtures/static/pipeline_graph.html create mode 100644 spec/javascripts/fixtures/static/pipelines.html create mode 100644 spec/javascripts/fixtures/static/project_select_combo_button.html create mode 100644 spec/javascripts/fixtures/static/search_autocomplete.html create mode 100644 spec/javascripts/fixtures/static/signin_tabs.html create mode 100644 spec/javascripts/fixtures/static/sketch_viewer.html create mode 100644 spec/javascripts/import_projects/components/import_projects_table_spec.js create mode 100644 spec/javascripts/import_projects/components/imported_project_table_row_spec.js create mode 100644 spec/javascripts/import_projects/components/provider_repo_table_row_spec.js create mode 100644 spec/javascripts/import_projects/store/actions_spec.js create mode 100644 spec/javascripts/jobs/components/unmet_prerequisites_block_spec.js delete mode 100644 spec/javascripts/labels_select_spec.js create mode 100644 spec/javascripts/lib/utils/higlight_spec.js create mode 100644 spec/javascripts/monitoring/utils_spec.js create mode 100644 spec/javascripts/notes/components/discussion_filter_note_spec.js delete mode 100644 spec/javascripts/notes/components/discussion_jump_to_next_button_spec.js create mode 100644 spec/javascripts/notes/components/discussion_resolve_with_issue_button_spec.js create mode 100644 spec/javascripts/pages/projects/pipeline_schedules/shared/components/timezone_dropdown_spec.js create mode 100644 spec/javascripts/persistent_user_callout_spec.js create mode 100644 spec/javascripts/related_merge_requests/components/related_merge_requests_spec.js create mode 100644 spec/javascripts/related_merge_requests/store/actions_spec.js create mode 100644 spec/javascripts/related_merge_requests/store/mutations_spec.js delete mode 100644 spec/javascripts/serverless/components/functions_spec.js delete mode 100644 spec/javascripts/serverless/stores/serverless_store_spec.js create mode 100644 spec/javascripts/vue_mr_widget/components/mr_widget_alert_message_spec.js create mode 100644 spec/javascripts/vue_shared/components/issue/related_issuable_item_spec.js create mode 100644 spec/javascripts/vue_shared/components/issue/related_issuable_mock_data.js create mode 100644 spec/javascripts/vue_shared/components/project_selector/project_list_item_spec.js create mode 100644 spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js create mode 100644 spec/lib/api/entities/job_request/image_spec.rb create mode 100644 spec/lib/api/entities/job_request/port_spec.rb create mode 100644 spec/lib/backup/uploads_spec.rb create mode 100644 spec/lib/banzai/filter/output_safety_spec.rb delete mode 100644 spec/lib/banzai/suggestions_parser_spec.rb create mode 100644 spec/lib/gitlab/authorized_keys_spec.rb create mode 100644 spec/lib/gitlab/background_migration/populate_merge_request_assignees_table_spec.rb create mode 100644 spec/lib/gitlab/chat/command_spec.rb create mode 100644 spec/lib/gitlab/chat/output_spec.rb create mode 100644 spec/lib/gitlab/chat/responder/base_spec.rb create mode 100644 spec/lib/gitlab/chat/responder/slack_spec.rb create mode 100644 spec/lib/gitlab/chat/responder_spec.rb create mode 100644 spec/lib/gitlab/chat_spec.rb create mode 100644 spec/lib/gitlab/ci/build/port_spec.rb create mode 100644 spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb create mode 100644 spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb create mode 100644 spec/lib/gitlab/ci/config/entry/port_spec.rb create mode 100644 spec/lib/gitlab/ci/config/entry/ports_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/chain/remove_unwanted_chat_jobs_spec.rb create mode 100644 spec/lib/gitlab/ci/status/build/failed_unmet_prerequisites_spec.rb create mode 100644 spec/lib/gitlab/ci/status/build/preparing_spec.rb create mode 100644 spec/lib/gitlab/ci/status/preparing_spec.rb create mode 100644 spec/lib/gitlab/danger/helper_spec.rb create mode 100644 spec/lib/gitlab/danger/teammate_spec.rb create mode 100644 spec/lib/gitlab/diff/suggestion_diff_spec.rb create mode 100644 spec/lib/gitlab/diff/suggestion_spec.rb create mode 100644 spec/lib/gitlab/diff/suggestions_parser_spec.rb create mode 100644 spec/lib/gitlab/external_authorization/access_spec.rb create mode 100644 spec/lib/gitlab/external_authorization/cache_spec.rb create mode 100644 spec/lib/gitlab/external_authorization/client_spec.rb create mode 100644 spec/lib/gitlab/external_authorization/logger_spec.rb create mode 100644 spec/lib/gitlab/external_authorization/response_spec.rb create mode 100644 spec/lib/gitlab/external_authorization_spec.rb create mode 100644 spec/lib/gitlab/gl_repository/repo_type_spec.rb create mode 100644 spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb delete mode 100644 spec/lib/gitlab/graphql/authorize_spec.rb create mode 100644 spec/lib/gitlab/graphql/tracing_spec.rb create mode 100644 spec/lib/gitlab/group_search_results_spec.rb create mode 100644 spec/lib/gitlab/import/merge_request_helpers_spec.rb create mode 100644 spec/lib/gitlab/metrics/transaction_spec.rb create mode 100644 spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb create mode 100644 spec/lib/gitlab/push_options_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_middleware/memory_killer_spec.rb delete mode 100644 spec/lib/gitlab/sidekiq_middleware/shutdown_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_signals_spec.rb create mode 100644 spec/lib/gitlab/slash_commands/application_help_spec.rb create mode 100644 spec/lib/gitlab/slash_commands/presenters/error_spec.rb create mode 100644 spec/lib/gitlab/slash_commands/presenters/run_spec.rb create mode 100644 spec/lib/gitlab/slash_commands/run_spec.rb create mode 100644 spec/lib/gitlab/tracing_spec.rb create mode 100644 spec/lib/gitlab/utils/deep_size_spec.rb create mode 100644 spec/mailers/email_rejection_mailer_spec.rb create mode 100644 spec/migrations/clean_up_noteable_id_for_notes_on_commits_spec.rb create mode 100644 spec/migrations/schedule_populate_merge_request_assignees_table_spec.rb create mode 100644 spec/migrations/schedule_sync_issuables_state_id_spec.rb create mode 100644 spec/migrations/truncate_user_fullname_spec.rb create mode 100644 spec/models/concerns/issuable_states_spec.rb create mode 100644 spec/models/concerns/maskable_spec.rb create mode 100644 spec/models/project_daily_statistic_spec.rb create mode 100644 spec/models/project_services/youtrack_service_spec.rb create mode 100644 spec/models/serverless/function_spec.rb create mode 100644 spec/policies/group_member_policy_spec.rb create mode 100644 spec/policies/identity_provider_policy_spec.rb create mode 100644 spec/policies/merge_request_policy_spec.rb create mode 100644 spec/presenters/blobs/unfold_presenter_spec.rb create mode 100644 spec/presenters/ci/bridge_presenter_spec.rb create mode 100644 spec/requests/api/graphql/gitlab_schema_spec.rb create mode 100644 spec/requests/api/graphql/metadata_query_spec.rb create mode 100644 spec/requests/api/graphql_spec.rb create mode 100644 spec/requests/api/project_statistics_spec.rb create mode 100644 spec/routing/uploads_routing_spec.rb create mode 100644 spec/rubocop/cop/include_action_view_context_spec.rb create mode 100644 spec/serializers/merge_request_for_pipeline_entity_spec.rb create mode 100644 spec/serializers/namespace_basic_entity_spec.rb create mode 100644 spec/serializers/namespace_serializer_spec.rb create mode 100644 spec/serializers/project_import_entity_spec.rb create mode 100644 spec/serializers/project_serializer_spec.rb create mode 100644 spec/serializers/provider_repo_entity_spec.rb create mode 100644 spec/serializers/provider_repo_serializer_spec.rb create mode 100644 spec/services/ci/prepare_build_service_spec.rb create mode 100644 spec/services/clusters/applications/patch_service_spec.rb delete mode 100644 spec/services/clusters/applications/schedule_installation_service_spec.rb create mode 100644 spec/services/clusters/applications/update_service_spec.rb rename spec/services/{git_push_service_spec.rb => git/branch_push_service_spec.rb} (99%) rename spec/services/{git_tag_push_service_spec.rb => git/tag_push_service_spec.rb} (93%) create mode 100644 spec/services/groups/auto_devops_service_spec.rb create mode 100644 spec/services/merge_requests/merge_to_ref_service_spec.rb create mode 100644 spec/services/merge_requests/migrate_external_diffs_service_spec.rb create mode 100644 spec/services/merge_requests/push_options_handler_service_spec.rb create mode 100644 spec/services/projects/fetch_statistics_increment_service_spec.rb create mode 100644 spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb create mode 100644 spec/services/projects/hashed_storage/rollback_repository_service_spec.rb create mode 100644 spec/services/projects/hashed_storage/rollback_service_spec.rb create mode 100644 spec/services/projects/repository_languages_service_spec.rb create mode 100644 spec/services/prometheus/proxy_service_spec.rb create mode 100644 spec/services/suggestions/outdate_service_spec.rb create mode 100644 spec/support/database_cleaner.rb create mode 100644 spec/support/external_authorization_service_helpers.rb delete mode 100644 spec/support/features/issuable_quick_actions_shared_examples.rb create mode 100644 spec/support/helpers/license_helper.rb create mode 100644 spec/support/helpers/policy_helpers.rb create mode 100644 spec/support/helpers/stub_worker.rb create mode 100644 spec/support/matchers/not_changed_matcher.rb create mode 100644 spec/support/shared_context/policies/project_policy_shared_context.rb create mode 100644 spec/support/shared_contexts/finders/group_projects_finder_shared_contexts.rb create mode 100644 spec/support/shared_contexts/finders/issues_finder_shared_contexts.rb create mode 100644 spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb create mode 100644 spec/support/shared_contexts/finders/users_finder_shared_contexts.rb create mode 100644 spec/support/shared_contexts/policies/group_policy_shared_context.rb create mode 100644 spec/support/shared_examples/application_setting_examples.rb create mode 100644 spec/support/shared_examples/controllers/external_authorization_service_shared_examples.rb create mode 100644 spec/support/shared_examples/finders/finder_with_external_authorization_enabled.rb create mode 100644 spec/support/shared_examples/graphql/issuable_state_shared_examples.rb create mode 100644 spec/support/shared_examples/policies/project_policy_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/commit/tag_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/assign_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/award_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/close_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/copy_metadata_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/done_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/estimate_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/label_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/lock_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/milestone_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/relabel_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/remove_estimate_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/remove_milestone_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/remove_time_spent_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/reopen_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/shrug_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/spend_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/subscribe_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/tableflip_quick_action_shared_examples.rb rename spec/support/shared_examples/{time_tracking_shared_examples.rb => quick_actions/issuable/time_tracking_quick_action_shared_examples.rb} (88%) create mode 100644 spec/support/shared_examples/quick_actions/issuable/title_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/todo_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/unassign_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/unlabel_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/unlock_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/unsubscribe_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/board_move_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/confidential_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/create_merge_request_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/due_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/duplicate_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/move_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issue/remove_due_date_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/merge_request/target_branch_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/merge_request/wip_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb delete mode 100644 spec/support/shared_examples/requests/api/merge_requests_list.rb create mode 100644 spec/support/shared_examples/services/base_helm_service_shared_examples.rb delete mode 100644 spec/support/shared_examples/snippet_visibility.rb create mode 100644 spec/support/shared_examples/snippet_visibility_shared_examples.rb create mode 100644 spec/support/shared_examples/views/nav_sidebar.rb create mode 100644 spec/validators/color_validator_spec.rb create mode 100644 spec/validators/devise_email_validator_spec.rb create mode 100644 spec/validators/x509_certificate_credentials_validator_spec.rb create mode 100644 spec/views/ci/status/_icon.html.haml_spec.rb create mode 100644 spec/views/groups/_home_panel.html.haml_spec.rb create mode 100644 spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb create mode 100644 spec/views/layouts/nav/sidebar/_instance_statistics.html.haml_spec.rb create mode 100644 spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb create mode 100644 spec/views/projects/deployments/_confirm_rollback_modal_spec.html.rb create mode 100644 spec/workers/chat_notification_worker_spec.rb create mode 100644 spec/workers/ci/build_prepare_worker_spec.rb create mode 100644 spec/workers/cluster_project_configure_worker_spec.rb rename spec/workers/{project_migrate_hashed_storage_worker_spec.rb => hashed_storage/project_migrate_worker_spec.rb} (92%) create mode 100644 spec/workers/hashed_storage/project_rollback_worker_spec.rb create mode 100644 spec/workers/hashed_storage/rollbacker_worker_spec.rb create mode 100644 spec/workers/migrate_external_diffs_worker_spec.rb create mode 100644 spec/workers/project_daily_statistics_worker_spec.rb create mode 100644 spec/workers/schedule_migrate_external_diffs_worker_spec.rb delete mode 100644 vendor/assets/javascripts/jquery.atwho.js delete mode 100644 vendor/assets/javascripts/jquery.caret.js create mode 100644 vendor/project_templates/android.tar.gz create mode 100644 vendor/project_templates/dotnetcore.tar.gz create mode 100644 vendor/project_templates/gomicro.tar.gz create mode 100644 vendor/project_templates/iosswift.tar.gz create mode 100644 vendor/project_templates/nfgitbook.tar.gz create mode 100644 vendor/project_templates/nfhexo.tar.gz create mode 100644 vendor/project_templates/nfhugo.tar.gz create mode 100644 vendor/project_templates/nfjekyll.tar.gz create mode 100644 vendor/project_templates/nfplainhtml.tar.gz diff --git a/.eslintignore b/.eslintignore index f78840e67b..9a5e15c86a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -9,5 +9,6 @@ /scripts/ /tmp/ /vendor/ +jest.config.js karma.config.js webpack.config.js diff --git a/.eslintrc.yml b/.eslintrc.yml index b0794bb743..98a497aa12 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -9,9 +9,6 @@ plugins: - import - html settings: - html/html-extensions: - - '.html' - - '.html.raw' import/resolver: webpack: config: './config/webpack.config.js' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f0e798e8a..4eb17656ed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,7 @@ -image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.18-chrome-71.0-node-10.x-yarn-1.12-postgresql-9.6-graphicsmagick-1.3.29" +image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.18-chrome-73.0-node-10.x-yarn-1.12-postgresql-9.6-graphicsmagick-1.3.29" + +include: + - local: /lib/gitlab/ci/templates/Code-Quality.gitlab-ci.yml .dedicated-runner: &dedicated-runner retry: 1 @@ -66,6 +69,7 @@ stages: paths: - knapsack/ - rspec_flaky/ + - rspec_profiling/ .use-pg: &use-pg services: @@ -159,6 +163,7 @@ stages: - coverage/ - knapsack/ - rspec_flaky/ + - rspec_profiling/ - tmp/capybara/ reports: junit: junit_rspec.xml @@ -244,8 +249,8 @@ package-and-qa: - ./scripts/trigger-build omnibus when: manual only: - - //@gitlab-org/gitlab-ce - - //@gitlab-org/gitlab-ee + - /.+/@gitlab-org/gitlab-ce + - /.+/@gitlab-org/gitlab-ee # Review docs base .review-docs: &review-docs @@ -336,6 +341,7 @@ retrieve-tests-metadata: - wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH - '[[ -f $KNAPSACK_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH}' - mkdir -p rspec_flaky/ + - mkdir -p rspec_profiling/ - wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH - '[[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}' @@ -350,7 +356,7 @@ update-tests-metadata: - rspec_flaky/ policy: push script: - - retry gem install fog-aws mime-types activesupport --no-document + - retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document - scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json - scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/all_*_*.json - FLAKY_RSPEC_GENERATE_REPORT=1 scripts/prune-old-flaky-specs ${FLAKY_RSPEC_SUITE_REPORT_PATH} @@ -358,6 +364,7 @@ update-tests-metadata: - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH' - rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json - rm -f rspec_flaky/all_*.json rspec_flaky/new_*.json + - scripts/insert-rspec-profiling-data flaky-examples-check: <<: *dedicated-runner @@ -388,13 +395,11 @@ flaky-examples-check: .assets-compile-cache: &assets-compile-cache cache: - key: "assets-compile:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:v4" + key: "assets-compile:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:v5" paths: - vendor/ruby/ - .yarn-cache/ - # We have disabled caching of sprockets for now, as it fails to pick up changes in SCSS: - # https://gitlab.com/gitlab-org/gitlab-ce/issues/57431 - # - tmp/cache/assets/sprockets + - tmp/cache/assets/sprockets compile-assets: <<: *dedicated-runner @@ -446,6 +451,17 @@ setup-test-env: - master - /(^docs[\/-].*|.*-docs$)/ +.review-schedules-only: &review-schedules-only + only: + refs: + - schedules@gitlab-org/gitlab-ce + - schedules@gitlab-org/gitlab-ee + kubernetes: active + except: + refs: + - tags + - /(^docs[\/-].*|.*-docs$)/ + .review-base: &review-base <<: *dedicated-no-docs-no-db-pull-cache-job <<: *review-only @@ -475,6 +491,9 @@ setup-test-env: build-qa-image: <<: *review-docker + variables: + <<: *review-docker-variables + GIT_DEPTH: "20" stage: prepare script: - time docker build --cache-from ${LATEST_QA_IMAGE} --tag ${QA_IMAGE} ./qa/ @@ -511,6 +530,7 @@ rspec-mysql: parallel: 50 .rspec-quarantine: &rspec-quarantine + retry: 0 script: - export CACHE_CLASSES=true - scripts/gitaly-test-spawn @@ -635,7 +655,7 @@ gitlab:setup-mysql: # Frontend-related jobs gitlab:assets:compile: <<: *dedicated-no-docs-pull-cache-job - image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-git-2.18-chrome-71.0-node-8.x-yarn-1.12-graphicsmagick-1.3.29-docker-18.06.1 + image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-git-2.18-chrome-73.0-node-8.x-yarn-1.12-graphicsmagick-1.3.29-docker-18.06.1 dependencies: - setup-test-env services: @@ -665,13 +685,43 @@ gitlab:assets:compile: - public/assets/ <<: *assets-compile-cache only: - - //@gitlab-org/gitlab-ce - - //@gitlab-org/gitlab-ee - - //@gitlab/gitlabhq - - //@gitlab/gitlab-ee + - /.+/@gitlab-org/gitlab-ce + - /.+/@gitlab-org/gitlab-ee + - /.+/@gitlab/gitlabhq + - /.+/@gitlab/gitlab-ee tags: - - gitlab-org-delivery - - high-cpu + - docker + - gitlab-org + +gitlab:ui:visual: + tags: + - gitlab-org + before_script: [] + allow_failure: true + dependencies: + - compile-assets + script: + # Remove node modules from GitLab that may conflict with gitlab-ui + - rm -r node_modules + - git clone https://gitlab.com/gitlab-org/gitlab-ui.git + - cp public/assets/application-*.css gitlab-ui/styles/application.css + - cd gitlab-ui + - yarn install + - CSS_URL=./application.css yarn test + only: + changes: + - app/assets/stylesheets/*.scss + - app/assets/stylesheets/**/*.scss + - app/assets/stylesheets/**/**/*.scss + except: + refs: + - /(^docs[\/-].*|.*-docs$)/ + - master + variables: + - $CI_COMMIT_MESSAGE =~ /\[skip visual\]/i + artifacts: + paths: + - tests/__image_snapshots__/ karma: <<: *dedicated-no-docs-pull-cache-job @@ -727,31 +777,14 @@ jest: code_quality: <<: *dedicated-no-docs-no-db-pull-cache-job - image: docker:stable - allow_failure: true # gitlab-org runners set `privileged: false` but we need to have it set to true # since we're using Docker in Docker tags: [] before_script: [] - services: - - docker:stable-dind - variables: - SETUP_DB: "false" - DOCKER_DRIVER: overlay2 cache: {} dependencies: [] - script: - # Extract "MAJOR.MINOR" from CI_SERVER_VERSION and generate "MAJOR-MINOR-stable" for Security Products - - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - - docker run - --env SOURCE_CODE="$PWD" - --volume "$PWD":/code - --volume /var/run/docker.sock:/var/run/docker.sock - "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code - artifacts: - reports: - codequality: gl-code-quality-report.json - expire_in: 1 week + variables: + SETUP_DB: "false" sast: <<: *dedicated-no-docs-no-db-pull-cache-job @@ -819,8 +852,6 @@ qa:selectors: .qa-frontend-node: &qa-frontend-node <<: *dedicated-no-docs-no-db-pull-cache-job stage: test - variables: - NODE_OPTIONS: --max_old_space_size=3584 cache: key: "$CI_JOB_NAME" paths: @@ -957,18 +988,16 @@ no_ee_check: script: - scripts/no-ee-check only: - - //@gitlab-org/gitlab-ce + - /.+/@gitlab-org/gitlab-ce # GitLab Review apps -review-build-cng: - <<: *review-only +.review-build-cng-base: &review-build-cng-base image: ruby:2.5-alpine stage: test before_script: [] dependencies: [] cache: {} variables: - GIT_DEPTH: "1" API_TOKEN: "${GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN}" script: - apk add --update openssl curl jq @@ -977,12 +1006,18 @@ review-build-cng: - wait_for_job_to_be_done "gitlab:assets:compile" - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng -review-deploy: +review-build-cng: + <<: *review-only + <<: *review-build-cng-base + +schedule:review-build-cng: + <<: *review-schedules-only + <<: *review-build-cng-base + +.review-deploy-base: &review-deploy-base <<: *review-base - retry: 2 allow_failure: true variables: - GIT_DEPTH: "1" HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" GITLAB_HELM_CHART_REF: "master" @@ -999,13 +1034,17 @@ review-deploy: - source ./scripts/review_apps/review-apps.sh script: - wait_for_job_to_be_done "review-build-cng" - - check_kube_domain - - download_gitlab_chart - - ensure_namespace - - install_tiller - - install_external_dns - - time deploy - - add_license + - perform_review_app_deployment + +review-deploy: + <<: *review-deploy-base + +schedule:review-deploy: + <<: *review-deploy-base + <<: *review-schedules-only + script: + - wait_for_job_to_be_done "schedule:review-build-cng" + - perform_review_app_deployment .review-qa-base: &review-qa-base <<: *review-docker @@ -1033,19 +1072,39 @@ review-deploy: - apk update && apk add curl jq - source ./scripts/review_apps/review-apps.sh - gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}} - - wait_for_job_to_be_done "review-deploy" review-qa-smoke: <<: *review-qa-base script: + - wait_for_job_to_be_done "review-deploy" - gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" review-qa-all: <<: *review-qa-base script: + - wait_for_job_to_be_done "review-deploy" - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" when: manual + +.review-performance-base: &review-performance-base + <<: *review-qa-base + script: + - wait_for_job_to_be_done "review-deploy" + - mkdir -p gitlab-exporter + - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js + - mkdir sitespeed-results + - docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:6.3.1 --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL" + - mv sitespeed-results/data/performance.json performance.json + artifacts: + paths: + - sitespeed-results/ + reports: + performance: performance.json + +review-performance: + <<: *review-performance-base + review-stop: <<: *review-base <<: *single-script-job @@ -1065,21 +1124,21 @@ review-stop: schedule:review-cleanup: <<: *review-base + <<: *review-schedules-only stage: build allow_failure: true variables: GIT_DEPTH: "1" environment: name: review/auto-cleanup - only: - refs: - - schedules@gitlab-org/gitlab-ce - - schedules@gitlab-org/gitlab-ee - kubernetes: active - except: - - tags - - /(^docs[\/-].*|.*-docs$)/ before_script: - gem install gitlab --no-document script: - ruby -rrubygems scripts/review_apps/automated_cleanup.rb + +schedule:review-performance: + <<: *review-performance-base + <<: *review-schedules-only + script: + - wait_for_job_to_be_done "schedule:review-deploy" + diff --git a/.gitlab/CODEOWNERS.disabled b/.gitlab/CODEOWNERS.disabled index b9f886c1d4..89a9696d3e 100644 --- a/.gitlab/CODEOWNERS.disabled +++ b/.gitlab/CODEOWNERS.disabled @@ -1,6 +1,6 @@ # Backend Maintainers are the default for all ruby files -*.rb @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @nick.thomas @rspeicher @rymai @smcgivern -*.rake @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @nick.thomas @rspeicher @rymai @smcgivern +*.rb @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @nick.thomas @rspeicher @rymai @smcgivern +*.rake @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @nick.thomas @rspeicher @rymai @smcgivern # Technical writing team are the default reviewers for everything in `doc/` /doc/ @axil @marcia diff --git a/.gitlab/issue_templates/Database Reviewer.md b/.gitlab/issue_templates/Database Reviewer.md new file mode 100644 index 0000000000..a5e7e42fd1 --- /dev/null +++ b/.gitlab/issue_templates/Database Reviewer.md @@ -0,0 +1,32 @@ +#### Database Reviewer Checklist + +Thank you for becoming a ~database reviewer! Please work on the list below to complete your setup. For any question, reach out to #database an mention @abrandl. + +- [ ] Change issue title to include your name: `Database Reviewer Checklist: Your Name` +- [ ] Review general [code review guide](https://docs.gitlab.com/ee/development/code_review.html) +- [ ] Review [database review documentation](https://about.gitlab.com/handbook/engineering/workflow/code-review/database.html) +- [ ] Familiarize with [migration helpers](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/gitlab/database/migration_helpers.rb) and review usage in existing migrations +- [ ] Read [database migration style guide](https://docs.gitlab.com/ee/development/migration_style_guide.html) +- [ ] Familiarize with best practices in [database guides](https://docs.gitlab.com/ee/development/#database-guides) +- [ ] Watch [Optimising Rails Database Queries: Episode 1](https://www.youtube.com/watch?v=79GurlaxhsI) +- [ ] Read [Understanding EXPLAIN plans](https://docs.gitlab.com/ee/development/understanding_explain_plans.html) +- [ ] Review [database best practices](https://docs.gitlab.com/ee/development/#best-practices) +- [ ] Review how we use [database instances restored from a backup](https://ops.gitlab.net/gitlab-com/gl-infra/gitlab-restore/postgres-gprd) for testing and make sure you're set up to execute pipelines (check [README.md](https://ops.gitlab.net/gitlab-com/gl-infra/gitlab-restore/postgres-gprd/blob/master/README.md) and reach out to @abrandl since this is currently subject to being changed) +- [ ] Get yourself added to [@gl-database](https://gitlab.com/groups/gl-database/-/group_members) group and respond to @-mentions to the group (reach out to any maintainer on the group to get added). You will get TODOs on gitlab.com for group mentions. +- [ ] Make sure you have proper access to at least a read-only replica in staging and production +- [ ] Indicate in `data/team.yml` your role as a database reviewer ([example MR](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/19600/diffs)). Assign MR to your manager for merge. +- [ ] Send one MR to improve the [review documentation](https://about.gitlab.com/handbook/engineering/workflow/code-review/database.html) or the [issue template](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab/issue_templates/Database%20Reviewer.md) + +Note that *approving and accepting* merge requests is *restricted* to +Database Maintainers only. As a reviewer, pass the MR to a maintainer +for approval. + +You're all set! Watch out for TODOs on GitLab.com. + +###### Where to go for questions? + +Reach out to `#database` on Slack and mention @abrandl for any questions. + +cc @abrandl + +/label ~meta ~database diff --git a/.gitlab/issue_templates/Doc Review.md b/.gitlab/issue_templates/Doc Review.md new file mode 100644 index 0000000000..14ab0c82d5 --- /dev/null +++ b/.gitlab/issue_templates/Doc Review.md @@ -0,0 +1,20 @@ + + + + + +## References + +Merged MR that introduced documentation requiring review: + +Related issue(s): + +## Further Details + + + + +/label ~Documentation ~docs-review diff --git a/.gitlab/issue_templates/Documentation.md b/.gitlab/issue_templates/Documentation.md index b33ed5bcaa..67602b7b2d 100644 --- a/.gitlab/issue_templates/Documentation.md +++ b/.gitlab/issue_templates/Documentation.md @@ -1,54 +1,53 @@ - + +* Use this issue template for suggesting new docs or updates to existing docs. + Note: Doc work as part of feature development is covered in the Feature Request template. + +* For issues related to features of the docs.gitlab.com site, see + https://gitlab.com/gitlab-com/gitlab-docs/issues/ - +* For information about documentation content and process, see + https://docs.gitlab.com/ee/development/documentation/ --> - + -- [ ] Documents Feature A -- [ ] Follow-up from: #XXX, !YYY + + + + + + -## New doc or update? +### Problem to solve - + -- [ ] New documentation -- [ ] Update existing documentation +### Further details -## Checklists + -### Product Manager +### Proposal - + -- [ ] Add the correct labels -- [ ] Add the correct milestone -- [ ] Indicate the correct document/directory for this feature -- [ ] Fill the doc blurb below +### Who can address the issue -#### Documentation blurb + - +### Other links/references -- Doc **title** - - - -- Feature **overview/description** - - - -- Feature **use cases** - - - -### Developer - - - -- [ ] Copy the doc blurb above and paste it into the doc -- [ ] Write the tutorial - explain how to use the feature -- [ ] Submit the MR using the appropriate MR description template + /label ~Documentation diff --git a/.gitlab/issue_templates/Feature proposal.md b/.gitlab/issue_templates/Feature proposal.md index 1bb8d33ff6..8a49715e0e 100644 --- a/.gitlab/issue_templates/Feature proposal.md +++ b/.gitlab/issue_templates/Feature proposal.md @@ -1,45 +1,36 @@ ### Problem to solve - + -### Target audience +### Intended users - + ### Further details - + ### Proposal - + + +### Permissions and Security + + + +### Documentation + + + +### Testing + + ### What does success look like, and how can we measure that? - + ### Links / references diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index aaa1614539..9946651075 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -30,6 +30,7 @@ Set the title to: `Description of the original issue` #### Documentation and final details - [ ] Check the topic on #security to see when the next release is going to happen and add a link to the [links section](#links) +- [ ] Add links to this issue and your MRs in the description of the security release issue - [ ] 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) - [ ] 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) diff --git a/.gitlab/issue_templates/Test plan.md b/.gitlab/issue_templates/Test plan.md index a3c3f4a650..3aedd5859d 100644 --- a/.gitlab/issue_templates/Test plan.md +++ b/.gitlab/issue_templates/Test plan.md @@ -93,4 +93,4 @@ When adding new automated tests, please keep [testing levels](https://docs.gitla in mind. --> -/label ~Quality ~"test plan" +/label ~Quality ~"test\-plan" diff --git a/.gitlab/merge_request_templates/Change documentation location.md b/.gitlab/merge_request_templates/Change documentation location.md index b4a6d2bd3b..c80af95d5e 100644 --- a/.gitlab/merge_request_templates/Change documentation location.md +++ b/.gitlab/merge_request_templates/Change documentation location.md @@ -26,7 +26,7 @@ https://docs.gitlab.com/ce/development/documentation/index.html#changing-documen to the new document if there are any Disqus comments on the old document thread. - [ ] Update the link in `features.yml` (if applicable) - [ ] If working on CE and the `ee-compat-check` jobs fails, submit an MR to EE - with the changes as well (https://docs.gitlab.com/ce/development/writing_documentation.html#cherry-picking-from-ce-to-ee). + with the changes as well (https://docs.gitlab.com/ce/development/documentation/index.html#cherry-picking-from-ce-to-ee). - [ ] Ping one of the technical writers for review. /label ~Documentation diff --git a/.gitlab/merge_request_templates/Database changes.md b/.gitlab/merge_request_templates/Database changes.md index 354393b60e..3f45717449 100644 --- a/.gitlab/merge_request_templates/Database changes.md +++ b/.gitlab/merge_request_templates/Database changes.md @@ -16,7 +16,7 @@ Add a description of your merge request here. ## Database checklist -- [ ] Conforms to the [database guides](https://docs.gitlab.com/ee/development/README.html#databases-guides) +- [ ] Conforms to the [database guides](https://docs.gitlab.com/ee/development/README.html#database-guides) When adding migrations: @@ -49,10 +49,10 @@ When removing columns, tables, indexes or other structures: ## General checklist - [ ] [Changelog entry](https://docs.gitlab.com/ee/development/changelog.html) added, if necessary -- [ ] [Documentation created/updated](https://docs.gitlab.com/ee/development/documentation/index.html#contributing-to-docs) +- [ ] [Documentation created/updated](https://docs.gitlab.com/ee/development/documentation/) - [ ] [Tests added for this feature/bug](https://docs.gitlab.com/ee/development/testing_guide/index.html) - [ ] Conforms to the [code review guidelines](https://docs.gitlab.com/ee/development/code_review.html) - [ ] Conforms to the [merge request performance guidelines](https://docs.gitlab.com/ee/development/merge_request_performance_guidelines.html) -- [ ] Conforms to the [style guides](https://gitlab.com/gitlab-org/gitlab-ee/blob/master/CONTRIBUTING.md#style-guides) +- [ ] Conforms to the [style guides](https://docs.gitlab.com/ee/development/contributing/style_guides.html) /label ~database diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md index 8b7e711979..ba9624aeea 100644 --- a/.gitlab/merge_request_templates/Documentation.md +++ b/.gitlab/merge_request_templates/Documentation.md @@ -1,33 +1,39 @@ - + + - - + ## What does this MR do? - + ## Related issues - - -Closes + ## Author's checklist -- [ ] [Apply the correct labels and milestone](https://docs.gitlab.com/ee/development/documentation/workflow.html#2-developer-s-role-in-the-documentation-process) -- [ ] Crosslink the document from the higher-level index -- [ ] Crosslink the document from other subject-related docs -- [ ] Feature moving tiers? Make sure the change is also reflected in [`features.yml`](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/features.yml) -- [ ] Correctly apply the product [badges](https://docs.gitlab.com/ee/development/documentation/styleguide.html#product-badges) and [tiers](https://docs.gitlab.com/ee/development/documentation/styleguide.html#gitlab-versions-and-tiers) -- [ ] [Port the MR to EE (or backport from CE)](https://docs.gitlab.com/ee/development/documentation/index.html#cherry-picking-from-ce-to-ee): _always recommended, required when the `ee-compat-check` job fails_ +- [ ] Follow the [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/) and [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide.html). +- [ ] Link docs to and from the higher-level index page, plus other related docs where helpful. +- [ ] Apply the ~Documentation label. ## Review checklist -- [ ] Your team's review (required) -- [ ] PM's review (recommended, but not a blocker) -- [ ] Technical writer's review (required) -- [ ] Merge the EE-MR first, CE-MR afterwards +All reviewers can help ensure accuracy, clarity, completeness, and adherence to the [Documentation Guidelines](https://docs.gitlab.com/ee/development/documentation/) and [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide.html). + +**1. Primary Reviewer** + +* [ ] Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes. + +**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). + +**3. Maintainer** + +1. [ ] Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review. +1. [ ] Ensure a release milestone is set and that you merge the equivalent EE MR before the CE MR if both exist. +1. [ ] If there has not been a technical writer review, [create an issue for one using the Doc Review template](https://gitlab.com/gitlab-org/gitlab-ce/issues/new?issuable_template=Doc%20Review). /label ~Documentation diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md index 246f2dae00..42314f9b2d 100644 --- a/.gitlab/merge_request_templates/Security Release.md +++ b/.gitlab/merge_request_templates/Security Release.md @@ -7,6 +7,10 @@ See [the general developer security release guidelines](https://gitlab.com/gitla This merge request _must not_ close the corresponding security issue _unless_ it targets master. +When submitting a merge request for CE, a corresponding EE merge request is +always required. This makes it easier to merge security merge requests, as +manually merging CE into EE is no longer required. + --> ## Related issues @@ -20,8 +24,8 @@ targets master. - [ ] Title of this MR is the same as for all backports - [ ] A [CHANGELOG entry](https://docs.gitlab.com/ee/development/changelog.html) is added without a `merge_request` value, with `type` set to `security` - [ ] Add a link to this MR in the `links` section of related issue -- [ ] Add a link to an EE MR if required -- [ ] Assign to a reviewer +- [ ] Set up an EE MR (always required for CE merge requests): EE_MR_LINK_HERE +- [ ] Assign to a reviewer (that is not a release manager) ## Reviewer checklist diff --git a/.prettierrc b/.prettierrc index 3384551aea..5e2863a11f 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,13 +1,5 @@ { "printWidth": 100, "singleQuote": true, - "trailingComma": "es5", - "overrides": [ - { - "files": ["**/app/**/*", "**/spec/**/*"], - "options": { - "trailingComma": "all" - } - } - ] + "trailingComma": "all" } diff --git a/.rubocop.yml b/.rubocop.yml index bcff67ded8..648d59e806 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,6 +8,7 @@ require: - rubocop-rspec AllCops: + TargetRubyVersion: 2.5 TargetRailsVersion: 5.0 Exclude: - 'vendor/**/*' @@ -145,6 +146,20 @@ Naming/FileName: - XSS - GRPC +Rails/ApplicationRecord: + Enabled: true + Exclude: + # Models in database migrations should not subclass from ApplicationRecord + # as they need to be as decoupled from application code as possible + - db/**/*.rb + - lib/gitlab/background_migration/**/*.rb + - lib/gitlab/database/**/*.rb + - spec/**/*.rb + - ee/db/**/*.rb + - ee/lib/gitlab/background_migration/**/*.rb + - ee/lib/ee/gitlab/background_migration/**/*.rb + - ee/spec/**/*.rb + # GitLab ################################################################### Gitlab/ModuleWithInstanceVariables: @@ -181,3 +196,11 @@ Cop/InjectEnterpriseEditionModule: Exclude: - 'spec/**/*' - 'ee/spec/**/*' + +Style/ReturnNil: + Enabled: true + +# It isn't always safe to replace `=~` with `.match?`, especially when there are +# nil values on the left hand side +Performance/RegexpMatch: + Enabled: false diff --git a/.scss-lint.yml b/.scss-lint.yml index 3df66033fa..2a1fa27fdb 100644 --- a/.scss-lint.yml +++ b/.scss-lint.yml @@ -1,7 +1,9 @@ # Linter Documentation: # https://github.com/brigade/scss-lint/blob/master/lib/scss_lint/linter/README.md -scss_files: 'app/assets/stylesheets/**/*.scss' +scss_files: + - 'app/assets/stylesheets/**/*.scss' + - 'ee/app/assets/stylesheets/**/*.scss' exclude: - 'app/assets/stylesheets/pages/emojis.scss' diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000000..59ee0e879e --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,111 @@ +{ + "plugins":[ + "./scripts/frontend/stylelint/stylelint-duplicate-selectors.js", + "./scripts/frontend/stylelint/stylelint-utility-classes.js", + "stylelint-scss", + ], + "rules":{ + "at-rule-blacklist":[ + "debug" + ], + "at-rule-no-unknown":null, + "at-rule-no-vendor-prefix":true, + "block-no-empty":true, + "block-opening-brace-space-before":"always", + "color-hex-case":"lower", + "color-hex-length":"short", + "color-named":"never", + "color-no-invalid-hex":true, + "declaration-bang-space-after":"never", + "declaration-bang-space-before":"always", + "declaration-block-semicolon-newline-after":"always", + "declaration-block-semicolon-space-before":"never", + "declaration-block-single-line-max-declarations":1, + "declaration-block-trailing-semicolon":"always", + "declaration-colon-space-after":"always-single-line", + "declaration-colon-space-before":"never", + "declaration-property-value-blacklist":{ + "border":[ + "none" + ], + "border-top":[ + "none" + ], + "border-right":[ + "none" + ], + "border-bottom":[ + "none" + ], + "border-left":[ + "none" + ] + }, + "function-comma-space-after":"always-single-line", + "function-parentheses-space-inside":"never", + "function-url-quotes":"always", + "indentation":2, + "length-zero-no-unit":true, + "max-nesting-depth":[ + 3, + { + "ignoreAtRules":[ + "each", + "media", + "supports", + "include" + ], + "severity":"warning" + } + ], + "media-feature-name-no-vendor-prefix":true, + "media-feature-parentheses-space-inside":"never", + "no-missing-end-of-source-newline":true, + "number-leading-zero":"always", + "number-no-trailing-zeros":true, + "property-no-unknown":true, + "property-no-vendor-prefix": [true, { "ignoreProperties": ["user-select"] }], + "rule-empty-line-before":[ + "always-multi-line", + { + "except":[ + "first-nested" + ], + "ignore":[ + "after-comment" + ] + } + ], + "scss/at-extend-no-missing-placeholder":[true,{ "severity": "warning" }], + "scss/at-function-pattern":"^[a-z]+([a-z0-9-]+[a-z0-9]+)?$", + "scss/at-import-no-partial-leading-underscore":true, + "scss/at-import-partial-extension-blacklist":[ + "scss" + ], + "scss/at-mixin-pattern":"^[a-z]+([a-z0-9-]+[a-z0-9]+)?$", + "scss/at-rule-no-unknown":true, + "scss/dollar-variable-colon-space-after":"always", + "scss/dollar-variable-colon-space-before":"never", + "scss/dollar-variable-pattern":"^[_]?[a-z]+([a-z0-9-]+[a-z0-9]+)?$", + "scss/percent-placeholder-pattern":"^[a-z]+([a-z0-9-]+[a-z0-9]+)?$", + "scss/selector-no-redundant-nesting-selector":true, + "selector-class-pattern":[ + "^[a-z0-9\\-]+$", + { + "message":"Selector should be written in lowercase with hyphens (selector-class-pattern)", + "severity": "warning" + }, + ], + "selector-list-comma-newline-after":"always", + "selector-max-compound-selectors":[3, { "severity": "warning" }], + "selector-max-id":1, + "selector-no-vendor-prefix":true, + "selector-pseudo-element-colon-notation":"double", + "selector-pseudo-element-no-unknown":true, + "shorthand-property-no-redundant-values":true, + "string-quotes":"single", + "value-no-vendor-prefix":[true, { ignoreValues: ["sticky"] }], + "stylelint-gitlab/duplicate-selectors":[true,{ "severity": "warning" }], + "stylelint-gitlab/utility-classes":[true,{ "severity": "warning" }], + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 2edfb07981..1d73e94d73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,53 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. +## 11.10.8 (2019-06-27) + +- No changes. +### Security (10 changes) + +- Fix Denial of Service for comments when rendering issues/MR comments. +- Gate MR head_pipeline behind read_pipeline ability. +- Fix DoS vulnerability in color validation regex. +- Expose merge requests count based on user access. +- Persist tmp snippet uploads at users. +- Add missing authorizations in GraphQL. +- Disable Rails SQL query cache when applying service templates. +- Prevent Billion Laughs attack. +- Correctly check permissions when creating snippet notes. +- Prevent the detection of merge request templates by unauthorized users. + +### Performance (1 change) + +- Add improvements to global search of issues and merge requests. !27817 + + +## 11.10.7 (2019-06-26) + +### Fixed (3 changes) + +- Remove a default git depth in Pipelines for merge requests. !28926 +- Fix label click scrolling to top. !29202 +- Fix scrolling to top on assignee change. !29500 + + +## 11.10.6 (2019-06-04) + +### Fixed (7 changes, 1 of them is from the community) + +- Allow a member to have an access level equal to parent group. !27913 +- Fix uploading of LFS tracked file through UI. !28052 +- Use 3-way merge for squashing commits. !28078 +- Use a path for the related merge requests endpoint. !28171 +- Fix project visibility level validation. !28305 (Peter Marko) +- Fix Rugged get_tree_entries recursive flag not working. !28494 +- Use source ref in pipeline webhook. !28772 + +### Other (1 change) + +- Fix input group height. + + ## 11.10.5 (2019-05-30) ### Security (12 changes, 1 of them is from the community) @@ -50,63 +97,597 @@ entry. - Allow to see project events only with api scope token. -## 11.8.9 (2019-04-25) +## 11.10.2 (2019-04-25) -### Security (5 changes) +### Security (4 changes) -- Improve credentials sanitization on repository mirror integration. !3078 -- Stop sending emails to users who can't read commit. +- Loosen regex for exception sanitization. !3076 +- Resolve: moving an issue to private repo leaks namespace and project name. - Escape path in new merge request mail. -- Only allow modification of content when note is edited. -- Upgrade Rails to 5.0.7.2. +- Stop sending emails to users who can't read commit. -## 11.8.8 (2019-04-23) +## 11.10.1 (2019-04-23) -### Fixed (5 changes) +### Fixed (2 changes) -- Bring back Rugged implementation of find_commit. !25477 -- Fix bug in BitBucket imports with SHA shorter than 40 chars. !26050 -- Fix health checks not working behind load balancers. !26055 -- Fix error creating a merge request when diff includes a null byte. !26190 -- Avoid excessive recursive calls with Rugged TreeEntries. !26813 +- Upgrade Gitaly to 1.34.0. !27494 +- Fix filtering of labels from system note link. !27507 + +### Changed (1 change) + +- Disable just-in-time Kubernetes resource creation for project level clusters. !27352 ### Performance (1 change) - Bring back Rugged implementation of ListCommitsByOid. !27441 -### Other (4 changes) +### Other (1 change) -- Bring back Rugged implementation of GetTreeEntries. !25674 -- Bring back Rugged implementation of CommitIsAncestor. !25702 -- Bring back Rugged implementation of TreeEntry. !25706 -- Bring back Rugged implementation of commit_tree_entry. !25896 +- Bump required Ruby version check to 2.5.3. !27495 -## 11.8.7 (2019-04-09) +## 11.10.0 (2019-04-22) -- No changes. +### Security (9 changes) -## 11.8.6 (2019-03-28) +- Update Rails to 5.0.7.2. !27022 +- Disallow guest users from accessing Releases. +- Return cached languages if they've been detected before. +- Added rake task for removing EXIF data from existing uploads. +- Disallow updating namespace when updating a project. +- Fix XSS in resolve conflicts form. +- Hide "related branches" when user does not have permission. +- Fix PDF.js vulnerability. +- Use UntrustedRegexp for matching refs policy. -### Security (7 changes) +### Fixed (81 changes, 21 of them are from the community) + +- Update `border-radius` of form controls and remove extra space above page titles. !24497 +- Disallow reopening of a locked merge request. !24882 (Jan Beckmann) +- Align EmailValidator to validate_email gem implementation. !24971 (Horatiu Eugen Vlad) +- add a uniq constraints on issues and mrs labels. !25435 (Antoine Huret) +- Display draft when toggling replies. !25563 +- Fix markdown table header and table content borders. !25666 +- Fix authorized application count. !25715 (moyuru) +- Added "Add List" checkbox to create label dropdown to make creation of list optional. !25716 (Tucker Chapman) +- Makes emoji picker full width on mobile. !25883 (Jacopo Beschi @jacopo-beschi) +- Don't cutoff letters in MR and Issue links. !25910 (gfyoung) +- Fix unwanted character replacement on project members page caused by usage of sanitize function. !25946 (Elias Werberich) +- Fix UI for closed MR when source project is removed. !25967 (Takuya Noguchi) +- Keep inline as much as possible in system notes on issuable. !25968 (Takuya Noguchi) +- Fixes long review app subdomains. !25990 (walkafwalka) +- Fix counting of groups in admin dashboard. !26009 +- Disable inaccessible navigation links upon archiving a project. !26020 (Elias Werberich) +- Fixed - Create project label window is cut off at the bottom. !26049 +- Fix error shown when loading links to specific comments. !26092 +- Fix group transfer selection possibilities. !26123 (Peter Marko) +- Fix UI layout on Commits on mobile. !26133 (Takuya Noguchi) +- Fix continuous bitbucket import loading spinner. !26175 +- Resolves Branch name is lost if I change commit mode in Web IDE. !26180 +- Fix removing remote mirror failure which leaves unnecessary refs behind. !26213 +- Fix Error 500 when user commits Wiki page with no commit message. !26247 +- Handle missing keys in sentry api response. !26264 +- Implemented whitespace-trimming for file names in Web IDE. !26270 +- Fix misalignment of group overview page buttons. !26292 +- Reject HEAD requests to info/refs endpoint. !26334 +- Prevent namespace dropdown in new project form from exceeding container. !26343 +- Fix hover animation consistency in top navbar items. !26345 +- Exclude system notes from commits in merge request discussions. !26396 +- Resolve Code in other column of side-by-side diff is highlighted when selecting code on one side. !26423 +- Prevent fade out transition on loading-button component. !26428 +- Fix merge commits being used as default squash commit messages. !26445 +- Expand resolved discussion when linking to a comment in the discussion. !26483 +- Show statistics also when repository is disabled. !26509 (Peter Marko) +- Fix multiple series queries on metrics dashboard. !26514 +- Releases will now be automatically deleted when deleting corresponding tag. !26530 +- Make stylistic improvements to diff nav header. !26557 +- Clear pipeline status cache after destruction of pipeline. !26575 +- Update fugit which fixes a potential infinite loop. !26579 +- Fixes job link in artifacts page breadcrumb. !26592 +- Fix quick actions add label name middle word overlaps. !26602 (Jacopo Beschi @jacopo-beschi) +- Fix Auto DevOps missing domain error handling. !26627 +- Fix jupyter rendering bug that ended in an infinite loop. !26656 (ROSPARS Benoit) +- Use a fixed git abbrev parameter when we fetch a git revision. !26707 +- Enabled text selection highlighting in diffs in Web IDE. !26721 (Isaac Smith) +- Remove `path` and `branch` labels from metrics. !26744 +- Resolve "Hide Kubernetes cluster warning if project has cluster related". !26749 +- Fix long label overflow on metrics dashboard. !26775 +- Group transfer now properly redirects to edit on failure. !26837 +- Only execute system hooks once when pushing tags. !26888 +- Fix UI anchor links after docs refactor. !26890 +- Fix MWPS does not work for merge request pipelines. !26906 +- Create pipelines for merge requests only when source branch is updated. !26921 +- Fix notfication emails having wrong encoding. !26931 +- Allow task lists that follow a blockquote to work correctly. !26937 +- Fix image diff swipe view on commit and compare pages. !26968 (ftab) +- Fix IDE detection of MR from fork with same branch name. !26986 +- Fix single string values for the 'include' keyword validation of gitlab-ci.yml. !26998 (Paul Bonaud (@paulrbr)) +- Do not display Ingress IP help text when there isn’t an Ingress IP assigned. !27057 +- Fix real-time updates for projects that contain a reserved word. !27060 +- Remove duplicates from issue related merge requests. !27067 +- Add to white-space nowrap to all buttons. !27069 +- Handle possible HTTP exception for Sentry client. !27080 +- Guard against nil dereferenced_target. !27192 +- Update GitLab Workhorse to v8.5.1. !27217 +- Fix long file header names bug in diffs. !27233 +- Always return the deployment in the UpdateDeploymentService#execute method. !27322 +- Fix remove_source_branch merge request API handling. !27392 +- Fixed bug with hashes in urls in WebIDE. !54376 (Kieran Andrews) +- Fix bug where MR popover doesn't go away on mouse leave. +- Only consider active milestones when using the special Started milestone filter. +- Scroll to diff file content when clicking on file header name and it is not a link to other page. +- Remove non-functional add issue button on welcome list. +- Fixed expand full file button showing on images. +- Fixed Web IDE web workers not working with relative URLs. +- Fixed Web IDE not loading merge request files. +- Fixed duplicated diff too large error message. +- Fixed sticky headers in merge request creation diffs. +- Fix bug when reopening milestone from index page. + +### Deprecated (1 change) + +- Allow to use untrusted Regexp via feature flag. !26905 + +### Changed (35 changes, 4 of them are from the community) + +- Create MR pipelines with `refs/merge-requests/:iid/head`. !25504 +- Create Kubernetes resources for projects when their deployment jobs run. !25586 +- Remove unnecessary folder prefix from environment name. !25600 +- Update deploy boards to additionally select on "app.gitlab.com" annotations. !25623 +- Allow failed custom hook script errors to safely appear in GitLab UI by filtering error messages by the prefix GL-HOOK-ERR:. !25625 +- Add link on two-factor authorization settings page to leave group that enforces two-factor authorization. !25731 +- Reduce height of instance system header and footer. !25752 +- Unify behaviour of 'Copy commit SHA to clipboard' to use full commit SHA. !25829 (Max Winterstein) +- Show loading spinner while Ingress/Knative IP is being assigned. !25912 +- Hashed Storage: Prevent a migration and rollback running at the same time. !25976 +- Make time counters show 'just now' for everything under one minute. !25992 (Sergiu Marton) +- Allow filtering labels list by one or two characters. !26012 +- Implements the creation strategy for multi-line suggestions. !26057 +- Automate base domain help text on Clusters page. !26124 +- Set user.name limit to 128 characters. !26146 +- Update gitlab-markup to 1.7.0 which requies python3. !26246 +- Update system message banner font size to 12px. !26293 +- Extend timezone dropdown. !26311 +- Upgrade to Gitaly v1.29.0. !26406 +- Automatically set Prometheus step interval. !26441 +- Knative version bump 0.2.2 -> 0.3.0. !26459 (Chris Baumbauer) +- Display cluster form validation error messages inline. !26502 +- Split Auto-DevOps.gitlab-ci.yml into reusable templates. !26520 +- Update spinners in group list component. !26572 +- Allow removing last owner from subgroup if parent group has owners. !26718 +- Check mergeability in MergeToRefService. !26757 +- Show download diff links for closed MRs. !26772 +- Fix Container Scanning in Kubernetes Runners. !26793 +- Move "Authorize project access with external service" to Core. !26823 +- Localize notifications dropdown. !26844 +- Order labels alphabetically in issue boards. !26927 +- Upgrade to Gitaly v1.32.0. !26989 +- Upgrade to Gitaly v1.33.0. !27065 +- collapse file tree by default if the merge request changes only one file. (Riccardo Padovani ) +- Removes the undescriptive CI Charts header. + +### Performance (17 changes) + +- Drop legacy artifacts usage as there are no leftovers. !24294 +- Cache Repository#root_ref within a request. !25903 +- Allow ref name caching CommitService#find_commit. !26248 +- Avoid loading pipeline status in project search. !26342 +- Fix some N+1s in loading routes and counting members for groups in @-autocomplete. !26491 +- GitHub import: Run housekeeping after initial import. !26600 +- Add initial complexity limits to GraphQL queries. !26629 +- Cache FindCommit results in pipelines view. !26776 +- Fix and expand Gitaly FindCommit caching. !27018 +- Enable FindCommit caching for project and commits pages. !27048 +- Expand FindCommit caching to blob and refs. !27084 +- Enable Gitaly FindCommit caching for TreeController. !27100 +- Improve performance of PR import. !27121 +- Process at most 4 pipelines during push. !27205 +- Disable method instrumentation for diffs. !27235 +- Speed up filtering issues in a project when searching. +- Speed up generation of avatar URLs when using object storage. + +### Added (35 changes, 6 of them are from the community) + +- Add users search results to global search. !21197 (Alexis Reigel) +- Add target branch filter to merge requests search bar. !24380 (Hiroyuki Sato) +- Add Knative metrics to Prometheus. !24663 (Chris Baumbauer ) +- Support multi-line suggestions. !25211 +- Allow to sort wiki pages by date and title. !25365 +- Allow external diffs to be used conditionally. !25432 +- Add usage counts for error tracking feature. !25472 +- Enable/disable Auto DevOps at the Group level. !25533 +- Update pipeline list view to accommodate post-merge pipeline information. !25690 +- GraphQL Types can be made to always authorize access to resources of that Type. !25724 +- Update clair-local-scan to 2.0.6. !25743 (Takuya Noguchi) +- Update pipeline block on merge request page to accommodate post-merge pipeline information. !25745 +- Support multiple queries per chart on metrics dash. !25758 +- Update pipeline detail view to accommodate post-merge pipelines. !25775 +- Update job detail sidebar to accommodate post-merge pipeline information. !25777 +- Add merge request pipeline flag to pipeline entity. !25846 +- Expose group id on home panel. !25897 (Peter Marko) +- Move allow developers to create projects in groups to Core. !25975 +- Add two new warning messages to the MR widget about merge request pipelines. !25983 +- Support installing Group runner on group-level cluster. !26260 +- Improve the Knative installation on Clusters. !26339 +- Show error when namespace/svc account missing. !26362 +- Add select by title to milestones API. !26573 +- Implemented support for creation of new files from URL in Web IDE. !26622 +- Add control for masking variable values in runner logs. !26751 +- Allow merge requests to be created via git push options. !26752 +- Create a shortcut for a new MR in the Web IDE. !26792 +- Allow reactive caching to be used in services. !26839 +- Add a Prometheus API per environment. !26841 +- Allow merge requests to be set to merge when pipeline succeeds via git push options. !26842 +- Use gitlabktl to build and deploy GitLab Serverless Functions. !26926 +- Make touch events work on image diff swipe view and onion skin. !26971 (ftab) +- Add extended merge request tooltip. +- Added prometheus monitoring to GraphQL. +- Adding highest role property to admin's user details page. + +### Other (29 changes, 6 of them are from the community) + +- Update rack-oauth2 1.2.1 -> 1.9.3. !17868 +- Merge the gitlab-shell "gitlab-keys" functionality into GitLab CE. !25598 +- Refactor all_pipelines in Merge request. !25676 +- Show error backtrace when logging errors to kubernetes.log. !25726 +- Apply recaptcha API change in 4.0. !25921 (Praveen Arimbrathodiyil) +- Remove fake repository_path response. !25942 (Fabio Papa) +- Use curl silent/show-error options on Auto DevOps. !25954 (Takuya Noguchi) +- Explicitly set master_auth setting to enable basic auth and client certificate for new GKE clusters. !26018 +- Project: Improve empty repository state UI. !26024 +- Externalize strings from `/app/views/projects/pipelines`. !26035 (George Tsiolis) +- Prepare multi-line suggestions for rendering in Markdown. !26107 +- Improve mobile UI on User Profile page. !26240 (Takuya Noguchi) +- Update GitLab Runner Helm Chart to 0.3.0/11.9.0. !26467 +- Improve project merge request settings. !26495 +- Bump kubectl to 1.11.9 and Helm to 2.13.1 in Auto-DevOps.gitlab-ci.yml. !26534 +- Upgrade bootstrap_form Gem. !26568 +- Add API access check to Graphql. !26570 +- Change project avatar remove button to a link. !26589 +- Log Gitaly RPC duration to api_json.log and production_json.log. !26652 +- Add cluster domain to Project Cluster API. !26735 +- Move project tags to separate line. !26797 +- Changed button label at /pipelines/new. !26893 (antfobe,leonardofl) +- Update GitLab Shell to v9.0.0. !27002 +- Migrate clusters tests to jest. !27013 +- Rewrite related MRs widget with Vue. !27027 +- Restore HipChat project service. !27172 +- Externalize admin deploy keys strings. +- Removes EE differences for environments_table.vue. +- Removes EE differences for environment_item.vue. + + +## 11.9.6 (2019-04-04) + +### Fixed (3 changes) + +- Force to recreate all MR diffs on import. !26480 +- Fix API /project/:id/branches not returning correct merge status. !26785 +- Avoid excessive recursive calls with Rugged TreeEntries. !26813 + +### Performance (1 change) + +- Force a full GC after importing a project. !26803 + + +## 11.9.5 (2019-04-03) + +### Fixed (3 changes) + +- Force to recreate all MR diffs on import. !26480 +- Fix API /project/:id/branches not returning correct merge status. !26785 +- Avoid excessive recursive calls with Rugged TreeEntries. !26813 + +### Performance (1 change) + +- Force a full GC after importing a project. !26803 + + +## 11.9.3 (2019-03-27) + +### Security (8 changes) - Disallow guest users from accessing Releases. - Fix PDF.js vulnerability. - Hide "related branches" when user does not have permission. - Fix XSS in resolve conflicts form. - Added rake task for removing EXIF data from existing uploads. +- Return cached languages if they've been detected before. - Disallow updating namespace when updating a project. - Use UntrustedRegexp for matching refs policy. -## 11.8.5 (2019-03-27) +## 11.9.2 (2019-03-26) -- Unreleased due to QA failure. +### Security (8 changes) -## 11.8.4 (2019-03-26) +- Disallow guest users from accessing Releases. +- Fix PDF.js vulnerability. +- Hide "related branches" when user does not have permission. +- Fix XSS in resolve conflicts form. +- Added rake task for removing EXIF data from existing uploads. +- Return cached languages if they've been detected before. +- Disallow updating namespace when updating a project. +- Use UntrustedRegexp for matching refs policy. + + +## 11.9.1 (2019-03-25) + +### Fixed (7 changes) + +- Fix issue that caused the "Show all activity" button to appear on top of the mini pipeline status dropdown on the merge request page. !26274 +- Fix duplicated bottom match line on merge request parallel diff view. !26402 +- Allow users who can push to protected branches to create protected branches via CLI. !26413 +- Add missing .gitlab-ci.yml to Android template. !26415 +- Refresh commit count after repository head changes. !26473 +- Set proper default-branch for repository on GitHub Import. !26476 +- GitHub importer: Use the project creator to create branches from forks. !26510 + +### Changed (1 change) + +- Upgrade to Gitaly v1.27.1. !26533 + + +## 11.9.0 (2019-03-22) + +### Security (24 changes) + +- Use encrypted runner tokens. !25532 +- Stop linking to unrecognized package sources. !55518 +- Disable issue boards API when issues are disabled. +- Forbid creating discussions for users with restricted access. +- Fix leaking private repository information in API. +- Fixed ability to see private groups by users not belonging to given group. +- Prevent releases links API to leak tag existance. +- Display the correct number of MRs a user has access to. +- Block local URLs for Kubernetes integration. +- Fix arbitrary file read via diffs during import. +- Check if desired milestone for an issue is available. +- Don't allow non-members to see private related MRs. +- Check snippet attached file to be moved is within designated directory. +- Fix blind SSRF in Prometheus integration by checking URL before querying. +- Fix git clone revealing private repo's presence. +- Remove project serialization in quick actions response. +- Don't show new issue link after move when a user does not have permissions. +- Limit mermaid rendering to 5K characters. +- Show only merge requests visible to user on milestone detail page. +- Display only information visible to current user on the Milestone page. +- Do not display impersonated sessions under active sessions and remove ability to revoke session. +- Validate session key when authorizing with GCP to create a cluster. +- Do not disclose milestone titles for unauthorized users. +- Remove the possibility to share a project with a group that a user is not a member of. + +### Removed (1 change) + +- Remove HipChat integration from GitLab. !22223 + +### Fixed (86 changes, 21 of them are from the community) + +- Fixes issue with AWS V4 signatures not working with some S3 providers. !21788 +- Validate 'include' keywords in gitlab-ci.yml configuration files. !24098 (Paul Bonaud) +- Close More Actions tooltip when menu opens. !24285 +- API: Support Jira transition ID as string. !24400 (Robert Schilling) +- Fixed navigation sidebar flashing open on page load. !24555 +- Fix username escaping when using assign to me for issues. !24673 +- commit page info-well overflow fix #56436. !24799 (Gokhan Apaydin) +- Fix error tracking list page. !24806 +- Fix overlapping empty-header logo. !24868 (Jonas L.) +- Resolve Jobs tab border top in pipeline's page is 1px off. !24878 +- Require maintainer access to show pages domain settings. !24926 +- Display error message when API call to list Sentry issues fails. !24936 +- Fix rollout status for statefulsets and daemonsets. !24972 (Sergej Nikolaev ) +- Display job names consistently on pipelines and environments list. !24984 +- Update new password breadcrumb. !25037 (George Tsiolis) +- Fixes functions finder for upgraded Knative app. !25067 +- Provide expires_in in LFS authentication payload. !25082 +- Fix validation of certain ed25519 keys. !25115 (Merlijn B. W. Wajer) +- Timer and action name aligned vertically for delayed jobs in pipeline actions. !25117 (Gokhan Apaydin) +- Fix the border style of CONTRIBUTING button when it exists. !25124 (Takuya Noguchi) +- Change badges.svg example to pipeline.svg. !25157 (Aviad Levy) +- API: Fix docs and parameters for hangouts-chat service. !25180 (Robert Schilling) +- API: Expose full commit title. !25189 (Robert Schilling) +- API: Require only one parameter when updating a wiki. !25191 (Robert Schilling) +- Hide pipeline status when pipelines are disabled on project. !25204 +- Fix alignment of dropdown icon on issuable on mobile. !25205 (Takuya Noguchi) +- Add left margin to 1st time contributor badge. !25216 (Gokhan Apaydin) +- Use limited counter for runner build count in admin page. !25220 +- API: Ensure that related merge requests are referenced cross-project. !25222 (Robert Schilling) +- Ensure the base pipeline of a Merge Request belongs to its target branch. !25226 +- Fix import_jid error on project import. !25239 +- Fix commenting on commits having SHA1 starting with a large number. !25278 +- Allow empty values such as [] to be stored in reactive cache. !25283 +- Remove vertical connecting line placeholder from diff discussion notes. !25292 +- Fix hover and active state colors of award emoji button. !25295 +- Fix author layouts in issuable meta line UIs on mobile. !25332 (Takuya Noguchi) +- Fix bug where project topics truncate. !25398 +- Fix ETag caching not being used for AJAX requests. !25400 +- Doc - fix the url of pipeline status badge. !25404 (Aviad Levy) +- Fix pipeline status icon mismatch. !25407 +- Allow users to compare branches on a read-only instance. !25414 +- Fix 404s when C++ .gitignore template selected. !25416 +- Always fetch MR latest version when creating suggestions. !25441 +- Only show borders for markdown images in notes. !25448 +- Bring back Rugged implementation of find_commit. !25477 +- Remove duplicate units from metrics graph. !25485 +- Fix project import error importing releases. !25495 +- Remove duplicate XHR request when requesting new pipeline page. !25506 +- Properly handle multiple X-Forwarded-For addresses in runner IP. !25511 +- Fix weekday shift in issue board cards for UTC+X timezones by removing local timezone to UTC conversion. !25512 (Elias Werberich) +- Fix large table horizontal scroll and prevent side-by-side tables. !25520 (Dany Jupille) +- Fix error when viewing group issue boards when user doesn't have explicit group permissions. !25524 +- Respect the should_remove_source_branch parameter to the merge API. !25525 +- Externalize markdown toolbar buttons tooltips. !25529 +- Fix method to mark a project repository as writable. !25546 +- fix group without owner after transfer. !25573 (Peter Marko) +- Fix pagination and duplicate requests in environments page. !25582 +- Improve the JS pagination to handle the case when the `X-Total` and `X-Total-Pages` headers aren't present. !25601 +- Add right padding to the repository mirror action buttons. !25606 +- Use 'folder-open' from sprite icons for Browse Files button in Tag page. !25635 +- Make merge to refs/merge-requests/:iid/merge not raise when FF-only enabled. !25653 +- Fixed "Copying comment with ordered list includes extraneous newlines". !25695 +- Fix bridge jobs only/except variables policy. !25710 +- Allow GraphQL requests without CSRF token. !25719 +- Skip Project validation during Hashed Storage migration or rollback. !25753 +- Resolve showing squash commit edit issue when only single commit is present. !25807 +- Fix the last-ditch memory killer pgroup SIGKILL. !25940 +- Disable timeout on merge request merging poll. !25988 +- Allow modifying squash commit message for fast-forward only merge method. !26017 +- Fix bug in BitBucket imports with SHA shorter than 40 chars. !26050 +- Fix health checks not working behind load balancers. !26055 +- Fix 500 error caused by CODEOWNERS with no matches. !26072 +- Fix notes being marked as edited after resolving. !26143 +- Fix error creating a merge request when diff includes a null byte. !26190 +- Fix undefined variable error on json project views. !26297 +- GitHub import: Create new branches as project owner. !26335 +- Gracefully handles excluded fields from attributes during serialization on JsonCache. !26368 +- Admin section finds users case-insensitively. +- Fixes not working dropdowns in pipelines page. +- Do not show file templates when creating a new directory in WebIDE. +- Allow project members to see private group if the project is in the group namespace. +- Allow maintainers to remove pages. +- Fix inconsistent pagination styles. +- Fixed blob editor deleting file content for certain file paths. +- Fix upcoming milestone when there are milestones with far-future due dates. +- Fixed alignment of changed icon in Web IDE. + +### Changed (31 changes, 10 of them are from the community) + +- Improve snippets empty state. !18348 (George Tsiolis) +- Remove second primary button on wiki edit. !19959 (George Tsiolis) +- Allow raw `tls_options` to be passed in LDAP configuration. !20678 +- Remove undigested token column from personal_access_tokens table from the database. !22743 +- Update activity filter for issues. !23423 (George Tsiolis) +- Use auto-build-image for build job in Auto-DevOps.gitlab-ci.yml. !24279 +- Error tracking configuration - add a Sentry project selection dropdown. !24701 +- Move ChatOps to Core. !24780 +- Implement new arguments `state`, `closed_before` and `closed_after` for `IssuesResolver` in GraphQL. !24910 +- Validate kubernetes cluster CA certificate. !24990 +- Review App Link to Changed Page if Only One Change Present. !25048 +- Show pipeline ID, commit, and branch name on modal while stopping pipeline. !25059 +- Improve empty state for starred projects. !25138 +- Capture due date when importing milestones from Github. !25182 (dstanley) +- Add a spinner icon which is rendered using pure css. !25186 +- Make emoji picker bigger. !25187 (Jacopo Beschi @jacopo-beschi) +- API: Sort tie breaker with id DESC. !25311 (Nermin Vehabovic) +- Add iOS-fastlane template for .gitlab-ci.yml. !25395 +- Move language setting to preferences. !25427 (Fabian Schneider @fabsrc) +- Resolve Create Project Template for Netlify. !25453 +- Sort labels alphabetically on issues and merge requests list. !25470 +- Add Project template for .NET Core. !25486 +- Update operations settings breadcrumb trail. !25539 (George Tsiolis) +- Add Project template for go-micro. !25553 +- Jira: make issue links title compact. !25609 (Elan Ruusamäe @glensc) +- Project level filtering for JupyterHub. !25684 (Amit Rathi (amit1rrr)) +- Clean up vendored templates. !25794 +- Mask all TOKEN and PASSWORD CI variables. !25868 +- Add project template for Android. !25870 +- Add iOS project template. !25872 +- Upgrade to Gitaly v1.26.0. !25890 + +### Performance (11 changes) + +- Improve performance for diverging commit counts. !24287 +- Optimize Redis usage in User::ActivityService. !25005 +- Only load syntax highlight CSS of selected theme. !25232 +- Improve label select rendering. !25281 +- Enable persisted pipeline stages by default. !25347 +- Speed up group issue search counts. !25411 +- Load repository language from the database if detected before. !25518 +- Remove N+1 query for tags in /admin/runners page. !25572 +- Eliminate most N+1 queries loading UserController#calendar_activities. !25697 +- Improve Web IDE launch performance. !25700 +- Significantly reduce N+1 queries in /api/v4/todos endpoint. !25711 + +### Added (55 changes, 18 of them are from the community) + +- Add a tag filter to the admin runners view. !19740 (Alexis Reigel) +- Add project fetch statistics. !23596 (Jacopo Beschi @jacopo-beschi) +- Hashed Storage rollback mechanism. !23955 +- Allow to recursively expand includes. !24356 +- Allow expanding a diff to display full file. !24406 +- Support `only: changes:` on MR pipelines. !24490 (Hiroyuki Sato) +- Expose additional merge request pipeline variables. !24595 (Hiroyuki Sato) +- Add metadata about the GitLab server to GraphQL. !24636 +- Support merge ref writing (without merging to target branch). !24692 +- Add field mergeRequests for project in GraphQL. !24805 +- API support for MR merge to temporary merge ref path. !24918 +- Ability to filter confidential issues. !24960 (Robert Schilling) +- Allow creation of branches that match a wildcard protection, except directly through git. !24969 +- Add related merge request count to api response. !24974 +- Add realtime validation for user fullname and username on validation. !25017 (Ehsan Abdulqader @EhsanZ) +- Allow setting feature flags per GitLab group through the API. !25022 +- Add API endpoint to get a commit's GPG signature. !25032 +- Add support for FTP assets for releases. !25071 (Robert Schilling) +- Add Confirmation Modal to Rollback on Environment. !25110 +- add title attribute to display file name. !25154 (Satoshi Nakamatsu @satoshicano) +- API: Expose text_color for project and group labels. !25172 (Robert Schilling) +- Added support for ingress hostnames. !25181 (walkafwalka) +- API: Promote project milestone to a group milestone. !25203 (Nermin Vehabovic) +- API: Expose if the current user can merge a MR. !25207 (Robert Schilling) +- add readme to changelogs directory. !25209 (@glensc) +- API: Indicate if label is a project label. !25219 (Robert Schilling) +- Expose refspecs and depth to runner. !25233 +- Port System Header and Footer feature to Core. !25241 +- Sort Environments by Last Updated. !25260 +- Accept force option to overwrite branch on commit via API. !25286 +- Add support for masking CI variables. !25293 +- Add Link from Closed (moved) Issues to Moved Issue. !25300 +- Next/previous navigation between files in MR review. !25355 +- Add YouTrack integration service. !25361 (Yauhen Kotau @bessorion) +- Add ability to set path and name for project on fork using API. !25363 +- Add project level config for merge pipelines. !25385 +- Edit Knative domain after it has been deployed. !25386 +- Add zoom and scroll to metrics dashboard. !25388 +- Persist source sha and target sha for merge pipelines. !25417 +- Add support for toggling discussion filter from notes section. !25426 +- Resolve Move files in the Web IDE. !25431 +- Show header and footer system messages in email. !25474 +- Allow configuring POSTGRES_VERSION in Auto DevOps. !25500 +- Add Saturday to Localization first day of the week. !25509 (Ahmad Haghighi) +- Extend the Gitlab API for deletion of job_artifacts of a single job. !25522 (rroger) +- Simplify CI/CD configuration on serverless projects. !25523 +- Add button to start discussion from single comment. !25575 +- sidekiq: terminate child processes at shutdown. !25669 +- Expose merge request entity for pipelines. !25679 +- Link to most recent MR from a branch. !25689 +- Adds Auto DevOps build job for tags. !25718 (walkafwalka) +- Allow all snippets to be accessed by API. !25772 +- Make file tree in merge requests resizable. +- Make the Web IDE the default editor. +- File uploads are deleted asynchronously when deleting a project or group. + +### Other (28 changes, 6 of them are from the community) + +- Improve GitHub and Gitea project import table UI. !24606 +- Externalize strings from `/app/views/projects/commit`. !24668 (George Tsiolis) +- Correct non-standard unicode spaces to regular unicode. !24795 (Marcel Amirault) +- Provide a performance bar link to the Jaeger UI. !24902 +- Remove BATCH_SIZE from WikiFileFinder. !24933 +- Use export-import svgs from gitlab-svgs. !24954 +- Fix N+1 query in Issues and MergeRequest API when issuable_metadata is present. !25042 (Alex Koval) +- Directly inheriting from ActiveRecord::Migration is deprecated. !25066 (Jasper Maes) +- Bump Helm and kubectl in Auto DevOps to 2.12.3 and 1.11.7 respectively. !25072 +- Log queue duration in production_json.log. !25075 +- Extracted ResolveWithIssueButton to its own component. !25093 (Martin Hobert) +- Add rectangular project and group avatars. !25098 +- Include note in the Rails filter_parameters configuration. !25238 +- Bump Helm and kubectl used in Kubernetes integration to 2.12.3 and 1.11.7 respectively. !25268 +- Include gl_project_path in API /internal/allowed response. !25314 +- Fix incorrect Pages Domains checkbox description. !25392 (Anton Melser) +- Update GitLab Runner Helm Chart to 0.2.0. !25493 +- Add suffix (`_event`) to merge request source. !25508 +- Creates a helper function to check if repo is EE. !25647 +- If chpst is available, make fron-source installations run sidekiq as a process group leader. !25654 +- Bring back Rugged implementation of GetTreeEntries. !25674 +- Moves EE util into the CE file. !25680 +- Bring back Rugged implementation of CommitIsAncestor. !25702 +- Bring back Rugged implementation of TreeEntry. !25706 +- Enable syntax highlighting to other supported markups. !25761 +- Update GitLab Shell to v8.7.1. !25801 +- Bring back Rugged implementation of commit_tree_entry. !25896 +- Removes EE differences for jobs/getters.js. -- Unreleased due to QA failure. ## 11.8.3 (2019-03-19) @@ -130,33 +711,6 @@ entry. - Allow project members to see private group if the project is in the group namespace. -## 11.8.1 (2019-02-28) - -### Security (21 changes) - -- Stop linking to unrecognized package sources. !55518 -- Don't allow non-members to see private related MRs. -- Do not display impersonated sessions under active sessions and remove ability to revoke session. -- Display only information visible to current user on the Milestone page. -- Show only merge requests visible to user on milestone detail page. -- Disable issue boards API when issues are disabled. -- Don't show new issue link after move when a user does not have permissions. -- Fix git clone revealing private repo's presence. -- Fix blind SSRF in Prometheus integration by checking URL before querying. -- Check snippet attached file to be moved is within designated directory. -- Check if desired milestone for an issue is available. -- Fix arbitrary file read via diffs during import. -- Display the correct number of MRs a user has access to. -- Forbid creating discussions for users with restricted access. -- Do not disclose milestone titles for unauthorized users. -- Validate session key when authorizing with GCP to create a cluster. -- Block local URLs for Kubernetes integration. -- Limit mermaid rendering to 5K characters. -- Remove the possibility to share a project with a group that a user is not a member of. -- Fix leaking private repository information in API. -- Prevent releases links API to leak tag existance. - - ## 11.8.0 (2019-02-22) ### Security (7 changes, 1 of them is from the community) @@ -404,6 +958,40 @@ entry. - Creates mixin to reduce code duplication between CE and EE in graph component. +## 11.7.10 (2019-03-28) + +### Security (7 changes) + +- Disallow guest users from accessing Releases. +- Fix PDF.js vulnerability. +- Hide "related branches" when user does not have permission. +- Fix XSS in resolve conflicts form. +- Added rake task for removing EXIF data from existing uploads. +- Disallow updating namespace when updating a project. +- Use UntrustedRegexp for matching refs policy. + + +## 11.7.8 (2019-03-26) + +### Security (7 changes) + +- Disallow guest users from accessing Releases. +- Fix PDF.js vulnerability. +- Hide "related branches" when user does not have permission. +- Fix XSS in resolve conflicts form. +- Added rake task for removing EXIF data from existing uploads. +- Disallow updating namespace when updating a project. +- Use UntrustedRegexp for matching refs policy. + + +## 11.7.7 (2019-03-19) + +### Security (2 changes) + +- Remove project serialization in quick actions response. +- Fixed ability to see private groups by users not belonging to given group. + + ## 11.7.5 (2019-02-06) ### Fixed (8 changes) @@ -641,6 +1229,33 @@ entry. - Update url placeholder for the sentry configuration page. !24338 +## 11.6.10 (2019-02-28) + +### Security (21 changes) + +- Stop linking to unrecognized package sources. !55518 +- Check snippet attached file to be moved is within designated directory. +- Fix potential Addressable::URI::InvalidURIError. +- Do not display impersonated sessions under active sessions and remove ability to revoke session. +- Display only information visible to current user on the Milestone page. +- Show only merge requests visible to user on milestone detail page. +- Disable issue boards API when issues are disabled. +- Don't show new issue link after move when a user does not have permissions. +- Fix git clone revealing private repo's presence. +- Fix blind SSRF in Prometheus integration by checking URL before querying. +- Check if desired milestone for an issue is available. +- Don't allow non-members to see private related MRs. +- Fix arbitrary file read via diffs during import. +- Display the correct number of MRs a user has access to. +- Forbid creating discussions for users with restricted access. +- Do not disclose milestone titles for unauthorized users. +- Validate session key when authorizing with GCP to create a cluster. +- Block local URLs for Kubernetes integration. +- Limit mermaid rendering to 5K characters. +- Remove the possibility to share a project with a group that a user is not a member of. +- Fix leaking private repository information in API. + + ## 11.6.8 (2019-01-30) - No changes. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 97dbe2f512..82e16b4fbf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,7 @@ _This notice should stay as the first item in the CONTRIBUTING.md file._ ## Contributing Documentation has been moved As of July 2018, all the documentation for contributing to the GitLab project has been moved to a new location. -[view the new documentation](doc/development/contributing/index.md) to find the latest information. +[View the new documentation](doc/development/contributing/index.md) to find the latest information. ## Contribute to GitLab diff --git a/Dangerfile b/Dangerfile index 6a2c5cf277..3e8cb45600 100644 --- a/Dangerfile +++ b/Dangerfile @@ -1,13 +1,19 @@ danger.import_plugin('danger/plugins/helper.rb') -danger.import_dangerfile(path: 'danger/metadata') -danger.import_dangerfile(path: 'danger/changes_size') -danger.import_dangerfile(path: 'danger/changelog') -danger.import_dangerfile(path: 'danger/specs') -danger.import_dangerfile(path: 'danger/gemfile') -danger.import_dangerfile(path: 'danger/database') -danger.import_dangerfile(path: 'danger/documentation') -danger.import_dangerfile(path: 'danger/frozen_string') -danger.import_dangerfile(path: 'danger/commit_messages') -danger.import_dangerfile(path: 'danger/duplicate_yarn_dependencies') -danger.import_dangerfile(path: 'danger/prettier') -danger.import_dangerfile(path: 'danger/eslint') + +unless helper.release_automation? + danger.import_dangerfile(path: 'danger/metadata') + danger.import_dangerfile(path: 'danger/changes_size') + danger.import_dangerfile(path: 'danger/changelog') + danger.import_dangerfile(path: 'danger/specs') + danger.import_dangerfile(path: 'danger/gemfile') + danger.import_dangerfile(path: 'danger/database') + danger.import_dangerfile(path: 'danger/documentation') + danger.import_dangerfile(path: 'danger/frozen_string') + danger.import_dangerfile(path: 'danger/commit_messages') + danger.import_dangerfile(path: 'danger/duplicate_yarn_dependencies') + danger.import_dangerfile(path: 'danger/prettier') + danger.import_dangerfile(path: 'danger/eslint') + danger.import_dangerfile(path: 'danger/roulette') + danger.import_dangerfile(path: 'danger/single_codebase') + danger.import_dangerfile(path: 'danger/gitlab_ui_wg') +end diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 0044d6cb96..7e3856fe87 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1.20.1 +1.34.3 diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 917d38ec9f..f7ee06693c 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -8.4.4 +9.0.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index d127a0ff9f..85e2cd5309 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.3.3 +8.5.2 diff --git a/Gemfile b/Gemfile index 80565aaff4..00f90bdf7e 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,7 @@ gem 'gitlab-default_value_for', '~> 3.1.1', require: 'default_value_for' gem 'mysql2', '~> 0.4.10', group: :mysql gem 'pg', '~> 1.1', group: :postgres -gem 'rugged', '~> 0.27' +gem 'rugged', '~> 0.28' gem 'grape-path-helpers', '~> 1.0' gem 'faraday', '~> 0.12' @@ -42,11 +42,11 @@ gem 'omniauth-shibboleth', '~> 1.3.0' gem 'omniauth-twitter', '~> 1.4' gem 'omniauth_crowd', '~> 2.2.0' gem 'omniauth-authentiq', '~> 0.3.3' -gem 'rack-oauth2', '~> 1.2.1' +gem 'rack-oauth2', '~> 1.9.3' gem 'jwt', '~> 2.1.0' # Spam and anti-bot protection -gem 'recaptcha', '~> 3.0', require: 'recaptcha/rails' +gem 'recaptcha', '~> 4.11', require: 'recaptcha/rails' gem 'akismet', '~> 2.0' # Two-factor authentication @@ -68,7 +68,7 @@ gem 'gpgme', '~> 2.0.18' # LDAP Auth # GitLab fork with several improvements to original library. For full list of changes # see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master -gem 'gitlab_omniauth-ldap', '~> 2.0.4', require: 'omniauth-ldap' +gem 'gitlab_omniauth-ldap', '~> 2.1.1', require: 'omniauth-ldap' gem 'net-ldap' # API @@ -94,13 +94,15 @@ gem 'carrierwave', '~> 1.3' gem 'mini_magick' # for backups -gem 'fog-aws', '~> 2.0.1' -gem 'fog-core', '~> 1.44' -gem 'fog-google', '~> 1.7.1' -gem 'fog-local', '~> 0.3' -gem 'fog-openstack', '~> 0.1' +gem 'fog-aws', '~> 3.3' +# Locked until fog-google resolves https://github.com/fog/fog-google/issues/421. +# Also see config/initializers/fog_core_patch.rb. +gem 'fog-core', '= 2.1.0' +gem 'fog-google', '~> 1.8' +gem 'fog-local', '~> 0.6' +gem 'fog-openstack', '~> 1.0' gem 'fog-rackspace', '~> 0.1.1' -gem 'fog-aliyun', '~> 0.2.0' +gem 'fog-aliyun', '~> 0.3' # for Google storage gem 'google-api-client', '~> 0.23' @@ -114,7 +116,7 @@ gem 'seed-fu', '~> 2.3.7' # Markdown and HTML processing gem 'html-pipeline', '~> 2.8' gem 'deckar01-task_list', '2.2.0' -gem 'gitlab-markup', '~> 1.6.5' +gem 'gitlab-markup', '~> 1.7.0' gem 'github-markup', '~> 1.7.0', require: 'github/markup' gem 'commonmarker', '~> 0.17' gem 'RedCloth', '~> 4.3.2' @@ -126,7 +128,7 @@ gem 'asciidoctor', '~> 1.5.8' gem 'asciidoctor-plantuml', '0.0.8' gem 'rouge', '~> 3.1' gem 'truncato', '~> 0.7.11' -gem 'bootstrap_form', '~> 2.7.0' +gem 'bootstrap_form', '~> 4.2.0' gem 'nokogiri', '~> 1.10.1' gem 'escape_utils', '~> 1.1' @@ -137,13 +139,10 @@ gem 'icalendar' gem 'diffy', '~> 3.1.0' # Application server -# The 2.0.6 version of rack requires monkeypatch to be present in -# `config.ru`. This can be removed once a new update for Rack -# is available that contains https://github.com/rack/rack/pull/1201. -gem 'rack', '2.0.6' +gem 'rack', '~> 2.0.7' group :unicorn do - gem 'unicorn', '~> 5.1.0' + gem 'unicorn', '~> 5.4.1' gem 'unicorn-worker-killer', '~> 0.4.4' end @@ -156,7 +155,7 @@ end gem 'state_machines-activerecord', '~> 0.5.1' # Issue tags -gem 'acts-as-taggable-on', '~> 5.0' +gem 'acts-as-taggable-on', '~> 6.0' # Background jobs gem 'sidekiq', '~> 5.2.1' @@ -168,7 +167,7 @@ gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch' gem 'fugit', '~> 1.1' # HTTP requests -gem 'httparty', '~> 0.13.3' +gem 'httparty', '~> 0.16.4' # Colored output to console gem 'rainbow', '~> 3.0' @@ -184,7 +183,7 @@ gem 're2', '~> 1.1.1' # Misc -gem 'version_sorter', '~> 2.1.0' +gem 'version_sorter', '~> 2.2.4' # Export Ruby Regex to Javascript gem 'js_regex', '~> 3.1' @@ -266,9 +265,7 @@ gem 'addressable', '~> 2.5.2' gem 'font-awesome-rails', '~> 4.7' gem 'gemojione', '~> 3.3' gem 'gon', '~> 6.2' -gem 'jquery-atwho-rails', '~> 1.3.2' gem 'request_store', '~> 1.3' -gem 'select2-rails', '~> 3.5.9' gem 'virtus', '~> 1.0.1' gem 'base32', '~> 0.3.0' @@ -326,7 +323,7 @@ group :development do end group :development, :test do - gem 'bootsnap', '~> 1.3' + gem 'bootsnap', '~> 1.4' gem 'bullet', '~> 5.5.0', require: !!ENV['ENABLE_BULLET'] gem 'pry-byebug', '~> 3.5.1', platform: :mri gem 'pry-rails', '~> 0.3.4' @@ -383,7 +380,7 @@ group :test do gem 'shoulda-matchers', '~> 3.1.2', require: false gem 'email_spec', '~> 2.2.0' gem 'json-schema', '~> 2.8.0' - gem 'webmock', '~> 2.3.2' + gem 'webmock', '~> 3.5.1' gem 'rails-controller-testing' gem 'sham_rack', '~> 1.3.6' gem 'concurrent-ruby', '~> 1.1' @@ -413,7 +410,7 @@ gem 'sys-filesystem', '~> 1.1.6' # SSH host key support gem 'net-ssh', '~> 5.0' -gem 'sshkey', '~> 1.9.0' +gem 'sshkey', '~> 2.0' # Required for ED25519 SSH host key support group :ed25519 do @@ -422,7 +419,8 @@ group :ed25519 do end # Gitaly GRPC client -gem 'gitaly-proto', '~> 1.10.0', require: 'gitaly' +gem 'gitaly-proto', '~> 1.22.1', require: 'gitaly' + gem 'grpc', '~> 1.15.0' gem 'google-protobuf', '~> 3.6' diff --git a/Gemfile.lock b/Gemfile.lock index 0ba8c3ef4c..d498172b02 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -43,8 +43,8 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - acts-as-taggable-on (5.0.0) - activerecord (>= 4.2.8) + acts-as-taggable-on (6.0.0) + activerecord (~> 5.0) adamantium (0.2.0) ice_nine (~> 0.11.0) memoizable (~> 0.4.0) @@ -65,7 +65,7 @@ GEM atomic (1.1.99) attr_encrypted (3.1.0) encryptor (~> 3.0.0) - attr_required (1.0.0) + attr_required (1.0.1) awesome_print (1.8.0) axiom-types (0.1.1) descendants_tracker (~> 0.0.4) @@ -85,9 +85,11 @@ GEM binding_ninja (0.2.2) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - bootsnap (1.3.2) + bootsnap (1.4.1) msgpack (~> 1.0) - bootstrap_form (2.7.0) + bootstrap_form (4.2.0) + actionpack (>= 5.0) + activemodel (>= 5.0) brakeman (4.2.1) browser (2.5.3) builder (3.2.3) @@ -218,32 +220,33 @@ GEM flowdock (0.7.1) httparty (~> 0.7) multi_json - fog-aliyun (0.2.0) - fog-core (~> 1.27) - fog-json (~> 1.0) + fog-aliyun (0.3.3) + fog-core + fog-json ipaddress (~> 0.8) xml-simple (~> 1.1) - fog-aws (2.0.1) - fog-core (~> 1.38) - fog-json (~> 1.0) + fog-aws (3.3.0) + fog-core (~> 2.1) + fog-json (~> 1.1) fog-xml (~> 0.1) ipaddress (~> 0.8) - fog-core (1.45.0) + fog-core (2.1.0) builder excon (~> 0.58) formatador (~> 0.2) - fog-google (1.7.1) - fog-core - fog-json - fog-xml + mime-types + fog-google (1.8.2) + fog-core (<= 2.1.0) + fog-json (~> 1.2) + fog-xml (~> 0.1.0) google-api-client (~> 0.23.0) - fog-json (1.0.2) - fog-core (~> 1.0) + fog-json (1.2.0) + fog-core multi_json (~> 1.10) - fog-local (0.3.1) - fog-core (~> 1.27) - fog-openstack (0.1.21) - fog-core (>= 1.40) + fog-local (0.6.0) + fog-core (>= 1.27, < 3.0) + fog-openstack (1.0.8) + fog-core (~> 2.1) fog-json (>= 1.0) ipaddress (>= 0.8) fog-rackspace (0.1.1) @@ -259,7 +262,7 @@ GEM foreman (0.84.0) thor (~> 0.19.1) formatador (0.2.5) - fugit (1.1.7) + fugit (1.1.9) et-orbi (~> 1.1, >= 1.1.7) raabro (~> 1.1) fuubar (2.2.0) @@ -278,19 +281,19 @@ GEM gettext_i18n_rails (>= 0.7.1) po_to_json (>= 1.0.0) rails (>= 3.2.0) - gitaly-proto (1.10.0) + gitaly-proto (1.22.1) grpc (~> 1.0) github-markup (1.7.0) gitlab-default_value_for (3.1.1) activerecord (>= 3.2.0, < 6.0) - gitlab-markup (1.6.5) + gitlab-markup (1.7.0) gitlab-sidekiq-fetcher (0.4.0) sidekiq (~> 5) gitlab-styles (2.5.1) rubocop (~> 0.54.0) rubocop-gitlab-security (~> 0.1.0) rubocop-rspec (~> 1.19) - gitlab_omniauth-ldap (2.0.4) + gitlab_omniauth-ldap (2.1.1) net-ldap (~> 0.16) omniauth (~> 1.3) pyu-ruby-sasl (>= 0.0.3.3, < 0.1) @@ -309,7 +312,7 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.0) google-protobuf (3.6.1) - googleapis-common-protos-types (1.0.2) + googleapis-common-protos-types (1.0.3) google-protobuf (~> 3.0) googleauth (0.6.6) faraday (~> 0.12) @@ -357,7 +360,7 @@ GEM thor tilt hangouts-chat (0.0.5) - hashdiff (0.3.4) + hashdiff (0.3.8) hashie (3.5.7) hashie-forbidden_attributes (0.1.1) hashie (>= 3.0) @@ -381,8 +384,8 @@ GEM domain_name (~> 0.5) http-form_data (2.1.1) http_parser.rb (0.6.0) - httparty (0.13.7) - json (~> 1.8) + httparty (0.16.4) + mime-types (~> 3.0) multi_xml (>= 0.5.2) httpclient (2.8.3) i18n (1.6.0) @@ -400,7 +403,6 @@ GEM activesupport multipart-post oauth (~> 0.5, >= 0.5.0) - jquery-atwho-rails (1.3.2) js_regex (3.1.1) character_set (~> 1.1) regexp_parser (~> 1.1) @@ -425,7 +427,7 @@ GEM activerecord kaminari-core (= 1.0.1) kaminari-core (1.0.1) - kgio (2.10.0) + kgio (2.11.2) knapsack (1.17.0) rake kubeclient (4.2.2) @@ -586,7 +588,7 @@ GEM atomic (>= 1.0.0) peek redis - pg (1.1.3) + pg (1.1.4) po_to_json (1.0.1) json (>= 1.6.0) powerpack (0.1.1) @@ -618,18 +620,18 @@ GEM puma (>= 2.7, < 4) pyu-ruby-sasl (0.0.3.3) raabro (1.1.6) - rack (2.0.6) + rack (2.0.7) rack-accept (0.4.5) rack (>= 0.4) rack-attack (4.4.1) rack rack-cors (1.0.2) - rack-oauth2 (1.2.3) - activesupport (>= 2.3) - attr_required (>= 0.0.5) - httpclient (>= 2.4) - multi_json (>= 1.3.6) - rack (>= 1.1) + rack-oauth2 (1.9.3) + activesupport + attr_required + httpclient + json-jwt (>= 1.9.0) + rack rack-protection (2.0.5) rack rack-proxy (0.6.0) @@ -669,7 +671,7 @@ GEM rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (3.0.0) - raindrops (0.18.0) + raindrops (0.19.0) rake (12.3.2) rb-fsevent (0.10.2) rb-inotify (0.9.10) @@ -682,7 +684,7 @@ GEM optimist (>= 3.0.0) rdoc (6.0.4) re2 (1.1.1) - recaptcha (3.0.0) + recaptcha (4.13.1) json recursive-open-struct (1.1.0) redis (3.3.5) @@ -787,7 +789,7 @@ GEM rubyntlm (0.6.2) rubypants (0.2.0) rubyzip (1.2.2) - rugged (0.27.5) + rugged (0.28.1) safe_yaml (1.0.4) sanitize (4.6.6) crass (~> 1.0.2) @@ -813,12 +815,10 @@ GEM seed-fu (2.3.7) activerecord (>= 3.1) activesupport (>= 3.1) - select2-rails (3.5.9.3) - thor (~> 0.14) selenium-webdriver (3.12.0) childprocess (~> 0.5) rubyzip (~> 1.2) - sentry-raven (2.7.4) + sentry-raven (2.9.0) faraday (>= 0.7.6, < 1.0) settingslogic (2.0.9) sexp_processor (4.11.0) @@ -858,7 +858,7 @@ GEM activesupport (>= 4.0) sprockets (>= 3.0.0) sqlite3 (1.3.13) - sshkey (1.9.0) + sshkey (2.0.0) stackprof (0.2.10) state_machines (0.5.0) state_machines-activemodel (0.5.1) @@ -901,7 +901,7 @@ GEM unf_ext unf_ext (0.0.7.5) unicode-display_width (1.3.2) - unicorn (5.1.0) + unicorn (5.4.1) kgio (~> 2.6) raindrops (~> 0.7) unicorn-worker-killer (0.4.4) @@ -919,7 +919,7 @@ GEM validates_hostname (1.0.6) activerecord (>= 3.0) activesupport (>= 3.0) - version_sorter (2.1.0) + version_sorter (2.2.4) virtus (1.0.5) axiom-types (~> 0.1) coercible (~> 1.0) @@ -928,7 +928,7 @@ GEM vmstat (2.3.0) warden (1.2.7) rack (>= 1.0) - webmock (2.3.2) + webmock (3.5.1) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff @@ -953,7 +953,7 @@ DEPENDENCIES RedCloth (~> 4.3.2) ace-rails-ap (~> 4.1.0) activerecord_sane_schema_dumper (= 1.0) - acts-as-taggable-on (~> 5.0) + acts-as-taggable-on (~> 6.0) addressable (~> 2.5.2) akismet (~> 2.0) asana (~> 0.8.1) @@ -968,8 +968,8 @@ DEPENDENCIES benchmark-ips (~> 2.3.0) better_errors (~> 2.5.0) binding_of_caller (~> 0.8.0) - bootsnap (~> 1.3) - bootstrap_form (~> 2.7.0) + bootsnap (~> 1.4) + bootstrap_form (~> 4.2.0) brakeman (~> 4.2) browser (~> 2.5) bullet (~> 5.5.0) @@ -1005,12 +1005,12 @@ DEPENDENCIES flipper-active_record (~> 0.13.0) flipper-active_support_cache_store (~> 0.13.0) flowdock (~> 0.7) - fog-aliyun (~> 0.2.0) - fog-aws (~> 2.0.1) - fog-core (~> 1.44) - fog-google (~> 1.7.1) - fog-local (~> 0.3) - fog-openstack (~> 0.1) + fog-aliyun (~> 0.3) + fog-aws (~> 3.3) + fog-core (= 2.1.0) + fog-google (~> 1.8) + fog-local (~> 0.6) + fog-openstack (~> 1.0) fog-rackspace (~> 0.1.1) font-awesome-rails (~> 4.7) foreman (~> 0.84.0) @@ -1020,13 +1020,13 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 1.10.0) + gitaly-proto (~> 1.22.1) github-markup (~> 1.7.0) gitlab-default_value_for (~> 3.1.1) - gitlab-markup (~> 1.6.5) + gitlab-markup (~> 1.7.0) gitlab-sidekiq-fetcher (~> 0.4.0) gitlab-styles (~> 2.4) - gitlab_omniauth-ldap (~> 2.0.4) + gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) google-api-client (~> 0.23) google-protobuf (~> 3.6) @@ -1046,12 +1046,11 @@ DEPENDENCIES hipchat (~> 1.5.0) html-pipeline (~> 2.8) html2text - httparty (~> 0.13.3) + httparty (~> 0.16.4) icalendar influxdb (~> 0.2) jaeger-client (~> 0.10.0) jira-ruby (~> 1.4) - jquery-atwho-rails (~> 1.3.2) js_regex (~> 3.1) json-schema (~> 2.8.0) jwt (~> 2.1.0) @@ -1105,10 +1104,10 @@ DEPENDENCIES pry-rails (~> 0.3.4) puma (~> 3.12) puma_worker_killer - rack (= 2.0.6) + rack (~> 2.0.7) rack-attack (~> 4.4.1) rack-cors (~> 1.0.0) - rack-oauth2 (~> 1.2.1) + rack-oauth2 (~> 1.9.3) rack-proxy (~> 0.6.0) rails (= 5.0.7.2) rails-controller-testing @@ -1120,7 +1119,7 @@ DEPENDENCIES rbtrace (~> 0.4) rdoc (~> 6.0) re2 (~> 1.1.1) - recaptcha (~> 3.0) + recaptcha (~> 4.11) redis (~> 3.2) redis-namespace (~> 1.6.0) redis-rails (~> 5.0.2) @@ -1141,13 +1140,12 @@ DEPENDENCIES ruby-progressbar ruby_parser (~> 3.8) rubyzip (~> 1.2.2) - rugged (~> 0.27) + rugged (~> 0.28) sanitize (~> 4.6) sass (~> 3.5) sass-rails (~> 5.0.6) scss_lint (~> 0.56.0) seed-fu (~> 2.3.7) - select2-rails (~> 3.5.9) selenium-webdriver (~> 3.12) sentry-raven (~> 2.7) settingslogic (~> 2.0.9) @@ -1161,7 +1159,7 @@ DEPENDENCIES spring (~> 2.0.0) spring-commands-rspec (~> 1.0.4) sprockets (~> 3.7.0) - sshkey (~> 1.9.0) + sshkey (~> 2.0) stackprof (~> 0.2.10) state_machines-activerecord (~> 0.5.1) sys-filesystem (~> 1.1.6) @@ -1173,13 +1171,13 @@ DEPENDENCIES u2f (~> 0.2.1) uglifier (~> 2.7.2) unf (~> 0.1.4) - unicorn (~> 5.1.0) + unicorn (~> 5.4.1) unicorn-worker-killer (~> 0.4.4) validates_hostname (~> 1.0.6) - version_sorter (~> 2.1.0) + version_sorter (~> 2.2.4) virtus (~> 1.0.1) vmstat (~> 2.3.0) - webmock (~> 2.3.2) + webmock (~> 3.5.1) webpack-rails (~> 0.9.10) wikicloth (= 0.8.1) diff --git a/PROCESS.md b/PROCESS.md index 7fdac09880..1f99cebe08 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -108,7 +108,19 @@ Merge requests that make changes hidden behind a feature flag, or remove an existing feature flag because a feature is deemed stable, may be merged (and picked into the stable branches) up to the 19th of the month. Such merge requests should have the ~"feature flag" label assigned, and don't require a -corresponding exception request to be created. +corresponding exception request to be created. + +A level of common sense should be applied when deciding whether to have a feature +behind a feature flag off or on by default. + +The following guideliness can be applied to help make this decision: + +* If the feature is not fully ready or functioning, the feature flag should be disabled by default. +* If the feature is ready but there are concerns about performance or impact, the feature flag should be enabled by default, but +disabled via chatops before deployment on GitLab.com environments. If the performance concern is confirmed, the final release should have the feature flag disabled by default. +* In most other cases, the feature flag can be enabled by default. + +For more information on rolling out changes using feature flags, read [through the documentation](https://docs.gitlab.com/ee/development/rolling_out_changes_using_feature_flags.html). In order to build the final package and present the feature for self-hosted customers, the feature flag should be removed. This should happen before the @@ -156,8 +168,12 @@ on behalf of the community member. Every new feature or change should be shipped with its corresponding documentation in accordance with the -[documentation process](https://docs.gitlab.com/ee/development/documentation/workflow.html) -and [structure](https://docs.gitlab.com/ee/development/documentation/structure.html). +[documentation process](https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html) +and [structure](https://docs.gitlab.com/ee/development/documentation/structure.html) guides. +Note that a technical writer will review all changes to documentation. This can occur +in the same MR as the feature code, but [if there is not sufficient time or need, +it can be planned via a follow-up issue for doc review](https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html#1-product-managers-role), +and another MR, if needed. Regardless, complete docs must be merged with code by the freeze. #### What happens if these deadlines are missed? @@ -186,8 +202,6 @@ and to prevent any last minute surprises. Merge requests should still be complete, following the [definition of done][done]. -#### Feature merge requests - If a merge request is not ready, but the developers and Product Manager responsible for the feature think it is essential that it is in the release, they can [ask for an exception](#asking-for-an-exception) in advance. This is @@ -202,34 +216,17 @@ information, see [Automatic CE->EE merge][automatic_ce_ee_merge] and [Guidelines for implementing Enterprise Edition features][ee_features]. -#### Documentation merge requests - -Documentation is part of the product and must be shipped with the feature. - -The single exception for the feature freeze is documentation, and it can -be left to be **merged up to the 14th** if: - -* There is a follow-up issue to add documentation. -* It is assigned to the developer writing documentation for this feature, and they - are aware of it. -* It is in the correct milestone, with the labels ~Documentation, ~Deliverable, -~missed-deliverable, and "pick into X.Y" applied. -* It must be reviewed and approved by a technical writer. - -For more information read the process for -[documentation shipped late](https://docs.gitlab.com/ee/development/documentation/workflow.html#documentation-shipped-late). - ### After the 7th Once the stable branch is frozen, the only MRs that can be cherry-picked into the stable branch are: * Fixes for [regressions](#regressions) where the affected version `xx.x` in `regression:xx.x` is the current release. See [Managing bugs](#managing-bugs) section. -* Fixes for security issues -* Fixes or improvements to automated QA scenarios -* [Documentation updates](https://docs.gitlab.com/ee/development/documentation/workflow.html#documentation-shipped-late) for changes in the same release -* New or updated translations (as long as they do not touch application code) -* Changes that are behind a feature flag and have the ~"feature flag" label +* Fixes for security issues. +* Fixes or improvements to automated QA scenarios. +* [Documentation improvements](https://docs.gitlab.com/ee/development/documentation/workflow.html) for feature changes made in the same release, though initial docs for these features should have already been merged by the freeze, as required. +* New or updated translations (as long as they do not touch application code). +* Changes that are behind a feature flag and have the ~"feature flag" label. During the feature freeze all merge requests that are meant to go into the upcoming release should have the correct milestone assigned _and_ the diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000000..2afbe5fc3f --- /dev/null +++ b/Pipfile @@ -0,0 +1,12 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +docutils = "==0.13.1" + +[requires] +python_version = "3.4" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000000..dc23ca89ed --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,30 @@ +{ + "_meta": { + "hash": { + "sha256": "ec82d5e7c10fd591aeebbc9b7b62d730f7fd70dc52e4e4818834891aa4194c73" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.4" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "docutils": { + "hashes": [ + "sha256:718c0f5fb677be0f34b781e04241c4067cbd9327b66bdd8e763201130f5175be", + "sha256:cb3ebcb09242804f84bdbf0b26504077a054da6772c6f4d625f335cc53ebf94d", + "sha256:de454f1015958450b72641165c08afe7023cd7e3944396448f2fb1b0ccba9d77" + ], + "index": "pypi", + "version": "==0.13.1" + } + }, + "develop": {} +} diff --git a/VERSION b/VERSION index 5413747c68..31265f292c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -11.10.5 +11.10.8 diff --git a/app/assets/images/select2-spinner.gif b/app/assets/images/select2-spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/app/assets/images/select2.png b/app/assets/images/select2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d804ffb99699b9e030f1010314de0970b5a000d GIT binary patch literal 613 zcmV-r0-F7aP)#WY!I$JQV$)A5aAS1BM||2XVJl=+L1^1S1H% zM-&lx?NZpUrHhn>fk<>POqf2sh40}xxGZfc+t+#Eb(qHy9_3*1(U%t9t)QDnI#YAL(|ACV(>)>6WD-t!8tutHkdb^#3`HzoJG3A2@T`% zA|K@o*b!`R#(7)PWrMFn2))Ca3MR4(zaT`Zr61*kZK5NPnZwQszxh$fyv3?&4c>$q z2m=+yc0dRXRAsPDxF6sD;@rK4JGdR_``1S~o6Xi@2&aR6hcSrEp9HVRzEqVDqBn<1%hR=D4e1f^ra^A|34Cjc=Gny{F(o#MrvPYgZuTJOz(n)-F<| zj()qR;C={)N<0RRvDZ^@6ND+W*}gh-Lip(MDt!(zMSO)!j2j+*hxgzC-e3$@(O2p* zu;+gddm(cZwXTCLx*Ky4THOa*^b^F`woveIeCK^0aR|TJ00000NkvXXu0mjfA#WC6 literal 0 HcmV?d00001 diff --git a/app/assets/images/select2x2.png b/app/assets/images/select2x2.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdd5c961d452c49dfa0789c2c7ffb82c238fc24 GIT binary patch literal 845 zcmV-T1G4;yP)upQ6WKflyv?C|ADVW!U!t`EpA+x zB)5#EjWk-_X77YJZtQo`E0SF)^1bZr%)B7Cd`*OK*r z5WG-7e-R9G9^69ksDt29&oyHqxPSt|-S>xi3%PTd+GjY+BGF|nWC(7D-sd(kxqd9~ zS@2YF5vB+>dP8+$l^{oO3-lEWiGA*QIU)Wds#9M6RZ9N zcQ4y4)xqQOxD=vwu%7cz1nY#$lT&y8HCmkWgpwQP#3dhnYj9|2aS_R}IUF_^6s#$= zTm%~>A#oM?KIg$kh=<`gJkeoHa2LrulVy$Yx+N_0R3$4I!R*0677f(FKqm`2_o4~W z0h}fQZ`lC^1A+m;fM7uI(R1`S0KtG@KrkQ}5DW+&@cTnDVIow56KciMk7a899t0bC zC1KI{TsMe5NAR%GD_5`B-@ad4k~K3SO%H z_M31|`HV?E6)u$E3c&*<*n20+V@mRCop>R5;DWuZCmjSo7p@R&OYl^@G { + $(document).on('copy', '.md', e => { CopyAsGFM.copyAsGFM(e, CopyAsGFM.transformGFMSelection); }); - $(document).on('copy', 'pre.code.highlight, .diff-content .line_content', e => { + $(document).on('copy', 'pre.code.highlight, table.code td.line_content', e => { CopyAsGFM.copyAsGFM(e, CopyAsGFM.transformCodeSelection); }); $(document).on('paste', '.js-gfm-input', CopyAsGFM.pasteGFM); @@ -99,7 +99,7 @@ export class CopyAsGFM { } static transformGFMSelection(documentFragment) { - const gfmElements = documentFragment.querySelectorAll('.md, .wiki'); + const gfmElements = documentFragment.querySelectorAll('.md'); switch (gfmElements.length) { case 0: { return documentFragment; @@ -173,7 +173,9 @@ export class CopyAsGFM { wrapEl.appendChild(node.cloneNode(true)); const doc = DOMParser.fromSchema(schema.default).parse(wrapEl); - const res = markdownSerializer.default.serialize(doc); + const res = markdownSerializer.default.serialize(doc, { + tightLists: true, + }); return res; }) .catch(() => {}); diff --git a/app/assets/javascripts/behaviors/markdown/render_gfm.js b/app/assets/javascripts/behaviors/markdown/render_gfm.js index fc9286d15e..bfb073fdcd 100644 --- a/app/assets/javascripts/behaviors/markdown/render_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/render_gfm.js @@ -4,6 +4,7 @@ import renderMath from './render_math'; import renderMermaid from './render_mermaid'; import highlightCurrentUser from './highlight_current_user'; import initUserPopovers from '../../user_popovers'; +import initMRPopovers from '../../mr_popover'; // Render GitLab flavoured Markdown // @@ -15,6 +16,7 @@ $.fn.renderGFM = function renderGFM() { renderMermaid(this.find('.js-render-mermaid')); highlightCurrentUser(this.find('.gfm-project_member').get()); initUserPopovers(this.find('.gfm-project_member').get()); + initMRPopovers(this.find('.gfm-merge_request').get()); return this; }; diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_issuable.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_issuable.js index 680f203140..670f66b005 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_issuable.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_issuable.js @@ -37,7 +37,7 @@ export default class ShortcutsIssuable extends Shortcuts { } // Sanity check: Make sure the selected text comes from a discussion : it can either contain a message... - let foundMessage = !!documentFragment.querySelector('.md, .wiki'); + let foundMessage = !!documentFragment.querySelector('.md'); // ... Or come from a message if (!foundMessage) { @@ -46,7 +46,7 @@ export default class ShortcutsIssuable extends Shortcuts { let node = e; do { // Text nodes don't define the `matches` method - if (node.matches && node.matches('.md, .wiki')) { + if (node.matches && node.matches('.md')) { foundMessage = true; } node = node.parentNode; diff --git a/app/assets/javascripts/blob_edit/blob_bundle.js b/app/assets/javascripts/blob_edit/blob_bundle.js index 5f64175362..6aaf5bf729 100644 --- a/app/assets/javascripts/blob_edit/blob_bundle.js +++ b/app/assets/javascripts/blob_edit/blob_bundle.js @@ -13,7 +13,7 @@ export default () => { if (editBlobForm.length) { const urlRoot = editBlobForm.data('relativeUrlRoot'); const assetsPath = editBlobForm.data('assetsPrefix'); - const filePath = editBlobForm.data('blobFilename'); + const filePath = `${editBlobForm.data('blobFilename')}`; const currentAction = $('.js-file-title').data('currentAction'); const projectId = editBlobForm.data('project-id'); const isMarkdown = editBlobForm.data('is-markdown'); diff --git a/app/assets/javascripts/boards/components/board.js b/app/assets/javascripts/boards/components/board.js index fb6e5291a6..45b9e57f9a 100644 --- a/app/assets/javascripts/boards/components/board.js +++ b/app/assets/javascripts/boards/components/board.js @@ -54,7 +54,10 @@ export default Vue.extend({ return `${n__('%d issue', '%d issues', issuesSize)}`; }, isNewIssueShown() { - return this.list.type === 'backlog' || (!this.disabled && this.list.type !== 'closed'); + return ( + this.list.type === 'backlog' || + (!this.disabled && this.list.type !== 'closed' && this.list.type !== 'blank') + ); }, }, watch: { diff --git a/app/assets/javascripts/boards/components/issue_card_inner.vue b/app/assets/javascripts/boards/components/issue_card_inner.vue index 90ab3a7634..206573dd44 100644 --- a/app/assets/javascripts/boards/components/issue_card_inner.vue +++ b/app/assets/javascripts/boards/components/issue_card_inner.vue @@ -1,4 +1,5 @@ @@ -247,31 +279,36 @@ export default { -
+
{{ - s__(`ClusterIntegration|GitLab Runner connects to this - project's repository and executes CI/CD jobs, - pushing results back and deploying, + s__(`ClusterIntegration|GitLab Runner connects to the + repository and executes CI/CD jobs, + pushing results back and deploying applications to production.`) }}
@@ -401,7 +439,7 @@ export default { }}

-