From ba8cc108d21c7039284fcd1e7a8b9ad99e21dd9c Mon Sep 17 00:00:00 2001 From: Sruthi Chandran Date: Wed, 1 Jan 2020 13:55:28 +0530 Subject: [PATCH] New upstream version 12.6.1 --- .eslintrc.yml | 18 +- .gitattributes | 1 + .gitignore | 3 +- .gitlab-ci.yml | 12 +- .gitlab/ci/cache-repo.gitlab-ci.yml | 33 + .gitlab/ci/docs.gitlab-ci.yml | 3 +- .gitlab/ci/frontend.gitlab-ci.yml | 12 +- .gitlab/ci/global.gitlab-ci.yml | 16 +- .gitlab/ci/notifications.gitlab-ci.yml | 23 + .gitlab/ci/releases.gitlab-ci.yml | 27 +- .gitlab/ci/reports.gitlab-ci.yml | 13 +- .gitlab/ci/review.gitlab-ci.yml | 13 +- .../Productivity Improvement.md | 47 + .haml-lint_todo.yml | 3 +- .markdownlint.json | 97 + .nvmrc | 2 +- .rubocop.yml | 1 - CHANGELOG-EE.md | 168 +- CHANGELOG.md | 474 +- Dangerfile | 1 + GITALY_SERVER_VERSION | 2 +- GITLAB_SHELL_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 53 +- Gemfile.lock | 130 +- VERSION | 2 +- app/assets/javascripts/api.js | 29 +- app/assets/javascripts/autosave.js | 16 +- .../javascripts/badges/components/badge.vue | 7 +- .../badges/components/badge_form.vue | 20 +- .../badges/components/badge_list_row.vue | 11 +- app/assets/javascripts/badges/empty_badge.js | 1 + .../javascripts/badges/store/actions.js | 10 +- .../behaviors/markdown/gfm_auto_complete.js | 2 +- .../behaviors/markdown/nodes/image.js | 2 +- .../blob/file_template_mediator.js | 2 +- app/assets/javascripts/blob/openapi/index.js | 19 + app/assets/javascripts/blob/openapi_viewer.js | 3 + app/assets/javascripts/blob/viewer/index.js | 3 + .../javascripts/boards/components/board.js | 26 +- .../boards/components/board_blank_state.vue | 2 +- .../boards/components/board_list.vue | 5 +- .../boards/components/boards_selector.vue | 3 +- .../boards/components/issue_card_inner.vue | 2 +- .../boards/components/issue_count.vue | 36 + .../boards/components/issue_due_date.vue | 4 +- .../boards/components/modal/index.vue | 2 +- .../boards/components/project_select.vue | 4 +- app/assets/javascripts/boards/constants.js | 2 + app/assets/javascripts/boards/index.js | 57 +- .../boards/mixins/is_wip_limits.js | 7 + app/assets/javascripts/boards/models/list.js | 31 +- .../boards/services/board_service.js | 98 - app/assets/javascripts/boards/stores/state.js | 1 + .../javascripts/clusters/clusters_bundle.js | 24 +- .../components/crossplane_provider_stack.vue | 10 +- .../components/knative_domain_editor.vue | 2 +- .../remove_cluster_confirmation.vue | 168 + ...install_application_confirmation_modal.vue | 2 +- app/assets/javascripts/commit/image_file.js | 49 +- app/assets/javascripts/commons/polyfills.js | 1 + .../components/project_form_group.vue | 30 +- .../javascripts/confirm_danger_modal.js | 57 +- .../contributors/components/contributors.vue | 2 +- .../components/cluster_form_dropdown.vue | 24 +- .../eks_cluster_configuration_form.vue | 15 +- .../components/service_credentials_form.vue | 4 +- .../create_cluster/eks_cluster/index.js | 22 +- .../services/aws_services_facade.js | 146 +- .../eks_cluster/store/actions.js | 13 +- .../store/cluster_dropdown/index.js | 4 +- .../create_cluster/eks_cluster/store/index.js | 30 +- .../eks_cluster/store/mutation_types.js | 1 - .../eks_cluster/store/mutations.js | 3 - .../create_cluster/eks_cluster/store/state.js | 2 + .../components/gke_dropdown_mixin.js | 2 +- .../components/gke_machine_type_dropdown.vue | 2 +- .../components/gke_project_id_dropdown.vue | 2 +- .../components/gke_zone_dropdown.vue | 2 +- .../create_cluster/init_create_cluster.js | 20 +- .../create_merge_request_dropdown.js | 1 + .../cycle_analytics/components/banner.vue | 2 +- .../deploy_keys/components/app.vue | 4 +- .../deploy_keys/components/key.vue | 2 +- .../javascripts/diffs/components/app.vue | 90 +- .../diffs/components/diff_expansion_cell.vue | 4 +- .../diffs/components/diff_file.vue | 2 +- .../diffs/components/diff_file_header.vue | 8 +- .../diffs/components/diff_gutter_avatars.vue | 2 +- .../components/diff_line_gutter_content.vue | 2 +- .../diffs/components/diff_line_note_form.vue | 2 +- app/assets/javascripts/diffs/constants.js | 1 + app/assets/javascripts/diffs/index.js | 4 + app/assets/javascripts/diffs/store/actions.js | 90 +- .../diffs/store/modules/diff_state.js | 2 + .../javascripts/diffs/store/mutation_types.js | 2 + .../javascripts/diffs/store/mutations.js | 41 +- app/assets/javascripts/diffs/store/utils.js | 7 +- .../javascripts/emoji/no_emoji_validator.js | 2 +- .../environments/components/container.vue | 2 +- .../components/environment_actions.vue | 2 +- .../components/environment_item.vue | 82 +- .../components/environment_monitoring.vue | 2 +- .../components/environments_app.vue | 6 +- .../components/environments_table.vue | 54 +- .../folder/environments_folder_view.vue | 12 +- app/assets/javascripts/environments/index.js | 2 - .../environments/stores/environments_store.js | 2 +- .../components/error_details.vue | 78 +- .../components/error_tracking_list.vue | 296 +- .../error_tracking/components/stacktrace.vue | 2 + .../components/stacktrace_entry.vue | 63 +- .../javascripts/error_tracking/details.js | 5 +- .../error_tracking/services/index.js | 4 +- .../error_tracking/store/details/getters.js | 5 +- .../javascripts/error_tracking/store/index.js | 2 - .../error_tracking/store/list/actions.js | 49 +- .../error_tracking/store/list/getters.js | 4 - .../store/list/mutation_types.js | 9 +- .../error_tracking/store/list/mutations.js | 51 +- .../error_tracking/store/list/state.js | 7 +- .../javascripts/error_tracking/utils.js | 13 +- .../components/error_tracking_form.vue | 10 +- .../javascripts/filtered_search/.eslintrc.yml | 3 + .../filtered_search_manager.js | 2 +- .../filtered_search/visual_token_value.js | 2 +- .../frequent_items/components/app.vue | 2 +- .../frequent_items/store/mutations.js | 2 +- app/assets/javascripts/gfm_auto_complete.js | 68 +- app/assets/javascripts/gl_dropdown.js | 1723 +- .../components/grafana_integration.vue | 2 +- .../javascripts/groups/components/app.vue | 2 +- .../groups/components/item_stats.vue | 7 + .../mixins/is_project_pending_removal.js | 7 + .../javascripts/groups/store/groups_store.js | 1 + .../javascripts/helpers/monitor_helper.js | 1 + app/assets/javascripts/ide/.eslintrc.yml | 2 + .../ide/components/branches/search_list.vue | 2 +- .../components/file_templates/dropdown.vue | 2 +- .../ide/components/ide_status_bar.vue | 6 +- .../ide/components/ide_tree_list.vue | 2 +- .../ide/components/merge_requests/list.vue | 2 +- .../ide/components/new_dropdown/modal.vue | 2 +- .../ide/components/preview/navigator.vue | 2 +- .../javascripts/ide/components/repo_tab.vue | 2 +- app/assets/javascripts/ide/lib/files.js | 3 +- app/assets/javascripts/ide/services/index.js | 3 +- app/assets/javascripts/ide/stores/actions.js | 14 +- .../javascripts/ide/stores/actions/file.js | 4 +- app/assets/javascripts/ide/stores/getters.js | 25 + app/assets/javascripts/ide/stores/utils.js | 3 +- .../javascripts/image_diff/.eslintrc.yml | 3 + app/assets/javascripts/issuable_form.js | 54 +- .../issuable_suggestions/components/item.vue | 2 +- .../javascripts/jobs/components/sidebar.vue | 6 +- .../jobs/components/trigger_block.vue | 2 +- app/assets/javascripts/jobs/store/utils.js | 2 +- .../javascripts/lib/utils/axios_utils.js | 4 +- .../javascripts/lib/utils/common_utils.js | 22 +- .../javascripts/lib/utils/datetime_utility.js | 160 +- .../javascripts/lib/utils/http_status.js | 1 + .../lib/utils/logoutput_behaviours.js | 47 - .../suppress_ajax_errors_during_navigation.js | 4 +- .../javascripts/lib/utils/text_markdown.js | 38 +- .../javascripts/lib/utils/text_utility.js | 2 +- .../javascripts/lib/utils/url_utility.js | 104 +- app/assets/javascripts/main.js | 1 + .../monitoring/components/charts/anomaly.vue | 13 +- .../monitoring/components/charts/column.vue | 12 +- .../monitoring/components/charts/heatmap.vue | 10 +- .../components/charts/single_stat.vue | 2 +- .../components/charts/time_series.vue | 42 +- .../monitoring/components/dashboard.vue | 152 +- .../date_time_picker_input.vue | 2 +- .../monitoring/components/embed.vue | 30 +- .../monitoring/components/empty_state.vue | 6 +- .../monitoring/components/graph_group.vue | 30 +- .../components/group_empty_state.vue | 105 + .../monitoring/components/panel_type.vue | 29 +- .../javascripts/monitoring/constants.js | 47 + .../monitoring/monitoring_bundle.js | 2 +- .../monitoring/monitoring_tracking_helper.js | 10 + .../javascripts/monitoring/stores/actions.js | 85 +- .../javascripts/monitoring/stores/getters.js | 62 + .../javascripts/monitoring/stores/index.js | 2 + .../monitoring/stores/mutation_types.js | 8 +- .../monitoring/stores/mutations.js | 143 +- .../javascripts/monitoring/stores/state.js | 5 +- .../javascripts/monitoring/stores/utils.js | 89 +- app/assets/javascripts/monitoring/utils.js | 26 +- .../mr_popover/components/mr_popover.vue | 2 +- .../mr_tabs_popover/components/popover.vue | 64 + .../javascripts/mr_tabs_popover/index.js | 12 + .../javascripts/notebook/cells/markdown.vue | 73 +- app/assets/javascripts/notes.js | 163 +- .../notes/components/comment_form.vue | 17 +- .../notes/components/diff_with_note.vue | 2 +- .../notes/components/discussion_counter.vue | 8 +- .../discussion_jump_to_next_button.vue | 2 +- .../discussion_keyboard_navigator.vue | 14 +- .../components/discussion_locked_widget.vue | 13 +- .../discussion_resolve_with_issue_button.vue | 2 +- .../notes/components/note_actions.vue | 2 +- .../notes/components/note_awards_list.vue | 14 +- .../notes/components/note_form.vue | 2 +- .../notes/components/noteable_discussion.vue | 29 +- .../notes/components/noteable_note.vue | 2 +- .../notes/components/notes_app.vue | 11 +- .../notes/mixins/discussion_navigation.js | 24 +- .../notes/mixins/issuable_state.js | 6 + .../javascripts/notes/stores/actions.js | 45 +- .../users/components/delete_user_modal.vue | 2 +- .../pages/dashboard/merge_requests/index.js | 2 +- .../pages/groups/group_members/index/index.js | 2 +- .../javascripts/pages/groups/issues/index.js | 2 +- .../pages/groups/merge_requests/index.js | 2 +- .../pages/groups/new/group_path_validator.js | 2 +- .../groups/registry/repositories/index.js | 2 +- .../index.js | 0 .../javascripts/pages/profiles/show/index.js | 2 +- .../javascripts/pages/projects/issues/form.js | 2 +- .../pages/projects/issues/index/index.js | 2 +- .../projects/merge_requests/index/index.js | 2 +- .../merge_requests/init_merge_request.js | 2 +- .../merge_requests/init_merge_request_show.js | 7 + .../pages_domains/{edit => show}/index.js | 0 .../javascripts/pages/projects/project.js | 24 +- .../projects/registry/repositories/index.js | 2 +- .../projects/settings/ci_cd/show/index.js | 3 + .../pages/projects/snippets/show/index.js | 15 +- .../wikis/components/delete_wiki_modal.vue | 2 +- .../pages/sessions/new/username_validator.js | 2 +- .../javascripts/pages/snippets/show/index.js | 15 +- app/assets/javascripts/pages/users/index.js | 2 +- .../components/performance_bar_app.vue | 17 + .../components/request_selector.vue | 14 +- .../components/request_warning.vue | 2 +- .../javascripts/performance_bar/index.js | 46 + .../stores/performance_bar_store.js | 29 + .../javascripts/persistent_user_callout.js | 8 +- .../components/graph/graph_component.vue | 4 - .../pipelines/components/graph/job_item.vue | 4 +- .../components/graph/linked_pipeline.vue | 1 - .../graph/linked_pipelines_column.vue | 7 +- .../components/pipeline_stop_modal.vue | 2 +- .../components/test_reports/test_summary.vue | 4 +- .../pipelines/components/time_ago.vue | 6 +- .../pipelines/stores/test_reports/utils.js | 2 +- app/assets/javascripts/project_find_file.js | 5 +- .../javascripts/projects/project_new.js | 20 +- .../commit_pipeline_status_component.vue | 2 +- .../registry/{ => list}/components/app.vue | 2 +- .../components/collapsible_container.vue | 9 +- .../components/group_empty_state.vue | 0 .../components/project_empty_state.vue | 0 .../{ => list}/components/table_registry.vue | 9 +- .../registry/{ => list}/constants.js | 2 +- .../javascripts/registry/{ => list}/index.js | 2 +- .../registry/{ => list}/stores/actions.js | 0 .../registry/{ => list}/stores/getters.js | 0 .../registry/{ => list}/stores/index.js | 0 .../{ => list}/stores/mutation_types.js | 0 .../registry/{ => list}/stores/mutations.js | 0 .../registry/{ => list}/stores/state.js | 0 .../components/registry_settings_app.vue | 43 + .../settings/registry_settings_bundle.js | 24 + .../registry/settings/stores/actions.js | 6 + .../registry/settings/stores/index.js | 16 + .../settings/stores/mutation_types.js | 4 + .../registry/settings/stores/mutations.js | 8 + .../registry/settings/stores/state.js | 10 + .../components/related_merge_requests.vue | 2 +- .../releases/list/components/app.vue | 20 +- .../list/components/evidence_block.vue | 76 + .../list/components/release_block.vue | 62 +- .../list/components/release_block_footer.vue | 4 +- .../release_block_milestone_info.vue | 136 + .../javascripts/releases/list/constants.js | 7 + .../releases/list/store/actions.js | 13 +- .../releases/list/store/mutations.js | 6 +- .../javascripts/releases/list/store/state.js | 1 + .../reports/components/report_item.vue | 2 +- .../reports/components/summary_row.vue | 2 +- .../repository/components/breadcrumbs.vue | 2 +- .../repository/components/preview/index.vue | 12 +- app/assets/javascripts/repository/index.js | 8 + app/assets/javascripts/repository/log_tree.js | 10 +- .../javascripts/repository/utils/commit.js | 3 +- .../javascripts/repository/utils/dom.js | 9 +- .../serverless/components/area.vue | 2 +- .../serverless/components/functions.vue | 17 +- .../set_status_modal_wrapper.vue | 4 +- .../assignees/assignee_avatar_link.vue | 5 +- .../components/assignees/assignee_title.vue | 3 +- .../assignees/collapsed_assignee_list.vue | 2 +- .../components/lock/edit_form_buttons.vue | 2 +- .../components/participants/participants.vue | 2 +- .../subscriptions/subscriptions.vue | 6 + .../time_tracking/comparison_pane.vue | 2 +- .../sidebar/components/todo_toggle/todo.vue | 13 +- .../javascripts/sidebar/sidebar_mediator.js | 2 +- .../javascripts/snippet/snippet_embed.js | 27 +- .../javascripts/snippets/components/app.vue | 50 + .../snippets/components/snippet_header.vue | 241 + .../fragments/author.fragment.graphql | 8 + .../fragments/project.fragment.graphql | 6 + .../fragments/snippetBase.fragment.graphql | 13 + app/assets/javascripts/snippets/index.js | 34 + .../mutations/deleteSnippet.mutation.graphql | 5 + .../queries/projectPermissions.query.graphql | 7 + .../snippets/queries/snippet.query.graphql | 15 + .../queries/userPermissions.query.graphql | 7 + app/assets/javascripts/tracking.js | 27 +- app/assets/javascripts/user_popovers.js | 1 + app/assets/javascripts/users_select.js | 138 +- .../components/deployment.vue | 245 - .../components/deployment/constants.js | 8 + .../components/deployment/deployment.vue | 108 + .../components/deployment/deployment_info.vue | 98 + .../deployment/deployment_stop_button.vue | 83 + .../deployment/deployment_view_button.vue | 99 + .../{ => deployment}/memory_usage.vue | 18 +- .../components/loading.vue | 29 + .../components/mr_widget_pipeline.vue | 24 +- .../mr_widget_pipeline_container.vue | 7 +- .../components/review_app_link.vue | 27 +- .../components/states/mr_widget_merged.vue | 4 +- .../components/states/ready_to_merge.vue | 51 +- .../mixins/ready_to_merge.js | 3 + .../mr_widget_options.vue | 77 +- .../services/mr_widget_service.js | 7 + .../stores/mr_widget_store.js | 11 +- .../vue_shared/components/bar_chart.vue | 7 +- .../viewers/markdown_viewer.vue | 4 +- .../components/dropdown/dropdown_button.vue | 2 +- .../dropdown/dropdown_search_input.vue | 11 + .../vue_shared/components/expand_button.vue | 18 +- .../vue_shared/components/gl_countdown.vue | 2 +- .../components/issue/issue_milestone.vue | 4 +- .../markdown/suggestion_diff_header.vue | 2 +- .../vue_shared/components/memory_graph.vue | 129 +- .../components/modal_copy_button.vue | 2 +- .../components/notes/system_note.vue | 2 +- .../pagination/table_pagination.vue | 138 +- .../components/project_avatar/image.vue | 2 +- .../project_selector/project_list_item.vue | 2 +- .../resizable_chart_container.vue | 2 +- .../sidebar/collapsed_grouped_date_picker.vue | 2 +- .../components/sidebar/labels_select/base.vue | 2 +- .../vue_shared/components/split_button.vue | 6 + .../components/stacked_progress_bar.vue | 4 + .../components/time_ago_tooltip.vue | 2 +- .../mixins/related_issuable_mixin.js | 6 +- .../javascripts/vue_shared/mixins/timeago.js | 2 +- .../release_block_milestone_info.scss | 6 + app/assets/stylesheets/components/toast.scss | 52 - app/assets/stylesheets/framework/common.scss | 8 + .../stylesheets/framework/dropdowns.scss | 2 +- app/assets/stylesheets/framework/files.scss | 9 +- app/assets/stylesheets/framework/filters.scss | 2 +- app/assets/stylesheets/framework/header.scss | 5 + app/assets/stylesheets/framework/lists.scss | 5 + .../stylesheets/framework/memory_graph.scss | 18 +- app/assets/stylesheets/framework/selects.scss | 2 +- app/assets/stylesheets/framework/sidebar.scss | 4 - .../stylesheets/framework/typography.scss | 6 + .../stylesheets/framework/variables.scss | 13 +- app/assets/stylesheets/framework/wells.scss | 2 +- app/assets/stylesheets/page_bundles/ide.scss | 14 + app/assets/stylesheets/pages/boards.scss | 4 + ...{convdev_index.scss => dev_ops_score.scss} | 36 +- app/assets/stylesheets/pages/diff.scss | 2 + app/assets/stylesheets/pages/editor.scss | 3 +- .../stylesheets/pages/environments.scss | 1 - .../stylesheets/pages/error_details.scss | 6 + .../pages/error_tracking_list.scss | 5 + app/assets/stylesheets/pages/groups.scss | 1 + app/assets/stylesheets/pages/issuable.scss | 2 +- app/assets/stylesheets/pages/issues.scss | 49 +- .../pages/issues/issue_count_badge.scss | 1 - .../stylesheets/pages/merge_requests.scss | 5 +- app/assets/stylesheets/pages/profile.scss | 147 +- app/assets/stylesheets/pages/projects.scss | 6 +- app/assets/stylesheets/pages/prometheus.scss | 1 - app/assets/stylesheets/pages/tree.scss | 6 +- app/assets/stylesheets/utilities.scss | 20 + .../admin/broadcast_messages_controller.rb | 2 + .../admin/identities_controller.rb | 6 +- app/controllers/admin/jobs_controller.rb | 20 +- app/controllers/admin/sessions_controller.rb | 29 +- app/controllers/application_controller.rb | 40 +- app/controllers/autocomplete_controller.rb | 16 +- app/controllers/boards/lists_controller.rb | 2 +- .../clusters/clusters_controller.rb | 61 +- app/controllers/concerns/boards_actions.rb | 5 + .../concerns/confirm_email_warning.rb | 7 +- .../concerns/cycle_analytics_params.rb | 3 +- .../concerns/enforces_admin_authentication.rb | 1 + .../concerns/initializes_current_user_mode.rb | 13 + app/controllers/concerns/issuable_actions.rb | 12 +- .../concerns/membership_actions.rb | 11 + app/controllers/concerns/notes_actions.rb | 6 +- app/controllers/concerns/service_params.rb | 1 + .../concerns/sessionless_authentication.rb | 4 +- app/controllers/concerns/sourcegraph_gon.rb | 2 +- app/controllers/concerns/uploads_actions.rb | 38 +- .../groups/group_members_controller.rb | 9 +- app/controllers/groups_controller.rb | 1 + ...ersational_development_index_controller.rb | 9 - .../dev_ops_score_controller.rb | 9 + .../oauth/applications_controller.rb | 1 + .../oauth/authorizations_controller.rb | 2 + .../omniauth_callbacks_controller.rb | 25 +- .../projects/branches_controller.rb | 10 +- .../projects/ci/lints_controller.rb | 10 +- .../environments/prometheus_api_controller.rb | 36 +- .../environments/sample_metrics_controller.rb | 13 + .../projects/environments_controller.rb | 34 +- .../projects/error_tracking_controller.rb | 15 +- .../projects/hook_logs_controller.rb | 10 +- app/controllers/projects/issues_controller.rb | 7 +- app/controllers/projects/jobs_controller.rb | 33 +- .../merge_requests/diffs_controller.rb | 29 +- .../projects/merge_requests_controller.rb | 19 +- app/controllers/projects/pages_controller.rb | 3 +- .../projects/pages_domains_controller.rb | 10 +- .../projects/pipeline_schedules_controller.rb | 12 +- .../projects/pipelines_controller.rb | 1 - .../projects/project_members_controller.rb | 2 +- app/controllers/projects/raw_controller.rb | 20 +- .../projects/releases_controller.rb | 12 +- .../projects/service_hook_logs_controller.rb | 20 + .../projects/services_controller.rb | 7 + .../projects/settings/ci_cd_controller.rb | 10 +- app/controllers/projects_controller.rb | 18 + app/controllers/snippets_controller.rb | 10 +- app/controllers/uploads_controller.rb | 1 - .../knative_serving_namespace_finder.rb | 25 + .../knative_version_role_binding_finder.rb | 17 + app/finders/deployments_finder.rb | 70 + app/finders/group_members_finder.rb | 10 +- app/finders/group_projects_finder.rb | 14 + app/finders/groups_finder.rb | 2 +- app/finders/issuable_finder.rb | 27 + app/finders/issues_finder.rb | 2 +- app/finders/jobs_finder.rb | 51 + app/finders/keys_finder.rb | 84 + app/finders/members_finder.rb | 20 +- .../merge_request_target_project_finder.rb | 20 +- app/finders/merge_requests_finder.rb | 1 + app/finders/personal_access_tokens_finder.rb | 16 +- app/finders/pipelines_finder.rb | 10 +- app/finders/projects_finder.rb | 26 +- app/finders/snippets_finder.rb | 53 +- app/finders/user_finder.rb | 6 - app/graphql/mutations/issues/base.rb | 34 + .../mutations/issues/set_confidential.rb | 27 + app/graphql/mutations/issues/set_due_date.rb | 27 + app/graphql/mutations/snippets/base.rb | 30 + app/graphql/mutations/snippets/create.rb | 77 + app/graphql/mutations/snippets/destroy.rb | 33 + .../mutations/snippets/mark_as_spam.rb | 39 + app/graphql/mutations/snippets/update.rb | 54 + app/graphql/mutations/todos/base.rb | 6 + app/graphql/mutations/todos/mark_all_done.rb | 35 + app/graphql/mutations/todos/mark_done.rb | 7 +- app/graphql/mutations/todos/restore.rb | 36 + app/graphql/resolvers/base_resolver.rb | 10 + .../resolvers/concerns/resolves_snippets.rb | 57 + app/graphql/resolvers/echo_resolver.rb | 4 +- .../sentry_detailed_error_resolver.rb | 28 + app/graphql/resolvers/issues_resolver.rb | 14 +- .../resolvers/projects/snippets_resolver.rb | 23 + app/graphql/resolvers/snippets_resolver.rb | 45 + app/graphql/resolvers/todo_resolver.rb | 50 +- .../resolvers/users/snippets_resolver.rb | 21 + app/graphql/types/diff_refs_type.rb | 9 +- .../sentry_detailed_error_type.rb | 93 + .../sentry_error_frequency_type.rb | 18 + .../sentry_error_status_enum.rb | 15 + app/graphql/types/issuable_sort_enum.rb | 2 - app/graphql/types/issue_sort_enum.rb | 4 +- app/graphql/types/issue_state_enum.rb | 3 - app/graphql/types/label_type.rb | 2 +- app/graphql/types/merge_request_state_enum.rb | 3 - app/graphql/types/merge_request_type.rb | 2 +- app/graphql/types/mutation_type.rb | 8 + app/graphql/types/notes/diff_position_type.rb | 24 +- app/graphql/types/notes/discussion_type.rb | 12 +- app/graphql/types/notes/note_type.rb | 32 +- app/graphql/types/notes/noteable_type.rb | 2 + app/graphql/types/permission_types/project.rb | 8 +- app/graphql/types/permission_types/snippet.rb | 16 + app/graphql/types/permission_types/user.rb | 15 + app/graphql/types/project_type.rb | 14 + app/graphql/types/query_type.rb | 10 +- .../types/root_storage_statistics_type.rb | 2 +- app/graphql/types/snippet_type.rb | 69 + app/graphql/types/snippets/type_enum.rb | 10 + .../types/snippets/visibility_scopes_enum.rb | 11 + app/graphql/types/user_type.rb | 8 + app/graphql/types/visibility_levels_enum.rb | 9 + app/helpers/application_helper.rb | 19 + app/helpers/application_settings_helper.rb | 4 +- app/helpers/award_emoji_helper.rb | 2 +- app/helpers/blob_helper.rb | 21 +- app/helpers/broadcast_messages_helper.rb | 6 +- app/helpers/clusters_helper.rb | 6 +- .../container_expiration_policies_helper.rb | 21 + ...ndex_helper.rb => dev_ops_score_helper.rb} | 2 +- app/helpers/diff_helper.rb | 18 +- app/helpers/emails_helper.rb | 24 +- app/helpers/environments_helper.rb | 1 + app/helpers/git_helper.rb | 7 +- app/helpers/gitlab_routing_helper.rb | 91 + app/helpers/hooks_helper.rb | 38 +- app/helpers/icons_helper.rb | 10 +- app/helpers/issuables_helper.rb | 35 +- app/helpers/issues_helper.rb | 2 +- app/helpers/labels_helper.rb | 4 +- app/helpers/merge_requests_helper.rb | 20 +- app/helpers/nav_helper.rb | 2 +- app/helpers/notes_helper.rb | 6 +- app/helpers/projects/error_tracking_helper.rb | 1 + app/helpers/projects_helper.rb | 10 +- app/helpers/search_helper.rb | 7 +- app/helpers/services_helper.rb | 20 + app/helpers/snippets_helper.rb | 43 +- app/helpers/todos_helper.rb | 2 +- app/helpers/tree_helper.rb | 4 +- app/helpers/user_callouts_helper.rb | 5 + app/helpers/users_helper.rb | 10 +- app/mailers/emails/notes.rb | 2 +- app/mailers/emails/profile.rb | 14 + app/models/active_session.rb | 53 +- app/models/application_setting.rb | 14 +- .../application_setting_implementation.rb | 9 +- app/models/badge.rb | 2 + app/models/blob.rb | 2 + app/models/blob_viewer/open_api.rb | 15 + app/models/broadcast_message.rb | 82 +- app/models/ci/build.rb | 67 +- app/models/ci/build_need.rb | 1 + app/models/ci/build_trace_section.rb | 3 - app/models/ci/legacy_stage.rb | 1 + app/models/ci/persistent_ref.rb | 20 +- app/models/ci/pipeline.rb | 108 +- app/models/ci/pipeline_enums.rb | 16 +- app/models/ci/runner.rb | 3 +- .../clusters/applications/elastic_stack.rb | 2 + app/models/clusters/applications/knative.rb | 24 +- .../clusters/applications/prometheus.rb | 29 +- app/models/clusters/applications/runner.rb | 2 +- app/models/clusters/cluster.rb | 70 +- .../clusters/concerns/application_core.rb | 2 +- app/models/clusters/platforms/kubernetes.rb | 15 +- app/models/clusters/providers/aws.rb | 4 +- app/models/commit.rb | 23 +- app/models/commit_status.rb | 12 +- app/models/commit_user_mention.rb | 5 + app/models/compare.rb | 1 + app/models/concerns/acts_as_paginated_diff.rb | 11 + .../analytics/cycle_analytics/stage.rb | 1 + app/models/concerns/blob_active_model.rb | 19 + app/models/concerns/ci/contextable.rb | 56 +- app/models/concerns/ci/metadatable.rb | 8 +- app/models/concerns/ci/pipeline_delegator.rb | 2 - app/models/concerns/ci/processable.rb | 2 + app/models/concerns/diff_positionable_note.rb | 2 +- app/models/concerns/expirable.rb | 4 +- app/models/concerns/group_descendant.rb | 6 +- app/models/concerns/ignorable_columns.rb | 45 + app/models/concerns/issuable.rb | 35 +- app/models/concerns/issuable_states.rb | 23 - app/models/concerns/mentionable.rb | 80 + app/models/concerns/milestoneish.rb | 2 +- app/models/concerns/prometheus_adapter.rb | 8 + app/models/concerns/reactive_caching.rb | 5 +- app/models/concerns/safe_url.rb | 15 + app/models/concerns/sha256_attribute.rb | 49 + .../concerns/storage/legacy_namespace.rb | 6 +- .../concerns/update_project_statistics.rb | 28 +- app/models/container_expiration_policy.rb | 41 + app/models/dashboard_group_milestone.rb | 4 + app/models/dashboard_milestone.rb | 4 + app/models/deploy_key.rb | 13 +- app/models/deployment.rb | 25 + .../card.rb | 2 +- .../idea_to_production_step.rb | 2 +- .../metric.rb | 2 +- app/models/diff_note.rb | 10 +- app/models/discussion.rb | 4 - app/models/environment.rb | 19 +- app/models/environment_status.rb | 24 +- app/models/epic.rb | 4 + .../project_error_tracking_setting.rb | 7 +- app/models/group_milestone.rb | 4 + app/models/hooks/project_hook.rb | 5 + app/models/hooks/service_hook.rb | 2 + app/models/hooks/system_hook.rb | 8 + app/models/hooks/web_hook.rb | 4 + app/models/hooks/web_hook_log.rb | 11 + app/models/import_failure.rb | 7 + app/models/issue.rb | 15 +- app/models/issue/metrics.rb | 6 + app/models/issue_user_mention.rb | 6 + app/models/key.rb | 13 +- app/models/list.rb | 2 +- app/models/merge_request.rb | 85 +- app/models/merge_request/pipelines.rb | 86 + app/models/merge_request_diff.rb | 63 +- app/models/merge_request_user_mention.rb | 6 + app/models/milestone.rb | 12 +- app/models/milestone_release.rb | 3 - app/models/namespace.rb | 4 +- app/models/note.rb | 20 +- app/models/pages_domain.rb | 5 + app/models/personal_access_token.rb | 6 + app/models/project.rb | 137 +- app/models/project_auto_devops.rb | 1 + app/models/project_ci_cd_setting.rb | 5 +- app/models/project_feature.rb | 2 +- app/models/project_import_state.rb | 16 +- app/models/project_services/asana_service.rb | 8 +- app/models/project_services/jira_service.rb | 26 +- .../project_services/prometheus_service.rb | 26 +- .../project_services/unify_circuit_service.rb | 60 + app/models/project_snippet.rb | 1 + app/models/project_wiki.rb | 2 +- app/models/readme_blob.rb | 2 + app/models/release.rb | 8 + app/models/remote_mirror.rb | 9 +- app/models/repository.rb | 40 +- app/models/sentry_issue.rb | 10 + app/models/serverless/domain_cluster.rb | 14 + app/models/service.rb | 9 + app/models/snippet.rb | 44 +- app/models/snippet_user_mention.rb | 6 + app/models/timelog.rb | 12 + app/models/upload.rb | 21 +- app/models/uploads/local.rb | 3 +- app/models/user.rb | 26 +- app/models/user_callout_enums.rb | 3 +- app/models/user_mention.rb | 23 + app/models/wiki_page.rb | 4 + app/policies/base_policy.rb | 1 + app/policies/blob_policy.rb | 7 + app/policies/deploy_key_policy.rb | 5 +- .../error_tracking/detailed_error_policy.rb | 7 + app/policies/global_policy.rb | 3 + app/policies/personal_snippet_policy.rb | 7 +- app/policies/project_policy.rb | 3 +- app/policies/project_snippet_policy.rb | 7 + app/policies/user_policy.rb | 5 +- app/policies/wiki_page_policy.rb | 7 + app/presenters/ci/legacy_stage_presenter.rb | 32 + app/presenters/ci/pipeline_presenter.rb | 4 +- app/presenters/clusterable_presenter.rb | 12 +- app/presenters/clusters/cluster_presenter.rb | 16 +- .../metric_presenter.rb | 2 +- app/presenters/group_clusterable_presenter.rb | 5 + .../hooks/project_hook_presenter.rb | 13 + .../hooks/service_hook_presenter.rb | 13 + .../instance_clusterable_presenter.rb | 15 +- .../project_clusterable_presenter.rb | 5 + .../settings/deploy_keys_presenter.rb | 62 +- app/presenters/release_presenter.rb | 8 +- .../sentry_detailed_error_presenter.rb | 15 + app/presenters/snippet_presenter.rb | 39 + app/presenters/web_hook_log_presenter.rb | 13 + .../analytics_merge_request_entity.rb | 4 +- app/serializers/deploy_key_entity.rb | 11 +- app/serializers/deployment_entity.rb | 11 +- app/serializers/diff_file_metadata_entity.rb | 3 + app/serializers/diffs_entity.rb | 4 +- app/serializers/diffs_metadata_entity.rb | 2 +- app/serializers/environment_entity.rb | 9 + app/serializers/environment_status_entity.rb | 4 + .../error_tracking/detailed_error_entity.rb | 1 + app/serializers/group_child_entity.rb | 2 + app/serializers/issue_entity.rb | 8 + .../merge_request_noteable_entity.rb | 12 + ...merge_request_poll_cached_widget_entity.rb | 13 +- .../merge_request_poll_widget_entity.rb | 8 +- .../merge_request_widget_entity.rb | 5 + app/serializers/pipeline_entity.rb | 4 + app/serializers/pipeline_serializer.rb | 5 + .../merge_when_pipeline_succeeds_service.rb | 2 +- app/services/boards/lists/list_service.rb | 2 +- app/services/branches/create_service.rb | 39 + .../branches/delete_merged_service.rb | 34 + app/services/branches/delete_service.rb | 32 + app/services/branches/validate_new_service.rb | 31 + app/services/ci/archive_trace_service.rb | 6 +- app/services/ci/create_pipeline_service.rb | 5 +- ...nerate_exposed_artifacts_report_service.rb | 2 +- app/services/ci/prepare_build_service.rb | 2 +- app/services/ci/process_pipeline_service.rb | 12 +- app/services/ci/register_job_service.rb | 4 +- app/services/ci/retry_pipeline_service.rb | 16 +- .../applications/base_helm_service.rb | 13 +- .../ingress_modsecurity_usage_service.rb | 69 + .../clusters/aws/authorize_role_service.rb | 49 + .../clusters/aws/fetch_credentials_service.rb | 28 +- app/services/clusters/aws/proxy_service.rb | 134 - app/services/clusters/cleanup/app_service.rb | 33 + app/services/clusters/cleanup/base_service.rb | 43 + .../cleanup/project_namespace_service.rb | 44 + .../cleanup/service_account_service.rb | 27 + .../clusters/{kubernetes => }/kubernetes.rb | 3 + ...reate_or_update_service_account_service.rb | 41 + app/services/cohorts_service.rb | 2 +- app/services/commits/commit_patch_service.rb | 2 +- app/services/commits/create_service.rb | 2 +- .../concerns/users/participable_service.rb | 3 +- app/services/create_branch_service.rb | 38 - app/services/create_snippet_service.rb | 6 +- app/services/delete_branch_service.rb | 30 - .../delete_merged_branches_service.rb | 32 - .../deployments/after_create_service.rb | 7 + app/services/deployments/create_service.rb | 17 +- app/services/deployments/update_service.rb | 17 +- .../environments/reset_auto_stop_service.rb | 22 + .../error_tracking/list_issues_service.rb | 15 +- app/services/git/base_hooks_service.rb | 24 + app/services/issuable/bulk_update_service.rb | 20 +- .../issuable/clone/attributes_rewriter.rb | 8 +- .../issuable/common_system_notes_service.rb | 26 +- app/services/issuable_base_service.rb | 28 +- app/services/issues/base_service.rb | 2 + app/services/issues/duplicate_service.rb | 2 + app/services/issues/zoom_link_service.rb | 50 +- .../create_from_issue_service.rb | 2 +- app/services/merge_requests/merge_service.rb | 4 +- .../merge_requests/refresh_service.rb | 2 +- app/services/merge_requests/update_service.rb | 2 +- .../metrics/dashboard/base_embed_service.rb | 2 +- .../dashboard/custom_metric_embed_service.rb | 2 +- .../dashboard/grafana_metric_embed_service.rb | 2 +- .../dashboard/pod_dashboard_service.rb | 10 + .../dashboard/predefined_dashboard_service.rb | 45 + .../dashboard/system_dashboard_service.rb | 37 +- .../metrics/sample_metrics_service.rb | 26 + app/services/notes/base_service.rb | 2 +- app/services/notes/build_service.rb | 2 +- app/services/notes/create_service.rb | 12 +- app/services/notes/update_service.rb | 6 +- app/services/notification_service.rb | 8 + app/services/pages/delete_service.rb | 10 + .../cleanup_tags_service.rb | 4 +- .../delete_tags_service.rb | 34 +- app/services/projects/destroy_service.rb | 7 - app/services/projects/fork_service.rb | 18 +- .../hashed_storage/base_repository_service.rb | 31 +- .../migrate_repository_service.rb | 6 +- .../rollback_repository_service.rb | 6 +- app/services/projects/import_service.rb | 4 +- .../projects/overwrite_project_service.rb | 4 +- app/services/projects/unlink_fork_service.rb | 61 +- app/services/projects/update_service.rb | 7 +- .../proxy_variable_substitution_service.rb | 51 + .../repair_ldap_blocked_user_service.rb | 19 - app/services/submit_usage_ping_service.rb | 2 +- app/services/todo_service.rb | 13 + app/services/update_snippet_service.rb | 8 +- app/services/users/build_service.rb | 2 +- .../users/repair_ldap_blocked_service.rb | 21 + app/services/validate_new_branch_service.rb | 21 - app/services/web_hook_service.rb | 3 - .../_account_and_limit.html.haml | 3 + .../application_settings/_ci_cd.html.haml | 2 +- .../application_settings/_signup.html.haml | 6 + .../_visibility_and_access.html.haml | 2 + .../integrations.html.haml | 2 +- .../admin/broadcast_messages/_form.html.haml | 9 +- .../admin/broadcast_messages/index.html.haml | 3 + app/views/admin/dashboard/index.html.haml | 9 +- app/views/admin/groups/_group.html.haml | 2 +- app/views/admin/groups/show.html.haml | 3 +- app/views/admin/hooks/edit.html.haml | 31 +- app/views/admin/hooks/index.html.haml | 31 +- app/views/admin/projects/_archived.html.haml | 3 + app/views/admin/projects/_projects.html.haml | 3 +- app/views/admin/runners/index.html.haml | 4 +- app/views/admin/sessions/_new_base.html.haml | 2 +- .../admin/sessions/_signin_box.html.haml | 11 - app/views/admin/sessions/new.html.haml | 15 +- .../admin/users/_access_levels.html.haml | 2 +- app/views/award_emoji/_awards_block.html.haml | 1 + .../ci/variables/_variable_row.html.haml | 14 +- .../clusters/_advanced_settings.html.haml | 17 +- app/views/clusters/clusters/_banner.html.haml | 18 +- app/views/clusters/clusters/_form.html.haml | 8 +- .../clusters/clusters/_namespace.html.haml | 2 +- .../clusters/clusters/aws/_new.html.haml | 13 +- .../clusters/clusters/gcp/_form.html.haml | 2 +- .../gcp/_gcp_not_configured.html.haml | 2 +- .../clusters/clusters/gcp/_new.html.haml | 2 - .../gcp/_signin_with_google_button.html.haml | 4 - app/views/clusters/clusters/new.html.haml | 14 +- app/views/dashboard/_snippets_head.html.haml | 3 +- .../projects/_blank_state_welcome.html.haml | 24 +- app/views/dashboard/snippets/index.html.haml | 3 +- .../groups/settings/_permissions.html.haml | 7 + .../import/gitlab_projects/new.html.haml | 1 - .../cohorts/_cohorts_table.html.haml | 27 +- .../_callout.html.haml | 13 - .../dev_ops_score/_callout.html.haml | 13 + .../_card.html.haml | 6 +- .../_disabled.html.haml | 4 +- .../_no_data.html.haml | 6 +- .../index.html.haml | 22 +- app/views/layouts/_broadcast.html.haml | 2 +- app/views/layouts/_flash.html.haml | 7 +- app/views/layouts/application.html.haml | 2 +- .../header/_current_user_dropdown.html.haml | 2 +- app/views/layouts/header/_new_dropdown.haml | 3 +- app/views/layouts/nav/_breadcrumbs.html.haml | 2 +- app/views/layouts/nav/_dashboard.html.haml | 2 +- .../layouts/nav/sidebar/_admin.html.haml | 6 +- .../layouts/nav/sidebar/_group.html.haml | 2 +- .../sidebar/_instance_statistics.html.haml | 12 +- .../layouts/nav/sidebar/_project.html.haml | 10 +- app/views/layouts/notify.html.haml | 2 +- app/views/layouts/notify.text.erb | 2 +- app/views/notify/_note_email.html.haml | 2 +- app/views/notify/_note_email.text.erb | 2 +- ...cess_token_about_to_expire_email.html.haml | 7 + ...ccess_token_about_to_expire_email.text.erb | 5 + .../profiles/accounts/_providers.html.haml | 2 +- app/views/profiles/gpg_keys/_key.html.haml | 2 +- app/views/profiles/keys/_key.html.haml | 2 +- .../profiles/keys/_key_details.html.haml | 16 +- app/views/profiles/passwords/edit.html.haml | 2 +- .../profiles/two_factor_auths/show.html.haml | 2 +- app/views/projects/_archived_notice.html.haml | 5 + app/views/projects/_remove.html.haml | 10 + .../projects/_visibility_modal.html.haml | 30 + app/views/projects/artifacts/browse.html.haml | 2 +- app/views/projects/blob/_breadcrumb.html.haml | 28 +- .../projects/blob/viewers/_openapi.html.haml | 1 + .../projects/buttons/_dropdown.html.haml | 2 +- app/views/projects/commits/show.html.haml | 2 +- app/views/projects/edit.html.haml | 31 +- .../environments/empty_logs.html.haml | 14 - .../projects/environments/folder.html.haml | 4 +- .../projects/environments/show.html.haml | 4 +- app/views/projects/hook_logs/_index.html.haml | 2 +- app/views/projects/hook_logs/show.html.haml | 3 +- app/views/projects/hooks/_index.html.haml | 17 +- app/views/projects/hooks/edit.html.haml | 16 +- .../projects/issues/_new_branch.html.haml | 2 +- .../merge_requests/_awards_block.html.haml | 5 + .../merge_requests/_description.html.haml | 9 + .../_discussion_filter.html.haml | 2 + .../projects/merge_requests/_mr_box.html.haml | 15 +- .../merge_requests/_mr_title.html.haml | 8 +- .../projects/merge_requests/_widget.html.haml | 14 + .../projects/merge_requests/show.html.haml | 56 +- .../merge_requests/tabs/_pane.html.haml | 7 + .../merge_requests/tabs/_tab.html.haml | 7 + app/views/projects/pages/_list.html.haml | 4 +- .../projects/pages_domains/edit.html.haml | 21 - .../projects/pages_domains/show.html.haml | 60 +- app/views/projects/pipelines/_info.html.haml | 5 + .../projects/registry/settings/_index.haml | 2 + app/views/projects/services/edit.html.haml | 4 +- .../projects/settings/_archive.html.haml | 18 + .../projects/settings/ci_cd/_form.html.haml | 2 +- .../projects/settings/ci_cd/show.html.haml | 14 +- .../integrations/_project_hook.html.haml | 16 - app/views/projects/show.html.haml | 7 +- .../projects/snippets/_actions.html.haml | 4 +- app/views/projects/snippets/index.html.haml | 3 +- app/views/projects/snippets/show.html.haml | 17 +- app/views/projects/stage/_stage.html.haml | 6 +- app/views/projects/tags/_tag.atom.builder | 2 +- app/views/projects/tags/_tag.html.haml | 8 +- app/views/projects/tags/show.html.haml | 24 +- app/views/projects/tree/_readme.html.haml | 11 +- .../projects/tree/_tree_header.html.haml | 21 +- app/views/search/_category.html.haml | 2 +- .../search/results/_snippet_blob.html.haml | 2 +- .../search/results/_snippet_title.html.haml | 2 +- .../_personal_access_tokens_form.html.haml | 3 + app/views/shared/_service_settings.html.haml | 18 +- app/views/shared/boards/_show.html.haml | 1 + .../shared/boards/components/_board.html.haml | 26 +- .../buttons/_project_feature_toggle.html.haml | 16 + .../shared/empty_states/_snippets.html.haml | 3 +- app/views/shared/groups/_group.html.haml | 2 +- ...no_data.svg => _dev_ops_score_no_data.svg} | 0 ..._index.svg => _dev_ops_score_no_index.svg} | 0 ...erview.svg => _dev_ops_score_overview.svg} | 0 .../issuable/_close_reopen_button.html.haml | 2 +- .../shared/issuable/_search_bar.html.haml | 4 +- app/views/shared/issuable/_sidebar.html.haml | 8 +- app/views/shared/labels/_nav.html.haml | 2 +- .../shared/members/_sort_dropdown.html.haml | 10 + .../shared/milestones/_milestone.html.haml | 5 +- .../shared/milestones/_sidebar.html.haml | 53 +- app/views/shared/milestones/_tabs.html.haml | 16 +- .../_custom_notifications.html.haml | 2 +- app/views/shared/projects/_archived.html.haml | 3 + app/views/shared/projects/_list.html.haml | 1 + app/views/shared/projects/_project.html.haml | 5 +- app/views/shared/snippets/_header.html.haml | 6 +- app/views/shared/snippets/_snippet.html.haml | 6 +- .../shared/tokens/_scopes_list.html.haml | 2 +- app/views/shared/web_hooks/_hook.html.haml | 16 + app/views/shared/web_hooks/_index.html.haml | 14 + .../shared/web_hooks/_test_button.html.haml | 6 +- .../web_hooks/_title_and_docs.html.haml | 5 + app/views/snippets/_actions.html.haml | 16 +- app/views/snippets/_snippets.html.haml | 2 +- .../snippets/_snippets_scope_menu.html.haml | 2 +- app/views/snippets/edit.html.haml | 2 +- app/views/snippets/show.html.haml | 17 +- app/views/users/_profile_basic_info.html.haml | 6 + app/views/users/show.html.haml | 92 +- app/workers/all_queues.yml | 6 + .../applications/activate_service_worker.rb | 19 + .../applications/deactivate_service_worker.rb | 24 + app/workers/clusters/cleanup/app_worker.rb | 15 +- .../cleanup/project_namespace_worker.rb | 15 +- .../cleanup/service_account_worker.rb | 13 +- .../concerns/cluster_cleanup_methods.rb | 75 + app/workers/delete_merged_branches_worker.rb | 2 +- app/workers/delete_stored_files_worker.rb | 2 +- .../hashed_storage/project_migrate_worker.rb | 2 +- .../pages_domain_removal_cron_worker.rb | 2 +- .../personal_access_tokens/expiring_worker.rb | 23 + app/workers/pipeline_process_worker.rb | 4 +- app/workers/process_commit_worker.rb | 5 +- app/workers/run_pipeline_schedule_worker.rb | 6 +- app/workers/stuck_ci_jobs_worker.rb | 4 +- babel.config.js | 1 + bin/secpick | 47 +- .../20709-add-runner-info-in-build-event.yaml | 5 + ...8-add-allow-failure-in-pipeline-event.yaml | 6 + config/gitlab.yml.example | 12 +- config/helpers/vendor_dll_hash.js | 23 + config/initializers/0_marginalia.rb | 18 + config/initializers/1_settings.rb | 12 +- config/initializers/7_prometheus_metrics.rb | 11 +- ...vise_dynamic_password_length_validation.rb | 39 + config/initializers/direct_upload_support.rb | 28 +- config/initializers/elastic_client_setup.rb | 22 +- .../forbid_sidekiq_in_transactions.rb | 2 +- config/initializers/hamlit.rb | 16 +- .../rack_attack_git_basic_auth.rb | 14 - config/initializers/rack_attack_new.rb | 27 +- config/initializers/sentry.rb | 33 +- config/initializers/sidekiq.rb | 28 +- config/initializers/snowplow_tracker.rb | 23 + config/initializers/zz_metrics.rb | 6 +- config/knative/api_groups.yml | 11 + config/knative/api_resources.yml | 70 - config/mail_room.yml | 2 + config/prometheus/common_metrics.yml | 2 +- config/prometheus/pod_metrics.yml | 59 + config/pseudonymizer.yml | 5 +- config/puma.example.development.rb | 8 + config/puma.rb.example | 8 + config/routes.rb | 8 +- config/routes/group.rb | 2 + config/routes/instance_statistics.rb | 4 +- config/routes/profile.rb | 15 +- config/routes/project.rb | 315 +- config/routes/user.rb | 9 +- config/sidekiq_queues.yml | 2 + config/webpack.config.js | 70 +- config/webpack.vendor.config.js | 71 + danger/changelog/Dangerfile | 28 +- danger/changes_size/Dangerfile | 2 +- danger/database/Dangerfile | 2 +- danger/plugins/changelog.rb | 10 + danger/prettier/Dangerfile | 2 +- danger/roulette/Dangerfile | 4 +- db/fixtures/development/01_admin.rb | 2 +- db/fixtures/development/02_users.rb | 3 +- db/fixtures/development/03_project.rb | 9 +- db/fixtures/development/06_teams.rb | 2 +- db/fixtures/development/07_milestones.rb | 2 +- db/fixtures/development/09_issues.rb | 2 +- db/fixtures/development/10_merge_requests.rb | 2 +- db/fixtures/development/11_keys.rb | 2 +- db/fixtures/development/12_snippets.rb | 2 +- db/fixtures/development/13_comments.rb | 2 +- db/fixtures/development/14_pipelines.rb | 2 +- db/fixtures/development/15_award_emoji.rb | 2 +- .../development/16_protected_branches.rb | 2 +- db/fixtures/development/17_cycle_analytics.rb | 2 +- db/fixtures/development/19_environments.rb | 2 +- db/fixtures/development/20_nested_groups.rb | 2 +- ...metrics.rb => 21_dev_ops_score_metrics.rb} | 6 +- db/fixtures/development/24_forks.rb | 2 +- .../25_api_personal_access_token.rb | 2 +- ...13220114_rework_redirect_routes_indexes.rb | 6 - .../20180215181245_users_name_lower_index.rb | 4 - ...ame_id_index_on_ci_build_trace_sections.rb | 10 +- ...le_commits_count_for_merge_request_diff.rb | 2 +- ...9_add_indexes_for_user_activity_queries.rb | 24 +- ...20180504195842_project_name_lower_index.rb | 4 - ...l_constraints_to_project_authorizations.rb | 22 +- ...711103851_drop_duplicate_protected_tags.rb | 9 +- ...o_project_deploy_tokens_deploy_token_id.rb | 5 +- ...190402150158_backport_enterprise_schema.rb | 3 - .../20190606202100_add_name_to_badges.rb | 11 + ..._token_lifetime_to_application_settings.rb | 9 + ...191003130045_create_issue_user_mentions.rb | 19 + ...0045_create_merge_request_user_mentions.rb | 19 + ...0191003200045_create_epic_user_mentions.rb | 19 + ...91003250045_create_commit_user_mentions.rb | 18 + ...1003300045_create_snippet_user_mentions.rb | 19 + ...91003350045_create_design_user_mentions.rb | 19 + ...151428_add_auto_stop_in_to_environments.rb | 9 + ...ion_delivered_to_personal_access_tokens.rb | 17 + ...3093207_add_comment_actions_to_services.rb | 17 + ...91025092748_add_secret_token_to_snippet.rb | 10 + ...26120008_add_promoted_to_epic_to_issues.rb | 16 + ...12_add_promoted_to_epic_to_issues_index.rb | 22 + ...1028130054_add_max_issue_weight_to_list.rb | 17 + ...1105134413_create_service_desk_settings.rb | 18 + .../20191105155113_add_secret_to_snippet.rb | 27 + ...0191106144901_add_state_to_merge_trains.rb | 18 + ...191106150931_add_timelog_spent_at_index.rb | 20 + ...ate_oauth_open_id_requests_foreign_keys.rb | 29 + ...0191108031900_create_package_build_info.rb | 12 + ...30_add_index_on_ci_pipelines_updated_at.rb | 18 + ...12090226_add_artifacts_to_ci_build_need.rb | 20 + ...al_access_tokens_user_id_and_expires_at.rb | 18 + ...259_add_mentions_disabled_to_namespaces.rb | 9 + ...01123_add_index_to_mod_sec_ci_variables.rb | 17 + ..._index_to_mod_sec_ci_pipeline_variables.rb | 17 + ...1118053631_add_group_deletion_schedules.rb | 28 + ...702_add_index_on_status_to_merge_trains.rb | 20 + ...ppet_size_limit_to_application_settings.rb | 13 + ...ts_on_project_id_state_environment_type.rb | 21 + ...023952_add_created_at_index_to_snippets.rb | 17 + ...icies_approval_status_to_classification.rb | 17 + ...21_create_container_expiration_policies.rb | 21 + ...00015_add_index_to_grafana_integrations.rb | 15 + ...1121111621_create_packages_dependencies.rb | 14 + ...121947_create_packages_dependency_links.rb | 15 + ...package_type_index_to_packages_packages.rb | 22 + .../20191121193110_add_issue_links_type.rb | 17 + ...191122161519_create_sentry_issues_table.rb | 15 + ...password_length_to_application_settings.rb | 11 + ...index_to_include_action_on_label_events.rb | 21 + ...125114345_add_admin_mode_protected_path.rb | 54 + ...53_add_target_path_to_broadcast_message.rb | 9 + .../20191125140458_create_import_failures.rb | 17 + ...030005_create_serverless_domain_cluster.rb | 17 + ...19_create_gitlab_subscription_histories.rb | 28 + ...trial_starts_on_to_gitlab_subscriptions.rb | 10 + ...ldcard_and_domain_type_to_pages_domains.rb | 20 + ...add_broadcast_type_to_broadcast_message.rb | 19 + ...ment_auto_stop_in_to_ci_builds_metadata.rb | 13 + ...e_group_deletion_schedules_foreign_keys.rb | 29 + ...ndex_and_add_index_to_id_on_deployments.rb | 29 + ...add_label_project_group_partial_indexes.rb | 25 + ...h_to_geo_hashed_storage_migrated_events.rb | 12 + .../20191205060723_add_index_to_keys.rb | 17 + ...ross_projects_dependencies_to_ci_builds.rb | 19 + ...ndex_to_projects_deploy_keys_deploy_key.rb | 17 + ...ges_domains_on_wildcard_and_domain_type.rb | 19 + ...2926_update_index_for_pool_repositories.rb | 24 + ...208071111_add_fingerprint_sha256_to_key.rb | 13 + ...112_add_fingerprint_sha256_index_to_key.rb | 17 + ...mit_user_mentions_commit_id_column_type.rb | 36 + ...0191213104838_add_service_desk_username.rb | 9 + ...es_to_deployments_on_project_id_and_ref.rb | 20 + .../20191216094119_add_id_to_plan_limits.rb | 13 + ...183531_add_project_hooks_to_plan_limits.rb | 9 + ...183532_insert_project_hooks_plan_limits.rb | 25 + .../composite_primary_keys.rb | 4 - ...121225_remove_redundant_pipeline_stages.rb | 14 +- ...27_build_user_interacted_projects_table.rb | 32 +- ...0_remove_permanent_from_redirect_routes.rb | 16 +- ...64012_add_path_index_to_redirect_routes.rb | 2 - ...20180706223200_populate_site_statistics.rb | 4 +- ...9195358_migrate_null_wiki_access_levels.rb | 2 +- ...80826111825_recalculate_site_statistics.rb | 4 +- ...quire_code_owner_approval_from_projects.rb | 27 + ..._backfill_version_author_and_created_at.rb | 67 + .../20191104142124_nullify_users_role.rb | 26 + ...625_set_report_type_for_vulnerabilities.rb | 14 +- ..._unique_constraint_to_software_licenses.rb | 69 + ...23159_complete_pages_metadata_migration.rb | 13 + ...ps_feature_flags_scopes_target_user_ids.rb | 53 + ..._license_policies_classification_rename.rb | 17 + ...56_drop_packages_package_metadata_table.rb | 16 + ...deploy_access_levels_for_removed_groups.rb | 32 + ..._operations_feature_flags_clients_token.rb | 23 + ...05084057_update_minimum_password_length.rb | 24 + ...209215316_knative_0_9_prometheus_update.rb | 13 + ..._mentions_commit_id_column_type_cleanup.rb | 25 + db/schema.rb | 259 +- derailed-benchmarks/CHANGELOG.md | 9 + derailed-benchmarks/README.md | 2 +- .../lib/derailed_benchmarks/stats_from_dir.rb | 20 +- .../lib/derailed_benchmarks/tasks.rb | 12 +- .../lib/derailed_benchmarks/version.rb | 2 +- .../stats_from_dir_test.rb | 21 +- doc/README.md | 10 +- doc/administration/auth/ldap-ee.md | 26 +- doc/administration/auth/smartcard.md | 25 +- doc/administration/compliance.md | 1 + doc/administration/custom_hooks.md | 2 +- .../external_pipeline_validation.md | 103 + .../geo/replication/database.md | 6 +- .../geo/replication/docker_registry.md | 6 +- .../geo/replication/troubleshooting.md | 26 +- .../gitlab_gitaly_version_mismatch_v12_4.png | Bin 0 -> 21779 bytes doc/administration/gitaly/index.md | 114 +- doc/administration/gitaly/praefect.md | 150 +- doc/administration/gitaly/reference.md | 16 +- .../high_availability/README.md | 127 +- doc/administration/high_availability/redis.md | 2 +- .../img/repository_storages_admin_ui.png | Bin 20439 -> 33219 bytes doc/administration/index.md | 8 +- doc/administration/integration/plantuml.md | 12 +- .../invalidate_markdown_cache.md | 2 +- doc/administration/logs.md | 28 + .../performance/img/performance_bar.png | Bin 71317 -> 73762 bytes .../img/performance_bar_frontend.png | Bin 0 -> 362077 bytes .../monitoring/performance/performance_bar.md | 7 + .../monitoring/prometheus/gitlab_metrics.md | 5 +- .../monitoring/prometheus/index.md | 6 + .../prometheus/postgres_exporter.md | 60 +- .../prometheus/registry_exporter.md | 21 + .../operations/extra_sidekiq_processes.md | 18 +- .../packages/container_registry.md | 39 +- doc/administration/packages/index.md | 2 +- doc/administration/pages/index.md | 20 +- doc/administration/raketasks/maintenance.md | 12 + .../raketasks/uploads/migrate.md | 8 +- .../repository_storage_paths.md | 3 +- doc/administration/restart_gitlab.md | 14 + doc/administration/snippets/index.md | 71 + .../troubleshooting/elasticsearch.md | 4 +- .../gitlab_rails_cheat_sheet.md | 18 +- .../troubleshooting/postgresql.md | 36 +- doc/api/README.md | 64 +- doc/api/boards.md | 45 +- doc/api/broadcast_messages.md | 12 +- doc/api/deployments.md | 2 + doc/api/graphql/getting_started.md | 361 + doc/api/graphql/index.md | 36 +- .../graphql/reference/gitlab_schema.graphql | 1325 +- doc/api/graphql/reference/gitlab_schema.json | 3877 +- doc/api/graphql/reference/index.md | 289 +- doc/api/group_badges.md | 14 +- doc/api/groups.md | 48 +- doc/api/issue_links.md | 6 + doc/api/issues.md | 7 +- doc/api/jobs.md | 102 +- doc/api/keys.md | 83 +- doc/api/markdown.md | 2 +- doc/api/merge_requests.md | 2 +- doc/api/packages.md | 28 +- doc/api/pages.md | 21 + doc/api/pipelines.md | 4 +- doc/api/project_badges.md | 3 + doc/api/projects.md | 80 +- doc/api/releases/index.md | 31 +- doc/api/search.md | 5 +- doc/api/services.md | 48 + doc/api/settings.md | 11 +- doc/api/tags.md | 4 +- doc/api/users.md | 2 +- doc/ci/caching/index.md | 92 +- doc/ci/docker/using_docker_images.md | 16 +- doc/ci/enable_or_disable_ci.md | 16 +- doc/ci/environments.md | 42 + ...and-deploy-python-application-to-heroku.md | 2 +- .../index.md | 2 +- doc/ci/img/collapsible_log.png | Bin 60771 -> 0 bytes doc/ci/img/collapsible_log_v12_6.png | Bin 0 -> 96571 bytes doc/ci/jenkins/index.md | 2 +- doc/ci/junit_test_reports.md | 26 + doc/ci/merge_request_pipelines/index.md | 36 +- .../pipelines_for_merged_results/index.md | 2 +- ...ediate_merge_confirmation_dialog_v12_6.png | Bin 0 -> 23747 bytes .../img/merge_train_immediate_merge_v12_6.png | Bin 0 -> 24056 bytes .../merge_trains/index.md | 9 +- doc/ci/pipelines.md | 21 +- doc/ci/review_apps/index.md | 34 +- doc/ci/variables/README.md | 10 +- doc/ci/variables/predefined_variables.md | 3 +- doc/ci/yaml/README.md | 216 +- doc/development/README.md | 6 + doc/development/api_graphql_styleguide.md | 98 +- doc/development/architecture.md | 3 +- doc/development/background_migrations.md | 17 +- doc/development/build_test_package.md | 6 +- doc/development/changelog.md | 7 +- doc/development/chatops_on_gitlabcom.md | 2 +- doc/development/code_review.md | 4 + .../contributing/issue_workflow.md | 24 +- .../contributing/merge_request_workflow.md | 13 + doc/development/contributing/style_guides.md | 4 +- doc/development/cycle_analytics.md | 246 + doc/development/dangerbot.md | 6 + doc/development/database_query_comments.md | 56 + doc/development/database_review.md | 10 +- doc/development/documentation/index.md | 39 +- .../documentation/site_architecture/index.md | 6 +- .../site_architecture/release_process.md | 2 +- doc/development/documentation/styleguide.md | 69 +- doc/development/documentation/workflow.md | 119 +- doc/development/experiment_guide/index.md | 8 +- doc/development/fe_guide/accessibility.md | 2 +- doc/development/fe_guide/frontend_faq.md | 27 +- doc/development/fe_guide/graphql.md | 129 +- doc/development/fe_guide/index.md | 11 +- doc/development/fe_guide/style/html.md | 53 + doc/development/fe_guide/style/index.md | 21 + doc/development/fe_guide/style/javascript.md | 275 + doc/development/fe_guide/style/scss.md | 285 + doc/development/fe_guide/style/vue.md | 418 + doc/development/fe_guide/style_guide_js.md | 734 +- doc/development/fe_guide/style_guide_scss.md | 284 +- doc/development/fe_guide/tooling.md | 154 + doc/development/fe_guide/vue.md | 6 +- doc/development/feature_flags/controls.md | 2 +- doc/development/feature_flags/development.md | 27 +- doc/development/feature_flags/index.md | 3 + doc/development/git_object_deduplication.md | 2 +- doc/development/gitaly.md | 79 +- doc/development/go_guide/index.md | 43 + doc/development/gotchas.md | 2 +- doc/development/i18n/externalization.md | 39 + doc/development/img/build_package_v12_6.png | Bin 0 -> 124510 bytes .../img/trigger_build_package_v12_6.png | Bin 0 -> 141603 bytes doc/development/img/trigger_ss1.png | Bin 35756 -> 0 bytes doc/development/img/trigger_ss2.png | Bin 36082 -> 0 bytes doc/development/import_export.md | 2 +- doc/development/internal_api.md | 14 +- doc/development/issuable-like-models.md | 10 +- doc/development/licensing.md | 2 - doc/development/logging.md | 64 +- doc/development/mass_insert.md | 13 + .../merge_request_performance_guidelines.md | 50 +- doc/development/migration_style_guide.md | 6 - doc/development/new_fe_guide/index.md | 4 - doc/development/new_fe_guide/style/html.md | 56 +- doc/development/new_fe_guide/style/index.md | 18 +- .../new_fe_guide/style/javascript.md | 198 +- .../new_fe_guide/style/prettier.md | 101 +- doc/development/new_fe_guide/style/scss.md | 3 - doc/development/new_fe_guide/style/vue.md | 3 - doc/development/new_fe_guide/tips.md | 4 + doc/development/packages.md | 53 +- doc/development/pipelines.md | 28 +- doc/development/prometheus_metrics.md | 4 +- doc/development/rake_tasks.md | 13 +- .../shell_scripting_guide/index.md | 2 +- doc/development/sidekiq_style_guide.md | 2 +- doc/development/sql.md | 101 +- .../testing_guide/best_practices.md | 2 + .../end_to_end/best_practices.md | 10 +- .../end_to_end/quick_start_guide.md | 14 +- .../testing_guide/end_to_end/resources.md | 3 + .../testing_guide/frontend_testing.md | 21 +- doc/development/testing_guide/review_apps.md | 97 +- .../testing_guide/testing_migrations_guide.md | 8 +- doc/development/utilities.md | 11 +- .../verifying_database_capabilities.md | 12 +- doc/development/what_requires_downtime.md | 58 +- doc/gitlab-basics/README.md | 2 +- doc/gitlab-basics/start-using-git.md | 65 +- doc/install/aws/index.md | 2 +- doc/install/installation.md | 8 +- doc/install/requirements.md | 2 + doc/integration/README.md | 1 + doc/integration/akismet.md | 4 +- doc/integration/elasticsearch.md | 25 +- doc/integration/github.md | 33 + .../img/authorize_vault_with_gitlab_v12_6.png | Bin 0 -> 197922 bytes .../img/gitlab_oauth_vault_v12_6.png | Bin 0 -> 133594 bytes .../img/sign_into_vault_with_gitlab_v12_6.png | Bin 0 -> 87168 bytes .../img/signed_into_vault_via_oidc_v12_6.png | Bin 0 -> 106942 bytes doc/integration/jenkins.md | 29 + doc/integration/saml.md | 2 +- doc/integration/vault.md | 120 + doc/policy/maintenance.md | 49 +- .../project_visibility_confirmation_v12_6.png | Bin 0 -> 101511 bytes doc/public_access/public_access.md | 10 + doc/push_rules/push_rules.md | 7 + .../generate_sample_prometheus_data.md | 16 + doc/security/password_length_limits.md | 38 +- doc/security/rack_attack.md | 3 +- doc/ssh/README.md | 59 + doc/subscriptions/index.md | 40 + .../img/autodevops_banner_v12_6.png | Bin 0 -> 78142 bytes doc/topics/autodevops/index.md | 78 +- doc/topics/git/troubleshooting_git.md | 20 + doc/topics/git/useful_git_commands.md | 8 + doc/university/README.md | 4 +- doc/university/training/end-user/README.md | 2 +- doc/university/training/index.md | 2 +- doc/update/patch_versions.md | 8 +- doc/update/upgrading_from_ce_to_ee.md | 17 +- doc/user/admin_area/appearance.md | 8 +- doc/user/admin_area/broadcast_messages.md | 1 + doc/user/admin_area/credentials_inventory.md | 19 + .../img/credentials_inventory_v12_6.png | Bin 0 -> 164125 bytes ...minimum_password_length_settings_v12_6.png | Bin 0 -> 29714 bytes doc/user/admin_area/license.md | 2 +- doc/user/admin_area/monitoring/convdev.md | 5 - .../admin_area/monitoring/dev_ops_score.md | 5 + .../admin_area/monitoring/health_check.md | 2 +- .../settings/account_and_limit_settings.md | 32 + .../admin_area/settings/protected_paths.md | 17 +- .../settings/sign_up_restrictions.md | 7 + .../visibility_and_access_controls.md | 20 +- doc/user/analytics/cycle_analytics.md | 21 + .../configuration/index.md | 27 + .../container_scanning/index.md | 90 +- doc/user/application_security/dast/index.md | 4 +- .../dependency_scanning/index.md | 40 +- .../img/security_configuration_page_v12_6.png | Bin 0 -> 68210 bytes .../application_security/sast/analyzers.md | 39 +- doc/user/application_security/sast/index.md | 62 +- .../img/group_security_dashboard_v12_4.png | Bin 62965 -> 0 bytes .../img/group_security_dashboard_v12_6.png | Bin 0 -> 69145 bytes .../img/pipeline_security_dashboard_v12_3.png | Bin 52247 -> 0 bytes .../img/pipeline_security_dashboard_v12_6.png | Bin 0 -> 59799 bytes .../security_dashboard/index.md | 17 +- doc/user/clusters/applications.md | 144 +- doc/user/clusters/crossplane.md | 8 +- doc/user/clusters/management_project.md | 2 +- doc/user/discussions/index.md | 2 +- doc/user/gitlab_com/index.md | 53 +- doc/user/group/clusters/index.md | 15 + doc/user/group/index.md | 17 + doc/user/group/saml_sso/index.md | 46 +- doc/user/group/saml_sso/scim_setup.md | 22 +- .../img/group_members_filter_v12_6.png | Bin 0 -> 19894 bytes doc/user/group/subgroups/index.md | 14 +- doc/user/incident_management/index.md | 2 +- doc/user/infrastructure/index.md | 6 + .../{convdev.md => dev_ops_score.md} | 10 +- doc/user/instance_statistics/img/cohorts.png | Bin 59494 -> 202569 bytes .../{convdev_index.png => dev_ops_score.png} | Bin doc/user/instance_statistics/index.md | 2 +- doc/user/markdown.md | 83 +- doc/user/packages/conan_repository/index.md | 4 +- doc/user/packages/container_registry/index.md | 1 - doc/user/packages/index.md | 6 +- .../img/maven_package_view.png | Bin 16105 -> 0 bytes .../img/maven_package_view_v12_6.png | Bin 0 -> 83954 bytes doc/user/packages/maven_repository/index.md | 4 +- .../npm_registry/img/npm_package_view.png | Bin 10349 -> 0 bytes .../img/npm_package_view_v12_5.png | Bin 0 -> 37994 bytes doc/user/packages/npm_registry/index.md | 45 +- doc/user/permissions.md | 7 +- doc/user/profile/active_sessions.md | 12 +- .../project/clusters/add_remove_clusters.md | 45 +- doc/user/project/clusters/index.md | 28 +- doc/user/project/clusters/serverless/aws.md | 165 +- doc/user/project/clusters/serverless/index.md | 155 +- doc/user/project/deploy_boards.md | 2 +- .../project/img/service_desk_disabled.png | Bin 11708 -> 25013 bytes doc/user/project/img/service_desk_enabled.png | Bin 21514 -> 59684 bytes doc/user/project/import/gemnasium.md | 2 +- doc/user/project/index.md | 11 +- doc/user/project/integrations/github.md | 3 + .../img/unify_circuit_configuration.png | Bin 0 -> 274416 bytes doc/user/project/integrations/jira.md | 11 +- .../project/integrations/project_services.md | 1 + doc/user/project/integrations/prometheus.md | 11 +- .../integrations/prometheus_library/nginx.md | 2 +- .../project/integrations/unify_circuit.md | 27 + doc/user/project/integrations/webhooks.md | 34 +- doc/user/project/labels.md | 2 +- .../project/members/img/project_members.png | Bin 0 -> 108736 bytes .../img/project_members_filter_v12_6.png | Bin 0 -> 19894 bytes doc/user/project/members/index.md | 25 + .../merge_requests/creating_merge_requests.md | 2 + .../img/merge_request_tab_position_v12_6.png | Bin 0 -> 74731 bytes doc/user/project/merge_requests/index.md | 34 + .../merge_request_dependencies.md | 6 +- .../merge_when_pipeline_succeeds.md | 2 +- .../reviewing_and_managing_merge_requests.md | 2 +- doc/user/project/milestones/index.md | 23 +- doc/user/project/operations/error_tracking.md | 18 +- doc/user/project/operations/feature_flags.md | 10 +- .../operations/img/error_details_v12_6.png | Bin 0 -> 151389 bytes .../img/error_details_with_issue_v12_6.png | Bin 0 -> 50767 bytes .../operations/img/error_tracking_list.png | Bin 760603 -> 0 bytes .../img/error_tracking_list_v12_6.png | Bin 0 -> 41388 bytes .../project/operations/img/specs_list.png | Bin 70117 -> 0 bytes .../operations/img/specs_list_v12_6.png | Bin 0 -> 28297 bytes .../operations/img/target_users_v12_2.png | Bin 42768 -> 0 bytes doc/user/project/operations/index.md | 1 + .../getting_started/fork_sample_project.md | 2 +- .../project/pages/pages_access_control.md | 2 +- doc/user/project/pipelines/job_artifacts.md | 8 +- doc/user/project/pipelines/settings.md | 47 +- doc/user/project/push_options.md | 18 +- doc/user/project/quick_actions.md | 6 +- ..._v12_5.png => edit_release_page_v12_6.png} | Bin ...12_5.png => release_edit_button_v12_6.png} | Bin doc/user/project/releases/index.md | 10 +- .../project/repository/forking_workflow.md | 4 + doc/user/project/repository/git_blame.md | 50 + doc/user/project/repository/git_history.md | 67 + .../img/file_blame_button_v12_6.png | Bin 0 -> 22175 bytes .../img/file_blame_output_v12_6.png | Bin 0 -> 96929 bytes .../img/file_history_button_v12_6.png | Bin 0 -> 22175 bytes .../img/file_history_output_v12_6.png | Bin 0 -> 84738 bytes .../img/web_editor_new_branch_from_issue.png | Bin 2715 -> 0 bytes ..._branch_from_issue_create_button_v12_6.png | Bin 0 -> 70114 bytes ...eb_editor_new_branch_from_issue_v_12_6.png | Bin 0 -> 76938 bytes doc/user/project/repository/index.md | 33 +- .../repository/repository_mirroring.md | 15 + doc/user/project/repository/web_editor.md | 34 +- doc/user/project/service_desk.md | 7 +- doc/user/project/settings/index.md | 6 +- doc/workflow/README.md | 10 +- jest.config.js | 7 +- lib/api/api.rb | 2 + lib/api/api_guard.rb | 10 +- lib/api/badges.rb | 8 +- lib/api/branches.rb | 6 +- lib/api/broadcast_messages.rb | 20 +- lib/api/deployments.rb | 13 +- lib/api/entities.rb | 36 +- lib/api/groups.rb | 2 +- lib/api/helpers.rb | 9 +- lib/api/helpers/common_helpers.rb | 2 + lib/api/helpers/internal_helpers.rb | 4 + lib/api/helpers/members_helpers.rb | 23 +- lib/api/helpers/pagination.rb | 27 +- lib/api/helpers/project_snapshots_helpers.rb | 2 +- lib/api/helpers/services_helpers.rb | 23 +- lib/api/internal/base.rb | 63 +- lib/api/internal/pages.rb | 2 +- lib/api/keys.rb | 19 + lib/api/members.rb | 32 +- lib/api/merge_requests.rb | 9 +- lib/api/pages.rb | 26 + lib/api/pages_domains.rb | 2 +- lib/api/pipelines.rb | 2 + lib/api/project_export.rb | 17 + lib/api/projects.rb | 14 +- lib/api/releases.rb | 1 + lib/api/remote_mirrors.rb | 30 + lib/api/services.rb | 2 +- lib/api/snippets.rb | 6 +- lib/api/support/git_access_actor.rb | 12 +- lib/api/users.rb | 3 +- lib/backup/manager.rb | 28 +- lib/banzai/filter/autolink_filter.rb | 2 +- lib/banzai/filter/base_sanitization_filter.rb | 1 + .../broadcast_message_sanitization_filter.rb | 20 + .../filter/inline_metrics_redactor_filter.rb | 10 +- .../filter/markdown_engines/common_mark.rb | 4 +- lib/banzai/filter/spaced_link_filter.rb | 2 +- .../pipeline/broadcast_message_pipeline.rb | 2 +- ...up_parser.rb => mentioned_group_parser.rb} | 2 +- ..._parser.rb => mentioned_project_parser.rb} | 2 +- lib/banzai/reference_parser/user_parser.rb | 4 +- lib/container_registry/tag.rb | 2 + lib/feature/gitaly.rb | 3 +- lib/gitaly/server.rb | 14 +- lib/gitlab/action_rate_limiter.rb | 81 - .../cycle_analytics/data_collector.rb | 2 + .../cycle_analytics/records_fetcher.rb | 2 +- .../stage_events/stage_event.rb | 4 +- .../cycle_analytics/stage_query_helpers.rb | 4 +- lib/gitlab/application_rate_limiter.rb | 129 + lib/gitlab/auth.rb | 24 +- .../{user_auth_finders.rb => auth_finders.rb} | 52 +- lib/gitlab/auth/current_user_mode.rb | 56 +- lib/gitlab/auth/ip_rate_limiter.rb | 29 +- lib/gitlab/auth/request_authenticator.rb | 11 +- .../migrate_legacy_artifacts.rb | 2 - lib/gitlab/bitbucket_import/importer.rb | 9 +- .../bitbucket_server_import/importer.rb | 34 +- lib/gitlab/chaos.rb | 6 +- lib/gitlab/ci/ansi2json/converter.rb | 7 +- lib/gitlab/ci/ansi2json/parser.rb | 5 +- lib/gitlab/ci/ansi2json/result.rb | 22 + lib/gitlab/ci/ansi2json/style.rb | 4 +- .../prerequisite/kubernetes_namespace.rb | 45 +- lib/gitlab/ci/config.rb | 8 +- lib/gitlab/ci/config/entry/default.rb | 23 +- lib/gitlab/ci/config/entry/environment.rb | 20 +- lib/gitlab/ci/config/entry/job.rb | 52 +- lib/gitlab/ci/config/entry/kubernetes.rb | 25 + lib/gitlab/ci/config/entry/need.rb | 32 +- lib/gitlab/ci/config/entry/needs.rb | 2 + lib/gitlab/ci/config/entry/root.rb | 6 +- .../config/entry/{boolean.rb => timeout.rb} | 4 +- lib/gitlab/ci/config/entry/workflow.rb | 4 + lib/gitlab/ci/config/normalizer.rb | 2 +- .../ci/pipeline/chain/config/content.rb | 60 +- .../chain/config/content/auto_devops.rb | 28 + .../chain/config/content/external_project.rb | 35 + .../config/content/legacy_auto_devops.rb | 28 + .../chain/config/content/legacy_repository.rb | 31 + .../pipeline/chain/config/content/remote.rb | 27 + .../chain/config/content/repository.rb | 38 + .../pipeline/chain/config/content/runtime.rb | 30 + .../pipeline/chain/config/content/source.rb | 46 + .../ci/pipeline/chain/config/process.rb | 4 +- .../pipeline/chain/evaluate_workflow_rules.rb | 20 +- lib/gitlab/ci/pipeline/chain/helpers.rb | 5 +- .../ci/pipeline/chain/validate/external.rb | 100 + lib/gitlab/ci/pipeline/seed/build.rb | 2 +- .../Browser-Performance-Testing.gitlab-ci.yml | 6 +- .../templates/Jobs/Code-Quality.gitlab-ci.yml | 4 +- .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 2 +- ...Managed-Cluster-Applications.gitlab-ci.yml | 16 + .../ci/templates/Pages/Hugo.gitlab-ci.yml | 21 +- .../Security/Container-Scanning.gitlab-ci.yml | 2 +- .../Dependency-Scanning.gitlab-ci.yml | 18 +- .../ci/templates/Security/SAST.gitlab-ci.yml | 41 +- .../Verify/Browser-Performance.gitlab-ci.yml | 2 +- lib/gitlab/ci/yaml_processor.rb | 29 +- lib/gitlab/config/entry/array_of_strings.rb | 18 + lib/gitlab/config/entry/configurable.rb | 17 +- .../cycle_analytics/code_event_fetcher.rb | 2 +- .../cycle_analytics/review_event_fetcher.rb | 2 +- lib/gitlab/danger/changelog.rb | 40 + lib/gitlab/danger/helper.rb | 5 +- lib/gitlab/danger/teammate.rb | 2 +- lib/gitlab/data_builder/build.rb | 14 + lib/gitlab/data_builder/pipeline.rb | 1 + lib/gitlab/database.rb | 14 +- lib/gitlab/database/migration_helpers.rb | 62 +- .../database/obsolete_ignored_columns.rb | 9 +- lib/gitlab/database/sha256_attribute.rb | 33 + .../self_monitoring/project/create_service.rb | 3 +- lib/gitlab/dependency_linker/base_linker.rb | 2 +- lib/gitlab/diff/deprecated_highlight_cache.rb | 68 + lib/gitlab/diff/file_collection/base.rb | 20 +- .../file_collection/merge_request_diff.rb | 31 - .../merge_request_diff_base.rb | 38 + .../merge_request_diff_batch.rb | 4 - lib/gitlab/diff/highlight.rb | 2 +- lib/gitlab/diff/highlight_cache.rb | 130 +- lib/gitlab/diff/inline_diff_marker.rb | 2 +- lib/gitlab/diff/line.rb | 11 + .../discussions_diff/highlight_cache.rb | 6 +- lib/gitlab/elasticsearch/logger.rb | 11 + lib/gitlab/error_tracking.rb | 154 + lib/gitlab/error_tracking/detailed_error.rb | 7 + lib/gitlab/error_tracking/logger.rb | 11 + .../stack_trace_highlight_decorator.rb | 49 + lib/gitlab/etag_caching/router.rb | 4 + lib/gitlab/experimentation.rb | 2 +- lib/gitlab/file_detector.rb | 5 +- lib/gitlab/file_type_detection.rb | 5 + lib/gitlab/git/commit.rb | 15 +- lib/gitlab/git/tag.rb | 4 + lib/gitlab/gitaly_client.rb | 3 +- .../github_import/importer/issue_importer.rb | 1 - .../importer/pull_request_importer.rb | 11 +- lib/gitlab/gon_helper.rb | 2 +- lib/gitlab/gpg.rb | 9 +- lib/gitlab/grafana_embed_usage_data.rb | 16 + .../graphql/authorize/authorize_resource.rb | 9 +- .../graphql/calls_gitaly/instrumentation.rb | 2 +- .../graphql/connections/keyset/connection.rb | 16 +- .../keyset/legacy_keyset_connection.rb | 66 - .../query_analyzers/logger_analyzer.rb | 4 +- lib/gitlab/hashed_storage/rake_helper.rb | 14 +- lib/gitlab/highlight.rb | 2 +- lib/gitlab/hook_data/merge_request_builder.rb | 5 +- lib/gitlab/import_export/attribute_cleaner.rb | 2 +- lib/gitlab/import_export/file_importer.rb | 12 +- .../import_export/group_import_export.yml | 18 +- lib/gitlab/import_export/import_export.yml | 94 +- lib/gitlab/import_export/importer.rb | 2 +- lib/gitlab/import_export/members_mapper.rb | 33 +- .../import_export/project_tree_restorer.rb | 203 +- lib/gitlab/import_export/relation_factory.rb | 4 +- .../import_export/relation_tree_restorer.rb | 240 + lib/gitlab/import_export/shared.rb | 6 +- lib/gitlab/insecure_key_fingerprint.rb | 5 + lib/gitlab/json_cache.rb | 14 +- lib/gitlab/kubernetes/cluster_role.rb | 29 + lib/gitlab/kubernetes/helm/client_command.rb | 36 +- lib/gitlab/kubernetes/helm/delete_command.rb | 2 +- lib/gitlab/kubernetes/helm/install_command.rb | 6 +- lib/gitlab/kubernetes/helm/patch_command.rb | 73 + lib/gitlab/kubernetes/kube_client.rb | 8 + lib/gitlab/kubernetes/kubectl_cmd.rb | 10 + lib/gitlab/mail_room.rb | 15 +- lib/gitlab/marginalia.rb | 28 + .../active_record_instrumentation.rb | 12 + lib/gitlab/marginalia/comment.rb | 42 + .../metrics/dashboard/service_selector.rb | 7 +- .../dashboard/stages/endpoint_inserter.rb | 20 +- lib/gitlab/metrics/transaction.rb | 1 - lib/gitlab/middleware/go.rb | 30 +- lib/gitlab/pagination/keyset.rb | 21 + lib/gitlab/pagination/keyset/page.rb | 47 + lib/gitlab/pagination/keyset/pager.rb | 56 + .../pagination/keyset/request_context.rb | 89 + lib/gitlab/patch/draw_route.rb | 2 +- .../redis_adapter_when_peek_enabled.rb | 2 +- lib/gitlab/profiler.rb | 2 + lib/gitlab/project_template.rb | 1 + lib/gitlab/puma_logging/json_formatter.rb | 13 + lib/gitlab/push_options.rb | 3 +- lib/gitlab/quick_actions/issue_actions.rb | 1 + lib/gitlab/reference_extractor.rb | 2 +- lib/gitlab/regex.rb | 2 +- lib/gitlab/seeder.rb | 6 +- lib/gitlab/sentry.rb | 77 - lib/gitlab/shell.rb | 6 +- lib/gitlab/sidekiq_middleware.rb | 34 + lib/gitlab/sidekiq_middleware/metrics.rb | 31 +- .../slash_commands/presenters/access.rb | 4 +- lib/gitlab/slash_commands/presenters/base.rb | 47 +- .../slash_commands/presenters/issue_base.rb | 10 +- .../slash_commands/presenters/issue_close.rb | 32 +- .../presenters/issue_comment.rb | 24 +- .../slash_commands/presenters/issue_move.rb | 29 +- .../slash_commands/presenters/issue_new.rb | 31 +- .../slash_commands/presenters/issue_search.rb | 10 +- .../slash_commands/presenters/issue_show.rb | 41 +- .../slash_commands/presenters/note_base.rb | 10 +- lib/gitlab/sql/pattern.rb | 10 +- lib/gitlab/tracking.rb | 4 +- lib/gitlab/url_builder.rb | 21 +- lib/gitlab/usage_data.rb | 9 +- .../usage_data_counters/base_counter.rb | 2 +- lib/gitlab/utils/override.rb | 13 +- lib/gitlab/visibility_level.rb | 14 +- lib/gitlab/webpack/manifest.rb | 3 +- lib/google_api/cloud_platform/client.rb | 18 +- lib/quality/helm_client.rb | 9 +- lib/quality/kubernetes_client.rb | 36 +- lib/quality/test_level.rb | 9 +- lib/sentry/client.rb | 116 +- lib/sentry/client/projects.rb | 46 + lib/sentry/pagination_parser.rb | 23 + lib/tasks/db_obsolete_ignored_columns.rake | 5 +- lib/tasks/gettext.rake | 2 +- lib/tasks/gitlab/assets.rake | 8 + lib/tasks/gitlab/cleanup.rake | 2 +- .../generate_sample_prometheus_data.rake | 20 + lib/tasks/gitlab/import_export/import.rake | 146 + lib/tasks/gitlab/metrics.rake | 8 + locale/gitlab.pot | 1147 +- package.json | 28 +- qa/.gitignore | 1 + qa/Dockerfile | 2 +- qa/Gemfile | 4 +- qa/Gemfile.lock | 48 +- qa/qa.rb | 7 + qa/qa/flow/login.rb | 20 +- qa/qa/flow/project.rb | 19 + qa/qa/page/admin/new_session.rb | 22 + qa/qa/page/base.rb | 36 +- qa/qa/page/component/issuable/common.rb | 1 + qa/qa/page/component/select2.rb | 2 +- qa/qa/page/dashboard/snippet/show.rb | 12 +- qa/qa/page/group/menu.rb | 7 + qa/qa/page/issuable/sidebar.rb | 15 +- qa/qa/page/layout/performance_bar.rb | 2 +- qa/qa/page/main/login.rb | 4 + qa/qa/page/main/menu.rb | 15 +- qa/qa/page/mattermost/main.rb | 5 - qa/qa/page/merge_request/show.rb | 160 +- qa/qa/page/project/issue/show.rb | 35 +- qa/qa/page/project/job/show.rb | 2 +- qa/qa/page/project/pipeline/index.rb | 6 +- qa/qa/page/project/settings/advanced.rb | 3 + qa/qa/page/project/settings/deploy_keys.rb | 2 +- qa/qa/page/search/results.rb | 21 +- qa/qa/page/settings/common.rb | 3 +- qa/qa/resource/api_fabricator.rb | 18 +- qa/qa/resource/base.rb | 2 +- qa/qa/resource/deploy_token.rb | 8 +- qa/qa/resource/file.rb | 10 +- qa/qa/resource/fork.rb | 4 +- qa/qa/resource/group.rb | 4 + qa/qa/resource/kubernetes_cluster.rb | 36 +- qa/qa/resource/label.rb | 10 +- qa/qa/resource/merge_request.rb | 16 +- qa/qa/resource/personal_access_token.rb | 8 +- qa/qa/resource/project.rb | 28 +- .../resource/project_imported_from_github.rb | 16 +- qa/qa/resource/project_milestone.rb | 6 +- qa/qa/resource/runner.rb | 12 +- qa/qa/resource/settings/hashed_storage.rb | 2 +- qa/qa/resource/snippet.rb | 14 +- qa/qa/resource/ssh_key.rb | 4 +- qa/qa/resource/user.rb | 2 +- qa/qa/runtime/api/client.rb | 19 +- qa/qa/runtime/browser.rb | 28 + qa/qa/runtime/env.rb | 22 +- qa/qa/runtime/ip_address.rb | 33 + qa/qa/runtime/mail_hog.rb | 15 + qa/qa/runtime/search.rb | 36 + qa/qa/scenario/test/integration/smtp.rb | 13 + qa/qa/service/cluster_provider/gcloud.rb | 36 +- .../create_group_with_mattermost_team_spec.rb | 9 +- .../1_manage/group/transfer_project_spec.rb | 3 +- .../browser_ui/1_manage/login/log_in_spec.rb | 7 +- .../login/log_into_gitlab_via_ldap_spec.rb | 3 +- .../log_into_mattermost_via_gitlab_spec.rb | 7 +- .../1_manage/login/login_via_oauth_spec.rb | 3 +- .../project/add_project_member_spec.rb | 7 +- .../1_manage/project/create_project_spec.rb | 3 +- .../project/import_github_repo_spec.rb | 6 +- .../project/view_project_activity_spec.rb | 3 +- .../email/trigger_email_notification_spec.rb | 43 + .../issue/check_mentions_for_xss_spec.rb | 4 +- .../2_plan/issue/close_issue_spec.rb | 40 +- .../2_plan/issue/issue_suggestions_spec.rb | 20 +- .../create_merge_request_spec.rb | 3 +- .../merge_merge_request_from_fork_spec.rb | 3 +- .../rebase_merge_request_spec.rb | 6 +- .../squash_merge_request_spec.rb | 9 +- .../repository/add_file_template_spec.rb | 21 +- .../add_list_delete_branches_spec.rb | 3 +- .../3_create/repository/add_ssh_key_spec.rb | 3 +- .../repository/protocol_v2_push_http_spec.rb | 6 +- .../repository/protocol_v2_push_ssh_spec.rb | 12 +- .../push_http_private_token_spec.rb | 3 +- .../repository/push_over_http_spec.rb | 3 +- .../3_create/repository/use_ssh_key_spec.rb | 3 +- .../3_create/snippet/create_snippet_spec.rb | 3 +- .../web_ide/add_file_template_spec.rb | 25 +- .../wiki/create_edit_clone_push_wiki_spec.rb | 9 +- .../ci_variable/add_ci_variable_spec.rb | 3 +- .../create_and_process_pipeline_spec.rb | 3 +- .../4_verify/runner/register_runner_spec.rb | 3 +- .../deploy_key/add_deploy_key_spec.rb | 3 +- .../deploy_key/clone_using_deploy_key_spec.rb | 3 +- .../deploy_token/add_deploy_token_spec.rb | 3 +- .../create_project_with_auto_devops_spec.rb | 12 +- .../non_devops/performance_bar_spec.rb | 16 +- qa/qa/support/api.rb | 1 + qa/qa/support/page/logging.rb | 20 +- .../revoke_all_personal_access_tokens.rb | 6 +- qa/qa/vendor/saml_idp/page/login.rb | 4 +- qa/spec/page/logging_spec.rb | 2 +- qa/spec/spec_helper.rb | 4 +- .../cop/avoid_route_redirect_leading_slash.rb | 4 +- rubocop/cop/graphql/authorize_types.rb | 5 +- rubocop/cop/ignored_columns.rb | 20 + rubocop/cop/migration/add_column.rb | 5 +- rubocop/cop/put_group_routes_under_scope.rb | 43 + rubocop/cop/put_project_routes_under_scope.rb | 43 + rubocop/rubocop.rb | 3 + scripts/ee-specific-lines-check | 42 - .../frontend/check_no_partial_karma_jest.sh | 44 + scripts/get-job-id | 43 + scripts/gitaly_test.rb | 8 + scripts/lint-conflicts.sh | 2 +- scripts/notifications.sh | 27 + scripts/prepare_build.sh | 34 +- scripts/review_apps/automated_cleanup.rb | 19 +- scripts/review_apps/base-config.yaml | 26 +- scripts/review_apps/review-apps.sh | 214 +- scripts/security-harness | 120 +- scripts/static-analysis | 3 +- scripts/sync-stable-branch.sh | 14 + scripts/trigger-build | 2 +- scripts/utils.sh | 13 +- .../abuse_reports_controller_spec.rb | 4 +- .../application_settings_controller_spec.rb | 7 + .../admin/clusters_controller_spec.rb | 57 +- .../admin/identities_controller_spec.rb | 4 +- .../admin/sessions_controller_spec.rb | 74 +- .../admin/users_controller_spec.rb | 14 +- .../application_controller_spec.rb | 41 +- .../autocomplete_controller_spec.rb | 79 +- .../groups/clusters_controller_spec.rb | 55 +- .../groups/group_members_controller_spec.rb | 31 +- ...ec.rb => dev_ops_score_controller_spec.rb} | 2 +- .../oauth/applications_controller_spec.rb | 6 + .../omniauth_callbacks_controller_spec.rb | 107 +- spec/controllers/passwords_controller_spec.rb | 4 +- .../profiles/preferences_controller_spec.rb | 4 +- .../two_factor_auths_controller_spec.rb | 2 +- spec/controllers/profiles_controller_spec.rb | 2 +- .../projects/artifacts_controller_spec.rb | 4 +- .../projects/branches_controller_spec.rb | 8 +- .../projects/clusters_controller_spec.rb | 47 +- .../projects/deploy_keys_controller_spec.rb | 26 +- .../prometheus_api_controller_spec.rb | 8 +- .../sample_metrics_controller_spec.rb | 64 + .../projects/environments_controller_spec.rb | 60 +- .../error_tracking_controller_spec.rb | 149 +- .../projects/issues_controller_spec.rb | 32 +- .../projects/jobs_controller_spec.rb | 25 +- .../merge_requests/diffs_controller_spec.rb | 153 +- .../merge_requests_controller_spec.rb | 36 +- .../projects/notes_controller_spec.rb | 11 + .../projects/pages_domains_controller_spec.rb | 31 +- .../pipeline_schedules_controller_spec.rb | 2 +- .../projects/pipelines_controller_spec.rb | 61 +- .../project_members_controller_spec.rb | 30 + .../projects/raw_controller_spec.rb | 89 +- .../projects/releases_controller_spec.rb | 56 + .../serverless/functions_controller_spec.rb | 16 + .../service_hook_logs_controller_spec.rb | 41 + .../settings/ci_cd_controller_spec.rb | 11 +- .../projects/uploads_controller_spec.rb | 2 +- .../projects/wikis_controller_spec.rb | 4 +- spec/controllers/projects_controller_spec.rb | 167 +- .../registrations_controller_spec.rb | 18 +- spec/controllers/snippets_controller_spec.rb | 24 + spec/controllers/uploads_controller_spec.rb | 61 +- spec/db/schema_spec.rb | 5 +- spec/factories/ci/builds.rb | 8 + spec/factories/clusters/clusters.rb | 22 + ...ex_metrics.rb => dev_ops_score_metrics.rb} | 2 +- spec/factories/environments.rb | 8 + .../error_tracking/detailed_error.rb | 13 +- spec/factories/error_tracking/error_event.rb | 50 +- spec/factories/lists.rb | 2 + spec/factories/merge_request_diff_commits.rb | 10 + spec/factories/merge_requests.rb | 4 + spec/factories/notes.rb | 4 + spec/factories/oauth_openid_requests.rb | 8 + spec/factories/releases.rb | 6 + spec/factories/sentry_issue.rb | 8 + spec/factories/serverless/domain_cluster.rb | 10 + spec/factories/services.rb | 7 + spec/factories/snippets.rb | 5 + .../admin/admin_broadcast_messages_spec.rb | 2 + spec/features/admin/admin_groups_spec.rb | 8 + spec/features/admin/admin_hooks_spec.rb | 4 +- spec/features/admin/clusters/eks_spec.rb | 2 +- spec/features/boards/boards_spec.rb | 12 +- spec/features/dashboard/milestones_spec.rb | 20 + spec/features/dashboard/snippets_spec.rb | 34 + .../discussion_comments/snippets_spec.rb | 1 + spec/features/groups/clusters/eks_spec.rb | 2 +- spec/features/groups/clusters/user_spec.rb | 8 +- spec/features/groups/group_settings_spec.rb | 36 +- .../groups/members/filter_members_spec.rb | 59 +- ...nt_index_spec.rb => dev_ops_score_spec.rb} | 20 +- spec/features/issues/move_spec.rb | 1 + ...creates_confidential_merge_request_spec.rb | 2 +- .../features/issues/user_views_issues_spec.rb | 1 + .../merge_request/user_expands_diff_spec.rb | 3 +- .../merge_request/user_posts_notes_spec.rb | 18 + ...diff_notes_and_discussions_resolve_spec.rb | 1 + .../user_sees_avatar_on_diff_notes_spec.rb | 1 + .../user_sees_deleted_target_branch_spec.rb | 2 +- .../user_sees_deployment_widget_spec.rb | 2 +- .../merge_request/user_sees_diff_spec.rb | 1 + .../user_sees_merge_request_pipelines_spec.rb | 47 +- ...sees_mr_with_deleted_source_branch_spec.rb | 5 +- .../merge_request/user_sees_versions_spec.rb | 1 + .../user_selects_branches_for_new_mr_spec.rb | 8 +- .../user_suggests_changes_on_diff_spec.rb | 8 +- .../merge_request/user_views_diffs_spec.rb | 1 + .../user_sorts_merge_requests_spec.rb | 1 + .../user_views_open_merge_requests_spec.rb | 1 + .../milestones/user_views_milestones_spec.rb | 31 + spec/features/oauth_login_spec.rb | 1 + .../participants_autocomplete_spec.rb | 4 +- .../projects/badges/pipeline_badge_spec.rb | 11 - .../features/projects/blobs/blob_show_spec.rb | 46 + spec/features/projects/clusters/eks_spec.rb | 2 +- spec/features/projects/clusters/gcp_spec.rb | 64 +- spec/features/projects/clusters/user_spec.rb | 8 +- spec/features/projects/clusters_spec.rb | 33 +- .../commits/user_browses_commits_spec.rb | 21 +- .../environments/environments_spec.rb | 12 +- .../projects/features_visibility_spec.rb | 6 +- .../projects/files/user_edits_files_spec.rb | 1 + .../import_export/export_file_spec.rb | 2 - .../projects/jobs/permissions_spec.rb | 1 - .../projects/jobs/user_browses_job_spec.rb | 4 +- spec/features/projects/jobs_spec.rb | 3 +- .../projects/members/group_members_spec.rb | 35 + .../projects/pages_lets_encrypt_spec.rb | 12 +- .../projects/pipelines/pipelines_spec.rb | 8 +- .../settings/integration_settings_spec.rb | 6 +- .../settings/visibility_settings_spec.rb | 18 + .../projects/snippets/create_snippet_spec.rb | 7 +- spec/features/projects/snippets/show_spec.rb | 1 + .../snippets/user_comments_on_snippet_spec.rb | 1 + .../snippets/user_deletes_snippet_spec.rb | 1 + .../snippets/user_updates_snippet_spec.rb | 1 + .../snippets/user_views_snippets_spec.rb | 2 +- .../user_changes_project_visibility_spec.rb | 46 + spec/features/projects/view_on_env_spec.rb | 1 + .../projects/wiki/markdown_preview_spec.rb | 60 +- .../wiki/user_creates_wiki_page_spec.rb | 2 +- .../features/reportable_note/snippets_spec.rb | 1 + .../security/group/internal_access_spec.rb | 1 + .../security/group/private_access_spec.rb | 1 + .../security/group/public_access_spec.rb | 1 + .../security/project/internal_access_spec.rb | 27 +- .../security/project/private_access_spec.rb | 29 +- .../security/project/public_access_spec.rb | 26 +- spec/features/snippets/explore_spec.rb | 63 +- .../snippets/internal_snippet_spec.rb | 4 + .../notes_on_personal_snippets_spec.rb | 1 + .../snippets/private_snippets_spec.rb | 1 + .../features/snippets/public_snippets_spec.rb | 5 + spec/features/snippets/show_spec.rb | 21 + spec/features/snippets/spam_snippets_spec.rb | 1 + .../snippets/user_creates_snippet_spec.rb | 1 + .../snippets/user_deletes_snippet_spec.rb | 2 + .../snippets/user_edits_snippet_spec.rb | 1 + spec/features/snippets/user_snippets_spec.rb | 6 +- spec/features/snippets_spec.rb | 29 +- spec/features/task_lists_spec.rb | 1 + spec/features/users/login_spec.rb | 1 + spec/features/users/show_spec.rb | 36 + .../knative_serving_namespace_finder_spec.rb | 55 + spec/finders/clusters_finder_spec.rb | 1 + spec/finders/deployments_finder_spec.rb | 97 + spec/finders/group_descendants_finder_spec.rb | 1 + spec/finders/group_members_finder_spec.rb | 38 +- spec/finders/group_projects_finder_spec.rb | 18 + spec/finders/groups_finder_spec.rb | 2 + spec/finders/issues_finder_spec.rb | 1 + spec/finders/jobs_finder_spec.rb | 89 + spec/finders/keys_finder_spec.rb | 148 + spec/finders/members_finder_spec.rb | 50 +- ...erge_request_target_project_finder_spec.rb | 17 + .../personal_access_tokens_finder_spec.rb | 10 + spec/finders/pipelines_finder_spec.rb | 73 +- spec/finders/projects_finder_spec.rb | 2 + spec/finders/snippets_finder_spec.rb | 87 +- spec/finders/tags_finder_spec.rb | 1 + spec/finders/user_finder_spec.rb | 22 - .../entities/merge_request_noteable.json | 10 +- .../merge_request_poll_cached_widget.json | 1 + spec/fixtures/api/schemas/environment.json | 3 + .../error_tracking/error_detailed.json | 2 + .../error_tracking/error_stack_trace.json | 2 +- .../api/schemas/error_tracking/index.json | 4 + .../api/schemas/external_validation.json | 75 + spec/fixtures/api/schemas/list.json | 3 +- .../api/schemas/public_api/v4/board.json | 3 +- .../api/schemas/public_api/v4/release.json | 2 +- .../v4/release/release_for_guest.json | 5 +- spec/fixtures/api/schemas/remote_mirror.json | 26 + spec/fixtures/api/schemas/remote_mirrors.json | 4 + .../container_registry/config_blob_helm.json | 8 + .../container_registry/tag_manifest_helm.json | 15 + spec/fixtures/git-cheat-sheet.pdf | 130426 +-------------- .../corrupted_project_export.tar.gz | Bin 0 -> 4352 bytes .../lightweight_project_export.tar.gz | Bin 0 -> 3837 bytes .../sample_metric_query_result.yml | 151 + .../gitlab/import_export/complex/project.json | 18 +- .../group_exports/complex/group.json | 2106 + .../group_exports/no_children/group.json | 957 + .../with_invalid_records/project.json | 38 + .../dashboard/schemas/panel_groups.json | 1 - spec/fixtures/project_export.tar.gz | Bin 343091 -> 341315 bytes .../statistics_panel/components/app_spec.js | 2 +- spec/frontend/autosave_spec.js | 39 +- .../behaviors/markdown/render_metrics_spec.js | 2 +- spec/frontend/boards/boards_store_spec.js | 1037 + .../boards/components/issue_count_spec.js | 85 + .../components/issue_time_estimate_spec.js | 2 +- spec/frontend/boards/issue_card_spec.js | 1 + spec/frontend/boards/mock_data.js | 91 + .../boards/services/board_service_spec.js | 552 - .../frontend/clusters/clusters_bundle_spec.js | 9 +- .../remove_cluster_confirmation_spec.js.snap | 80 + .../components/application_row_spec.js | 2 +- .../clusters/components/applications_spec.js | 4 +- .../remove_cluster_confirmation_spec.js | 57 + ...all_application_confirmation_modal_spec.js | 2 +- .../crossplane_provider_stack_spec.js | 9 +- .../commit_pipeline_status_component_spec.js | 3 +- .../project_form_group_spec.js.snap | 30 +- .../component/contributors_spec.js | 2 +- .../contributors/store/actions_spec.js | 2 +- .../components/cluster_form_dropdown_spec.js | 13 +- .../eks_cluster_configuration_form_spec.js | 16 - .../services/aws_services_facade_spec.js | 193 +- .../eks_cluster/store/actions_spec.js | 34 +- .../eks_cluster/store/mutations_spec.js | 12 - .../init_create_cluster_spec.js | 10 +- .../create_merge_request_dropdown_spec.js | 2 +- .../limit_warning_component_spec.js | 43 +- .../diffs/components/compare_versions_spec.js | 156 + .../diffs/components/diff_file_header_spec.js | 1 + .../components/diff_gutter_avatars_spec.js | 3 +- .../diffs/components/edit_button_spec.js | 3 +- .../diffs/mock_data/diff_with_commit.js | 7 + .../diffs/mock_data/merge_request_diffs.js | 46 + spec/frontend/environment.js | 1 + .../environments/environment_item_spec.js | 131 + .../environment_monitoring_spec.js | 39 + .../environments/environment_rollback_spec.js | 4 + .../environments/environment_stop_spec.js | 40 + .../environments/environment_table_spec.js | 120 +- .../environment_terminal_button_spec.js | 36 + spec/frontend/environments/mock_data.js | 106 + .../components/error_details_spec.js | 87 + .../components/error_tracking_list_spec.js | 232 +- .../error_tracking/components/list_mock.json | 29 + .../components/stacktrace_entry_spec.js | 56 +- .../store/details/actions_spec.js | 2 +- .../store/details/getters_spec.js | 14 +- .../error_tracking/store/list/actions_spec.js | 117 + .../error_tracking/store/list/getters_spec.js | 33 - .../store/list/mutation_spec.js | 82 + spec/frontend/error_tracking/utils_spec.js | 11 - .../components/app_spec.js | 2 +- .../components/error_tracking_form_spec.js | 4 +- spec/frontend/error_tracking_settings/mock.js | 2 +- spec/frontend/fixtures/snippet.rb | 3 +- .../fixtures/static/environments_logs.html | 102 - spec/frontend/fixtures/static/projects.json | 9 + spec/frontend/fixtures/test_report.rb | 30 + spec/frontend/gfm_auto_complete_spec.js | 110 +- .../components/grafana_integration_spec.js | 2 +- spec/frontend/helpers/dom_shims/index.js | 1 + spec/frontend/helpers/dom_shims/inner_text.js | 11 + .../ide/components/branches/item_spec.js | 6 +- .../components/branches/search_list_spec.js | 2 +- .../components/merge_requests/list_spec.js | 2 +- .../ide/components/panes/right_spec.js | 8 +- .../ide/components/pipelines/list_spec.js | 4 +- .../ide/components/preview/clientside_spec.js | 4 - .../ide/components/preview/navigator_spec.js | 52 +- spec/frontend/ide/helpers.js | 52 + .../ide/ide_router_spec.js | 2 +- spec/frontend/ide/lib/files_spec.js | 3 +- spec/frontend/ide/services/index_spec.js | 2 +- .../ide/stores/getters_spec.js | 128 +- .../stores/modules/branches/actions_spec.js | 31 +- .../stores/modules/branches/mutations_spec.js | 8 +- .../ide/stores/modules/commit/getters_spec.js | 0 .../modules/file_templates/actions_spec.js | 159 +- .../modules/merge_requests/actions_spec.js | 81 +- .../modules/merge_requests/mutations_spec.js | 11 +- .../ide/stores/modules/pane/actions_spec.js | 2 +- .../stores/modules/pipelines/actions_spec.js | 88 +- .../modules/pipelines/mutations_spec.js | 52 +- .../ide/stores/mutations/file_spec.js | 67 +- .../ide/stores/mutations/tree_spec.js | 4 +- .../ide/stores/mutations_spec.js | 198 +- .../ide/stores/utils_spec.js | 232 +- spec/frontend/ide/utils_spec.js | 3 + .../imported_project_table_row_spec.js | 2 +- .../import_projects/store/actions_spec.js | 4 +- .../components/app_spec.js | 78 +- .../components/item_spec.js | 2 + .../components/issuable_spec.js | 1 + .../components/issuables_list_app_spec.js | 4 +- spec/frontend/jest_self_check/mocks_spec.js | 43 + .../jobs/components/erased_block_spec.js | 37 +- .../frontend/jobs/components/log/mock_data.js | 2 +- .../lib/utils/accessor_spec.js | 15 +- .../lib/utils/datetime_utility_spec.js | 67 +- .../lib/utils/dom_utils_spec.js | 38 +- .../lib/utils/file_upload_spec.js | 6 +- .../lib/utils/highlight_spec.js} | 0 .../lib/utils/icon_utils_spec.js | 39 +- ...ress_ajax_errors_during_navigation_spec.js | 20 +- .../lib/utils/text_markdown_spec.js | 8 +- spec/frontend/lib/utils/url_utility_spec.js | 90 + .../lib/utils/users_cache_spec.js | 49 +- .../__snapshots__/empty_state_spec.js.snap} | 0 .../group_empty_state_spec.js.snap | 79 + .../components/charts/anomaly_spec.js | 22 +- .../components}/charts/column_spec.js | 14 +- .../components}/charts/empty_chart_spec.js | 8 +- .../components}/charts/heatmap_spec.js | 2 +- .../components}/charts/single_stat_spec.js | 10 +- .../charts/time_series_spec.js | 39 +- .../empty_state_spec.js} | 1 + .../components/group_empty_state_spec.js | 34 + spec/frontend/monitoring/embed/embed_spec.js | 25 +- spec/frontend/monitoring/embed/mock_data.js | 32 +- spec/frontend/monitoring/mock_data.js | 207 +- spec/frontend/monitoring/panel_type_spec.js | 80 +- .../frontend/monitoring/store/actions_spec.js | 373 +- .../frontend/monitoring/store/getters_spec.js | 217 + .../monitoring/store/mutations_spec.js | 229 +- spec/frontend/monitoring/store/utils_spec.js | 44 +- spec/frontend/monitoring/utils_spec.js | 342 +- spec/frontend/mr_popover/mr_popover_spec.js | 2 +- .../notes/components/comment_form_spec.js | 4 +- .../components/discussion_actions_spec.js | 4 +- .../discussion_jump_to_next_button_spec.js | 3 +- .../discussion_keyboard_navigator_spec.js | 9 +- .../notes/components/discussion_notes_spec.js | 1 + .../discussion_reply_placeholder_spec.js | 2 +- .../discussion_resolve_button_spec.js | 2 +- .../notes/components/note_app_spec.js | 15 +- .../notes/components/note_edited_text_spec.js | 60 +- spec/frontend/notes/old_notes_spec.js | 4 +- .../components/external_dashboard_spec.js | 2 +- .../components/delete_user_modal_spec.js | 136 +- .../components/user_modal_manager_spec.js | 4 - .../pages/profiles/show/emoji_menu_spec.js | 2 +- .../components/add_request_spec.js | 2 +- .../components/detailed_metric_spec.js | 2 +- .../components/performance_bar_app_spec.js | 2 +- .../components/request_selector_spec.js | 43 +- .../components/request_warning_spec.js | 2 +- .../stores/performance_bar_store_spec.js | 62 + .../pipelines/graph/action_component_spec.js | 1 + .../pipelines/graph/job_item_spec.js | 79 +- .../pipelines/graph/linked_pipeline_spec.js | 127 + .../graph/linked_pipelines_mock_data.js | 407 + .../pipelines/pipeline_triggerer_spec.js | 28 +- spec/frontend/pipelines/pipeline_url_spec.js | 112 + .../pipelines/test_reports/mock_data.js | 113 +- .../test_reports/stores/actions_spec.js | 4 +- .../test_reports/stores/getters_spec.js | 22 +- .../test_reports/stores/mutations_spec.js | 12 +- .../test_reports/test_reports_spec.js | 6 +- .../test_reports/test_suite_table_spec.js | 14 +- .../test_reports/test_summary_spec.js | 33 +- .../test_reports/test_summary_table_spec.js | 8 +- spec/frontend/project_find_file_spec.js | 49 +- .../group_empty_state_spec.js.snap | 0 .../project_empty_state_spec.js.snap | 0 .../{ => list}/components/app_spec.js | 38 +- .../components/collapsible_container_spec.js | 72 +- .../components/group_empty_state_spec.js | 2 +- .../components/project_empty_state_spec.js | 4 +- .../components/table_registry_spec.js | 115 +- .../frontend/registry/{ => list}/mock_data.js | 0 .../{ => list}/stores/actions_spec.js | 8 +- .../{ => list}/stores/getters_spec.js | 2 +- .../{ => list}/stores/mutations_spec.js | 4 +- .../registry_settings_app_spec.js.snap | 33 + .../components/registry_settings_app_spec.js | 40 + .../registry/settings/stores/actions_spec.js | 20 + .../settings/stores/mutations_spec.js | 21 + .../releases/detail/components/app_spec.js | 2 +- .../releases/detail/store/actions_spec.js | 2 +- .../list/components/evidence_block_spec.js | 77 + .../components/release_block_footer_spec.js | 12 +- .../release_block_milestone_info_spec.js | 179 + .../list/components/release_block_spec.js | 119 +- spec/frontend/releases/mock_data.js | 11 + .../reports/components/report_section_spec.js | 2 +- .../preview/__snapshots__/index_spec.js.snap | 28 +- .../repository/components/table/row_spec.js | 1 - spec/frontend/repository/log_tree_spec.js | 15 +- spec/frontend/repository/utils/commit_spec.js | 3 +- spec/frontend/repository/utils/dom_spec.js | 12 +- spec/frontend/sentry/sentry_config_spec.js | 7 +- .../components/environment_row_spec.js | 2 +- .../components/function_details_spec.js | 2 +- .../components/function_row_spec.js | 2 +- .../serverless/components/functions_spec.js | 4 +- .../components/missing_prometheus_spec.js | 2 +- .../serverless/components/pod_box_spec.js | 2 +- .../serverless/components/url_spec.js | 2 +- .../sidebar/__snapshots__/todo_spec.js.snap | 2 +- spec/frontend/sidebar/assignees_spec.js | 200 + .../assignees/assignee_avatar_link_spec.js | 6 +- .../assignees/assignee_avatar_spec.js | 2 +- .../assignees/collapsed_assignee_list_spec.js | 2 +- .../uncollapsed_assignee_list_spec.js | 2 +- .../confidential_issue_sidebar_spec.js | 3 +- spec/frontend/sidebar/mock_data.js | 213 + spec/frontend/sidebar/todo_spec.js | 6 + spec/frontend/sidebar/user_data_mock.js | 6 +- spec/frontend/snippets/components/app_spec.js | 45 + .../components/snippet_header_spec.js | 171 + spec/frontend/snippets_spec.js | 70 + spec/frontend/test_setup.js | 11 +- spec/frontend/tracking_spec.js | 66 + spec/frontend/transfer_edit_spec.js | 2 +- .../components/artifacts_list_app_spec.js | 2 +- .../mr_collapsible_extension_spec.js | 2 +- .../deployment/deployment_mock_data.js | 32 + .../deployment/deployment_spec.js | 194 + .../deployment/deployment_view_button_spec.js | 118 + .../__snapshots__/expand_button_spec.js.snap | 5 + .../__snapshots__/memory_graph_spec.js.snap | 15 + .../__snapshots__/split_button_spec.js.snap | 1 + .../components/changed_file_icon_spec.js | 1 + .../components/clipboard_button_spec.js | 60 + .../vue_shared/components/commit_spec.js | 1 + .../viewers/image_viewer_spec.js | 2 +- .../dropdown/dropdown_search_input_spec.js | 55 + .../components/expand_button_spec.js | 188 + .../components/gl_toggle_vuex_spec.js | 2 +- .../components/issue/issue_assignees_spec.js | 1 + .../components/issue/issue_milestone_spec.js | 8 +- .../components/issue/issue_warning_spec.js | 2 +- .../issue/related_issuable_item_spec.js | 7 +- .../components/markdown/field_spec.js | 179 + .../components/markdown/header_spec.js | 90 +- .../markdown/suggestion_diff_header_spec.js | 19 +- .../components/memory_graph_spec.js | 53 + .../components/modal_copy_button_spec.js | 2 + .../notes/placeholder_system_note_spec.js | 2 +- .../components/notes/system_note_spec.js | 24 +- .../components/paginated_list_spec.js | 4 +- .../resizable_chart_container_spec.js | 2 +- .../sidebar/collapsed_calendar_icon_spec.js | 2 +- .../collapsed_grouped_date_picker_spec.js | 2 +- .../components/sidebar/date_picker_spec.js | 2 +- .../sidebar/labels_select/base_spec.js | 12 +- .../labels_select/dropdown_button_spec.js | 2 +- .../dropdown_create_label_spec.js | 2 +- .../labels_select/dropdown_footer_spec.js | 2 +- .../labels_select/dropdown_header_spec.js | 3 +- .../dropdown_search_input_spec.js | 3 +- .../labels_select/dropdown_title_spec.js | 3 +- .../dropdown_value_collapsed_spec.js | 2 +- .../labels_select/dropdown_value_spec.js | 106 +- .../components/sidebar/toggle_sidebar_spec.js | 2 +- .../components/table_pagination_spec.js | 324 +- .../components/time_ago_tooltip_spec.js | 48 +- .../user_avatar/user_avatar_image_spec.js | 2 +- .../user_avatar/user_avatar_link_spec.js | 113 + .../user_popover/user_popover_spec.js | 37 +- .../concerns/mutations/resolves_group_spec.rb | 1 + .../mutations/resolves_project_spec.rb | 1 + .../mutations/issues/set_confidential_spec.rb | 41 + .../mutations/issues/set_due_date_spec.rb | 41 + .../merge_requests/set_assignees_spec.rb | 2 + .../merge_requests/set_labels_spec.rb | 2 + .../merge_requests/set_locked_spec.rb | 2 + .../merge_requests/set_milestone_spec.rb | 2 + .../merge_requests/set_subscription_spec.rb | 2 + .../mutations/merge_requests/set_wip_spec.rb | 2 + .../mutations/todos/mark_all_done_spec.rb | 53 + .../graphql/mutations/todos/mark_done_spec.rb | 6 +- spec/graphql/mutations/todos/restore_spec.rb | 66 + spec/graphql/resolvers/base_resolver_spec.rb | 26 + .../concerns/resolves_pipelines_spec.rb | 1 + .../sentry_detailed_error_resolver_spec.rb | 63 + .../graphql/resolvers/issues_resolver_spec.rb | 18 +- .../projects/snippets_resolver_spec.rb | 83 + .../resolvers/snippets_resolver_spec.rb | 128 + spec/graphql/resolvers/todo_resolver_spec.rb | 100 +- .../resolvers/users/snippets_resolver_spec.rb | 84 + .../sentry_detailed_error_type_spec.rb | 37 + .../base_permission_type_spec.rb | 1 + .../types/permission_types/project_spec.rb | 2 +- .../types/permission_types/snippet_spec.rb | 15 + .../types/permission_types/user_spec.rb | 15 + spec/graphql/types/project_type_spec.rb | 14 +- spec/graphql/types/query_type_spec.rb | 2 +- spec/graphql/types/snippet_type_spec.rb | 19 + spec/graphql/types/user_type_spec.rb | 17 + spec/helpers/application_helper_spec.rb | 84 + spec/helpers/avatars_helper_spec.rb | 1 + spec/helpers/award_emoji_helper_spec.rb | 22 +- spec/helpers/clusters_helper_spec.rb | 8 +- ...ntainer_expiration_policies_helper_spec.rb | 47 + spec/helpers/diff_helper_spec.rb | 45 + spec/helpers/emails_helper_spec.rb | 22 + spec/helpers/events_helper_spec.rb | 1 + spec/helpers/git_helper_spec.rb | 159 + spec/helpers/gitlab_routing_helper_spec.rb | 94 + spec/helpers/groups_helper_spec.rb | 3 + spec/helpers/icons_helper_spec.rb | 2 + spec/helpers/issuables_helper_spec.rb | 23 +- spec/helpers/labels_helper_spec.rb | 19 +- spec/helpers/markup_helper_spec.rb | 2 + spec/helpers/merge_requests_helper_spec.rb | 26 + spec/helpers/nav_helper_spec.rb | 17 +- .../projects/error_tracking_helper_spec.rb | 5 + spec/helpers/projects_helper_spec.rb | 9 +- spec/helpers/search_helper_spec.rb | 4 +- spec/helpers/services_helper_spec.rb | 15 + spec/helpers/snippets_helper_spec.rb | 113 +- spec/helpers/visibility_level_helper_spec.rb | 10 +- spec/helpers/wiki_helper_spec.rb | 2 +- .../direct_upload_support_spec.rb | 17 +- .../badges/components/badge_form_spec.js | 8 +- .../badges/components/badge_list_row_spec.js | 6 +- .../badges/components/badge_list_spec.js | 2 +- .../badges/components/badge_settings_spec.js | 2 +- .../badges/components/badge_spec.js | 2 +- spec/javascripts/badges/dummy_badge.js | 4 +- spec/javascripts/badges/store/actions_spec.js | 10 +- .../balsamiq_viewer_integration_spec.js | 2 +- spec/javascripts/blob/pdf/index_spec.js | 2 +- .../javascripts/blob_edit/blob_bundle_spec.js | 2 +- spec/javascripts/boards/board_card_spec.js | 4 +- .../boards/board_list_common_spec.js | 5 +- spec/javascripts/boards/board_list_spec.js | 52 + .../boards/board_new_issue_spec.js | 3 +- spec/javascripts/boards/boards_store_spec.js | 511 - .../boards/components/board_form_spec.js | 2 +- .../boards/components/board_spec.js | 17 - .../boards/components/boards_selector_spec.js | 2 +- .../issue_card_inner_scoped_label_spec.js | 2 +- spec/javascripts/boards/issue_spec.js | 5 +- spec/javascripts/boards/list_spec.js | 14 +- spec/javascripts/boards/mock_data.js | 98 +- .../ci_variable_list/ci_variable_list_spec.js | 2 +- .../commit/pipelines/pipelines_spec.js | 4 +- .../gke_machine_type_dropdown_spec.js | 2 +- .../gke_project_id_dropdown_spec.js | 2 +- .../components/gke_zone_dropdown_spec.js | 2 +- .../cycle_analytics/banner_spec.js | 2 +- .../total_time_component_spec.js | 2 +- .../deploy_keys/components/app_spec.js | 2 +- spec/javascripts/diffs/components/app_spec.js | 69 +- .../diffs/components/compare_versions_spec.js | 145 - .../components/diff_expansion_cell_spec.js | 2 +- .../diffs/components/diff_file_spec.js | 4 +- .../diff_line_gutter_content_spec.js | 2 +- .../components/diff_line_note_form_spec.js | 2 +- .../diffs/components/diff_table_cell_spec.js | 2 +- .../diffs/components/file_row_stats_spec.js | 2 +- .../components/image_diff_overlay_spec.js | 2 +- .../inline_diff_expansion_row_spec.js | 2 +- .../components/inline_diff_table_row_spec.js | 2 +- .../diffs/components/inline_diff_view_spec.js | 2 +- .../parallel_diff_expansion_row_spec.js | 2 +- .../parallel_diff_table_row_spec.js | 2 +- .../components/parallel_diff_view_spec.js | 4 +- .../components/settings_dropdown_spec.js | 10 +- .../diffs/components/tree_list_spec.js | 2 +- .../diffs/mock_data/diff_with_commit.js | 10 +- .../diffs/mock_data/merge_request_diffs.js | 53 +- spec/javascripts/diffs/store/actions_spec.js | 98 +- .../javascripts/diffs/store/mutations_spec.js | 31 +- spec/javascripts/dropzone_input_spec.js | 2 +- .../environments/emtpy_state_spec.js | 2 +- .../environments/environment_actions_spec.js | 4 +- .../environments/environment_item_spec.js | 203 - .../environment_monitoring_spec.js | 32 - .../environments/environment_stop_spec.js | 23 - .../environment_terminal_button_spec.js | 35 - .../environments/environments_app_spec.js | 7 +- .../folder/environments_folder_view_spec.js | 8 +- .../feature_highlight_helper_spec.js | 3 +- .../feature_highlight_spec.js | 2 +- .../visual_token_value_spec.js | 2 +- .../frequent_items/components/app_spec.js | 4 +- .../frequent_items_list_item_spec.js | 62 +- .../components/frequent_items_list_spec.js | 2 +- .../frequent_items_search_input_spec.js | 18 +- spec/javascripts/frequent_items/mock_data.js | 2 +- spec/javascripts/gpg_badges_spec.js | 2 +- .../groups/components/group_item_spec.js | 2 +- .../groups/components/groups_spec.js | 2 +- .../groups/components/item_actions_spec.js | 2 +- .../groups/components/item_caret_spec.js | 3 +- .../groups/components/item_stats_spec.js | 2 +- .../components/item_stats_value_spec.js | 3 +- .../groups/components/item_type_icon_spec.js | 2 +- .../helpers/init_vue_mr_page_helper.js | 2 +- .../components/commit_sidebar/actions_spec.js | 4 +- .../components/commit_sidebar/form_spec.js | 6 +- .../commit_sidebar/list_collapsed_spec.js | 2 +- .../commit_sidebar/list_item_spec.js | 4 +- .../components/commit_sidebar/list_spec.js | 2 +- .../commit_sidebar/message_field_spec.js | 2 +- .../new_merge_request_option_spec.js | 4 +- .../commit_sidebar/radio_group_spec.js | 4 +- .../ide/components/file_row_extra_spec.js | 2 +- .../ide/components/file_templates/bar_spec.js | 2 +- .../ide/components/ide_side_bar_spec.js | 2 +- spec/javascripts/ide/components/ide_spec.js | 2 +- .../ide/components/ide_status_bar_spec.js | 2 +- .../components/nav_dropdown_button_spec.js | 4 +- .../ide/components/nav_dropdown_spec.js | 2 +- .../ide/components/new_dropdown/index_spec.js | 2 +- .../ide/components/new_dropdown/modal_spec.js | 2 +- .../components/new_dropdown/upload_spec.js | 2 +- .../components/repo_commit_section_spec.js | 2 +- .../components/shared/tokened_input_spec.js | 2 +- spec/javascripts/ide/helpers.js | 55 +- spec/javascripts/ide/stores/actions_spec.js | 59 +- .../ide/stores/modules/commit/actions_spec.js | 2 +- spec/javascripts/importer_status_spec.js | 2 +- .../issue_show/components/app_spec.js | 4 +- .../issue_show/components/description_spec.js | 2 +- .../jobs/components/job_app_spec.js | 4 +- .../components/job_container_item_spec.js | 2 +- .../jobs/components/job_log_spec.js | 2 +- .../components/manual_variables_form_spec.js | 26 +- .../jobs/components/stages_dropdown_spec.js | 2 +- .../jobs/mixins/delayed_job_mixin_spec.js | 2 +- spec/javascripts/jobs/store/actions_spec.js | 4 +- spec/javascripts/labels_issue_sidebar_spec.js | 2 +- spec/javascripts/landing_spec.js | 2 +- .../lib/utils/common_utils_spec.js | 24 +- spec/javascripts/line_highlighter_spec.js | 41 +- spec/javascripts/merge_request_spec.js | 1 + .../monitoring/components/dashboard_spec.js | 136 +- .../monitoring/components/graph_group_spec.js | 117 +- spec/javascripts/monitoring/mock_data.js | 253 +- spec/javascripts/monitoring/utils_spec.js | 345 - .../notebook/cells/markdown_spec.js | 4 +- .../notes/components/diff_with_note_spec.js | 2 +- .../components/discussion_counter_spec.js | 37 +- ...scussion_resolve_with_issue_button_spec.js | 2 +- .../note_actions/reply_button_spec.js | 9 +- .../notes/components/note_actions_spec.js | 4 +- .../notes/components/note_awards_list_spec.js | 60 + .../notes/components/note_form_spec.js | 2 +- .../components/noteable_discussion_spec.js | 5 +- .../notes/components/noteable_note_spec.js | 2 +- .../components/toggle_replies_widget_spec.js | 2 +- spec/javascripts/notes/stores/actions_spec.js | 43 +- .../index/components/stop_jobs_modal_spec.js | 3 +- .../components/promote_label_modal_spec.js | 2 +- .../components/delete_milestone_modal_spec.js | 3 +- .../promote_milestone_modal_spec.js | 2 +- spec/javascripts/pdf/index_spec.js | 2 +- spec/javascripts/pdf/page_spec.js | 2 +- .../javascripts/performance_bar/index_spec.js | 4 +- .../persistent_user_callout_spec.js | 2 +- .../graph/job_group_dropdown_spec.js | 2 +- .../pipelines/graph/linked_pipeline_spec.js | 116 - .../graph/linked_pipelines_column_spec.js | 6 +- .../graph/linked_pipelines_mock_data.js | 410 +- .../graph/stage_column_component_spec.js | 2 +- .../pipelines/pipeline_url_spec.js | 118 - .../pipelines/pipelines_actions_spec.js | 4 +- spec/javascripts/pipelines/pipelines_spec.js | 4 +- spec/javascripts/pipelines/stage_spec.js | 2 +- .../components/delete_account_modal_spec.js | 3 +- .../components/update_username_spec.js | 4 +- .../components/related_merge_requests_spec.js | 2 +- .../store/actions_spec.js | 2 +- .../releases/list/components/app_spec.js | 43 +- .../releases/list/store/actions_spec.js | 51 +- .../releases/list/store/mutations_spec.js | 12 +- spec/javascripts/releases/mock_data.js | 18 + .../components/modal_open_name_spec.js | 2 +- .../reports/components/summary_row_spec.js | 2 +- .../javascripts/reports/store/actions_spec.js | 4 +- .../sidebar/assignee_title_spec.js | 2 +- spec/javascripts/sidebar/assignees_spec.js | 248 - .../time_tracking/time_tracker_spec.js | 3 +- .../sidebar/lock/edit_form_buttons_spec.js | 2 +- .../sidebar/lock/lock_issue_sidebar_spec.js | 2 +- spec/javascripts/sidebar/mock_data.js | 214 +- spec/javascripts/sidebar/participants_spec.js | 2 +- .../sidebar/sidebar_assignees_spec.js | 2 +- .../sidebar/sidebar_subscriptions_spec.js | 2 +- .../javascripts/sidebar/subscriptions_spec.js | 4 +- spec/javascripts/smart_interval_spec.js | 2 +- spec/javascripts/test_bundle.js | 44 +- spec/javascripts/user_popovers_spec.js | 2 + .../components/deployment_spec.js | 313 - .../components/deployment_stop_button_spec.js | 95 + .../mr_widget_alert_message_spec.js | 2 +- .../components/mr_widget_author_spec.js | 2 +- .../components/mr_widget_author_time_spec.js | 2 +- .../components/mr_widget_header_spec.js | 2 +- .../components/mr_widget_memory_usage_spec.js | 3 +- .../components/mr_widget_merge_help_spec.js | 2 +- .../mr_widget_pipeline_container_spec.js | 7 +- .../components/mr_widget_pipeline_spec.js | 42 +- .../components/mr_widget_rebase_spec.js | 2 +- .../mr_widget_related_links_spec.js | 2 +- .../components/mr_widget_status_icon_spec.js | 2 +- .../components/review_app_link_spec.js | 11 + .../states/mr_widget_archived_spec.js | 2 +- .../mr_widget_auto_merge_enabled_spec.js | 4 +- .../states/mr_widget_checking_spec.js | 2 +- .../states/mr_widget_closed_spec.js | 2 +- .../states/mr_widget_conflicts_spec.js | 2 +- .../states/mr_widget_failed_to_merge_spec.js | 2 +- .../states/mr_widget_merged_spec.js | 2 +- .../states/mr_widget_merging_spec.js | 2 +- .../states/mr_widget_missing_branch_spec.js | 2 +- .../states/mr_widget_not_allowed_spec.js | 2 +- .../states/mr_widget_pipeline_blocked_spec.js | 2 +- .../states/mr_widget_pipeline_failed_spec.js | 2 +- .../states/mr_widget_ready_to_merge_spec.js | 35 +- .../states/mr_widget_sha_mismatch_spec.js | 2 +- .../mr_widget_unresolved_discussions_spec.js | 2 +- spec/javascripts/vue_mr_widget/mock_data.js | 26 +- .../vue_mr_widget/mr_widget_options_spec.js | 112 +- .../stores/artifacts_list/actions_spec.js | 4 +- .../vue_shared/components/bar_chart_spec.js | 2 +- .../components/ci_badge_link_spec.js | 2 +- .../vue_shared/components/ci_icon_spec.js | 2 +- .../components/clipboard_button_spec.js | 51 - .../content_viewer/content_viewer_spec.js | 4 +- .../components/deprecated_modal_2_spec.js | 2 +- .../components/deprecated_modal_spec.js | 2 +- .../diff_viewer/diff_viewer_spec.js | 2 +- .../viewers/image_diff_viewer_spec.js | 2 +- .../dropdown/dropdown_button_spec.js | 3 +- .../dropdown/dropdown_hidden_input_spec.js | 3 +- .../dropdown/dropdown_search_input_spec.js | 52 - .../components/expand_button_spec.js | 32 - .../components/file_finder/index_spec.js | 4 +- .../components/file_finder/item_spec.js | 2 +- .../vue_shared/components/file_row_spec.js | 2 +- .../filtered_search_dropdown_spec.js | 2 +- .../components/header_ci_component_spec.js | 2 +- .../vue_shared/components/icon_spec.js | 4 +- .../components/loading_button_spec.js | 2 +- .../components/markdown/field_spec.js | 173 - .../components/markdown/toolbar_spec.js | 2 +- .../components/memory_graph_spec.js | 131 - .../vue_shared/components/mock_data.js | 67 - .../components/navigation_tabs_spec.js | 2 +- .../pagination/graphql_pagination_spec.js | 8 +- .../components/panel_resizer_spec.js | 2 +- .../vue_shared/components/pikaday_spec.js | 2 +- .../components/project_avatar/default_spec.js | 4 +- .../project_list_item_spec.js | 2 +- .../project_selector/project_selector_spec.js | 4 +- .../components/smart_virtual_list_spec.js | 2 +- .../components/stacked_progress_bar_spec.js | 9 +- .../components/toggle_button_spec.js | 2 +- .../user_avatar/user_avatar_link_spec.js | 109 - .../user_avatar/user_avatar_svg_spec.js | 2 +- spec/javascripts/vue_shared/translate_spec.js | 2 +- .../vuex_shared/modules/modal/actions_spec.js | 2 +- spec/lib/api/entities/release_spec.rb | 40 + spec/lib/api/helpers/pagination_spec.rb | 56 +- .../helpers/related_resources_helpers_spec.rb | 1 + spec/lib/api/support/git_access_actor_spec.rb | 15 +- spec/lib/backup/manager_spec.rb | 36 +- spec/lib/backup/repository_spec.rb | 9 +- spec/lib/backup/uploads_spec.rb | 1 + ...adcast_message_sanitization_filter_spec.rb | 51 + .../filter/commit_reference_filter_spec.rb | 4 +- .../inline_metrics_redactor_filter_spec.rb | 26 +- .../lib/banzai/filter/markdown_filter_spec.rb | 8 +- .../filter/milestone_reference_filter_spec.rb | 12 +- .../filter/reference_redactor_filter_spec.rb | 8 +- .../filter/relative_link_filter_spec.rb | 12 +- .../banzai/filter/sanitization_filter_spec.rb | 180 +- .../filter/syntax_highlight_filter_spec.rb | 8 +- spec/lib/banzai/object_renderer_spec.rb | 8 +- .../broadcast_message_pipeline_spec.rb | 23 + .../lib/banzai/pipeline/wiki_pipeline_spec.rb | 34 +- .../reference_parser/commit_parser_spec.rb | 25 +- .../reference_parser/issue_parser_spec.rb | 1 + ...spec.rb => mentioned_group_parser_spec.rb} | 2 +- ...ec.rb => mentioned_project_parser_spec.rb} | 2 +- .../reference_parser/snippet_parser_spec.rb | 1 + .../reference_parser/user_parser_spec.rb | 20 +- spec/lib/banzai/reference_redactor_spec.rb | 10 +- spec/lib/bitbucket/connection_spec.rb | 16 +- .../project_url_constrainer_spec.rb | 2 + .../constraints/user_url_constrainer_spec.rb | 2 + spec/lib/container_registry/tag_spec.rb | 23 + spec/lib/extracts_path_spec.rb | 4 +- spec/lib/gitaly/server_spec.rb | 22 + ...ec.rb => application_rate_limiter_spec.rb} | 32 +- spec/lib/gitlab/asciidoc_spec.rb | 3 + ...h_finders_spec.rb => auth_finders_spec.rb} | 162 +- .../lib/gitlab/auth/current_user_mode_spec.rb | 139 +- spec/lib/gitlab/auth/ip_rate_limiter_spec.rb | 32 + spec/lib/gitlab/auth/ldap/access_spec.rb | 4 +- spec/lib/gitlab/auth/ldap/auth_hash_spec.rb | 4 +- .../gitlab/auth/ldap/authentication_spec.rb | 15 +- spec/lib/gitlab/auth/o_auth/user_spec.rb | 25 +- .../gitlab/auth/request_authenticator_spec.rb | 24 + spec/lib/gitlab/auth_spec.rb | 107 +- ...ll_project_fullpath_in_repo_config_spec.rb | 3 + .../bare_repository_import/importer_spec.rb | 4 +- .../branch_push_merge_commit_analyzer_spec.rb | 1 + .../cache/ci/project_pipeline_status_spec.rb | 4 +- spec/lib/gitlab/chat/command_spec.rb | 2 +- spec/lib/gitlab/checks/branch_check_spec.rb | 4 +- spec/lib/gitlab/checks/change_access_spec.rb | 20 +- spec/lib/gitlab/ci/ansi2json/result_spec.rb | 42 + spec/lib/gitlab/ci/ansi2json/style_spec.rb | 4 + .../ci/build/artifacts/metadata/entry_spec.rb | 1 + .../lib/gitlab/ci/build/context/build_spec.rb | 2 + .../gitlab/ci/build/context/global_spec.rb | 2 + .../ci/build/credentials/factory_spec.rb | 12 +- .../prerequisite/kubernetes_namespace_spec.rb | 99 +- .../gitlab/ci/config/entry/default_spec.rb | 3 +- .../ci/config/entry/environment_spec.rb | 53 + spec/lib/gitlab/ci/config/entry/job_spec.rb | 68 +- .../gitlab/ci/config/entry/kubernetes_spec.rb | 56 + spec/lib/gitlab/ci/config/entry/need_spec.rb | 174 +- spec/lib/gitlab/ci/config/entry/needs_spec.rb | 101 +- .../ci/config/external/file/project_spec.rb | 11 +- .../ci/config/external/file/remote_spec.rb | 5 +- .../ci/config/external/file/template_spec.rb | 5 +- .../gitlab/ci/config/external/mapper_spec.rb | 5 +- spec/lib/gitlab/ci/config/normalizer_spec.rb | 10 +- spec/lib/gitlab/ci/config_spec.rb | 32 +- spec/lib/gitlab/ci/cron_parser_spec.rb | 16 + .../gitlab/ci/pipeline/chain/build_spec.rb | 2 +- .../ci/pipeline/chain/config/content_spec.rb | 221 + .../pipeline/chain/validate/external_spec.rb | 103 + .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 2 +- .../lib/gitlab/ci/pipeline/seed/stage_spec.rb | 8 +- .../gitlab/ci/status/build/factory_spec.rb | 42 +- .../gitlab/ci/status/pipeline/blocked_spec.rb | 1 + .../gitlab/ci/status/pipeline/delayed_spec.rb | 1 + .../auto_devops_gitlab_ci_yaml_spec.rb | 110 + ...luster_applications_gitlab_ci_yaml_spec.rb | 39 + spec/lib/gitlab/ci/trace/chunked_io_spec.rb | 5 +- .../gitlab/ci/trace/section_parser_spec.rb | 1 + spec/lib/gitlab/ci/yaml_processor_spec.rb | 193 +- .../cleanup/orphan_job_artifact_files_spec.rb | 1 + .../cycle_analytics/shared_stage_spec.rb | 4 +- .../gitlab/cycle_analytics/usage_data_spec.rb | 4 +- spec/lib/gitlab/danger/changelog_spec.rb | 163 + spec/lib/gitlab/danger/danger_spec_helper.rb | 17 + spec/lib/gitlab/danger/helper_spec.rb | 17 +- spec/lib/gitlab/danger/teammate_spec.rb | 14 +- spec/lib/gitlab/data_builder/build_spec.rb | 7 +- spec/lib/gitlab/data_builder/pipeline_spec.rb | 1 + .../gitlab/database/migration_helpers_spec.rb | 199 +- .../database/obsolete_ignored_columns_spec.rb | 30 +- .../v1/rename_base_spec.rb | 2 + .../v1/rename_namespaces_spec.rb | 1 + .../project/create_service_spec.rb | 6 + spec/lib/gitlab/database_spec.rb | 27 + .../diff/deprecated_highlight_cache_spec.rb | 70 + spec/lib/gitlab/diff/diff_refs_spec.rb | 3 + .../merge_request_diff_batch_spec.rb | 4 + .../merge_request_diff_spec.rb | 39 +- spec/lib/gitlab/diff/highlight_cache_spec.rb | 123 +- spec/lib/gitlab/diff/highlight_spec.rb | 4 +- spec/lib/gitlab/diff/line_mapper_spec.rb | 1 + spec/lib/gitlab/diff/line_spec.rb | 46 +- spec/lib/gitlab/diff/parallel_diff_spec.rb | 1 + .../discussions_diff/highlight_cache_spec.rb | 9 + .../create_merge_request_handler_spec.rb | 5 +- spec/lib/gitlab/email/handler_spec.rb | 2 +- .../stack_trace_highlight_decorator_spec.rb | 68 + spec/lib/gitlab/error_tracking_spec.rb | 172 + .../gitlab/etag_caching/middleware_spec.rb | 16 +- spec/lib/gitlab/etag_caching/router_spec.rb | 9 + spec/lib/gitlab/experimentation_spec.rb | 4 +- .../external_authorization/client_spec.rb | 1 + .../external_authorization/response_spec.rb | 1 + spec/lib/gitlab/file_detector_spec.rb | 16 + spec/lib/gitlab/file_finder_spec.rb | 1 + spec/lib/gitlab/fogbugz_import/client_spec.rb | 4 +- .../gitlab/fogbugz_import/importer_spec.rb | 73 + .../lib/gitlab/gfm/reference_rewriter_spec.rb | 6 + .../git/attributes_at_ref_parser_spec.rb | 2 + spec/lib/gitlab/git/attributes_parser_spec.rb | 2 + spec/lib/gitlab/git/blame_spec.rb | 2 + spec/lib/gitlab/git/blob_spec.rb | 6 +- spec/lib/gitlab/git/branch_spec.rb | 6 +- spec/lib/gitlab/git/bundle_file_spec.rb | 2 + spec/lib/gitlab/git/commit_spec.rb | 42 +- spec/lib/gitlab/git/compare_spec.rb | 2 + spec/lib/gitlab/git/conflict/file_spec.rb | 6 +- spec/lib/gitlab/git/conflict/parser_spec.rb | 4 +- spec/lib/gitlab/git/diff_collection_spec.rb | 2 + spec/lib/gitlab/git/diff_spec.rb | 3 + spec/lib/gitlab/git/gitmodules_parser_spec.rb | 2 + spec/lib/gitlab/git/hook_env_spec.rb | 3 + spec/lib/gitlab/git/lfs_changes_spec.rb | 2 + spec/lib/gitlab/git/lfs_pointer_file_spec.rb | 2 + spec/lib/gitlab/git/merge_base_spec.rb | 1 + spec/lib/gitlab/git/pre_receive_error_spec.rb | 2 + spec/lib/gitlab/git/push_spec.rb | 2 + spec/lib/gitlab/git/raw_diff_change_spec.rb | 2 + spec/lib/gitlab/git/remote_mirror_spec.rb | 2 + spec/lib/gitlab/git/remote_repository_spec.rb | 3 + .../lib/gitlab/git/repository_cleaner_spec.rb | 2 + spec/lib/gitlab/git/repository_spec.rb | 3 + spec/lib/gitlab/git/tag_spec.rb | 2 + spec/lib/gitlab/git/tree_spec.rb | 6 +- spec/lib/gitlab/git/user_spec.rb | 4 + spec/lib/gitlab/git/util_spec.rb | 2 + spec/lib/gitlab/git/wiki_spec.rb | 2 + .../gitlab/git/wraps_gitaly_errors_spec.rb | 2 + spec/lib/gitlab/git_access_spec.rb | 4 +- .../gitaly_client/cleanup_service_spec.rb | 13 +- .../gitaly_client/commit_service_spec.rb | 1 + .../gitlab/gitaly_client/ref_service_spec.rb | 1 + spec/lib/gitlab/gitaly_client_spec.rb | 11 +- .../importer/diff_note_importer_spec.rb | 6 +- .../importer/issue_importer_spec.rb | 2 - .../importer/label_links_importer_spec.rb | 6 +- .../importer/labels_importer_spec.rb | 5 +- .../importer/milestones_importer_spec.rb | 5 +- .../importer/note_importer_spec.rb | 6 +- .../importer/pull_request_importer_spec.rb | 5 +- .../github_import/sequential_importer_spec.rb | 5 +- spec/lib/gitlab/gitlab_import/client_spec.rb | 14 +- .../lib/gitlab/gitlab_import/importer_spec.rb | 2 + .../gitlab_import/project_creator_spec.rb | 2 + .../gitlab/google_code_import/client_spec.rb | 3 + .../google_code_import/importer_spec.rb | 4 +- .../project_creator_spec.rb | 2 + spec/lib/gitlab/gpg/commit_spec.rb | 2 + .../gpg/invalid_gpg_signature_updater_spec.rb | 2 + spec/lib/gitlab/gpg_spec.rb | 28 +- .../gitlab/grafana_embed_usage_data_spec.rb | 70 + .../loggers/exception_logger_spec.rb | 2 + .../loggers/queue_duration_logger_spec.rb | 2 + .../authorize/authorize_field_service_spec.rb | 2 + .../authorize/authorize_resource_spec.rb | 3 + .../filterable_array_connection_spec.rb | 1 + .../connections/keyset/connection_spec.rb | 21 +- .../keyset/legacy_keyset_connection_spec.rb | 127 - .../loaders/batch_lfs_oid_loader_spec.rb | 2 + .../loaders/batch_model_loader_spec.rb | 2 + spec/lib/gitlab/graphs/commits_spec.rb | 2 + .../lib/gitlab/health_checks/db_check_spec.rb | 2 + .../gitlab/health_checks/gitaly_check_spec.rb | 2 + .../gitlab/health_checks/master_check_spec.rb | 2 + .../health_checks/probes/collection_spec.rb | 2 +- .../gitlab/health_checks/puma_check_spec.rb | 2 + .../health_checks/redis/cache_check_spec.rb | 2 + .../health_checks/redis/queues_check_spec.rb | 2 + .../health_checks/redis/redis_check_spec.rb | 2 + .../redis/shared_state_check_spec.rb | 2 + .../health_checks/simple_check_shared.rb | 2 + .../health_checks/unicorn_check_spec.rb | 2 + .../lib/gitlab/hook_data/base_builder_spec.rb | 3 + .../gitlab/hook_data/issuable_builder_spec.rb | 2 + .../gitlab/hook_data/issue_builder_spec.rb | 2 + .../hook_data/merge_request_builder_spec.rb | 2 + spec/lib/gitlab/http_io_spec.rb | 4 +- spec/lib/gitlab/i18n/metadata_entry_spec.rb | 2 + spec/lib/gitlab/i18n/po_linter_spec.rb | 2 + .../lib/gitlab/i18n/translation_entry_spec.rb | 3 + .../import/merge_request_helpers_spec.rb | 2 +- .../base_after_export_strategy_spec.rb | 2 + .../web_upload_strategy_spec.rb | 2 + .../after_export_strategy_builder_spec.rb | 2 + spec/lib/gitlab/import_export/all_models.yml | 18 + .../import_export/attribute_cleaner_spec.rb | 2 + .../attribute_configuration_spec.rb | 14 +- .../import_export/avatar_restorer_spec.rb | 12 +- .../gitlab/import_export/avatar_saver_spec.rb | 6 +- .../fast_hash_serializer_spec.rb | 2 + .../import_export/file_importer_spec.rb | 22 +- spec/lib/gitlab/import_export/fork_spec.rb | 6 +- .../group_project_object_builder_spec.rb | 2 + .../gitlab/import_export/hash_util_spec.rb | 2 + .../import_export/import_export_spec.rb | 2 + .../lib/gitlab/import_export/importer_spec.rb | 2 + .../gitlab/import_export/lfs_restorer_spec.rb | 3 + .../gitlab/import_export/lfs_saver_spec.rb | 6 +- .../import_export/members_mapper_spec.rb | 15 +- .../merge_request_parser_spec.rb | 10 +- .../import_export/model_configuration_spec.rb | 13 +- .../project_tree_restorer_spec.rb | 70 +- .../import_export/project_tree_saver_spec.rb | 2 + spec/lib/gitlab/import_export/reader_spec.rb | 21 +- .../references_configuration_spec.rb | 48 + .../import_export/relation_factory_spec.rb | 4 +- .../relation_tree_restorer_spec.rb | 67 + .../import_export/repo_restorer_spec.rb | 6 +- .../gitlab/import_export/repo_saver_spec.rb | 6 +- .../import_export/safe_model_attributes.yml | 38 +- spec/lib/gitlab/import_export/saver_spec.rb | 7 +- spec/lib/gitlab/import_export/shared_spec.rb | 24 +- .../import_export/uploads_manager_spec.rb | 6 +- .../import_export/uploads_restorer_spec.rb | 6 +- .../import_export/uploads_saver_spec.rb | 6 +- .../import_export/version_checker_spec.rb | 14 +- .../import_export/wiki_repo_saver_spec.rb | 6 +- .../import_export/wiki_restorer_spec.rb | 2 + .../gitlab/insecure_key_fingerprint_spec.rb | 9 +- spec/lib/gitlab/json_cache_spec.rb | 7 + spec/lib/gitlab/kubernetes/config_map_spec.rb | 3 + spec/lib/gitlab/kubernetes/helm/api_spec.rb | 2 + .../kubernetes/helm/base_command_spec.rb | 2 + .../kubernetes/helm/delete_command_spec.rb | 57 +- .../kubernetes/helm/init_command_spec.rb | 2 + .../kubernetes/helm/install_command_spec.rb | 86 +- .../kubernetes/helm/patch_command_spec.rb | 218 + spec/lib/gitlab/kubernetes/helm/pod_spec.rb | 2 + .../lib/gitlab/kubernetes/kubectl_cmd_spec.rb | 16 + spec/lib/gitlab/kubernetes/namespace_spec.rb | 3 + spec/lib/gitlab/kubernetes_spec.rb | 1 + .../branch_formatter_spec.rb | 2 + .../legacy_github_import/client_spec.rb | 2 + .../comment_formatter_spec.rb | 2 + .../legacy_github_import/importer_spec.rb | 4 + .../issuable_formatter_spec.rb | 2 + .../issue_formatter_spec.rb | 2 + .../label_formatter_spec.rb | 2 + .../milestone_formatter_spec.rb | 3 + .../project_creator_spec.rb | 2 + .../pull_request_formatter_spec.rb | 2 + spec/lib/gitlab/lets_encrypt/client_spec.rb | 2 + spec/lib/gitlab/mail_room/mail_room_spec.rb | 106 + .../active_record/extension_spec.rb | 5 +- .../dashboard/service_selector_spec.rb | 6 + .../gitlab/metrics/instrumentation_spec.rb | 8 +- .../metrics/requests_rack_middleware_spec.rb | 1 + .../metrics/samplers/unicorn_sampler_spec.rb | 1 + spec/lib/gitlab/middleware/go_spec.rb | 53 +- spec/lib/gitlab/pages_spec.rb | 4 +- .../lib/gitlab/pagination/keyset/page_spec.rb | 66 + .../gitlab/pagination/keyset/pager_spec.rb | 68 + .../pagination/keyset/request_context_spec.rb | 115 + spec/lib/gitlab/pagination/keyset_spec.rb | 62 + .../phabricator_import/cache/map_spec.rb | 1 + .../phabricator_import/importer_spec.rb | 1 + .../project_creator_spec.rb | 1 + .../phabricator_import/user_finder_spec.rb | 1 + .../lib/gitlab/project_search_results_spec.rb | 1 + spec/lib/gitlab/project_template_spec.rb | 1 + .../queries/deployment_query_spec.rb | 2 +- .../queries/knative_invocation_query_spec.rb | 6 +- .../gitlab/prometheus/query_variables_spec.rb | 2 +- spec/lib/gitlab/prometheus_client_spec.rb | 1 + .../puma_logging/json_formatter_spec.rb | 11 + .../gitlab/query_limiting/middleware_spec.rb | 5 +- .../substitution_definition_spec.rb | 1 + spec/lib/gitlab/regex_spec.rb | 6 + spec/lib/gitlab/request_context_spec.rb | 4 +- spec/lib/gitlab/sanitizers/svg_spec.rb | 4 +- spec/lib/gitlab/sentry_spec.rb | 123 - spec/lib/gitlab/sherlock/transaction_spec.rb | 5 +- .../correlation_injector_spec.rb | 4 +- .../gitlab/sidekiq_middleware/metrics_spec.rb | 253 +- spec/lib/gitlab/sidekiq_middleware_spec.rb | 143 + .../lib/gitlab/slash_commands/command_spec.rb | 2 + .../slash_commands/issue_search_spec.rb | 1 + .../presenters/issue_comment_spec.rb | 1 + spec/lib/gitlab/slash_commands/run_spec.rb | 35 +- spec/lib/gitlab/sql/pattern_spec.rb | 10 + spec/lib/gitlab/ssh_public_key_spec.rb | 28 + spec/lib/gitlab/string_range_marker_spec.rb | 2 +- spec/lib/gitlab/string_regex_marker_spec.rb | 4 +- spec/lib/gitlab/throttle_spec.rb | 87 + spec/lib/gitlab/tracking_spec.rb | 4 +- spec/lib/gitlab/url_builder_spec.rb | 20 + spec/lib/gitlab/usage_data_spec.rb | 25 + spec/lib/gitlab/visibility_level_spec.rb | 24 + spec/lib/gitlab/workhorse_spec.rb | 2 + spec/lib/google_api/auth_spec.rb | 5 +- .../google_api/cloud_platform/client_spec.rb | 7 +- spec/lib/json_web_token/rsa_token_spec.rb | 1 + spec/lib/marginalia_spec.rb | 173 + spec/lib/omni_auth/strategies/saml_spec.rb | 4 +- spec/lib/quality/helm_client_spec.rb | 25 +- spec/lib/quality/kubernetes_client_spec.rb | 74 +- spec/lib/quality/test_level_spec.rb | 4 +- spec/lib/sentry/client/projects_spec.rb | 119 + spec/lib/sentry/client_spec.rb | 253 +- spec/lib/sentry/pagination_parser_spec.rb | 63 + spec/mailers/emails/profile_spec.rb | 34 + spec/mailers/notify_spec.rb | 40 +- ..._code_owner_approval_from_projects_spec.rb | 56 + ...4345_add_admin_mode_protected_path_spec.rb | 50 + .../insert_project_hooks_plan_limits_spec.rb | 67 + ...ature_flags_scopes_target_user_ids_spec.rb | 137 + spec/migrations/nullify_users_role_spec.rb | 33 + .../update_minimum_password_length_spec.rb | 30 + spec/models/active_session_spec.rb | 111 +- spec/models/application_setting_spec.rb | 8 + spec/models/blob_spec.rb | 17 + spec/models/broadcast_message_spec.rb | 131 +- spec/models/ci/build_need_spec.rb | 7 + spec/models/ci/build_runner_session_spec.rb | 20 + spec/models/ci/build_spec.rb | 277 +- spec/models/ci/job_artifact_spec.rb | 20 +- spec/models/ci/legacy_stage_spec.rb | 14 +- spec/models/ci/persistent_ref_spec.rb | 16 +- spec/models/ci/pipeline_spec.rb | 291 +- spec/models/ci/stage_spec.rb | 10 +- .../clusters/applications/knative_spec.rb | 13 +- .../clusters/applications/prometheus_spec.rb | 100 +- .../clusters/applications/runner_spec.rb | 4 +- spec/models/clusters/cluster_spec.rb | 164 +- .../clusters/platforms/kubernetes_spec.rb | 20 + spec/models/commit_spec.rb | 41 +- spec/models/commit_status_spec.rb | 66 + spec/models/concerns/group_descendant_spec.rb | 4 +- .../models/concerns/ignorable_columns_spec.rb | 88 + spec/models/concerns/issuable_spec.rb | 89 + spec/models/concerns/issuable_states_spec.rb | 30 - spec/models/concerns/mentionable_spec.rb | 67 + spec/models/concerns/milestoneish_spec.rb | 17 + spec/models/concerns/reactive_caching_spec.rb | 12 + spec/models/concerns/safe_url_spec.rb | 52 + spec/models/concerns/sha256_attribute_spec.rb | 91 + .../container_expiration_policy_spec.rb | 41 + .../cycle_analytics/group_level_spec.rb | 4 +- .../cycle_analytics/project_level_spec.rb | 4 +- spec/models/deployment_spec.rb | 62 +- .../metric_spec.rb | 4 +- spec/models/diff_note_spec.rb | 4 +- spec/models/diff_viewer/base_spec.rb | 4 +- spec/models/environment_spec.rb | 80 +- spec/models/environment_status_spec.rb | 78 + .../project_error_tracking_setting_spec.rb | 81 +- spec/models/event_spec.rb | 4 +- spec/models/gpg_signature_spec.rb | 4 +- spec/models/hooks/web_hook_log_spec.rb | 19 + spec/models/issue/metrics_spec.rb | 27 + spec/models/issue_spec.rb | 2 + spec/models/key_spec.rb | 29 + spec/models/merge_request/pipelines_spec.rb | 160 + spec/models/merge_request_diff_spec.rb | 103 +- spec/models/merge_request_spec.rb | 372 +- spec/models/milestone_spec.rb | 34 + spec/models/namespace_spec.rb | 9 +- spec/models/note_spec.rb | 75 +- spec/models/oauth_access_grant_spec.rb | 17 + spec/models/pages_domain_spec.rb | 18 + spec/models/personal_access_token_spec.rb | 33 + spec/models/project_auto_devops_spec.rb | 13 +- spec/models/project_import_state_spec.rb | 12 +- .../project_services/asana_service_spec.rb | 35 +- .../project_services/jira_service_spec.rb | 14 +- .../prometheus_service_spec.rb | 55 +- .../unify_circuit_service_spec.rb | 10 + .../project_services/youtrack_service_spec.rb | 2 +- spec/models/project_snippet_spec.rb | 1 + spec/models/project_spec.rb | 158 +- spec/models/project_wiki_spec.rb | 4 +- spec/models/readme_blob_spec.rb | 16 + spec/models/release_spec.rb | 48 +- spec/models/repository_spec.rb | 50 +- spec/models/resource_label_event_spec.rb | 7 +- spec/models/sentry_issue_spec.rb | 18 + spec/models/serverless/domain_cluster_spec.rb | 22 + spec/models/snippet_spec.rb | 73 + spec/models/timelog_spec.rb | 26 + spec/models/upload_spec.rb | 3 +- .../user_mentions/commit_user_mention_spec.rb | 11 + .../user_mentions/issue_user_mention_spec.rb | 12 + .../merge_request_user_mention_spec.rb | 12 + .../snippet_user_mention_spec.rb | 12 + spec/models/user_spec.rb | 117 +- spec/policies/blob_policy_spec.rb | 31 + spec/policies/environment_policy_spec.rb | 2 +- spec/policies/global_policy_spec.rb | 18 + spec/policies/personal_snippet_policy_spec.rb | 3 +- spec/policies/project_policy_spec.rb | 6 +- spec/policies/project_snippet_policy_spec.rb | 115 +- spec/policies/wiki_page_policy_spec.rb | 31 + .../ci/legacy_stage_presenter_spec.rb | 47 + spec/presenters/ci/pipeline_presenter_spec.rb | 18 +- .../clusters/cluster_presenter_spec.rb | 39 +- .../metric_presenter_spec.rb | 4 +- .../group_clusterable_presenter_spec.rb | 6 + .../hooks/project_hook_presenter_spec.rb | 29 + .../hooks/service_hook_presenter_spec.rb | 30 + .../instance_clusterable_presenter_spec.rb | 14 +- spec/presenters/label_presenter_spec.rb | 1 + .../project_clusterable_presenter_spec.rb | 6 + spec/presenters/project_presenter_spec.rb | 1 + .../settings/deploy_keys_presenter_spec.rb | 61 +- spec/presenters/release_presenter_spec.rb | 6 +- .../sentry_detailed_error_presenter_spec.rb | 29 + spec/presenters/snippet_presenter_spec.rb | 146 + .../presenters/web_hook_log_presenter_spec.rb | 47 + spec/requests/api/award_emoji_spec.rb | 1 + spec/requests/api/badges_spec.rb | 23 +- spec/requests/api/boards_spec.rb | 1 + spec/requests/api/branches_spec.rb | 10 +- spec/requests/api/broadcast_messages_spec.rb | 22 +- spec/requests/api/deployments_spec.rb | 95 +- spec/requests/api/files_spec.rb | 15 +- .../mutations/award_emojis/add_spec.rb | 1 + .../mutations/award_emojis/toggle_spec.rb | 1 + .../mutations/issues/set_confidential_spec.rb | 51 + .../mutations/issues/set_due_date_spec.rb | 61 + .../graphql/mutations/snippets/create_spec.rb | 144 + .../mutations/snippets/destroy_spec.rb | 89 + .../mutations/snippets/mark_as_spam_spec.rb | 63 + .../graphql/mutations/snippets/update_spec.rb | 144 + .../mutations/todos/mark_all_done_spec.rb | 65 + .../graphql/mutations/todos/restore_spec.rb | 97 + .../sentry_detailed_error_request_spec.rb | 69 + spec/requests/api/graphql_spec.rb | 4 +- spec/requests/api/group_clusters_spec.rb | 4 +- spec/requests/api/groups_spec.rb | 50 +- spec/requests/api/helpers_spec.rb | 26 +- spec/requests/api/internal/base_spec.rb | 17 +- spec/requests/api/internal/pages_spec.rb | 11 +- .../api/issues/get_project_issues_spec.rb | 18 + spec/requests/api/issues/issues_spec.rb | 2 +- .../api/issues/post_projects_issues_spec.rb | 4 +- spec/requests/api/jobs_spec.rb | 8 +- spec/requests/api/keys_spec.rb | 70 +- spec/requests/api/merge_requests_spec.rb | 12 + spec/requests/api/notes_spec.rb | 2 +- spec/requests/api/pages/pages_spec.rb | 71 + spec/requests/api/pipelines_spec.rb | 16 +- spec/requests/api/project_clusters_spec.rb | 4 +- spec/requests/api/project_export_spec.rb | 27 +- spec/requests/api/project_import_spec.rb | 1 + spec/requests/api/project_snippets_spec.rb | 8 +- spec/requests/api/projects_spec.rb | 1 + spec/requests/api/releases_spec.rb | 37 + spec/requests/api/remote_mirrors_spec.rb | 41 + spec/requests/api/runner_spec.rb | 10 + spec/requests/api/services_spec.rb | 10 +- spec/requests/api/settings_spec.rb | 6 +- spec/requests/api/snippets_spec.rb | 16 +- spec/requests/api/tags_spec.rb | 4 +- spec/requests/api/users_spec.rb | 20 + spec/requests/git_http_spec.rb | 2 +- spec/requests/jwt_controller_spec.rb | 4 +- .../projects/merge_requests/creations_spec.rb | 28 + spec/requests/rack_attack_global_spec.rb | 28 +- spec/requests/user_avatar_spec.rb | 36 + spec/routing/environments_spec.rb | 4 +- .../instance_statistics_routing_spec.rb | 4 +- spec/routing/project_routing_spec.rb | 32 +- .../avoid_break_from_strong_memoize_spec.rb | 4 +- .../cop/avoid_return_from_blocks_spec.rb | 4 +- .../cop/graphql/authorize_types_spec.rb | 10 + spec/rubocop/cop/ignored_columns_spec.rb | 22 + spec/rubocop/cop/migration/add_index_spec.rb | 39 + .../cop/put_group_routes_under_scope_spec.rb | 48 + .../put_project_routes_under_scope_spec.rb | 48 + .../analytics_summary_serializer_spec.rb | 5 +- .../cluster_application_entity_spec.rb | 1 + spec/serializers/cluster_basic_entity_spec.rb | 2 +- spec/serializers/cluster_entity_spec.rb | 1 + spec/serializers/deployment_entity_spec.rb | 30 + .../serializers/diffs_metadata_entity_spec.rb | 12 +- spec/serializers/environment_entity_spec.rb | 9 + .../environment_status_entity_spec.rb | 5 +- spec/serializers/group_child_entity_spec.rb | 1 + .../group_child_serializer_spec.rb | 1 + spec/serializers/issue_entity_spec.rb | 32 + spec/serializers/job_entity_spec.rb | 6 +- ..._request_poll_cached_widget_entity_spec.rb | 202 + .../merge_request_poll_widget_entity_spec.rb | 180 + .../merge_request_serializer_spec.rb | 19 +- .../merge_request_widget_entity_spec.rb | 312 - spec/serializers/note_entity_spec.rb | 1 + spec/serializers/pipeline_entity_spec.rb | 23 + spec/serializers/pipeline_serializer_spec.rb | 10 +- spec/serializers/project_note_entity_spec.rb | 1 + spec/serializers/stage_entity_spec.rb | 4 +- spec/serializers/user_entity_spec.rb | 1 + ...er_registry_authentication_service_spec.rb | 4 +- .../services/award_emojis/add_service_spec.rb | 1 + .../award_emojis/destroy_service_spec.rb | 1 + .../award_emojis/toggle_service_spec.rb | 1 + .../boards/issues/create_service_spec.rb | 4 +- .../create_service_spec.rb} | 7 +- .../delete_merged_service_spec.rb} | 2 +- .../delete_service_spec.rb} | 5 +- .../branches/validate_new_service_spec.rb | 41 + .../services/ci/archive_trace_service_spec.rb | 10 +- .../ci/create_pipeline_service/needs_spec.rb | 175 + .../ci/create_pipeline_service/rules_spec.rb | 148 +- .../ci/create_pipeline_service_spec.rb | 53 +- .../ci/pipeline_trigger_service_spec.rb | 8 +- .../ci/play_manual_stage_service_spec.rb | 5 +- .../services/ci/prepare_build_service_spec.rb | 4 +- .../ci/process_pipeline_service_spec.rb | 6 +- spec/services/ci/register_job_service_spec.rb | 8 +- .../ci/retry_pipeline_service_spec.rb | 21 +- ...heck_installation_progress_service_spec.rb | 9 +- .../check_uninstall_progress_service_spec.rb | 8 +- .../ingress_modsecurity_usage_service_spec.rb | 196 + .../applications/patch_service_spec.rb | 4 +- .../applications/upgrade_service_spec.rb | 4 +- .../aws/authorize_role_service_spec.rb | 91 + .../aws/fetch_credentials_service_spec.rb | 18 +- .../clusters/aws/proxy_service_spec.rb | 210 - .../clusters/cleanup/app_service_spec.rb | 117 + .../cleanup/project_namespace_service_spec.rb | 85 + .../cleanup/service_account_service_spec.rb | 47 + .../services/clusters/destroy_service_spec.rb | 2 +- .../verify_provision_status_service_spec.rb | 4 +- ...create_or_update_namespace_service_spec.rb | 12 +- ..._or_update_service_account_service_spec.rb | 27 + .../fetch_kubernetes_token_service_spec.rb | 1 + spec/services/clusters/kubernetes_spec.rb | 19 + spec/services/cohorts_service_spec.rb | 24 +- spec/services/compare_service_spec.rb | 1 + .../deployments/after_create_service_spec.rb | 15 + .../deployments/create_service_spec.rb | 95 +- .../deployments/update_service_spec.rb | 6 +- .../discussions/resolve_service_spec.rb | 4 +- .../reset_auto_stop_service_spec.rb | 54 + .../list_issues_service_spec.rb | 18 +- spec/services/event_create_service_spec.rb | 6 +- spec/services/git/base_hooks_service_spec.rb | 101 + spec/services/git/branch_push_service_spec.rb | 1 + spec/services/groups/create_service_spec.rb | 2 +- spec/services/groups/destroy_service_spec.rb | 4 +- spec/services/groups/transfer_service_spec.rb | 4 +- .../issuable/bulk_update_service_spec.rb | 71 +- .../issues/import_csv_service_spec.rb | 16 +- spec/services/issues/move_service_spec.rb | 5 +- spec/services/issues/update_service_spec.rb | 6 +- .../services/issues/zoom_link_service_spec.rb | 69 +- spec/services/lfs/lock_file_service_spec.rb | 4 +- .../services/lfs/locks_finder_service_spec.rb | 4 +- spec/services/lfs/unlock_file_service_spec.rb | 5 +- .../create_pipeline_service_spec.rb | 62 +- .../merge_requests/get_urls_service_spec.rb | 8 + .../merge_requests/merge_service_spec.rb | 19 +- .../merge_to_ref_service_spec.rb | 2 +- .../merge_requests/refresh_service_spec.rb | 3 +- .../reload_diffs_service_spec.rb | 31 +- ...ed_discussion_notification_service_spec.rb | 1 + .../grafana_metric_embed_service_spec.rb | 61 + .../dashboard/pod_dashboard_service_spec.rb | 24 + .../system_dashboard_service_spec.rb | 16 +- .../metrics/sample_metrics_service_spec.rb | 42 + spec/services/notes/create_service_spec.rb | 37 +- spec/services/notification_service_spec.rb | 13 + spec/services/pages/delete_services_spec.rb | 27 + .../delete_tags_service_spec.rb | 1 + .../services/projects/destroy_service_spec.rb | 5 +- spec/services/projects/fork_service_spec.rb | 29 +- .../projects/forks_count_service_spec.rb | 1 + .../git_deduplication_service_spec.rb | 59 + .../open_issues_count_service_spec.rb | 1 + .../projects/unlink_fork_service_spec.rb | 169 +- spec/services/projects/update_service_spec.rb | 105 +- .../prometheus/adapter_service_spec.rb | 1 + ...roxy_variable_substitution_service_spec.rb | 143 + .../quick_actions/interpret_service_spec.rb | 21 +- spec/services/search/group_service_spec.rb | 1 + .../submit_usage_ping_service_spec.rb | 10 +- spec/services/system_note_service_spec.rb | 6 +- .../system_notes/issuables_service_spec.rb | 1 + spec/services/todo_service_spec.rb | 40 + .../services/users/keys_count_service_spec.rb | 1 + .../repair_ldap_blocked_service_spec.rb} | 3 +- .../services/users/set_status_service_spec.rb | 1 + spec/services/web_hook_service_spec.rb | 11 - .../wikis/create_attachment_service_spec.rb | 1 + spec/spec_helper.rb | 4 +- spec/support/capybara.rb | 1 + spec/support/database_cleaner.rb | 14 - spec/support/helpers/admin_mode_helpers.rb | 2 +- spec/support/helpers/graphql_helpers.rb | 4 + spec/support/helpers/kubernetes_helpers.rb | 89 +- spec/support/helpers/live_debugger.rb | 10 +- .../helpers/metrics_dashboard_helpers.rb | 15 +- .../helpers/position_tracer_helpers.rb | 2 +- spec/support/helpers/sentry_client_helpers.rb | 14 + spec/support/helpers/stub_gitlab_calls.rb | 18 +- spec/support/helpers/stub_object_storage.rb | 7 + .../import_export/configuration_helper.rb | 41 +- spec/support/matchers/graphql_matchers.rb | 19 + spec/support/matchers/navigation_matcher.rb | 2 +- .../policies/project_policy_shared_context.rb | 3 +- ...environments_controller_shared_examples.rb | 67 + .../uploads_actions_shared_examples.rb | 14 +- .../shared_examples/diff_file_collections.rb | 42 + ...creatable_merge_request_shared_examples.rb | 10 +- .../graphql/notes_creation_shared_examples.rb | 1 + .../sanitization_filter_shared_examples.rb | 182 + .../project_tree_restorer_shared_examples.rb | 8 +- .../lib/sentry/client_shared_examples.rb | 56 + .../mail_room_shared_examples.rb | 35 + .../mentionable_shared_examples.rb | 150 + ...equests_rendering_a_single_diff_version.rb | 4 + .../models/chat_service_shared_examples.rb | 2 +- ...ter_cleanup_worker_base_shared_examples.rb | 11 + .../models/user_mentions_shared_examples.rb | 40 + .../project_policy_shared_examples.rb | 4 +- .../duplicate_quick_action_shared_examples.rb | 36 - .../base_helm_service_shared_examples.rb | 14 +- spec/support/sidekiq.rb | 26 - spec/support/sidekiq_middleware.rb | 27 + spec/support/webmock.rb | 6 +- .../generate_sample_prometheus_data_spec.rb | 34 + .../gitlab/import_export/import_rake_spec.rb | 112 + spec/uploaders/file_mover_spec.rb | 1 + spec/uploaders/object_storage_spec.rb | 4 +- .../addressable_url_validator_spec.rb | 1 + .../validators/devise_email_validator_spec.rb | 1 + .../qualified_domain_array_validator_spec.rb | 4 +- .../admin/sessions/new.html.haml_spec.rb | 39 +- .../gitlab_projects/new.html.haml_spec.rb | 31 + .../layouts/application.html.haml_spec.rb | 48 + .../layouts/header/_new_dropdown.haml_spec.rb | 10 + .../commits/_commit.html.haml_spec.rb | 7 +- spec/views/projects/edit.html.haml_spec.rb | 3 +- .../pages_domains/show.html.haml_spec.rb | 1 + .../projects/services/edit.html.haml_spec.rb | 31 + spec/views/projects/show.html.haml_spec.rb | 2 +- .../projects/tags/index.html.haml_spec.rb | 2 +- spec/views/search/_results.html.haml_spec.rb | 2 +- .../ci/archive_traces_cron_worker_spec.rb | 2 +- .../activate_service_worker_spec.rb | 52 + .../deactivate_service_worker_spec.rb | 68 + .../clusters/cleanup/app_worker_spec.rb | 41 + .../cleanup/project_namespace_worker_spec.rb | 52 + .../cleanup/service_account_worker_spec.rb | 27 + .../delete_merged_branches_worker_spec.rb | 4 +- spec/workers/expire_job_cache_worker_spec.rb | 1 + .../expire_pipeline_cache_worker_spec.rb | 1 + .../project_migrate_worker_spec.rb | 79 +- .../notification_service_worker_spec.rb | 1 + .../expiring_worker_spec.rb | 41 + spec/workers/pipeline_process_worker_spec.rb | 4 +- spec/workers/process_commit_worker_spec.rb | 51 +- .../repository_check/batch_worker_spec.rb | 1 + .../run_pipeline_schedule_worker_spec.rb | 6 +- spec/workers/stuck_ci_jobs_worker_spec.rb | 4 +- .../aws/iam/eks_cluster_read_only_policy.json | 17 + vendor/gitignore/C++.gitignore | 0 vendor/gitignore/Java.gitignore | 0 vendor/project_templates/hexo.tar.gz | Bin 547220 -> 547436 bytes vendor/project_templates/hugo.tar.gz | Bin 1047952 -> 1048450 bytes vendor/project_templates/jekyll.tar.gz | Bin 60086 -> 60465 bytes vendor/project_templates/salesforcedx.tar.gz | Bin 0 -> 432083 bytes yarn.lock | 289 +- 3205 files changed, 67527 insertions(+), 153776 deletions(-) create mode 100644 .gitlab/ci/cache-repo.gitlab-ci.yml create mode 100644 .gitlab/ci/notifications.gitlab-ci.yml create mode 100644 .gitlab/issue_templates/Productivity Improvement.md create mode 100644 app/assets/javascripts/blob/openapi/index.js create mode 100644 app/assets/javascripts/blob/openapi_viewer.js create mode 100644 app/assets/javascripts/boards/components/issue_count.vue create mode 100644 app/assets/javascripts/boards/mixins/is_wip_limits.js delete mode 100644 app/assets/javascripts/boards/services/board_service.js create mode 100644 app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue delete mode 100644 app/assets/javascripts/error_tracking/store/list/getters.js create mode 100644 app/assets/javascripts/filtered_search/.eslintrc.yml create mode 100644 app/assets/javascripts/groups/mixins/is_project_pending_removal.js create mode 100644 app/assets/javascripts/image_diff/.eslintrc.yml delete mode 100644 app/assets/javascripts/lib/utils/logoutput_behaviours.js create mode 100644 app/assets/javascripts/monitoring/components/group_empty_state.vue create mode 100644 app/assets/javascripts/monitoring/monitoring_tracking_helper.js create mode 100644 app/assets/javascripts/monitoring/stores/getters.js create mode 100644 app/assets/javascripts/mr_tabs_popover/components/popover.vue create mode 100644 app/assets/javascripts/mr_tabs_popover/index.js rename app/assets/javascripts/pages/instance_statistics/{conversational_development_index => dev_ops_score}/index.js (100%) rename app/assets/javascripts/pages/projects/pages_domains/{edit => show}/index.js (100%) rename app/assets/javascripts/registry/{ => list}/components/app.vue (98%) rename app/assets/javascripts/registry/{ => list}/components/collapsible_container.vue (95%) rename app/assets/javascripts/registry/{ => list}/components/group_empty_state.vue (100%) rename app/assets/javascripts/registry/{ => list}/components/project_empty_state.vue (100%) rename app/assets/javascripts/registry/{ => list}/components/table_registry.vue (97%) rename app/assets/javascripts/registry/{ => list}/constants.js (92%) rename app/assets/javascripts/registry/{ => list}/index.js (95%) rename app/assets/javascripts/registry/{ => list}/stores/actions.js (100%) rename app/assets/javascripts/registry/{ => list}/stores/getters.js (100%) rename app/assets/javascripts/registry/{ => list}/stores/index.js (100%) rename app/assets/javascripts/registry/{ => list}/stores/mutation_types.js (100%) rename app/assets/javascripts/registry/{ => list}/stores/mutations.js (100%) rename app/assets/javascripts/registry/{ => list}/stores/state.js (100%) create mode 100644 app/assets/javascripts/registry/settings/components/registry_settings_app.vue create mode 100644 app/assets/javascripts/registry/settings/registry_settings_bundle.js create mode 100644 app/assets/javascripts/registry/settings/stores/actions.js create mode 100644 app/assets/javascripts/registry/settings/stores/index.js create mode 100644 app/assets/javascripts/registry/settings/stores/mutation_types.js create mode 100644 app/assets/javascripts/registry/settings/stores/mutations.js create mode 100644 app/assets/javascripts/registry/settings/stores/state.js create mode 100644 app/assets/javascripts/releases/list/components/evidence_block.vue create mode 100644 app/assets/javascripts/releases/list/components/release_block_milestone_info.vue create mode 100644 app/assets/javascripts/releases/list/constants.js create mode 100644 app/assets/javascripts/snippets/components/app.vue create mode 100644 app/assets/javascripts/snippets/components/snippet_header.vue create mode 100644 app/assets/javascripts/snippets/fragments/author.fragment.graphql create mode 100644 app/assets/javascripts/snippets/fragments/project.fragment.graphql create mode 100644 app/assets/javascripts/snippets/fragments/snippetBase.fragment.graphql create mode 100644 app/assets/javascripts/snippets/index.js create mode 100644 app/assets/javascripts/snippets/mutations/deleteSnippet.mutation.graphql create mode 100644 app/assets/javascripts/snippets/queries/projectPermissions.query.graphql create mode 100644 app/assets/javascripts/snippets/queries/snippet.query.graphql create mode 100644 app/assets/javascripts/snippets/queries/userPermissions.query.graphql delete mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment/constants.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_stop_button.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_view_button.vue rename app/assets/javascripts/vue_merge_request_widget/components/{ => deployment}/memory_usage.vue (91%) create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/loading.vue create mode 100644 app/assets/stylesheets/components/release_block_milestone_info.scss delete mode 100644 app/assets/stylesheets/components/toast.scss rename app/assets/stylesheets/pages/{convdev_index.scss => dev_ops_score.scss} (91%) create mode 100644 app/assets/stylesheets/pages/error_tracking_list.scss create mode 100644 app/controllers/concerns/initializes_current_user_mode.rb delete mode 100644 app/controllers/instance_statistics/conversational_development_index_controller.rb create mode 100644 app/controllers/instance_statistics/dev_ops_score_controller.rb create mode 100644 app/controllers/projects/environments/sample_metrics_controller.rb create mode 100644 app/controllers/projects/service_hook_logs_controller.rb create mode 100644 app/finders/clusters/knative_serving_namespace_finder.rb create mode 100644 app/finders/clusters/knative_version_role_binding_finder.rb create mode 100644 app/finders/deployments_finder.rb create mode 100644 app/finders/jobs_finder.rb create mode 100644 app/finders/keys_finder.rb create mode 100644 app/graphql/mutations/issues/base.rb create mode 100644 app/graphql/mutations/issues/set_confidential.rb create mode 100644 app/graphql/mutations/issues/set_due_date.rb create mode 100644 app/graphql/mutations/snippets/base.rb create mode 100644 app/graphql/mutations/snippets/create.rb create mode 100644 app/graphql/mutations/snippets/destroy.rb create mode 100644 app/graphql/mutations/snippets/mark_as_spam.rb create mode 100644 app/graphql/mutations/snippets/update.rb create mode 100644 app/graphql/mutations/todos/mark_all_done.rb create mode 100644 app/graphql/mutations/todos/restore.rb create mode 100644 app/graphql/resolvers/concerns/resolves_snippets.rb create mode 100644 app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb create mode 100644 app/graphql/resolvers/projects/snippets_resolver.rb create mode 100644 app/graphql/resolvers/snippets_resolver.rb create mode 100644 app/graphql/resolvers/users/snippets_resolver.rb create mode 100644 app/graphql/types/error_tracking/sentry_detailed_error_type.rb create mode 100644 app/graphql/types/error_tracking/sentry_error_frequency_type.rb create mode 100644 app/graphql/types/error_tracking/sentry_error_status_enum.rb create mode 100644 app/graphql/types/permission_types/snippet.rb create mode 100644 app/graphql/types/permission_types/user.rb create mode 100644 app/graphql/types/snippet_type.rb create mode 100644 app/graphql/types/snippets/type_enum.rb create mode 100644 app/graphql/types/snippets/visibility_scopes_enum.rb create mode 100644 app/graphql/types/visibility_levels_enum.rb create mode 100644 app/helpers/container_expiration_policies_helper.rb rename app/helpers/{conversational_development_index_helper.rb => dev_ops_score_helper.rb} (86%) create mode 100644 app/models/blob_viewer/open_api.rb create mode 100644 app/models/commit_user_mention.rb create mode 100644 app/models/concerns/acts_as_paginated_diff.rb create mode 100644 app/models/concerns/blob_active_model.rb create mode 100644 app/models/concerns/ignorable_columns.rb delete mode 100644 app/models/concerns/issuable_states.rb create mode 100644 app/models/concerns/safe_url.rb create mode 100644 app/models/concerns/sha256_attribute.rb create mode 100644 app/models/container_expiration_policy.rb rename app/models/{conversational_development_index => dev_ops_score}/card.rb (93%) rename app/models/{conversational_development_index => dev_ops_score}/idea_to_production_step.rb (91%) rename app/models/{conversational_development_index => dev_ops_score}/metric.rb (91%) create mode 100644 app/models/import_failure.rb create mode 100644 app/models/issue_user_mention.rb create mode 100644 app/models/merge_request/pipelines.rb create mode 100644 app/models/merge_request_user_mention.rb create mode 100644 app/models/project_services/unify_circuit_service.rb create mode 100644 app/models/sentry_issue.rb create mode 100644 app/models/serverless/domain_cluster.rb create mode 100644 app/models/snippet_user_mention.rb create mode 100644 app/models/user_mention.rb create mode 100644 app/policies/blob_policy.rb create mode 100644 app/policies/error_tracking/detailed_error_policy.rb create mode 100644 app/policies/wiki_page_policy.rb create mode 100644 app/presenters/ci/legacy_stage_presenter.rb rename app/presenters/{conversational_development_index => dev_ops_score}/metric_presenter.rb (99%) create mode 100644 app/presenters/hooks/project_hook_presenter.rb create mode 100644 app/presenters/hooks/service_hook_presenter.rb create mode 100644 app/presenters/sentry_detailed_error_presenter.rb create mode 100644 app/presenters/snippet_presenter.rb create mode 100644 app/presenters/web_hook_log_presenter.rb create mode 100644 app/services/branches/create_service.rb create mode 100644 app/services/branches/delete_merged_service.rb create mode 100644 app/services/branches/delete_service.rb create mode 100644 app/services/branches/validate_new_service.rb create mode 100644 app/services/clusters/applications/ingress_modsecurity_usage_service.rb create mode 100644 app/services/clusters/aws/authorize_role_service.rb delete mode 100644 app/services/clusters/aws/proxy_service.rb create mode 100644 app/services/clusters/cleanup/app_service.rb create mode 100644 app/services/clusters/cleanup/base_service.rb create mode 100644 app/services/clusters/cleanup/project_namespace_service.rb create mode 100644 app/services/clusters/cleanup/service_account_service.rb rename app/services/clusters/{kubernetes => }/kubernetes.rb (76%) delete mode 100644 app/services/create_branch_service.rb delete mode 100644 app/services/delete_branch_service.rb delete mode 100644 app/services/delete_merged_branches_service.rb create mode 100644 app/services/environments/reset_auto_stop_service.rb create mode 100644 app/services/metrics/dashboard/pod_dashboard_service.rb create mode 100644 app/services/metrics/dashboard/predefined_dashboard_service.rb create mode 100644 app/services/metrics/sample_metrics_service.rb create mode 100644 app/services/pages/delete_service.rb create mode 100644 app/services/prometheus/proxy_variable_substitution_service.rb delete mode 100644 app/services/repair_ldap_blocked_user_service.rb create mode 100644 app/services/users/repair_ldap_blocked_service.rb delete mode 100644 app/services/validate_new_branch_service.rb create mode 100644 app/views/admin/projects/_archived.html.haml delete mode 100644 app/views/admin/sessions/_signin_box.html.haml delete mode 100644 app/views/clusters/clusters/gcp/_signin_with_google_button.html.haml delete mode 100644 app/views/instance_statistics/conversational_development_index/_callout.html.haml create mode 100644 app/views/instance_statistics/dev_ops_score/_callout.html.haml rename app/views/instance_statistics/{conversational_development_index => dev_ops_score}/_card.html.haml (85%) rename app/views/instance_statistics/{conversational_development_index => dev_ops_score}/_disabled.html.haml (93%) rename app/views/instance_statistics/{conversational_development_index => dev_ops_score}/_no_data.html.haml (70%) rename app/views/instance_statistics/{conversational_development_index => dev_ops_score}/index.html.haml (54%) create mode 100644 app/views/notify/access_token_about_to_expire_email.html.haml create mode 100644 app/views/notify/access_token_about_to_expire_email.text.erb create mode 100644 app/views/projects/_archived_notice.html.haml create mode 100644 app/views/projects/_remove.html.haml create mode 100644 app/views/projects/_visibility_modal.html.haml create mode 100644 app/views/projects/blob/viewers/_openapi.html.haml delete mode 100644 app/views/projects/environments/empty_logs.html.haml create mode 100644 app/views/projects/merge_requests/_awards_block.html.haml create mode 100644 app/views/projects/merge_requests/_description.html.haml create mode 100644 app/views/projects/merge_requests/_discussion_filter.html.haml create mode 100644 app/views/projects/merge_requests/_widget.html.haml create mode 100644 app/views/projects/merge_requests/tabs/_pane.html.haml create mode 100644 app/views/projects/merge_requests/tabs/_tab.html.haml delete mode 100644 app/views/projects/pages_domains/edit.html.haml create mode 100644 app/views/projects/registry/settings/_index.haml create mode 100644 app/views/projects/settings/_archive.html.haml delete mode 100644 app/views/projects/settings/integrations/_project_hook.html.haml create mode 100644 app/views/shared/buttons/_project_feature_toggle.html.haml rename app/views/shared/icons/{_convdev_no_data.svg => _dev_ops_score_no_data.svg} (100%) rename app/views/shared/icons/{_convdev_no_index.svg => _dev_ops_score_no_index.svg} (100%) rename app/views/shared/icons/{_convdev_overview.svg => _dev_ops_score_overview.svg} (100%) create mode 100644 app/views/shared/projects/_archived.html.haml create mode 100644 app/views/shared/web_hooks/_hook.html.haml create mode 100644 app/views/shared/web_hooks/_index.html.haml create mode 100644 app/views/shared/web_hooks/_title_and_docs.html.haml create mode 100644 app/views/users/_profile_basic_info.html.haml create mode 100644 app/workers/clusters/applications/activate_service_worker.rb create mode 100644 app/workers/clusters/applications/deactivate_service_worker.rb create mode 100644 app/workers/concerns/cluster_cleanup_methods.rb create mode 100644 app/workers/personal_access_tokens/expiring_worker.rb create mode 100644 changelogs/unreleased/20709-add-runner-info-in-build-event.yaml create mode 100644 changelogs/unreleased/20978-add-allow-failure-in-pipeline-event.yaml create mode 100644 config/helpers/vendor_dll_hash.js create mode 100644 config/initializers/0_marginalia.rb create mode 100644 config/initializers/devise_dynamic_password_length_validation.rb delete mode 100644 config/initializers/rack_attack_git_basic_auth.rb create mode 100644 config/initializers/snowplow_tracker.rb create mode 100644 config/knative/api_groups.yml delete mode 100644 config/knative/api_resources.yml create mode 100644 config/prometheus/pod_metrics.yml create mode 100644 config/webpack.vendor.config.js create mode 100644 danger/plugins/changelog.rb rename db/fixtures/development/{21_conversational_development_index_metrics.rb => 21_dev_ops_score_metrics.rb} (77%) create mode 100644 db/migrate/20190606202100_add_name_to_badges.rb create mode 100644 db/migrate/20190920122420_add_max_personal_access_token_lifetime_to_application_settings.rb create mode 100644 db/migrate/20191003130045_create_issue_user_mentions.rb create mode 100644 db/migrate/20191003150045_create_merge_request_user_mentions.rb create mode 100644 db/migrate/20191003200045_create_epic_user_mentions.rb create mode 100644 db/migrate/20191003250045_create_commit_user_mentions.rb create mode 100644 db/migrate/20191003300045_create_snippet_user_mentions.rb create mode 100644 db/migrate/20191003350045_create_design_user_mentions.rb create mode 100644 db/migrate/20191004151428_add_auto_stop_in_to_environments.rb create mode 100644 db/migrate/20191014123159_add_expire_notification_delivered_to_personal_access_tokens.rb create mode 100644 db/migrate/20191023093207_add_comment_actions_to_services.rb create mode 100644 db/migrate/20191025092748_add_secret_token_to_snippet.rb create mode 100644 db/migrate/20191026120008_add_promoted_to_epic_to_issues.rb create mode 100644 db/migrate/20191026120112_add_promoted_to_epic_to_issues_index.rb create mode 100644 db/migrate/20191028130054_add_max_issue_weight_to_list.rb create mode 100644 db/migrate/20191105134413_create_service_desk_settings.rb create mode 100644 db/migrate/20191105155113_add_secret_to_snippet.rb create mode 100644 db/migrate/20191106144901_add_state_to_merge_trains.rb create mode 100644 db/migrate/20191106150931_add_timelog_spent_at_index.rb create mode 100644 db/migrate/20191107064946_update_oauth_open_id_requests_foreign_keys.rb create mode 100644 db/migrate/20191108031900_create_package_build_info.rb create mode 100644 db/migrate/20191111175230_add_index_on_ci_pipelines_updated_at.rb create mode 100644 db/migrate/20191112090226_add_artifacts_to_ci_build_need.rb create mode 100644 db/migrate/20191112105448_add_index_on_personal_access_tokens_user_id_and_expires_at.rb create mode 100644 db/migrate/20191114132259_add_mentions_disabled_to_namespaces.rb create mode 100644 db/migrate/20191115001123_add_index_to_mod_sec_ci_variables.rb create mode 100644 db/migrate/20191115001843_add_index_to_mod_sec_ci_pipeline_variables.rb create mode 100644 db/migrate/20191118053631_add_group_deletion_schedules.rb create mode 100644 db/migrate/20191118155702_add_index_on_status_to_merge_trains.rb create mode 100644 db/migrate/20191118173522_add_snippet_size_limit_to_application_settings.rb create mode 100644 db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb create mode 100644 db/migrate/20191119023952_add_created_at_index_to_snippets.rb create mode 100644 db/migrate/20191119220425_rename_software_license_policies_approval_status_to_classification.rb create mode 100644 db/migrate/20191119231621_create_container_expiration_policies.rb create mode 100644 db/migrate/20191120200015_add_index_to_grafana_integrations.rb create mode 100644 db/migrate/20191121111621_create_packages_dependencies.rb create mode 100644 db/migrate/20191121121947_create_packages_dependency_links.rb create mode 100644 db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb create mode 100644 db/migrate/20191121193110_add_issue_links_type.rb create mode 100644 db/migrate/20191122161519_create_sentry_issues_table.rb create mode 100644 db/migrate/20191123062354_add_minimum_password_length_to_application_settings.rb create mode 100644 db/migrate/20191124150431_change_label_id_index_to_include_action_on_label_events.rb create mode 100644 db/migrate/20191125114345_add_admin_mode_protected_path.rb create mode 100644 db/migrate/20191125133353_add_target_path_to_broadcast_message.rb create mode 100644 db/migrate/20191125140458_create_import_failures.rb create mode 100644 db/migrate/20191127030005_create_serverless_domain_cluster.rb create mode 100644 db/migrate/20191127151619_create_gitlab_subscription_histories.rb create mode 100644 db/migrate/20191127151629_add_trial_starts_on_to_gitlab_subscriptions.rb create mode 100644 db/migrate/20191127221608_add_wildcard_and_domain_type_to_pages_domains.rb create mode 100644 db/migrate/20191129134844_add_broadcast_type_to_broadcast_message.rb create mode 100644 db/migrate/20191202181924_add_environment_auto_stop_in_to_ci_builds_metadata.rb create mode 100644 db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb create mode 100644 db/migrate/20191204070713_change_updated_at_index_and_add_index_to_id_on_deployments.rb create mode 100644 db/migrate/20191204093410_add_label_project_group_partial_indexes.rb create mode 100644 db/migrate/20191204192726_add_design_disk_path_to_geo_hashed_storage_migrated_events.rb create mode 100644 db/migrate/20191205060723_add_index_to_keys.rb create mode 100644 db/migrate/20191205094702_add_index_for_cross_projects_dependencies_to_ci_builds.rb create mode 100644 db/migrate/20191205145647_add_index_to_projects_deploy_keys_deploy_key.rb create mode 100644 db/migrate/20191206022133_add_indexes_to_pages_domains_on_wildcard_and_domain_type.rb create mode 100644 db/migrate/20191206122926_update_index_for_pool_repositories.rb create mode 100644 db/migrate/20191208071111_add_fingerprint_sha256_to_key.rb create mode 100644 db/migrate/20191208071112_add_fingerprint_sha256_index_to_key.rb create mode 100644 db/migrate/20191212140117_change_commit_user_mentions_commit_id_column_type.rb create mode 100644 db/migrate/20191213104838_add_service_desk_username.rb create mode 100644 db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb create mode 100644 db/migrate/20191216094119_add_id_to_plan_limits.rb create mode 100644 db/migrate/20191216183531_add_project_hooks_to_plan_limits.rb create mode 100644 db/migrate/20191216183532_insert_project_hooks_plan_limits.rb create mode 100644 db/post_migrate/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb create mode 100644 db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb create mode 100644 db/post_migrate/20191104142124_nullify_users_role.rb create mode 100644 db/post_migrate/20191108202723_add_unique_constraint_to_software_licenses.rb create mode 100644 db/post_migrate/20191112023159_complete_pages_metadata_migration.rb create mode 100644 db/post_migrate/20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb create mode 100644 db/post_migrate/20191119221041_cleanup_software_license_policies_classification_rename.rb create mode 100644 db/post_migrate/20191121122856_drop_packages_package_metadata_table.rb create mode 100644 db/post_migrate/20191125024005_cleanup_deploy_access_levels_for_removed_groups.rb create mode 100644 db/post_migrate/20191202031812_drop_operations_feature_flags_clients_token.rb create mode 100644 db/post_migrate/20191205084057_update_minimum_password_length.rb create mode 100644 db/post_migrate/20191209215316_knative_0_9_prometheus_update.rb create mode 100644 db/post_migrate/20191212162434_change_commit_user_mentions_commit_id_column_type_cleanup.rb create mode 100644 doc/administration/external_pipeline_validation.md create mode 100644 doc/administration/gitaly/img/gitlab_gitaly_version_mismatch_v12_4.png create mode 100644 doc/administration/monitoring/performance/img/performance_bar_frontend.png create mode 100644 doc/administration/monitoring/prometheus/registry_exporter.md create mode 100644 doc/administration/snippets/index.md create mode 100644 doc/api/graphql/getting_started.md create mode 100644 doc/api/pages.md delete mode 100644 doc/ci/img/collapsible_log.png create mode 100644 doc/ci/img/collapsible_log_v12_6.png create mode 100644 doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_confirmation_dialog_v12_6.png create mode 100644 doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/img/merge_train_immediate_merge_v12_6.png create mode 100644 doc/development/cycle_analytics.md create mode 100644 doc/development/database_query_comments.md create mode 100644 doc/development/fe_guide/style/html.md create mode 100644 doc/development/fe_guide/style/index.md create mode 100644 doc/development/fe_guide/style/javascript.md create mode 100644 doc/development/fe_guide/style/scss.md create mode 100644 doc/development/fe_guide/style/vue.md create mode 100644 doc/development/fe_guide/tooling.md create mode 100644 doc/development/img/build_package_v12_6.png create mode 100644 doc/development/img/trigger_build_package_v12_6.png delete mode 100644 doc/development/img/trigger_ss1.png delete mode 100644 doc/development/img/trigger_ss2.png create mode 100644 doc/development/mass_insert.md delete mode 100644 doc/development/new_fe_guide/style/scss.md delete mode 100644 doc/development/new_fe_guide/style/vue.md create mode 100644 doc/integration/img/authorize_vault_with_gitlab_v12_6.png create mode 100644 doc/integration/img/gitlab_oauth_vault_v12_6.png create mode 100644 doc/integration/img/sign_into_vault_with_gitlab_v12_6.png create mode 100644 doc/integration/img/signed_into_vault_via_oidc_v12_6.png create mode 100644 doc/integration/vault.md create mode 100644 doc/public_access/img/project_visibility_confirmation_v12_6.png create mode 100644 doc/raketasks/generate_sample_prometheus_data.md create mode 100644 doc/topics/autodevops/img/autodevops_banner_v12_6.png create mode 100644 doc/user/admin_area/credentials_inventory.md create mode 100644 doc/user/admin_area/img/credentials_inventory_v12_6.png create mode 100644 doc/user/admin_area/img/minimum_password_length_settings_v12_6.png delete mode 100644 doc/user/admin_area/monitoring/convdev.md create mode 100644 doc/user/admin_area/monitoring/dev_ops_score.md create mode 100644 doc/user/application_security/configuration/index.md create mode 100644 doc/user/application_security/img/security_configuration_page_v12_6.png delete mode 100644 doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_4.png create mode 100644 doc/user/application_security/security_dashboard/img/group_security_dashboard_v12_6.png delete mode 100644 doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_3.png create mode 100644 doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v12_6.png create mode 100644 doc/user/group/subgroups/img/group_members_filter_v12_6.png create mode 100644 doc/user/infrastructure/index.md rename doc/user/instance_statistics/{convdev.md => dev_ops_score.md} (73%) rename doc/user/instance_statistics/img/{convdev_index.png => dev_ops_score.png} (100%) delete mode 100644 doc/user/packages/maven_repository/img/maven_package_view.png create mode 100644 doc/user/packages/maven_repository/img/maven_package_view_v12_6.png delete mode 100644 doc/user/packages/npm_registry/img/npm_package_view.png create mode 100644 doc/user/packages/npm_registry/img/npm_package_view_v12_5.png create mode 100644 doc/user/project/integrations/img/unify_circuit_configuration.png create mode 100644 doc/user/project/integrations/unify_circuit.md create mode 100644 doc/user/project/members/img/project_members.png create mode 100644 doc/user/project/members/img/project_members_filter_v12_6.png create mode 100644 doc/user/project/merge_requests/img/merge_request_tab_position_v12_6.png create mode 100644 doc/user/project/operations/img/error_details_v12_6.png create mode 100644 doc/user/project/operations/img/error_details_with_issue_v12_6.png delete mode 100644 doc/user/project/operations/img/error_tracking_list.png create mode 100644 doc/user/project/operations/img/error_tracking_list_v12_6.png delete mode 100644 doc/user/project/operations/img/specs_list.png create mode 100644 doc/user/project/operations/img/specs_list_v12_6.png delete mode 100644 doc/user/project/operations/img/target_users_v12_2.png rename doc/user/project/releases/img/{edit_release_page_v12_5.png => edit_release_page_v12_6.png} (100%) rename doc/user/project/releases/img/{release_edit_button_v12_5.png => release_edit_button_v12_6.png} (100%) create mode 100644 doc/user/project/repository/git_blame.md create mode 100644 doc/user/project/repository/git_history.md create mode 100644 doc/user/project/repository/img/file_blame_button_v12_6.png create mode 100644 doc/user/project/repository/img/file_blame_output_v12_6.png create mode 100644 doc/user/project/repository/img/file_history_button_v12_6.png create mode 100644 doc/user/project/repository/img/file_history_output_v12_6.png delete mode 100644 doc/user/project/repository/img/web_editor_new_branch_from_issue.png create mode 100644 doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png create mode 100644 doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png create mode 100644 lib/api/pages.rb create mode 100644 lib/api/remote_mirrors.rb create mode 100644 lib/banzai/filter/broadcast_message_sanitization_filter.rb rename lib/banzai/reference_parser/{mentioned_users_by_group_parser.rb => mentioned_group_parser.rb} (93%) rename lib/banzai/reference_parser/{mentioned_users_by_project_parser.rb => mentioned_project_parser.rb} (84%) delete mode 100644 lib/gitlab/action_rate_limiter.rb create mode 100644 lib/gitlab/application_rate_limiter.rb rename lib/gitlab/auth/{user_auth_finders.rb => auth_finders.rb} (78%) create mode 100644 lib/gitlab/ci/ansi2json/result.rb create mode 100644 lib/gitlab/ci/config/entry/kubernetes.rb rename lib/gitlab/ci/config/entry/{boolean.rb => timeout.rb} (66%) create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/auto_devops.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/external_project.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/legacy_auto_devops.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/legacy_repository.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/remote.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/repository.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/runtime.rb create mode 100644 lib/gitlab/ci/pipeline/chain/config/content/source.rb create mode 100644 lib/gitlab/ci/pipeline/chain/validate/external.rb create mode 100644 lib/gitlab/ci/templates/Managed-Cluster-Applications.gitlab-ci.yml create mode 100644 lib/gitlab/config/entry/array_of_strings.rb create mode 100644 lib/gitlab/danger/changelog.rb create mode 100644 lib/gitlab/database/sha256_attribute.rb create mode 100644 lib/gitlab/diff/deprecated_highlight_cache.rb create mode 100644 lib/gitlab/elasticsearch/logger.rb create mode 100644 lib/gitlab/error_tracking.rb create mode 100644 lib/gitlab/error_tracking/logger.rb create mode 100644 lib/gitlab/error_tracking/stack_trace_highlight_decorator.rb create mode 100644 lib/gitlab/grafana_embed_usage_data.rb delete mode 100644 lib/gitlab/graphql/connections/keyset/legacy_keyset_connection.rb create mode 100644 lib/gitlab/import_export/relation_tree_restorer.rb create mode 100644 lib/gitlab/kubernetes/cluster_role.rb create mode 100644 lib/gitlab/kubernetes/helm/patch_command.rb create mode 100644 lib/gitlab/marginalia.rb create mode 100644 lib/gitlab/marginalia/active_record_instrumentation.rb create mode 100644 lib/gitlab/marginalia/comment.rb create mode 100644 lib/gitlab/pagination/keyset.rb create mode 100644 lib/gitlab/pagination/keyset/page.rb create mode 100644 lib/gitlab/pagination/keyset/pager.rb create mode 100644 lib/gitlab/pagination/keyset/request_context.rb create mode 100644 lib/gitlab/puma_logging/json_formatter.rb delete mode 100644 lib/gitlab/sentry.rb create mode 100644 lib/gitlab/sidekiq_middleware.rb create mode 100644 lib/sentry/client/projects.rb create mode 100644 lib/sentry/pagination_parser.rb create mode 100644 lib/tasks/gitlab/generate_sample_prometheus_data.rake create mode 100644 lib/tasks/gitlab/import_export/import.rake create mode 100644 lib/tasks/gitlab/metrics.rake create mode 100644 qa/qa/flow/project.rb create mode 100644 qa/qa/page/admin/new_session.rb create mode 100644 qa/qa/runtime/ip_address.rb create mode 100644 qa/qa/runtime/mail_hog.rb create mode 100644 qa/qa/runtime/search.rb create mode 100644 qa/qa/scenario/test/integration/smtp.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb create mode 100644 rubocop/cop/ignored_columns.rb create mode 100644 rubocop/cop/put_group_routes_under_scope.rb create mode 100644 rubocop/cop/put_project_routes_under_scope.rb delete mode 100755 scripts/ee-specific-lines-check create mode 100755 scripts/frontend/check_no_partial_karma_jest.sh create mode 100755 scripts/get-job-id create mode 100755 scripts/notifications.sh rename spec/controllers/instance_statistics/{conversational_development_index_controller_spec.rb => dev_ops_score_controller_spec.rb} (60%) create mode 100644 spec/controllers/projects/environments/sample_metrics_controller_spec.rb create mode 100644 spec/controllers/projects/service_hook_logs_controller_spec.rb rename spec/factories/{conversational_development_index_metrics.rb => dev_ops_score_metrics.rb} (92%) create mode 100644 spec/factories/merge_request_diff_commits.rb create mode 100644 spec/factories/oauth_openid_requests.rb create mode 100644 spec/factories/sentry_issue.rb create mode 100644 spec/factories/serverless/domain_cluster.rb rename spec/features/instance_statistics/{conversational_development_index_spec.rb => dev_ops_score_spec.rb} (56%) create mode 100644 spec/features/projects/user_changes_project_visibility_spec.rb create mode 100644 spec/finders/clusters/knative_serving_namespace_finder_spec.rb create mode 100644 spec/finders/deployments_finder_spec.rb create mode 100644 spec/finders/jobs_finder_spec.rb create mode 100644 spec/finders/keys_finder_spec.rb create mode 100644 spec/fixtures/api/schemas/external_validation.json create mode 100644 spec/fixtures/api/schemas/remote_mirror.json create mode 100644 spec/fixtures/api/schemas/remote_mirrors.json create mode 100644 spec/fixtures/container_registry/config_blob_helm.json create mode 100644 spec/fixtures/container_registry/tag_manifest_helm.json create mode 100644 spec/fixtures/gitlab/import_export/corrupted_project_export.tar.gz create mode 100644 spec/fixtures/gitlab/import_export/lightweight_project_export.tar.gz create mode 100644 spec/fixtures/gitlab/sample_metrics/sample_metric_query_result.yml create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json create mode 100644 spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json create mode 100644 spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json create mode 100644 spec/frontend/boards/boards_store_spec.js create mode 100644 spec/frontend/boards/components/issue_count_spec.js create mode 100644 spec/frontend/boards/mock_data.js delete mode 100644 spec/frontend/boards/services/board_service_spec.js create mode 100644 spec/frontend/clusters/components/__snapshots__/remove_cluster_confirmation_spec.js.snap create mode 100644 spec/frontend/clusters/components/remove_cluster_confirmation_spec.js create mode 100644 spec/frontend/diffs/components/compare_versions_spec.js create mode 100644 spec/frontend/diffs/mock_data/diff_with_commit.js create mode 100644 spec/frontend/diffs/mock_data/merge_request_diffs.js create mode 100644 spec/frontend/environments/environment_item_spec.js create mode 100644 spec/frontend/environments/environment_monitoring_spec.js create mode 100644 spec/frontend/environments/environment_stop_spec.js rename spec/{javascripts => frontend}/environments/environment_table_spec.js (71%) create mode 100644 spec/frontend/environments/environment_terminal_button_spec.js create mode 100644 spec/frontend/environments/mock_data.js create mode 100644 spec/frontend/error_tracking/components/list_mock.json create mode 100644 spec/frontend/error_tracking/store/list/actions_spec.js delete mode 100644 spec/frontend/error_tracking/store/list/getters_spec.js delete mode 100644 spec/frontend/fixtures/static/environments_logs.html create mode 100644 spec/frontend/fixtures/test_report.rb create mode 100644 spec/frontend/helpers/dom_shims/inner_text.js rename spec/{javascripts => frontend}/ide/components/branches/item_spec.js (88%) rename spec/{javascripts => frontend}/ide/components/panes/right_spec.js (91%) rename spec/{javascripts => frontend}/ide/components/preview/navigator_spec.js (79%) create mode 100644 spec/frontend/ide/helpers.js rename spec/{javascripts => frontend}/ide/ide_router_spec.js (95%) rename spec/{javascripts => frontend}/ide/stores/getters_spec.js (69%) rename spec/{javascripts => frontend}/ide/stores/modules/branches/actions_spec.js (82%) rename spec/{javascripts => frontend}/ide/stores/modules/branches/mutations_spec.js (86%) rename spec/{javascripts => frontend}/ide/stores/modules/commit/getters_spec.js (100%) rename spec/{javascripts => frontend}/ide/stores/modules/file_templates/actions_spec.js (68%) rename spec/{javascripts => frontend}/ide/stores/modules/merge_requests/actions_spec.js (75%) rename spec/{javascripts => frontend}/ide/stores/modules/merge_requests/mutations_spec.js (82%) rename spec/{javascripts => frontend}/ide/stores/modules/pane/actions_spec.js (96%) rename spec/{javascripts => frontend}/ide/stores/modules/pipelines/actions_spec.js (83%) rename spec/{javascripts => frontend}/ide/stores/modules/pipelines/mutations_spec.js (82%) rename spec/{javascripts => frontend}/ide/stores/mutations/file_spec.js (91%) rename spec/{javascripts => frontend}/ide/stores/mutations/tree_spec.js (97%) rename spec/{javascripts => frontend}/ide/stores/mutations_spec.js (81%) rename spec/{javascripts => frontend}/ide/stores/utils_spec.js (79%) create mode 100644 spec/frontend/jest_self_check/mocks_spec.js rename spec/{javascripts => frontend}/lib/utils/accessor_spec.js (91%) rename spec/{javascripts => frontend}/lib/utils/dom_utils_spec.js (75%) rename spec/{javascripts => frontend}/lib/utils/file_upload_spec.js (91%) rename spec/{javascripts/lib/utils/higlight_spec.js => frontend/lib/utils/highlight_spec.js} (100%) rename spec/{javascripts => frontend}/lib/utils/icon_utils_spec.js (59%) rename spec/{javascripts => frontend}/lib/utils/text_markdown_spec.js (97%) rename spec/{javascripts => frontend}/lib/utils/users_cache_spec.js (85%) rename spec/frontend/monitoring/{__snapshots__/dashboard_state_spec.js.snap => components/__snapshots__/empty_state_spec.js.snap} (100%) create mode 100644 spec/frontend/monitoring/components/__snapshots__/group_empty_state_spec.js.snap rename spec/{javascripts/monitoring => frontend/monitoring/components}/charts/column_spec.js (79%) rename spec/{javascripts/monitoring => frontend/monitoring/components}/charts/empty_chart_spec.js (75%) rename spec/{javascripts/monitoring => frontend/monitoring/components}/charts/heatmap_spec.js (96%) rename spec/{javascripts/monitoring => frontend/monitoring/components}/charts/single_stat_spec.js (67%) rename spec/frontend/monitoring/{ => components}/charts/time_series_spec.js (92%) rename spec/frontend/monitoring/{dashboard_state_spec.js => components/empty_state_spec.js} (95%) create mode 100644 spec/frontend/monitoring/components/group_empty_state_spec.js create mode 100644 spec/frontend/monitoring/store/getters_spec.js create mode 100644 spec/frontend/performance_bar/stores/performance_bar_store_spec.js rename spec/{javascripts => frontend}/pipelines/graph/job_item_spec.js (51%) create mode 100644 spec/frontend/pipelines/graph/linked_pipeline_spec.js create mode 100644 spec/frontend/pipelines/graph/linked_pipelines_mock_data.js create mode 100644 spec/frontend/pipelines/pipeline_url_spec.js rename spec/frontend/registry/{ => list}/components/__snapshots__/group_empty_state_spec.js.snap (100%) rename spec/frontend/registry/{ => list}/components/__snapshots__/project_empty_state_spec.js.snap (100%) rename spec/frontend/registry/{ => list}/components/app_spec.js (77%) rename spec/frontend/registry/{ => list}/components/collapsible_container_spec.js (69%) rename spec/frontend/registry/{ => list}/components/group_empty_state_spec.js (84%) rename spec/frontend/registry/{ => list}/components/project_empty_state_spec.js (81%) rename spec/frontend/registry/{ => list}/components/table_registry_spec.js (76%) rename spec/frontend/registry/{ => list}/mock_data.js (100%) rename spec/frontend/registry/{ => list}/stores/actions_spec.js (95%) rename spec/frontend/registry/{ => list}/stores/getters_spec.js (95%) rename spec/frontend/registry/{ => list}/stores/mutations_spec.js (95%) create mode 100644 spec/frontend/registry/settings/components/__snapshots__/registry_settings_app_spec.js.snap create mode 100644 spec/frontend/registry/settings/components/registry_settings_app_spec.js create mode 100644 spec/frontend/registry/settings/stores/actions_spec.js create mode 100644 spec/frontend/registry/settings/stores/mutations_spec.js create mode 100644 spec/frontend/releases/list/components/evidence_block_spec.js create mode 100644 spec/frontend/releases/list/components/release_block_milestone_info_spec.js create mode 100644 spec/frontend/sidebar/assignees_spec.js create mode 100644 spec/frontend/sidebar/mock_data.js create mode 100644 spec/frontend/snippets/components/app_spec.js create mode 100644 spec/frontend/snippets/components/snippet_header_spec.js create mode 100644 spec/frontend/snippets_spec.js create mode 100644 spec/frontend/vue_mr_widget/deployment/deployment_mock_data.js create mode 100644 spec/frontend/vue_mr_widget/deployment/deployment_spec.js create mode 100644 spec/frontend/vue_mr_widget/deployment/deployment_view_button_spec.js create mode 100644 spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap create mode 100644 spec/frontend/vue_shared/components/__snapshots__/memory_graph_spec.js.snap create mode 100644 spec/frontend/vue_shared/components/clipboard_button_spec.js create mode 100644 spec/frontend/vue_shared/components/dropdown/dropdown_search_input_spec.js create mode 100644 spec/frontend/vue_shared/components/expand_button_spec.js create mode 100644 spec/frontend/vue_shared/components/markdown/field_spec.js create mode 100644 spec/frontend/vue_shared/components/memory_graph_spec.js create mode 100644 spec/frontend/vue_shared/components/user_avatar/user_avatar_link_spec.js create mode 100644 spec/graphql/mutations/issues/set_confidential_spec.rb create mode 100644 spec/graphql/mutations/issues/set_due_date_spec.rb create mode 100644 spec/graphql/mutations/todos/mark_all_done_spec.rb create mode 100644 spec/graphql/mutations/todos/restore_spec.rb create mode 100644 spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb create mode 100644 spec/graphql/resolvers/projects/snippets_resolver_spec.rb create mode 100644 spec/graphql/resolvers/snippets_resolver_spec.rb create mode 100644 spec/graphql/resolvers/users/snippets_resolver_spec.rb create mode 100644 spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb create mode 100644 spec/graphql/types/permission_types/snippet_spec.rb create mode 100644 spec/graphql/types/permission_types/user_spec.rb create mode 100644 spec/graphql/types/snippet_type_spec.rb create mode 100644 spec/helpers/container_expiration_policies_helper_spec.rb create mode 100644 spec/helpers/services_helper_spec.rb delete mode 100644 spec/javascripts/boards/boards_store_spec.js delete mode 100644 spec/javascripts/diffs/components/compare_versions_spec.js delete mode 100644 spec/javascripts/environments/environment_item_spec.js delete mode 100644 spec/javascripts/environments/environment_monitoring_spec.js delete mode 100644 spec/javascripts/environments/environment_stop_spec.js delete mode 100644 spec/javascripts/environments/environment_terminal_button_spec.js delete mode 100644 spec/javascripts/monitoring/utils_spec.js delete mode 100644 spec/javascripts/pipelines/graph/linked_pipeline_spec.js delete mode 100644 spec/javascripts/pipelines/pipeline_url_spec.js delete mode 100644 spec/javascripts/sidebar/assignees_spec.js delete mode 100644 spec/javascripts/vue_mr_widget/components/deployment_spec.js create mode 100644 spec/javascripts/vue_mr_widget/components/deployment_stop_button_spec.js delete mode 100644 spec/javascripts/vue_shared/components/clipboard_button_spec.js delete mode 100644 spec/javascripts/vue_shared/components/dropdown/dropdown_search_input_spec.js delete mode 100644 spec/javascripts/vue_shared/components/expand_button_spec.js delete mode 100644 spec/javascripts/vue_shared/components/markdown/field_spec.js delete mode 100644 spec/javascripts/vue_shared/components/memory_graph_spec.js delete mode 100644 spec/javascripts/vue_shared/components/mock_data.js delete mode 100644 spec/javascripts/vue_shared/components/user_avatar/user_avatar_link_spec.js create mode 100644 spec/lib/api/entities/release_spec.rb create mode 100644 spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb create mode 100644 spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb rename spec/lib/banzai/reference_parser/{mentioned_users_by_group_parser_spec.rb => mentioned_group_parser_spec.rb} (95%) rename spec/lib/banzai/reference_parser/{mentioned_users_by_project_parser_spec.rb => mentioned_project_parser_spec.rb} (95%) rename spec/lib/gitlab/{action_rate_limiter_spec.rb => application_rate_limiter_spec.rb} (73%) rename spec/lib/gitlab/auth/{user_auth_finders_spec.rb => auth_finders_spec.rb} (70%) create mode 100644 spec/lib/gitlab/ci/ansi2json/result_spec.rb create mode 100644 spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb create mode 100644 spec/lib/gitlab/danger/changelog_spec.rb create mode 100644 spec/lib/gitlab/danger/danger_spec_helper.rb create mode 100644 spec/lib/gitlab/diff/deprecated_highlight_cache_spec.rb create mode 100644 spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb create mode 100644 spec/lib/gitlab/error_tracking_spec.rb create mode 100644 spec/lib/gitlab/fogbugz_import/importer_spec.rb create mode 100644 spec/lib/gitlab/grafana_embed_usage_data_spec.rb delete mode 100644 spec/lib/gitlab/graphql/connections/keyset/legacy_keyset_connection_spec.rb create mode 100644 spec/lib/gitlab/import_export/references_configuration_spec.rb create mode 100644 spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb create mode 100644 spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb create mode 100644 spec/lib/gitlab/mail_room/mail_room_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/page_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/pager_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/request_context_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset_spec.rb create mode 100644 spec/lib/gitlab/puma_logging/json_formatter_spec.rb delete mode 100644 spec/lib/gitlab/sentry_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_middleware_spec.rb create mode 100644 spec/lib/gitlab/throttle_spec.rb create mode 100644 spec/lib/marginalia_spec.rb create mode 100644 spec/lib/sentry/client/projects_spec.rb create mode 100644 spec/lib/sentry/pagination_parser_spec.rb create mode 100644 spec/migrations/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects_spec.rb create mode 100644 spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb create mode 100644 spec/migrations/insert_project_hooks_plan_limits_spec.rb create mode 100644 spec/migrations/migrate_ops_feature_flags_scopes_target_user_ids_spec.rb create mode 100644 spec/migrations/nullify_users_role_spec.rb create mode 100644 spec/migrations/update_minimum_password_length_spec.rb create mode 100644 spec/models/concerns/ignorable_columns_spec.rb delete mode 100644 spec/models/concerns/issuable_states_spec.rb create mode 100644 spec/models/concerns/safe_url_spec.rb create mode 100644 spec/models/concerns/sha256_attribute_spec.rb create mode 100644 spec/models/container_expiration_policy_spec.rb rename spec/models/{conversational_development_index => dev_ops_score}/metric_spec.rb (63%) create mode 100644 spec/models/merge_request/pipelines_spec.rb create mode 100644 spec/models/oauth_access_grant_spec.rb create mode 100644 spec/models/project_services/unify_circuit_service_spec.rb create mode 100644 spec/models/readme_blob_spec.rb create mode 100644 spec/models/sentry_issue_spec.rb create mode 100644 spec/models/serverless/domain_cluster_spec.rb create mode 100644 spec/models/user_mentions/commit_user_mention_spec.rb create mode 100644 spec/models/user_mentions/issue_user_mention_spec.rb create mode 100644 spec/models/user_mentions/merge_request_user_mention_spec.rb create mode 100644 spec/models/user_mentions/snippet_user_mention_spec.rb create mode 100644 spec/policies/blob_policy_spec.rb create mode 100644 spec/policies/wiki_page_policy_spec.rb create mode 100644 spec/presenters/ci/legacy_stage_presenter_spec.rb rename spec/presenters/{conversational_development_index => dev_ops_score}/metric_presenter_spec.rb (89%) create mode 100644 spec/presenters/hooks/project_hook_presenter_spec.rb create mode 100644 spec/presenters/hooks/service_hook_presenter_spec.rb create mode 100644 spec/presenters/sentry_detailed_error_presenter_spec.rb create mode 100644 spec/presenters/snippet_presenter_spec.rb create mode 100644 spec/presenters/web_hook_log_presenter_spec.rb create mode 100644 spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb create mode 100644 spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb create mode 100644 spec/requests/api/graphql/mutations/snippets/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/snippets/destroy_spec.rb create mode 100644 spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb create mode 100644 spec/requests/api/graphql/mutations/snippets/update_spec.rb create mode 100644 spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb create mode 100644 spec/requests/api/graphql/mutations/todos/restore_spec.rb create mode 100644 spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb create mode 100644 spec/requests/api/pages/pages_spec.rb create mode 100644 spec/requests/api/remote_mirrors_spec.rb create mode 100644 spec/requests/projects/merge_requests/creations_spec.rb create mode 100644 spec/requests/user_avatar_spec.rb create mode 100644 spec/rubocop/cop/ignored_columns_spec.rb create mode 100644 spec/rubocop/cop/migration/add_index_spec.rb create mode 100644 spec/rubocop/cop/put_group_routes_under_scope_spec.rb create mode 100644 spec/rubocop/cop/put_project_routes_under_scope_spec.rb create mode 100644 spec/serializers/merge_request_poll_cached_widget_entity_spec.rb create mode 100644 spec/serializers/merge_request_poll_widget_entity_spec.rb rename spec/services/{create_branch_service_spec.rb => branches/create_service_spec.rb} (86%) rename spec/services/{delete_merged_branches_service_spec.rb => branches/delete_merged_service_spec.rb} (98%) rename spec/services/{delete_branch_service_spec.rb => branches/delete_service_spec.rb} (92%) create mode 100644 spec/services/branches/validate_new_service_spec.rb create mode 100644 spec/services/ci/create_pipeline_service/needs_spec.rb create mode 100644 spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb create mode 100644 spec/services/clusters/aws/authorize_role_service_spec.rb delete mode 100644 spec/services/clusters/aws/proxy_service_spec.rb create mode 100644 spec/services/clusters/cleanup/app_service_spec.rb create mode 100644 spec/services/clusters/cleanup/project_namespace_service_spec.rb create mode 100644 spec/services/clusters/cleanup/service_account_service_spec.rb create mode 100644 spec/services/clusters/kubernetes_spec.rb create mode 100644 spec/services/environments/reset_auto_stop_service_spec.rb create mode 100644 spec/services/metrics/dashboard/pod_dashboard_service_spec.rb create mode 100644 spec/services/metrics/sample_metrics_service_spec.rb create mode 100644 spec/services/pages/delete_services_spec.rb create mode 100644 spec/services/prometheus/proxy_variable_substitution_service_spec.rb rename spec/services/{repair_ldap_blocked_user_service_spec.rb => users/repair_ldap_blocked_service_spec.rb} (93%) create mode 100644 spec/support/helpers/sentry_client_helpers.rb create mode 100644 spec/support/shared_examples/controllers/environments_controller_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/sentry/client_shared_examples.rb create mode 100644 spec/support/shared_examples/mail_room_shared_examples.rb create mode 100644 spec/support/shared_examples/models/cluster_cleanup_worker_base_shared_examples.rb create mode 100644 spec/support/shared_examples/models/user_mentions_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issue/duplicate_quick_action_shared_examples.rb create mode 100644 spec/support/sidekiq_middleware.rb create mode 100644 spec/tasks/gitlab/generate_sample_prometheus_data_spec.rb create mode 100644 spec/tasks/gitlab/import_export/import_rake_spec.rb create mode 100644 spec/views/import/gitlab_projects/new.html.haml_spec.rb create mode 100644 spec/views/layouts/application.html.haml_spec.rb create mode 100644 spec/views/projects/services/edit.html.haml_spec.rb create mode 100644 spec/workers/clusters/applications/activate_service_worker_spec.rb create mode 100644 spec/workers/clusters/applications/deactivate_service_worker_spec.rb create mode 100644 spec/workers/clusters/cleanup/app_worker_spec.rb create mode 100644 spec/workers/clusters/cleanup/project_namespace_worker_spec.rb create mode 100644 spec/workers/clusters/cleanup/service_account_worker_spec.rb create mode 100644 spec/workers/personal_access_tokens/expiring_worker_spec.rb create mode 100644 vendor/aws/iam/eks_cluster_read_only_policy.json mode change 100644 => 100755 vendor/gitignore/C++.gitignore mode change 100644 => 100755 vendor/gitignore/Java.gitignore create mode 100644 vendor/project_templates/salesforcedx.tar.gz diff --git a/.eslintrc.yml b/.eslintrc.yml index e131d4c07d..a8cbd9731a 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,6 +1,8 @@ extends: - '@gitlab' - plugin:promise/recommended + - plugin:no-jquery/slim + - plugin:no-jquery/deprecated-3.4 globals: __webpack_public_path__: true gl: false @@ -30,7 +32,13 @@ rules: no-else-return: - error - allowElseIf: true + import/no-unresolved: + - error + - ignore: + # https://gitlab.com/gitlab-org/gitlab/issues/38226 + - '^ee_component/' import/no-useless-path-segments: off + import/order: off lines-between-class-members: off # Disabled for now, to make the plugin-vue 4.5 -> 5.0 update smoother vue/no-confusing-v-for-v-if: error @@ -38,11 +46,13 @@ rules: vue/no-use-v-if-with-v-for: off vue/no-v-html: off vue/use-v-on-exact: off - no-jquery/no-ajax: error - no-jquery/no-ajax-events: error - no-jquery/no-load: error - no-jquery/no-load-shorthand: error + no-jquery/no-animate: off + # all offenses of no-jquery/no-animate-toggle are false positives ( $toast.show() ) + no-jquery/no-animate-toggle: off + no-jquery/no-event-shorthand: off + no-jquery/no-fade: off no-jquery/no-serialize: error + no-jquery/no-sizzle: off promise/always-return: off promise/no-callback-in-promise: off overrides: diff --git a/.gitattributes b/.gitattributes index 55c422f0f8..ec47d175c5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ VERSION merge=ours Dangerfile gitlab-language=ruby +*.pdf filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index b8cbfe9966..d43b1908dd 100644 --- a/.gitignore +++ b/.gitignore @@ -66,7 +66,7 @@ eslint-report.html /vendor/gitaly-ruby /builds* /.gitlab_workhorse_secret -/.gitlab_pages_shared_secret +/.gitlab_pages_secret /webpack-report/ /knapsack/ /rspec_flaky/ @@ -84,3 +84,4 @@ jsdoc/ .overcommit.yml .projections.json /qa/.rakeTasks +webpack-dev-server.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36108d04e9..388f3f4b3e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,38 +1,42 @@ -image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33" +image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33" stages: - sync - prepare - quick-test - test + - post-test - review-prepare - review - qa - - post-test + - post-qa + - notification - pages variables: RAILS_ENV: "test" NODE_ENV: "test" SIMPLECOV: "true" - GIT_DEPTH: "50" + GIT_DEPTH: "20" GIT_SUBMODULE_STRATEGY: "none" GET_SOURCES_ATTEMPTS: "3" KNAPSACK_RSPEC_SUITE_REPORT_PATH: knapsack/report-master.json FLAKY_RSPEC_SUITE_REPORT_PATH: rspec_flaky/report-suite.json BUILD_ASSETS_IMAGE: "false" ES_JAVA_OPTS: "-Xms256m -Xmx256m" - ELASTIC_URL: "http://elastic:changeme@docker.elastic.co-elasticsearch-elasticsearch:9200" + ELASTIC_URL: "http://elastic:changeme@elasticsearch:9200" after_script: - date include: + - local: .gitlab/ci/cache-repo.gitlab-ci.yml - local: .gitlab/ci/cng.gitlab-ci.yml - local: .gitlab/ci/docs.gitlab-ci.yml - local: .gitlab/ci/frontend.gitlab-ci.yml - local: .gitlab/ci/global.gitlab-ci.yml - local: .gitlab/ci/memory.gitlab-ci.yml + - local: .gitlab/ci/notifications.gitlab-ci.yml - local: .gitlab/ci/pages.gitlab-ci.yml - local: .gitlab/ci/qa.gitlab-ci.yml - local: .gitlab/ci/reports.gitlab-ci.yml diff --git a/.gitlab/ci/cache-repo.gitlab-ci.yml b/.gitlab/ci/cache-repo.gitlab-ci.yml new file mode 100644 index 0000000000..f856afd3a0 --- /dev/null +++ b/.gitlab/ci/cache-repo.gitlab-ci.yml @@ -0,0 +1,33 @@ +# Builds a cached .tar.gz of the master branch with full history and +# uploads it to Google Cloud Storage. This archive is downloaded by a +# script defined by a CI/CD variable named CI_PRE_CLONE_SCRIPT. This has +# two benefits: +# +# 1. It speeds up builds. A 800 MB download only takes seconds. +# 2. It significantly reduces load on the file server. Smaller deltas +# means less time spent in git pack-objects. +# +# Since the destination directory of the archive depends on the project +# ID, this is only run on GitLab.com. +# +# CI_REPO_CACHE_CREDENTIALS contains the Google Cloud service account +# JSON for uploading to the gitlab-ci-git-repo-cache bucket. These +# credentials are stored in the Production vault. +# +# Note that this bucket should be located in the same continent as the +# runner, or network egress charges will apply: +# https://cloud.google.com/storage/pricing +cache-repo: + extends: + - .only:variables_refs-canonical-dot-com-schedules + image: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine + stage: sync + allow_failure: true + variables: + GIT_DEPTH: 0 + TAR_FILENAME: /tmp/gitlab-master.tar + script: + - gcloud auth activate-service-account --key-file=$CI_REPO_CACHE_CREDENTIALS + - tar cf $TAR_FILENAME . + - gzip $TAR_FILENAME + - gsutil cp $TAR_FILENAME.gz gs://gitlab-ci-git-repo-cache/project-$CI_PROJECT_ID/gitlab-master.tar.gz diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 07375fca61..cd0e4085e1 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -24,7 +24,8 @@ - apk add --update openssl - wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/trigger-build-docs - chmod 755 trigger-build-docs - - gem install gitlab --no-document + - gem install httparty --no-document --version 0.17.3 + - gem install gitlab --no-document --version 4.13.0 # Always trigger a docs build in gitlab-docs only on docs-only branches. # Useful to preview the docs changes live. diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 0b72461a9f..6578eec823 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -13,7 +13,7 @@ - .default-before_script - .assets-compile-cache - .only:changes-code-backstage-qa - image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-git-2.22-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-18.06.1 + image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-19.03.1 stage: test dependencies: ["setup-test-env"] needs: ["setup-test-env"] @@ -74,7 +74,6 @@ gitlab:assets:compile pull-cache: - .default-before_script - .assets-compile-cache - .only:changes-code-backstage-qa - - .use-pg9 stage: prepare script: - node --version @@ -83,6 +82,7 @@ gitlab:assets:compile pull-cache: - retry bundle exec rake gitlab:assets:compile - scripts/clean-old-cached-assets variables: + SETUP_DB: "false" # we override the max_old_space_size to prevent OOM errors NODE_OPTIONS: --max_old_space_size=3584 cache: @@ -244,6 +244,12 @@ webpack-dev-server: dependencies: ["setup-test-env", "compile-assets pull-cache"] variables: WEBPACK_MEMORY_TEST: "true" + WEBPACK_VENDOR_DLL: "true" script: - - node --version + - yarn webpack-vendor - node --expose-gc node_modules/.bin/webpack-dev-server --config config/webpack.config.js + artifacts: + name: webpack-dev-server + expire_in: 31d + paths: + - webpack-dev-server.json diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index d746d8fe03..9ebd28c725 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -93,7 +93,7 @@ - "config.ru" - "{package.json,yarn.lock}" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - - "doc/api/graphql/**/*" + - "doc/api/graphql/reference/*" # Files in this folder are auto-generated .backstage-patterns: &backstage-patterns - "Dangerfile" @@ -139,7 +139,7 @@ - "config.ru" - "{package.json,yarn.lock}" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - - "doc/api/graphql/**/*" + - "doc/api/graphql/reference/*" # Files in this folder are auto-generated # Backstage changes - "Dangerfile" - "danger/**/*" @@ -163,7 +163,7 @@ - "config.ru" - "{package.json,yarn.lock}" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - - "doc/api/graphql/**/*" + - "doc/api/graphql/reference/*" # Files in this folder are auto-generated # QA changes - ".dockerignore" - "qa/**/*" @@ -183,7 +183,7 @@ - "config.ru" - "{package.json,yarn.lock}" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - - "doc/api/graphql/**/*" + - "doc/api/graphql/reference/*" # Files in this folder are auto-generated # Backstage changes - "Dangerfile" - "danger/**/*" @@ -202,7 +202,7 @@ - name: redis:alpine .use-pg10: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33" + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33" services: - name: postgres:10.9 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] @@ -213,15 +213,15 @@ - name: postgres:9.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine - - name: docker.elastic.co/elasticsearch/elasticsearch:5.6.12 + - name: elasticsearch:5.6.12 .use-pg10-ee: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33" + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33" services: - name: postgres:10.9 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine - - name: docker.elastic.co/elasticsearch/elasticsearch:5.6.12 + - name: elasticsearch:5.6.12 .only-ee: only: diff --git a/.gitlab/ci/notifications.gitlab-ci.yml b/.gitlab/ci/notifications.gitlab-ci.yml new file mode 100644 index 0000000000..4271e709f4 --- /dev/null +++ b/.gitlab/ci/notifications.gitlab-ci.yml @@ -0,0 +1,23 @@ +.notify: + image: ruby:2.6-alpine + stage: notification + dependencies: [] + cache: {} + before_script: + - apk update && apk add git curl bash + - source scripts/utils.sh + - source scripts/notifications.sh + - install_gitlab_gem + variables: + COMMIT_NOTES_URL: "https://${CI_SERVER_HOST}/${CI_PROJECT_PATH}/commit/${CI_COMMIT_SHA}#notes-list" + +schedule:package-and-qa:notify-failure: + extends: + - .only:variables_refs-canonical-dot-com-schedules + - .notify + script: + - 'export NOTIFICATION_MESSAGE=":skull_and_crossbones: Scheduled QA against master failed! :skull_and_crossbones: See ${CI_PIPELINE_URL}. For downstream pipelines, see ${COMMIT_NOTES_URL}"' + - 'notify_on_job_failure schedule:package-and-qa qa-master "${NOTIFICATION_MESSAGE}" ci_failing' + needs: ["schedule:package-and-qa"] + allow_failure: true + when: always diff --git a/.gitlab/ci/releases.gitlab-ci.yml b/.gitlab/ci/releases.gitlab-ci.yml index 1ddc4e90fc..17bfaf5cc8 100644 --- a/.gitlab/ci/releases.gitlab-ci.yml +++ b/.gitlab/ci/releases.gitlab-ci.yml @@ -1,22 +1,27 @@ --- -# Syncs any changes pushed to a stable branch to the corresponding CE stable -# branch. We run this prior to any tests so that random failures don't prevent a -# sync. -sync-stable-branch: +# Syncs any changes pushed to a stable branch to the corresponding +# gitlab-foss/CE stable branch. We run this prior to any tests so that random +# failures don't prevent a sync. +.merge-train-sync: # We don't need/want any global before/after commands, so we overwrite these # settings. image: alpine:edge stage: sync - # This job should only run on EE stable branches on the canonical GitLab.com - # repository. - only: - variables: - - $CI_SERVER_HOST == "gitlab.com" - refs: - - /^[\d-]+-stable-ee$/@gitlab-org/gitlab before_script: - apk add --no-cache --update curl bash after_script: [] script: - bash scripts/sync-stable-branch.sh + only: + variables: + - $CI_SERVER_HOST == "gitlab.com" + +sync-stable-branch: + extends: .merge-train-sync + variables: + SOURCE_PROJECT: gitlab-org/gitlab + TARGET_PROJECT: gitlab-org/gitlab-foss + only: + refs: + - /^[\d-]+-stable-ee$/@gitlab-org/gitlab diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index fbb7826b6f..4ff14b660b 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -20,6 +20,7 @@ code_quality: variables: DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "" + CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/security-products/codequality:12-5-stable" script: - | if ! docker info &>/dev/null; then @@ -27,14 +28,17 @@ code_quality: export DOCKER_HOST='tcp://localhost:2375' fi fi + - docker pull --quiet "$CODE_QUALITY_IMAGE" - 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:12-0-stable" /code + "$CODE_QUALITY_IMAGE" /code artifacts: reports: codequality: gl-code-quality-report.json + paths: + - gl-code-quality-report.json expire_in: 1 week dependencies: [] except: @@ -165,7 +169,6 @@ dependency_scanning: DS_ANALYZER_IMAGE_TAG \ DS_DEFAULT_ANALYZERS \ DS_EXCLUDED_PATHS \ - DEP_SCAN_DISABLE_REMOTE_CHECKS \ DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \ DS_PULL_ANALYZER_IMAGE_TIMEOUT \ DS_RUN_ANALYZER_TIMEOUT \ @@ -231,9 +234,3 @@ dast: - gl-dast-report.json reports: dast: gl-dast-report.json - only: - variables: - - $GITLAB_FEATURES =~ /\bdast\b/ - except: - variables: - - $DAST_DISABLED diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 4ed9ac03d0..1062f6b03a 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -23,9 +23,11 @@ build-qa-image: stage: prepare script: - '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"' + - export QA_MASTER_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:master" - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:${CI_COMMIT_REF_SLUG}" - - time docker build --cache-from gitlab/gitlab-${GITLAB_EDITION}-qa:nightly --tag ${QA_IMAGE} --file ./qa/Dockerfile ./ - echo "${CI_JOB_TOKEN}" | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY} + - time docker pull "${QA_MASTER_IMAGE}" + - time docker build --cache-from "${QA_MASTER_IMAGE}" --tag ${QA_IMAGE} --file ./qa/Dockerfile ./ - time docker push ${QA_IMAGE} .base-review-cleanup: @@ -94,10 +96,7 @@ schedule:review-build-cng: variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - # v2.4.4 + two improvements: - # - Allow to pass an EE license when installing the chart: https://gitlab.com/gitlab-org/charts/gitlab/merge_requests/1008 - # - Allow to customize the livenessProbe for `gitlab-shell`: https://gitlab.com/gitlab-org/charts/gitlab/merge_requests/1021 - GITLAB_HELM_CHART_REF: "6c655ed77e60f1f7f533afb97bef8c9cb7dc61eb" + GITLAB_HELM_CHART_REF: "v2.5.1" GITLAB_EDITION: "ce" environment: name: review/${CI_COMMIT_REF_NAME} @@ -135,13 +134,11 @@ review-deploy: - .review-deploy-base - .only-review - .only:changes-code-qa - needs: ["review-build-cng"] schedule:review-deploy: extends: - .review-deploy-base - .only-review-schedules - needs: ["schedule:review-build-cng"] .base-review-stop: extends: @@ -280,7 +277,7 @@ parallel-spec-reports: - .only-review - .only:changes-code-qa image: ruby:2.6-alpine - stage: post-test + stage: post-qa dependencies: ["review-qa-all"] variables: NEW_PARALLEL_SPECS_REPORT: qa/report-new.html diff --git a/.gitlab/issue_templates/Productivity Improvement.md b/.gitlab/issue_templates/Productivity Improvement.md new file mode 100644 index 0000000000..89505cd85b --- /dev/null +++ b/.gitlab/issue_templates/Productivity Improvement.md @@ -0,0 +1,47 @@ +## What is the productivity problem to solve? + + + +### Problem identification checklist + +- [ ] The root cause of the problem is identified. +- [ ] The surface of the problem is as small as possible. + +## What are the potential solutions? + + + +- [ ] All potential solutions are listed. +- [ ] A solution has been chosen for the first iteration: `PUT THE CHOSEN SOLUTION HERE` + +## Who and when will the solution be implemented? + + + +## Verify that the solution has improved the situation + + + +- [ ] The solution improved the situation. + - If yes, check this box and close the issue. Well done! :tada: + - Otherwise, create a new "Productivity Improvement" issue. You can re-use the description from this issue, but obviously another solution should be chosen this time. + +/label ~"Engineering Productivity" ~meta +/cc @gl-quality/eng-prod diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 232a87c198..2e1b1770f9 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -411,6 +411,7 @@ linters: - 'app/views/shared/snippets/_snippet.html.haml' - 'app/views/shared/tokens/_scopes_list.html.haml' - 'app/views/shared/web_hooks/_form.html.haml' + - 'app/views/shared/web_hooks/_hook.html.haml' - 'app/views/shared/web_hooks/_test_button.html.haml' - 'app/views/u2f/_authenticate.html.haml' - 'app/views/u2f/_register.html.haml' @@ -442,7 +443,7 @@ linters: - 'ee/app/views/groups/epics/_epic.html.haml' - 'ee/app/views/groups/group_members/_ldap_sync.html.haml' - 'ee/app/views/groups/group_members/_sync_button.html.haml' - - 'ee/app/views/groups/hooks/_project_hook.html.haml' + - 'ee/app/views/groups/hooks/edit.html.haml' - 'ee/app/views/groups/hooks/index.html.haml' - 'ee/app/views/groups/ldap_group_links/index.html.haml' - 'ee/app/views/groups/pipeline_quota/index.html.haml' diff --git a/.markdownlint.json b/.markdownlint.json index f06c0766c3..fe3790f47e 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -26,5 +26,102 @@ "first-line-h1": false, "code-block-style": { "style": "fenced" + }, + "proper-names": { + "names": [ + "Akismet", + "Alertmanager", + "API", + "Asana", + "Auth0", + "Authentiq", + "Azure", + "Bamboo", + "Bitbucket", + "Bugzilla", + "CAS", + "CentOS", + "Consul", + "Debian", + "Elasticsearch", + "Facebook", + "Git LFS", + "git-annex", + "Git", + "Gitaly", + "GitHub", + "GitLab Geo", + "GitLab Monitor", + "GitLab Operator", + "GitLab Pages", + "GitLab Rails", + "GitLab Runner", + "GitLab Shell", + "GitLab Workhorse", + "GitLab", + "Gmail", + "Google", + "Grafana", + "Helm", + "HipChat", + "Ingress", + "jasmine-jquery", + "JavaScript", + "Jaeger", + "Jenkins", + "Jira", + "Jira Cloud", + "Jira Server", + "jQuery", + "JupyterHub", + "Karma", + "Kerberos", + "Knative", + "Kubernetes", + "LDAP", + "Let's Encrypt", + "Markdown", + "markdownlint", + "Mattermost", + "Microsoft", + "MinIO", + "NGINX Ingress", + "NGINX", + "OAuth", + "OAuth 2", + "OmniAuth", + "Omnibus GitLab", + "OpenID", + "OpenShift", + "PgBouncer", + "PostgreSQL", + "Prometheus", + "Puma", + "Python", + "Redis", + "Redmine", + "reCAPTCHA", + "runit", + "Salesforce", + "SAML", + "Sentry", + "Sidekiq", + "Shibboleth", + "Slack", + "SMTP", + "SSH", + "Tiller", + "Trello", + "Trello Power-Ups", + "TypeScript", + "Twitter", + "Ubuntu", + "Ultra Auth", + "Unicorn", + "unicorn-worker-killer", + "WebdriverIO", + "YouTrack" + ], + "code_blocks": false } } diff --git a/.nvmrc b/.nvmrc index f8c17e7809..4de623cfef 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -12.4.0 +12.10.0 diff --git a/.rubocop.yml b/.rubocop.yml index 1d5cf7642c..27dce2239d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -56,7 +56,6 @@ Style/FrozenStringLiteralComment: - 'qa/**/*' - 'rubocop/**/*' - 'scripts/**/*' - - 'spec/lib/gitlab/**/*' RSpec/FilePath: Exclude: diff --git a/CHANGELOG-EE.md b/CHANGELOG-EE.md index 3ee8fccc73..dc4e390ebc 100644 --- a/CHANGELOG-EE.md +++ b/CHANGELOG-EE.md @@ -1,5 +1,116 @@ Please view this file on the master branch, on stable branches it's out of date. +## 12.6.1 + +- No changes. + +## 12.6.0 + +### Fixed (32 changes, 5 of them are from the community) + +- Exclude forks from Group Security Dashboard filter. !14667 +- Clarify why Service Desk feature is unavailable. !19244 +- Bump code quality version in template to 0.85.5. !19354 +- Nullify user roles that have been accidentaly set to a value of 0. !19569 +- Display CI Minutes warning only if minutes left is still below last level. !19751 +- Add a unique constraint to `software_licenses.name` column. !19840 +- Link user accounts to new Smartcards identities on login. !20059 +- Allow valid namespace paths with dots for api PUT. !20079 +- Map software license names from the v1 license scan report to an equivalent SPDX identifer. !20195 +- Prefer sending external pull request pipeline statuses over general statuses to GitHub. !20364 +- Abort rendering of security reports that aren't enabled. !20381 +- Fix Infinite Scrolling on Environments Dashboard Project Selector. !20408 +- Link user accounts to new Smartcards certificate ldap identities on login. !20470 +- Handle design repositories when moving a project to a new storage. !20509 +- Resolve Version dropdown goes wrong if versions are not monotonic. !20515 (Tom Quirk) +- Turn auto_complete_issues on by default. !20525 +- Handle design repositories when moving existing projects to Hashed Storage. !20540 +- Fix dependency metadata on the NPM registry responses. !20549 +- Fix the hiding of undismissed vulnerabilities. !20599 +- Fix check for existing ES limited indexing IDs. !20866 +- Show actions area for fixed vulnerabilities in merge requests. !20867 +- Fix typo in Kubernetes GKE setup error message. !21091 +- Include projects in subgroups in group boards relative position. !21189 +- Fix inability to add comments to a discussion in Design Management. !21229 +- Fix Infinity % / Infinity % on Stacked Progress Bar. !21437 +- Fix sort icon direction when sorting by weight. !21447 (Jan Beckmann) +- Auto-focus title text box when creating new epics. !21516 (Jan Beckmann) +- Fix analytics icon alignment. !21555 +- Invalid trial form to remember user & country. !21840 +- Fix styling on contribution analytics dashboard. !207012 (briankabiro) +- Add correct link to milestone in groups for issuables list after refactor. +- Show the proper message when adding a duplicate issue to an epic. (20175) + +### Changed (13 changes, 1 of them is from the community) + +- Make "Learn more about" links for security scanning popovers on merge request page open in new tab. !13333 (Daniel Tian) +- Redirect Admin > Settings > Geo to Admin > Geo > Settings. !19833 +- Expose epic_id parameter in issues API. !19953 +- Allow to login with Smartcard certificates using SAN extensions that only defines one global email identity. !20052 +- Update SAST.gitlab-ci.yml - Add kubesec analyzer. !20129 +- Update start trial CTA in top right banner to only appear if all namespaces are free. !20177 +- Update billing page trial CTAs. !20383 +- Rename software_license_policies.approval_status to software_license_policies.classification. !20414 +- Add ability to edit Group Hooks. !20898 +- Improve the performance of group templates finder. !20947 +- Hide elasticsearch namespaces and projects when too many in rollout. !21225 +- Update Explore Geo Page. !21448 +- Renamed Conversational Development Index feature to DevOps Score. + +### Performance (1 change) + +- Do not trigger count query for pagination without count. !21232 + +### Added (24 changes, 2 of them are from the community) + +- Add new approval rule type which allows anyone to approve. !15378 +- Add Personal access token expiry policy. !17344 +- Expose time logs for group issues via the GraphQL API. !18689 +- Add application settings needed for soft-deletion. !18790 +- Add link to new epic for promoted issues. !18839 (Jan Beckmann) +- Use issue templates on service desk(backend). !19515 +- Log history for gitlab_subscriptions table. !19694 +- Resolve Show plan of root group on subgroup details page. !20218 +- Adjust group members API to include group SAML info. !20357 +- Add user ability to append template to incoming service desk issues. !20476 +- Add audit event when member access is removed due to expiration. !20529 +- Update CI templates to use sitespeed 11.2.0. !20561 +- Added migration for issue link types. !20617 +- Add security configuration navigation item. !20711 +- Create a new database composite index to support cross-project artifacts downloads. !20721 +- Add deployment API updated_at filters. !20731 +- Show loading spinner in design card while design is uploading. !20814 +- Add most affected projects to group security dashboard. !20892 +- Introduce Credentials Inventory. !20912 +- Add GraphQL mutation for changing weight of an issue. !21331 +- Cache vulnerability findings history endpoint for security dashboards. !21349 +- Added Marginalia feature which can generate PostgreSQL query comments to Gitlab. !21364 (BalaKumar) +- Add API for states by country. !21417 +- Improved trials sign up for gitlab.com. !21650 + +### Other (8 changes, 2 of them are from the community) + +- Store and look up design management version authorship from database. !17322 +- Remove redundant ManagedLicenses controller. !20131 (briankabiro) +- Updated board_service.js to use boardStore directly. !20141 (nuwe1) +- Delete any stale deploy access levels by group. !20689 +- Add project webhooks limits on GitLab.com. !20730 +- Remove the design_management_flag feature flag from the codebase. The feature flag toggles the Design Management feature, and has been enabled by default since 12.2. !20883 +- Remove operations_feature_flags_clients.token column. !21016 +- Update the alerts used in the Dependency List to follow GitLab design guidelines. !21760 + + +## 12.5.5 + +- No changes. + +## 12.5.4 + +### Security (1 change) + +- Fix stale Elasticsearch permissions when moving group from public group to private parent group. + + ## 12.5.3 ### Performance (1 change) @@ -11,10 +122,6 @@ Please view this file on the master branch, on stable branches it's out of date. - Geo - Does not schedule duplicated jobs while backfilling uploads, LFS objects and job artifacts. !20324 -## 12.5.2 - -- No changes. - ## 12.5.1 ### Security (6 changes) @@ -113,6 +220,18 @@ Please view this file on the master branch, on stable branches it's out of date. - Remove IIFEs from jira_connect.js file. !19248 (nuwe1) +## 12.4.5 + +- No changes. + +## 12.4.3 + +### Fixed (2 changes) + +- Fix admin welcome image not found. !19676 +- Revert ES support for public/internal project snippets. !19715 + + ## 12.4.2 ### Fixed (1 change) @@ -243,6 +362,25 @@ Please view this file on the master branch, on stable branches it's out of date. - Docs for protected branch code owner approval API. !17132 +## 12.3.9 + +### Security (1 change) + +- Fix stale Elasticsearch permissions when moving group from public group to private parent group. + + +## 12.3.7 + +### Security (6 changes) + +- Protect Jira integration endpoints from guest users. +- Fix private comment Elasticsearch leak on project search scope. +- Filter snippet search results by feature visibility. +- Hide AWS secret on Admin Integration page. +- Fail pull mirror when mirror user is blocked. +- Prevent IDOR when adding users to protected environments. + + ## 12.3.4 ### Fixed (2 changes) @@ -446,6 +584,13 @@ Please view this file on the master branch, on stable branches it's out of date. - Fixes style-lint errors and warnings for EE builds.scss file. +## 12.2.11 + +### Fixed (1 change) + +- Backport the new reliable fetcher. !21198 + + ## 12.2.8 ### Fixed (1 change) @@ -794,6 +939,21 @@ Please view this file on the master branch, on stable branches it's out of date. - Don't send CI usage email notifications for self-hosted instances. !14809 +## 12.0.12 + +### Fixed (1 change) + +- Backport the new reliable fetcher to 12.0.9. !20532 + + +## 12.0.10 + +- No changes. +### Fixed (1 change) + +- Backport the new reliable fetcher to 12.0.9. !20532 + + ## 12.0.7 ### Security (3 changes) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc4868481b..c15baafe74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,424 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 12.5.4 +## 12.6.1 - No changes. +### Fixed (2 changes) + +- Handle forbidden error when checking for knative. !22170 +- Fix stack trace highlight for PHP. !22258 + +### Performance (1 change) + +- Eliminate N+1 queries in PipelinesController#index. !22189 + + +## 12.6.0 + +### Security (4 changes) + +- Update Rugged to v0.28.4.1. !21869 +- Update maven_file_name_regex for full string match. +- Add maven file_name regex validation on incoming files. +- Update Workhorse and Gitaly to fix a security issue. + +### Removed (1 change) + +- Remove downstream pipeline connecting lines. !21196 + +### Fixed (101 changes, 16 of them are from the community) + +- Fix delete user dialog bypass caused by hitting enter. !17343 +- Fix broken UI on Environment folder. !17427 (Takuya Noguchi) +- Fix award emoji tooltip being escaped twice if multiple people voted. !19273 (Brian T) +- Use cascading deletes for deleting oauth_openid_requests upon deleting an oauth_access_grant. !19617 +- Update merging an MR behavior on the API when pipeline fails. !19641 (briankabiro) +- Vertically align collapse button on epic sidebar. !19656 +- Fix projects list to show info in user's locale. !20015 (Arun Kumar Mohan) +- Update padding for cluster alert warning. !20036 (George Tsiolis) +- Show correct warning on issue when project is archived. !20078 +- Resets aria-describedby on mouseleave. !20092 (carolcarvalhosa) +- Allow patch notes on repo tags page to word wrap. !20135 +- Remove Release edit url for users not allowed to update a release. !20136 +- Fix group managed accounts members cleanup. !20157 +- Epic tree bug fixes. !20209 +- Add missing external-link icon for Crossplane managed app. !20283 +- Fixes MR approvers tooltip wrong color. !20287 (Dheeraj Joshi) +- Ignore empty MR diffs when migrating to external storage. !20296 +- Add link color to design comments. !20302 +- Fix graph groups in monitor dashboard that are hidden on load. !20312 +- Update Container Registry naming restrictions to allow for sequential '-'. !20318 +- Fixed monitor charts from throwing error when zoomed. !20331 +- Validate the merge sha before merging, confirming that the merge will only contain what the user saw. !20348 +- Change container registry column name from Tag ID to Image ID. !20349 +- Fix dropdown location on the monitoring charts. !20400 +- Fixed project import from export ignoring namespace selection. !20405 +- Backup: Disable setting of ACL for Google uploads. !20407 +- Fix documentation link from empty environment dashboard. !20415 +- Move persistent_ref.create into run_after_commit. !20422 +- Update external link to provider in cluster settings. !20425 +- Fix issue trying to edit weight with collapsed sidebar as guest. !20431 +- Handle empty stacktrace and entries with no code. !20458 +- Refactor the Deployment model so state machine events are used by both CI and the API. !20474 +- Guest users should not delete project snippets they created. !20477 +- Accept user-defined dashboard uids in Grafana embeds. !20486 +- Fix multi select input padding in project and group user select. !20520 (Kevin Lee) +- Use correct fragment identifier for vulnerability help path. !20524 +- Fix group search in groups dropdown. !20535 +- Fix removing of child epics that belong to subgroups. !20610 +- Fix opening Sentry error details in new tab. !20611 +- Ensure next unresolved discussion button takes user to the right place. !20620 +- Allow Gitlab GKE clusters to access Google Cloud Registry private images. !20662 (Tan Yee Jian) +- Fix cron parsing for Daylight Savings. !20667 +- Fix incorrect new branch name from issue. !20677 (Lee Tickett) +- Improve the way the metrics dashboard waits for data. !20687 +- Remove destroy_personal_snippet ability. !20717 +- Try longer to clean up after using a gpg-keychain and raise exption if the cleanup fails. !20718 +- Fix tooltip hovers in environments table. !20737 +- Remove DB transaction from Rebase operation. !20739 +- Improve UX for vulnerability dismissal note. !20768 +- Fix change to default foreground and backgorund colors in job log. !20787 +- Display Labels item in sidebar when Issues are disabled. !20817 +- Junit success percentage no longer displays 100% if there are failures. !20835 +- Ensure to check create_personal_snippet ability. !20838 +- Fix a display bug in the fork removal description message. !20843 +- Validate unique environment scope for instance clusters. !20886 +- Add empty region when group metrics are missing. !20900 +- Adjust issue metrics first_mentioned_in_commit_at calculation. !20923 +- Update copy on managed namespace prefixes. !20935 +- Add protected branch permission check to run downstream pipelines. !20964 +- Fix assignee url in issue board sidebar. !20992 (Lee Tickett) +- Retrieve issues from subgroups when rendering group milestone. !21024 +- Adds 409 when user cannot be soft deleted through the API. !21037 +- Respect the timezone reported from Gitaly. !21066 +- Fix Container repositories can not be replicated when s3 is used. !21068 +- Remove redundant toast.scss file and variables. !21105 +- Respect snippet query params when displaying embed urls. !21131 +- Remove action buttons from designs tab if there are no designs. !21186 +- Correctly return stripped PGP text. !21187 (Roger Meier) +- Fix error when linking already linked issue to epic. !21213 +- Do not attribute unverified commit e-mails to GitLab users. !21214 +- Add nonunique indexes to Labels. !21230 +- Fix snippet routes. !21248 +- Fix Zoom Quick Action server error when creating a GitLab Issue. !21262 +- Rename snippet refactored routes. !21267 +- Validate connection section in direct upload config. !21270 +- Fix pipeline retry in a CI DAG. !21296 +- Authenticate runner requests in Rack::Attack. !21311 +- Fix top border of README file header in file list. !21314 +- Fix forking a deduplicated project after it was moved to a different shard. !21339 +- Fix misaligned approval tr. !21368 (Lee Tickett) +- Fix crash registry contains helm charts. !21381 +- Web IDE: Fix the console error that happens when discarding a newly added/uploaded file. !21537 +- Authenticate requests with job token as basic auth header for request limiting. !21562 +- Fix Single-File-Editor-Layout breaking when branch name is too long. !21577 (Roman Kuba) +- Fix top border of README in vue_file_list. !21578 (Hector Bustillos) +- Stage dropdown lists style corrections. !21607 (Hector Bustillos) +- Change commit_id type on commit_user_mentions table. !21651 +- Do not clean the prometheus metrics directory for sidekiq. !21671 +- !21542 Part 1: Add new utils for Web IDE store. !21673 +- Update auto-deploy-image to v0.8.3. !21696 +- Match external user new snippet button visibility to permissions. !21718 +- Links to design comments now lead to specific note. !21724 +- Re-enable the cloud run feature. !21762 +- Ensure forks count cache refresh for source project. !21771 +- Fix padding on the design comments. !21839 +- Fix "Discard all" for new and renamed files. !21854 +- Fix project file finder url encoding file path separators. !21861 +- Ensure namespace is present for Managed-Cluster-Applications CI template. !21903 +- Rename common template jobs in sast and ds. !22084 +- Fixed query behind release filter on merge request search page. !38244 +- Activate projects Prometheus service integration when Prometheus managed application is installed on shared cluster. + +### Deprecated (4 changes) + +- Drop deprecated column from projects table. !18914 +- Limit number of projects displayed in GET /groups/:id API. !20023 +- Move operations project routes under - scope. !20456 +- Move wiki routing under /-/ scope. !21185 + +### Changed (60 changes, 10 of them are from the community) + +- Use better context-specific empty state screens for the Security Dashboards. !18382 +- Add evidence collection for Releases. !18874 +- Update information and button text for deployment footer. !18918 +- Move merge request description into discussions tab. !18940 +- Keep details in MR when changing target branch. !19138 +- Make internal projects poolable. !19295 (briankabiro) +- Enable support for multiple content query in GraphQL Todo API. !19576 +- Allow merge without refresh when new commits are pushed. !19725 +- Correct link to Merge trains documentation on MR widget. !19726 +- Preserve merge train history. !19864 +- Support go-source meta tag for godoc.org. !19888 (Ethan Reesor (@firelizzard)) +- Display a better message when starting a discussion on a deleted comment. !20031 (Jacopo Beschi @jacopo-beschi) +- Add sort param to error tracking issue index. !20101 +- Add template repository usage to the usage ping. !20126 (minghuan lei) +- Convert flash epic error to form validation error. !20130 +- Add 'download' button to Performance Bar. !20205 (Will Chandler) +- SaaS trial copy shows plan. !20207 +- Add rbac access to knative-serving namespace deployments to get knative version information. !20244 +- Unlock button changed from Icon to String. !20307 +- Upgrade to Gitaly v1.72.0. !20313 +- Increase upper limit of start_in attribute to 1 week. !20323 (Will Layton) +- Add CI variable to show when Auto-DevOps is explicitly enabled. !20332 +- Hashed Storage attachments migration: exclude files in object storage as they are all hashed already. !20338 +- Removes caching for design tab discusisons. !20374 +- Fixes to inconsistent margins/sapcing in the project detail page. !20395 +- Changes to how the search term is styled in the results. !20416 +- Move confidence column in the security dashboard. !20435 (Dheeraj Joshi) +- Upgrade to Gitaly v1.73.0. !20443 +- Replacing incorrect icon in security dashboard. !20510 +- Rework pod logs navigation scheme. !20578 +- Reduce start a trial rocket emoji size. !20579 +- Upgrade auto-deploy-image for helm default values file. !20588 +- Exposed deployment build manual actions for merge request page. !20615 +- Upgrade to Gitaly v1.74.0. !20706 +- Fetches initial merge request widget data async. !20719 +- Add service desk information to project graphQL endpoint. !20722 +- Add admin mode controller path to Rack::Attack defaults. !20735 (Diego Louzán) +- Add more filters to SnippetsFinder. !20767 +- Clean up the cohorts table. !20779 +- Remove vulnerability counter from security tab. !20800 +- Only blacklist IPs from Git requests. !20828 +- Optimize Deployments endpoint by preloading associations and make record ordering more consistent. !20848 +- Update deploy instances color scheme. !20890 +- Add service desk information to projects API endpoint. !20913 +- Added event tracking to the package details installation components. !20967 +- Hide Merge Request information on milestones when MRs are disabled for project. !20985 (Wolfgang Faust) +- Upgrade to Gitaly v1.75.0. !21045 +- Evidence - Added restriction for guest on Release page. !21102 +- Increase lower DAG `needs` limit from five to ten. !21237 +- Add doc links to features on admin dashboard. !21419 +- Autofocus cluster dropdown search input. !21440 +- Add autofocus to label search fields. !21508 +- When a forked project is less visible than its source, merge requests opened in the fork now target the less visible project by default. !21517 +- UI improvements in the views for new project from template and the user groups and snippets. !21524 (Hector Bustillos) +- Show merge immediately dialog even if the MR's pipeline hasn't finished. !21556 +- Support toggling service desk from API. !21627 +- Make `workflow:rules` to work well with Merge Requests. !21742 +- Upgrade to Gitaly v1.76.0. !21857 +- Remove authentication step from visual review tools instructions. +- Fixes wording on runner admin. + +### Performance (22 changes) + +- Optimize query for CI pipelines of merge request. !19653 +- Replace index on environments table project_id and state with project_id, state, and environment_type. !19902 +- Remove reactive caching value keys once the alive key has expired. !20111 +- Suggest squash commit messages based on recent commits. !20231 +- Improve performance of /api/:version/snippets/public API and only return public personal snippets. !20339 +- Add limit for snippet content size. !20346 +- Reduce Gitaly calls in BuildHooksWorker. !20365 +- Enable ETag caching for MR notes polling. !20440 +- Disable public project counts on welcome page. !20517 +- Optimize query when Projects API requests private visibility level. !20594 +- Improve issues search performance on GraphQL. !20784 +- UpdateProjectStatistics updates after commit. !20852 +- Run housekeeping after moving a repository between shards. !20863 +- Require group_id or project_id for MR target branch autocomplete action. !20933 +- Cache the ancestor? Gitaly call to speed up polling for the merge request widget. !20958 +- Optimize loading the repository deploy keys page. !20970 +- Added lightweight check when retrieving Prometheus metrics. !21099 +- Limit max metrics embeds in GFM to 100. !21356 +- Fork Puma to validate scheduler fixes. !21547 +- Remove an N+1 call rendering projects search results. !21626 +- Skip updating LFS objects in mirror updates if repository has not changed. !21744 +- Add indexes on deployments to improve environments search. !21789 + +### Added (117 changes, 16 of them are from the community) + +- Add upvote/downvotes attributes to GraphQL Epic query. !14311 +- Delete kubernetes cluster association and resources. !16954 +- Add badge name field. !16998 (Lee Tickett) +- Add OmniAuth authentication support to admin mode feature. !18214 (Diego Louzán) +- Creates DB tables for storing mentioned users, groups, projects referenced in a note or issuable description. !18316 +- Add body data elements for pageview context. !18450 +- Added filtering of inherited members for subgroups. !18842 +- Added responsiveness to audit events table. !18859 +- Add ability to make Jira comments optional. !19004 +- Store users, groups, projects mentioned in Markdown to DB tables. !19088 +- Upgrade `mail_room` gem to 0.10.0 and enable structured logging. !19186 +- Add possibility to save max issue weight on lists. !19220 +- Return 422 status code in case of error in submitting comments. !19276 (raju249) +- Add Personal Access Token expiration reminder. !19296 +- Add recent search to error tracking. !19301 +- Resolve Limit the number of stored sessions per user. !19325 +- Add services for 'soft-delete for groups' feature. !19358 +- Notify user when over 1000 epics in roadmap. !19419 +- Search list of Sentry errors by title in GitLab. !19439 +- Add issue statistics to releases on the Releases page. !19448 +- Add snowplow events for monitoring dashboard. !19455 +- Add snowplow events for APM. !19463 +- Add GraphQL mutation to mark all todos done for a user. !19482 +- Added rules configuration for Ci::Bridge. !19605 +- Add workers for 'soft-delete for groups' feature. !19679 +- add tagger within tag view. !19681 (Roger Meier) +- Strong validate import export references. !19682 +- Update Release API with evidence related data. !19706 +- Graphql query for issues can now be sorted by weight. !19721 +- GraphQL for Sentry rror details. !19733 +- View closed issues in epic. !19741 +- Add API endpoint to unpublish GitLab Pages. !19781 +- Add Pipeline Metadata to Packages. !19796 +- Create data model for serverless domains. !19835 +- Add Unify Circuit project integration service. !19849 (Fabio Huser) +- add sha256 fingerprint to keys model, view and extend users API to search user via fingerprint. !19860 (Roger Meier) +- Allow order_by updated_at in Pipelines API. !19886 +- Implement pagination for project releases page. !19912 (Fabio Huser) +- Add migrations for secret snippets. !19939 +- Control passing artifacts from CI DAG needs. !19943 +- Genereate a set of sample prometheus metrics and route to the sample metrics when enabled. !19987 +- Add warning dialog when users click the "Merge immediately" merge train option. !20054 +- Expose moved_to_id in issues API. !20083 (Lee Tickett) +- Relate issues when they are marked as duplicated. !20161 (minghuan lei) +- Asks for confirmation before changing project visibility level. !20170 +- Allow CI config path to point to a URL or file in a different repository. !20179 +- Allow groups to disable mentioning their members, if the group is mentioned. !20184 (Fabio Huser) +- Add modsecurity deployment counts to usage ping. !20196 +- Added legend to deploy boards. !20208 +- Support passing CI variables via git push options. !20255 +- Add GraphQL mutation to restore a Todo. !20261 +- Allow specifying Kubernetes namespace for an environment in gitlab-ci.yml. !20270 +- Add migrations for 'soft-delete for groups' feature. !20276 +- Add Maven installation commands to package detail page for Maven packages. !20300 +- Add feature to allow specifying userWithId strategies per environment spec. !20325 +- Enable creating Amazon EKS clusters from GitLab. !20333 +- Add ability to create new issue from sentry error detail page. !20337 +- Convert flash alerts to toasts. !20356 +- Return project commit url instead of commits url. !20369 (raju249) +- Collect the date a SaaS trial starts on. !20384 +- Add option to delete cached Kubernetes namespaces. !20411 +- Create container expiration policies for projects. !20412 +- Adjust fork network relations upon project visibility change. !20466 +- Create a license info rake task. !20501 (Jason Colyer) +- Add GraphQL mutation for changing due date of an issue. !20577 +- Add Snippet GraphQL resolver endpoints. !20613 +- Allow Job-Token authentication on Releases creation API. !20632 +- Add created_before/after filter to group/project audit events. !20641 +- Allow searching of projects by full path. !20659 +- Allow administrators to set a minimum password length. !20661 +- Update helper text for sentry error tracking settings. !20663 (Rajendra Kadam) +- Adds ability to create issues from sentry details page. !20666 +- Add coverage difference visualization to merge request page. !20676 (Fabio Huser) +- Use CI configured namespace for deployments to unmanaged clusters. !20686 +- Resolve Design view: Download single issue design image. !20703 +- Import large gitlab_project exports via rake task. !20724 +- Added Total/Frontend metrics to the performance bar. !20725 +- Add dependency scanning flag for skipping automatic bundler audit update. !20743 +- Add GraphQL mutation for setting an issue as confidential. !20785 +- Track adding metric via monitoring dashboard. !20818 +- Add _links object to package api response. !20820 +- CI template for installing cluster applications. !20822 +- Add SalesforceDX project template. !20831 +- Allow NPM package downloads with CI_JOB_TOKEN. !20868 +- Allow raw blobs to be served from an external storage. !20936 +- Added Snippets GraphQL mutations. !20956 +- Added WebHookLogs for ServiceHooks. !20976 +- Surface GitLab issue in error detail page. !21019 +- Add type to broadcast messages. !21038 +- add OpenAPI file viewer. !21106 (Roger Meier) +- Add updated_before and updated_after filters to the Pipelines API endpoint. !21133 +- Implement pagination for sentry errors. !21136 +- Add support for Conan package management in the package registry. !21152 +- Add syntax highlight for Sentry error stack trace. !21182 +- Keyset pagination for REST API (Project endpoint). !21194 +- CI template for Sentry managed app. !21208 +- Add CI variable to set the version of pip when scanning dependencies of Python projects. !21218 +- Add dependency scanning flag for specifying pip requirements file for scanning. !21219 +- Do not allow specifying a Kubernetes namespace via CI template for managed clusters. !21223 +- Sort Sentry error list by first seen, last seen or frequency. !21250 +- Add documentation about dependency scanning gradle support. !21253 +- Allow PDF attachments to be opened on browser. !21272 +- Add child label to commit box. !21323 +- Update Knative to 0.9.0. !21361 (cab105) +- Add target_path to broadcast message API. !21430 +- Allow Kubernetes namespaces specified via CI template to be used for terminals, pod logs and deploy boards. !21460 +- Allow styling broadcast messages. !21522 +- Enable new job log by default. !21543 +- Document support for sbt dependency scanning. !21588 +- Return multiple errors from CI linter. !21589 +- Add specific error states to dashboard. !21618 +- Add timestamps to pod logs. !21663 +- Hide profile information when user is blocked. !21706 +- link to group on group admin page. !21709 +- Added migration which adds service desk username column. !21733 +- Add SentryIssue table to store a link between issue and sentry issue. !37026 +- Add path based targeting to broadcast messages. + +### Other (51 changes, 28 of them are from the community) + +- Remove done callbacks from vue_shared/components/markdown. !16842 (Lee Tickett) +- Update timeago to the latest release. !19407 +- Improve job tokens and provide access helper. !19793 +- Add post deployment migration to complete pages metadata migration. !19928 +- Resolve Document - Make using GitLab auth with Vault easy. !19980 +- Remove IIFEs from gl_dropdown.js. !19983 (nuwe1) +- Improve sparkline chart in MR widget deployment. !20085 +- Updated jekyll project_template. !20090 (Marc Schwede) +- Updated hexo project_template. !20105 (Marc Schwede) +- Updated hugo project_template. !20109 (Marc Schwede) +- Resolve environment rollback was not friendly. !20121 +- Removed all references of BoardService. !20144 (nuwe1) +- Removes references of BoardService in list file. !20145 (nuwe1) +- replace var gl_dropdown.js. !20166 (nuwe1) +- delete board_service.js. !20168 (nuwe1) +- Improve create confidential MR dropdown styling. !20176 (Lee Tickett) +- Remove milestone_id from epics. !20187 (Lee Tickett) +- Remove build badge path from route. !20188 (Lee Tickett) +- Add worker attributes to Sidekiq metrics. !20292 +- Update GitLab Runner Helm Chart to 0.11.0. !20461 +- add missing test for add_index rubocop rule. !20464 (Eric Thomas) +- Suppress progress on pulling image on Code Quality of Auto DevOps. !20604 (Takuya Noguchi) +- Increase margin between project stats. !20606 +- Remove extra spacing below sidebar time tracking info. !20657 (Lee Tickett) +- Add e2e qa test for email delivery. !20675 (Diego Louzán) +- Collect project import failures instead of failing fast. !20727 +- Removed unused methods in monitoring dashboard. !20819 +- removes references of BoardService. !20872 (nuwe1) +- removes references of BoardService. !20874 (nuwe1) +- removes references of BoardService. !20875 (nuwe1) +- removes references of BoardService. !20876 (nuwe1) +- removes references of BoardService. !20877 (nuwe1) +- removes references of BoardService. !20879 (nuwe1) +- removes references of BoardService. !20880 (nuwe1) +- removes references of BoardService. !20881 (nuwe1) +- Remove whitespaces between tree-controls elements. !20952 +- Add Project Export request/download rate limits. !20962 +- Remove feature flag for limiting diverging commit counts. !20999 +- Changed 'Add approvers' to 'Approval rules'. !21079 +- Resolve Add missing popover and remove none in MR widget. !21095 +- Change Puma log format to JSON. !21101 +- Update GitLab Shell to v10.3.0. !21151 +- Improve diff expansion text. !21616 +- Remove var from app/assets/javascripts/commit/image_file.js. !21649 (Abubakar Hassan) +- Rename User#full_private_access? to User#can_read_all_resources?. !21668 (Diego Louzán) +- Replace CI_COMMIT_REF with CI_COMMIT_SHA on CI docs. !21781 (Takuya Noguchi) +- Add reportSnippet permission to Snippet GraphQL. !21836 +- Harmonize capitalization on cluster UI. !21878 (Evan Read) +- Add mark as spam snippet mutation. !21912 +- Update Workhorse to v8.18.0. !22091 +- Replace Font Awesome bullhorn icon with GitLab bullhorn icon. + + +## 12.5.5 + +### Security (1 change) + +- Upgrade Akismet gem to v3.0.0. !21786 + +### Fixed (2 changes) + +- Fix error in updating runner session. !20902 +- Fix Asana integration. !21501 + + +## 12.5.4 + +### Security (1 change) + +- Update maven_file_name_regex for full string match. + ## 12.5.3 @@ -20,13 +435,6 @@ entry. - Flatten exception details in API and controller logs. !20434 -## 12.5.2 - -### Security (1 change) - -- Fix 500 error caused by invalid byte sequences in links. - - ## 12.5.1 ### Security (11 changes) @@ -395,6 +803,18 @@ entry. - Change selects from default browser style to custom style. +## 12.4.5 + +- No changes. + +## 12.4.3 + +### Fixed (2 changes) + +- Only enable protected paths for POST requests. !19184 +- Fix Bitbucket Cloud importer pull request state. !19734 + + ## 12.4.2 ### Fixed (10 changes) @@ -755,6 +1175,31 @@ entry. - Remove Postgresql specific setup tasks and move to schema.rb. +## 12.3.9 + +### Security (1 change) + +- Update maven_file_name_regex for full string match. + + +## 12.3.7 + +### Security (12 changes) + +- Do not create todos for approvers without access. !1442 +- Limit potential for DNS rebind SSRF in chat notifications. +- Encrypt application setting tokens. +- Update Workhorse and Gitaly to fix a security issue. +- Add maven file_name regex validation on incoming files. +- Hide commit counts from guest users in Cycle Analytics. +- Check permissions before showing a forked project's source. +- Fix 500 error caused by invalid byte sequences in links. +- Ensure are cleaned by ImportExport::AttributeCleaner. +- Remove notes regarding Related Branches from Issue activity feeds for guest users. +- Escape namespace in label references to prevent XSS. +- Add authorization to using filter vulnerable in Dependency List. + + ## 12.3.4 ### Fixed (2 changes) @@ -1060,6 +1505,10 @@ entry. - Updates tooltip of 'detached' label/state. +## 12.2.11 + +- No changes. + ## 12.2.8 ### Security (1 change) @@ -1774,6 +2223,15 @@ entry. - Removes EE differences for app/views/admin/users/show.html.haml. +## 12.0.12 + +- No changes. + +## 12.0.10 + +- No changes. +- No changes. + ## 12.0.7 ### Security (22 changes) diff --git a/Dangerfile b/Dangerfile index b65a907407..7879c14b31 100644 --- a/Dangerfile +++ b/Dangerfile @@ -5,6 +5,7 @@ require_relative 'lib/gitlab/danger/request_helper' danger.import_plugin('danger/plugins/helper.rb') danger.import_plugin('danger/plugins/roulette.rb') +danger.import_plugin('danger/plugins/changelog.rb') unless helper.release_automation? GitlabDanger.new(helper.gitlab_helper).rule_names.each do |file| diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 22d6771a47..93952905b6 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1.72.1 +a4b6c71d4b7c1588587345e2dfe0c6bd7cc63a83 diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 2bd6f7e392..0719d81025 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -10.2.0 +10.3.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index 6092827e64..38b5f0deae 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.14.1 +8.18.0 diff --git a/Gemfile b/Gemfile index d27bc27608..b6f57297c0 100644 --- a/Gemfile +++ b/Gemfile @@ -22,6 +22,7 @@ gem 'rugged', '~> 0.28' gem 'grape-path-helpers', '~> 1.1' gem 'faraday', '~> 0.12' +gem 'marginalia', '~> 1.8.0' # Authentication libraries gem 'devise', '~> 4.6' @@ -53,7 +54,7 @@ gem 'gssapi', group: :kerberos # Spam and anti-bot protection gem 'recaptcha', '~> 4.11', require: 'recaptcha/rails' -gem 'akismet', '~> 2.0' +gem 'akismet', '~> 3.0' gem 'invisible_captcha', '~> 0.12.1' # Two-factor authentication @@ -101,7 +102,7 @@ gem 'hashie-forbidden_attributes' gem 'kaminari', '~> 1.0' # HAML -gem 'hamlit', '~> 2.8.8' +gem 'hamlit', '~> 2.11.0' # Files attachments gem 'carrierwave', '~> 1.3' @@ -135,11 +136,11 @@ gem 'aws-sdk' gem 'faraday_middleware-aws-signers-v4' # Markdown and HTML processing -gem 'html-pipeline', '~> 2.8' +gem 'html-pipeline', '~> 2.12' gem 'deckar01-task_list', '2.2.1' gem 'gitlab-markup', '~> 1.7.0' gem 'github-markup', '~> 1.7.0', require: 'github/markup' -gem 'commonmarker', '~> 0.17' +gem 'commonmarker', '~> 0.20' gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~> 6.0' gem 'org-ruby', '~> 0.9.12' @@ -170,8 +171,8 @@ group :unicorn do end group :puma do - gem 'puma', '~> 3.12', require: false - gem 'puma_worker_killer', require: false + gem 'gitlab-puma', '~> 4.3.1.gitlab.2', require: false + gem 'gitlab-puma_worker_killer', '~> 0.1.1.gitlab.1', require: false gem 'rack-timeout', require: false end @@ -242,7 +243,7 @@ gem 'slack-notifier', '~> 1.5.1' gem 'hangouts-chat', '~> 0.0.5' # Asana integration -gem 'asana', '~> 0.8.1' +gem 'asana', '~> 0.9' # FogBugz integration gem 'ruby-fogbugz', '~> 0.2.1' @@ -273,8 +274,8 @@ gem 'mimemagic', '~> 0.3.2' gem 'fast_blank' # Parse time & duration -gem 'chronic', '~> 0.10.2' -gem 'gitlab_chronic_duration', '~> 0.10.6.1' +gem 'gitlab-chronic', '~> 0.10.5' +gem 'gitlab_chronic_duration', '~> 0.10.6.2' gem 'webpack-rails', '~> 0.9.10' gem 'rack-proxy', '~> 0.6.0' @@ -312,8 +313,7 @@ gem 'gettext', '~> 3.2.2', require: false, group: :development gem 'batch-loader', '~> 1.4.0' # Perf bar -# https://gitlab.com/gitlab-org/gitlab/issues/13996 -gem 'gitlab-peek', '~> 0.0.1', require: 'peek' +gem 'peek', '~> 1.1' # Snowplow events tracking gem 'snowplow-tracker', '~> 0.6.1' @@ -347,20 +347,15 @@ group :development do end group :development, :test do - gem 'bullet', '~> 5.5.0', require: !!ENV['ENABLE_BULLET'] + gem 'bullet', '~> 6.0.2', require: !!ENV['ENABLE_BULLET'] gem 'pry-byebug', '~> 3.5.1', platform: :mri gem 'pry-rails', '~> 0.3.4' gem 'awesome_print', require: false - gem 'fuubar', '~> 2.2.0' gem 'database_cleaner', '~> 1.7.0' gem 'factory_bot_rails', '~> 5.1.0' - gem 'rspec-rails', '~> 3.8.0' - gem 'rspec-retry', '~> 0.6.1' - gem 'rspec_profiling', '~> 0.0.5' - gem 'rspec-set', '~> 0.1.3' - gem 'rspec-parameterized', require: false + gem 'rspec-rails', '~> 4.0.0.beta3' # Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826) gem 'minitest', '~> 5.11.0' @@ -368,10 +363,6 @@ group :development, :test do # Generate Fake data gem 'ffaker', '~> 2.10' - gem 'capybara', '~> 3.22.0' - gem 'capybara-screenshot', '~> 1.0.22' - gem 'selenium-webdriver', '~> 3.141' - gem 'spring', '~> 2.0.0' gem 'spring-commands-rspec', '~> 1.0.4' @@ -382,7 +373,7 @@ group :development, :test do gem 'rubocop-rspec', '~> 1.22.1' gem 'scss_lint', '~> 0.56.0', require: false - gem 'haml_lint', '~> 0.31.0', require: false + gem 'haml_lint', '~> 0.34.0', require: false gem 'simplecov', '~> 0.16.1', require: false gem 'bundler-audit', '~> 0.5.0', require: false @@ -390,7 +381,7 @@ group :development, :test do gem 'knapsack', '~> 1.17' - gem 'stackprof', '~> 0.2.10', require: false + gem 'stackprof', '~> 0.2.13', require: false gem 'simple_po_parser', '~> 1.1.2', require: false @@ -403,6 +394,16 @@ group :development, :test, :omnibus do end group :test do + gem 'fuubar', '~> 2.2.0' + gem 'rspec-retry', '~> 0.6.1' + gem 'rspec_profiling', '~> 0.0.5' + gem 'rspec-set', '~> 0.1.3' + gem 'rspec-parameterized', require: false + + gem 'capybara', '~> 3.22.0' + gem 'capybara-screenshot', '~> 1.0.22' + gem 'selenium-webdriver', '~> 3.142' + gem 'shoulda-matchers', '~> 4.0.1', require: false gem 'email_spec', '~> 2.2.0' gem 'json-schema', '~> 2.8.0' @@ -416,7 +417,7 @@ end gem 'octokit', '~> 4.9' -gem 'mail_room', '~> 0.9.1' +gem 'mail_room', '~> 0.10.0' gem 'email_reply_trimmer', '~> 0.1' gem 'html2text' @@ -451,7 +452,7 @@ group :ed25519 do end # Gitaly GRPC protocol definitions -gem 'gitaly', '~> 1.70.0' +gem 'gitaly', '~> 1.73.0' gem 'grpc', '~> 1.24.0' diff --git a/Gemfile.lock b/Gemfile.lock index 15465cd6b0..0e32270586 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,16 +58,16 @@ GEM addressable (2.5.2) public_suffix (>= 2.0.2, < 4.0) aes_key_wrap (1.0.1) - akismet (2.0.0) + akismet (3.0.0) apollo_upload_server (2.0.0.beta.3) graphql (>= 1.8) rails (>= 4.2) arel (9.0.0) - asana (0.8.1) + asana (0.9.3) faraday (~> 0.9) faraday_middleware (~> 0.9) faraday_middleware-multi_json (~> 0.0) - oauth2 (~> 1.0) + oauth2 (~> 1.4) asciidoctor (2.0.10) asciidoctor-include-ext (0.3.1) asciidoctor (>= 1.5.6, < 3.0.0) @@ -118,9 +118,9 @@ GEM brakeman (4.2.1) browser (2.5.3) builder (3.2.3) - bullet (5.5.1) + bullet (6.0.2) activesupport (>= 3.0.0) - uniform_notifier (~> 1.10.0) + uniform_notifier (~> 1.11) bundler-audit (0.5.0) bundler (~> 1.2) thor (~> 0.18) @@ -143,9 +143,7 @@ GEM cause (0.1) character_set (1.1.2) charlock_holmes (0.7.6) - childprocess (0.9.0) - ffi (~> 1.0, >= 1.0.11) - chronic (0.10.2) + childprocess (3.0.0) chunky_png (1.3.5) citrus (3.0.2) claide (1.0.3) @@ -157,7 +155,7 @@ GEM coercible (1.0.0) descendants_tracker (~> 0.0.1) colored2 (3.1.2) - commonmarker (0.17.13) + commonmarker (0.20.1) ruby-enum (~> 0.5) concord (0.1.5) adamantium (~> 0.2.0) @@ -287,7 +285,7 @@ GEM fast_blank (1.0.0) fast_gettext (1.6.0) ffaker (2.10.0) - ffi (1.11.1) + ffi (1.11.3) flipper (0.17.1) flipper-active_record (0.17.1) activerecord (>= 4.2, < 7) @@ -359,9 +357,11 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) git (1.5.0) - gitaly (1.70.0) + gitaly (1.73.0) grpc (~> 1.0) github-markup (1.7.0) + gitlab-chronic (0.10.5) + numerizer (~> 0.2) gitlab-labkit (0.7.0) actionpack (>= 5.0.0, < 6.1.0) activesupport (>= 5.0.0, < 6.1.0) @@ -372,8 +372,11 @@ GEM gitlab-license (1.0.0) gitlab-markup (1.7.0) gitlab-net-dns (0.9.1) - gitlab-peek (0.0.1) - railties (>= 4.0.0) + gitlab-puma (4.3.1.gitlab.2) + nio4r (~> 2.0) + gitlab-puma_worker_killer (0.1.1.gitlab.1) + get_process_mem (~> 0.2) + gitlab-puma (>= 2.7, < 5) gitlab-sidekiq-fetcher (0.5.2) sidekiq (~> 5) gitlab-styles (2.8.0) @@ -381,8 +384,8 @@ GEM rubocop-gitlab-security (~> 0.1.0) rubocop-performance (~> 1.1.0) rubocop-rspec (~> 1.19) - gitlab_chronic_duration (0.10.6.1) - numerizer (~> 0.1.1) + gitlab_chronic_duration (0.10.6.2) + numerizer (~> 0.2) gitlab_omniauth-ldap (2.1.1) net-ldap (~> 0.16) omniauth (~> 1.3) @@ -460,17 +463,16 @@ GEM guard (~> 2.1) guard-compat (~> 1.1) rspec (>= 2.99.0, < 4.0) - haml (5.0.4) + haml (5.1.2) temple (>= 0.8.0) tilt - haml_lint (0.31.0) - haml (>= 4.0, < 5.1) + haml_lint (0.34.0) + haml (>= 4.0, < 5.2) rainbow - rake (>= 10, < 13) rubocop (>= 0.50.0) sysexits (~> 1.1) - hamlit (2.8.8) - temple (>= 0.8.0) + hamlit (2.11.0) + temple (>= 0.8.2) thor tilt hangouts-chat (0.0.5) @@ -484,7 +486,7 @@ GEM hipchat (1.5.2) httparty mimemagic - html-pipeline (2.8.4) + html-pipeline (2.12.2) activesupport (>= 2) nokogiri (>= 1.4) html2text (0.2.0) @@ -591,9 +593,12 @@ GEM lumberjack (1.0.13) mail (2.7.1) mini_mime (>= 0.1.1) - mail_room (0.9.1) + mail_room (0.10.0) marcel (0.3.3) mimemagic (~> 0.3.2) + marginalia (1.8.0) + actionpack (>= 2.3) + activerecord (>= 2.3) memoist (0.16.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) @@ -622,7 +627,7 @@ GEM net-ntp (2.1.3) net-ssh (5.2.0) netrc (0.11.0) - nio4r (2.3.1) + nio4r (2.5.2) no_proxy_fix (0.1.2) nokogiri (1.10.5) mini_portile2 (~> 2.4.0) @@ -631,7 +636,7 @@ GEM notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) - numerizer (0.1.1) + numerizer (0.2.0) oauth (0.5.4) oauth2 (1.4.1) faraday (>= 0.8, < 0.16.0) @@ -724,6 +729,8 @@ GEM parser (2.6.3.0) ast (~> 2.4.0) parslet (1.8.2) + peek (1.1.0) + railties (>= 4.0.0) pg (1.1.4) po_to_json (1.0.1) json (>= 1.6.0) @@ -749,10 +756,6 @@ GEM pry-rails (0.3.6) pry (>= 0.10.4) public_suffix (3.1.1) - puma (3.12.0) - puma_worker_killer (0.1.0) - get_process_mem (~> 0.2) - puma (>= 2.7, < 4) pyu-ruby-sasl (0.0.3.3) raabro (1.1.6) rack (2.0.7) @@ -881,14 +884,14 @@ GEM proc_to_ast rspec (>= 2.13, < 4) unparser - rspec-rails (3.8.2) - actionpack (>= 3.0) - activesupport (>= 3.0) - railties (>= 3.0) - rspec-core (~> 3.8.0) - rspec-expectations (~> 3.8.0) - rspec-mocks (~> 3.8.0) - rspec-support (~> 3.8.0) + rspec-rails (4.0.0.beta3) + actionpack (>= 4.2) + activesupport (>= 4.2) + railties (>= 4.2) + rspec-core (~> 3.8) + rspec-expectations (~> 3.8) + rspec-mocks (~> 3.8) + rspec-support (~> 3.8) rspec-retry (0.6.1) rspec-core (> 3.3) rspec-set (0.1.3) @@ -927,7 +930,7 @@ GEM rubyntlm (0.6.2) rubypants (0.2.0) rubyzip (1.3.0) - rugged (0.28.3.1) + rugged (0.28.4.1) safe_yaml (1.0.4) sanitize (4.6.6) crass (~> 1.0.2) @@ -956,9 +959,9 @@ GEM seed-fu (2.3.7) activerecord (>= 3.1) activesupport (>= 3.1) - selenium-webdriver (3.141.0) - childprocess (~> 0.5) - rubyzip (~> 1.2, >= 1.2.2) + selenium-webdriver (3.142.6) + childprocess (>= 0.5, < 4.0) + rubyzip (>= 1.2.2) sentry-raven (2.9.0) faraday (>= 0.7.6, < 1.0) settingslogic (2.0.9) @@ -1002,7 +1005,7 @@ GEM sprockets (>= 3.0.0) sqlite3 (1.3.13) sshkey (2.0.0) - stackprof (0.2.10) + stackprof (0.2.13) state_machines (0.5.0) state_machines-activemodel (0.7.1) activemodel (>= 4.1) @@ -1017,7 +1020,7 @@ GEM sys-filesystem (1.1.6) ffi sysexits (1.2.0) - temple (0.8.1) + temple (0.8.2) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) test-prof (0.10.0) @@ -1026,10 +1029,10 @@ GEM daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) - thor (0.19.4) + thor (0.20.3) thread_safe (0.3.6) thrift (0.11.0.0) - tilt (2.0.9) + tilt (2.0.10) timecop (0.8.1) timfel-krb5-auth (0.8.3) toml (0.2.0) @@ -1057,7 +1060,7 @@ GEM unicorn-worker-killer (0.4.4) get_process_mem (~> 0) unicorn (>= 4, < 6) - uniform_notifier (1.10.0) + uniform_notifier (1.13.0) unleash (0.1.5) murmurhash3 (~> 0.1.6) unparser (0.4.5) @@ -1117,9 +1120,9 @@ DEPENDENCIES activerecord-explain-analyze (~> 0.1) acts-as-taggable-on (~> 6.0) addressable (~> 2.5.2) - akismet (~> 2.0) + akismet (~> 3.0) apollo_upload_server (~> 2.0.0.beta3) - asana (~> 0.8.1) + asana (~> 0.9) asciidoctor (~> 2.0.10) asciidoctor-include-ext (~> 0.3.1) asciidoctor-plantuml (= 0.0.9) @@ -1139,14 +1142,13 @@ DEPENDENCIES bootstrap_form (~> 4.2.0) brakeman (~> 4.2) browser (~> 2.5) - bullet (~> 5.5.0) + bullet (~> 6.0.2) bundler-audit (~> 0.5.0) capybara (~> 3.22.0) capybara-screenshot (~> 1.0.22) carrierwave (~> 1.3) charlock_holmes (~> 0.7.5) - chronic (~> 0.10.2) - commonmarker (~> 0.17) + commonmarker (~> 0.20) concurrent-ruby (~> 1.1) connection_pool (~> 2.0) countries (~> 3.0) @@ -1194,16 +1196,18 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly (~> 1.70.0) + gitaly (~> 1.73.0) github-markup (~> 1.7.0) + gitlab-chronic (~> 0.10.5) gitlab-labkit (~> 0.5) gitlab-license (~> 1.0) gitlab-markup (~> 1.7.0) gitlab-net-dns (~> 0.9.1) - gitlab-peek (~> 0.0.1) + gitlab-puma (~> 4.3.1.gitlab.2) + gitlab-puma_worker_killer (~> 0.1.1.gitlab.1) gitlab-sidekiq-fetcher (= 0.5.2) gitlab-styles (~> 2.7) - gitlab_chronic_duration (~> 0.10.6.1) + gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) google-api-client (~> 0.23) @@ -1219,13 +1223,13 @@ DEPENDENCIES grpc (~> 1.24.0) gssapi guard-rspec - haml_lint (~> 0.31.0) - hamlit (~> 2.8.8) + haml_lint (~> 0.34.0) + hamlit (~> 2.11.0) hangouts-chat (~> 0.0.5) hashie-forbidden_attributes health_check (~> 2.6.0) hipchat (~> 1.5.0) - html-pipeline (~> 2.8) + html-pipeline (~> 2.12) html2text httparty (~> 0.16.4) icalendar @@ -1243,7 +1247,8 @@ DEPENDENCIES licensee (~> 8.9) lograge (~> 0.5) loofah (~> 2.2) - mail_room (~> 0.9.1) + mail_room (~> 0.10.0) + marginalia (~> 1.8.0) memory_profiler (~> 0.9) method_source (~> 0.8) mimemagic (~> 0.3.2) @@ -1275,13 +1280,12 @@ DEPENDENCIES omniauth_crowd (~> 2.2.0) omniauth_openid_connect (~> 0.3.3) org-ruby (~> 0.9.12) + peek (~> 1.1) pg (~> 1.1) premailer-rails (~> 1.10.3) prometheus-client-mmap (~> 0.9.10) pry-byebug (~> 3.5.1) pry-rails (~> 0.3.4) - puma (~> 3.12) - puma_worker_killer rack (~> 2.0.7) rack-attack (~> 6.2.0) rack-cors (~> 1.0.0) @@ -1307,7 +1311,7 @@ DEPENDENCIES rouge (~> 3.11.0) rqrcode-rails3 (~> 0.1.7) rspec-parameterized - rspec-rails (~> 3.8.0) + rspec-rails (~> 4.0.0.beta3) rspec-retry (~> 0.6.1) rspec-set (~> 0.1.3) rspec_junit_formatter @@ -1325,7 +1329,7 @@ DEPENDENCIES sassc-rails (~> 2.1.0) scss_lint (~> 0.56.0) seed-fu (~> 2.3.7) - selenium-webdriver (~> 3.141) + selenium-webdriver (~> 3.142) sentry-raven (~> 2.9) settingslogic (~> 2.0.9) shoulda-matchers (~> 4.0.1) @@ -1339,7 +1343,7 @@ DEPENDENCIES spring-commands-rspec (~> 1.0.4) sprockets (~> 3.7.0) sshkey (~> 2.0) - stackprof (~> 0.2.10) + stackprof (~> 0.2.13) state_machines-activerecord (~> 0.6.0) sys-filesystem (~> 1.1.6) test-prof (~> 0.10.0) diff --git a/VERSION b/VERSION index b6125ec500..1b62f91726 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12.5.4 +12.6.1 diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index aee9990bc0..071ae8ca8c 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -5,6 +5,8 @@ import { joinPaths } from './lib/utils/url_utility'; import flash from '~/flash'; import { __ } from '~/locale'; +const DEFAULT_PER_PAGE = 20; + const Api = { groupsPath: '/api/:version/groups.json', groupPath: '/api/:version/groups/:id', @@ -41,7 +43,7 @@ const Api = { releasesPath: '/api/:version/projects/:id/releases', releasePath: '/api/:version/projects/:id/releases/:tag_name', mergeRequestsPipeline: '/api/:version/projects/:id/merge_requests/:merge_request_iid/pipelines', - adminStatisticsPath: 'api/:version/application/statistics', + adminStatisticsPath: '/api/:version/application/statistics', group(groupId, callback) { const url = Api.buildUrl(Api.groupPath).replace(':id', groupId); @@ -66,7 +68,7 @@ const Api = { params: Object.assign( { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, }, options, ), @@ -90,7 +92,7 @@ const Api = { .get(url, { params: { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, }, }) .then(({ data }) => callback(data)); @@ -101,7 +103,7 @@ const Api = { const url = Api.buildUrl(Api.projectsPath); const defaults = { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, simple: true, }; @@ -126,7 +128,7 @@ const Api = { .get(url, { params: { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, ...options, }, }) @@ -235,7 +237,7 @@ const Api = { const url = Api.buildUrl(Api.groupProjectsPath).replace(':id', groupId); const defaults = { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, }; return axios .get(url, { @@ -325,7 +327,7 @@ const Api = { params: Object.assign( { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, }, options, ), @@ -355,7 +357,7 @@ const Api = { const url = Api.buildUrl(Api.userProjectsPath).replace(':id', userId); const defaults = { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, }; return axios .get(url, { @@ -371,7 +373,7 @@ const Api = { return axios.get(url, { params: { search: query, - per_page: 20, + per_page: DEFAULT_PER_PAGE, ...options, }, }); @@ -403,10 +405,15 @@ const Api = { return axios.post(url); }, - releases(id) { + releases(id, options = {}) { const url = Api.buildUrl(this.releasesPath).replace(':id', encodeURIComponent(id)); - return axios.get(url); + return axios.get(url, { + params: { + per_page: DEFAULT_PER_PAGE, + ...options, + }, + }); }, release(projectPath, tagName) { diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 7652b67ae1..07d79ea1c7 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -1,9 +1,9 @@ -/* eslint-disable no-param-reassign, no-void, consistent-return */ +/* eslint-disable no-param-reassign, consistent-return */ import AccessorUtilities from './lib/utils/accessor'; export default class Autosave { - constructor(field, key) { + constructor(field, key, fallbackKey) { this.field = field; this.isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe(); @@ -11,6 +11,7 @@ export default class Autosave { key = key.join('/'); } this.key = `autosave/${key}`; + this.fallbackKey = fallbackKey; this.field.data('autosave', this); this.restore(); this.field.on('input', () => this.save()); @@ -21,9 +22,12 @@ export default class Autosave { if (!this.field.length) return; const text = window.localStorage.getItem(this.key); + const fallbackText = window.localStorage.getItem(this.fallbackKey); - if ((text != null ? text.length : void 0) > 0) { + if (text) { this.field.val(text); + } else if (fallbackText) { + this.field.val(fallbackText); } this.field.trigger('input'); @@ -41,7 +45,10 @@ export default class Autosave { const text = this.field.val(); - if (this.isLocalStorageAvailable && (text != null ? text.length : void 0) > 0) { + if (this.isLocalStorageAvailable && text) { + if (this.fallbackKey) { + window.localStorage.setItem(this.fallbackKey, text); + } return window.localStorage.setItem(this.key, text); } @@ -51,6 +58,7 @@ export default class Autosave { reset() { if (!this.isLocalStorageAvailable) return; + window.localStorage.removeItem(this.fallbackKey); return window.localStorage.removeItem(this.key); } diff --git a/app/assets/javascripts/badges/components/badge.vue b/app/assets/javascripts/badges/components/badge.vue index eb720f5380..00c0334db7 100644 --- a/app/assets/javascripts/badges/components/badge.vue +++ b/app/assets/javascripts/badges/components/badge.vue @@ -1,6 +1,6 @@ + + diff --git a/app/assets/javascripts/boards/components/issue_due_date.vue b/app/assets/javascripts/boards/components/issue_due_date.vue index 3bc7f13a9e..a32ebdab5e 100644 --- a/app/assets/javascripts/boards/components/issue_due_date.vue +++ b/app/assets/javascripts/boards/components/issue_due_date.vue @@ -35,10 +35,10 @@ export default { title() { const timeago = getTimeago(); const { timeDifference, standardDateFormat } = this; - const formatedDate = standardDateFormat; + const formattedDate = standardDateFormat; if (timeDifference >= -1 && timeDifference < 7) { - return `${timeago.format(this.issueDueDate)} (${formatedDate})`; + return `${timeago.format(this.issueDueDate)} (${formattedDate})`; } return timeago.format(this.issueDueDate); diff --git a/app/assets/javascripts/boards/components/modal/index.vue b/app/assets/javascripts/boards/components/modal/index.vue index 618c2ada1f..20344b6614 100644 --- a/app/assets/javascripts/boards/components/modal/index.vue +++ b/app/assets/javascripts/boards/components/modal/index.vue @@ -1,5 +1,6 @@ + + diff --git a/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue b/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue index 125bcaacc1..e33431d2ea 100644 --- a/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue +++ b/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue @@ -1,7 +1,7 @@